From 607c9bf36d10f869e27b196a563bc8621b97465a Mon Sep 17 00:00:00 2001 From: Matt Caldwell Date: Mon, 9 Apr 2012 11:43:21 -0400 Subject: [PATCH] reduce slug size --- bin/gcc-4.3/bin/c++ | Bin 231400 -> 0 bytes bin/gcc-4.3/bin/cpp | Bin 227304 -> 0 bytes bin/gcc-4.3/bin/g++ | Bin 231400 -> 0 bytes bin/gcc-4.3/bin/gcc | Bin 227304 -> 0 bytes bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-c++ | Bin 231400 -> 0 bytes bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-g++ | Bin 231400 -> 0 bytes bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-gcc | Bin 227304 -> 0 bytes .../bin/x86_64-unknown-linux-gnu-gcc-4.3.6 | Bin 227304 -> 0 bytes bin/glibc-2.7/crypt/Banner | 1 - bin/glibc-2.7/crypt/Makefile | 61 - bin/glibc-2.7/crypt/README.ufc-crypt | 135 - bin/glibc-2.7/crypt/Versions | 5 - bin/glibc-2.7/crypt/cert.c | 113 - bin/glibc-2.7/crypt/cert.input | 171 -- bin/glibc-2.7/crypt/crypt-entry.c | 179 -- bin/glibc-2.7/crypt/crypt-private.h | 60 - bin/glibc-2.7/crypt/crypt.c | 120 - bin/glibc-2.7/crypt/crypt.h | 75 - bin/glibc-2.7/crypt/crypt_util.c | 914 ------ bin/glibc-2.7/crypt/md5-crypt.c | 272 -- bin/glibc-2.7/crypt/md5.c | 458 --- bin/glibc-2.7/crypt/md5.h | 148 - bin/glibc-2.7/crypt/md5c-test.c | 15 - bin/glibc-2.7/crypt/md5test.c | 53 - bin/glibc-2.7/crypt/sha256-crypt.c | 345 --- bin/glibc-2.7/crypt/sha256.c | 304 -- bin/glibc-2.7/crypt/sha256.h | 58 - bin/glibc-2.7/crypt/sha256c-test.c | 61 - bin/glibc-2.7/crypt/sha256test.c | 92 - bin/glibc-2.7/crypt/sha512-crypt.c | 357 --- bin/glibc-2.7/crypt/sha512.c | 336 -- bin/glibc-2.7/crypt/sha512.h | 58 - bin/glibc-2.7/crypt/sha512c-test.c | 62 - bin/glibc-2.7/crypt/sha512test.c | 113 - bin/glibc-2.7/crypt/speeds.c | 153 - bin/glibc-2.7/crypt/ufc-crypt.h | 29 - bin/glibc-2.7/crypt/ufc.c | 56 - bin/glibc-2.7/mach/.cvsignore | 6 - bin/glibc-2.7/mach/Machrules | 237 -- bin/glibc-2.7/mach/Makefile | 180 -- bin/glibc-2.7/mach/Versions | 82 - bin/glibc-2.7/mach/devstream.c | 152 - bin/glibc-2.7/mach/err_boot.sub | 63 - bin/glibc-2.7/mach/err_ipc.sub | 109 - bin/glibc-2.7/mach/err_kern.sub | 185 -- bin/glibc-2.7/mach/err_mach.sub | 130 - bin/glibc-2.7/mach/err_server.sub | 370 --- bin/glibc-2.7/mach/err_us.sub | 48 - bin/glibc-2.7/mach/error_compat.c | 67 - bin/glibc-2.7/mach/errorlib.h | 84 - bin/glibc-2.7/mach/errstring.c | 96 - bin/glibc-2.7/mach/errsystems.awk | 23 - bin/glibc-2.7/mach/lock-intern.h | 97 - bin/glibc-2.7/mach/mach.h | 105 - bin/glibc-2.7/mach/mach/error.h | 137 - bin/glibc-2.7/mach/mach/mach.h | 3 - bin/glibc-2.7/mach/mach/mach_traps.h | 79 - bin/glibc-2.7/mach/mach/mig_support.h | 83 - bin/glibc-2.7/mach/mach_error.c | 82 - bin/glibc-2.7/mach/mach_error.h | 71 - bin/glibc-2.7/mach/mach_init.c | 52 - bin/glibc-2.7/mach/mach_init.h | 48 - bin/glibc-2.7/mach/mig-alloc.c | 30 - bin/glibc-2.7/mach/mig-dealloc.c | 28 - bin/glibc-2.7/mach/mig-reply.c | 53 - bin/glibc-2.7/mach/mig_strncpy.c | 11 - bin/glibc-2.7/mach/msg-destroy.c | 236 -- bin/glibc-2.7/mach/msg.c | 145 - bin/glibc-2.7/mach/msgserver.c | 200 -- bin/glibc-2.7/mach/mutex-init.c | 30 - bin/glibc-2.7/mach/mutex-solid.c | 37 - bin/glibc-2.7/mach/setup-thread.c | 80 - bin/glibc-2.7/mach/shortcut.awk | 50 - bin/glibc-2.7/mach/spin-lock.c | 8 - bin/glibc-2.7/mach/spin-lock.h | 34 - bin/glibc-2.7/mach/spin-solid.c | 29 - bin/glibc-2.7/mach/syscalls.awk | 9 - bin/glibc-2.7/signal/.cvsignore | 6 - bin/glibc-2.7/signal/Makefile | 51 - bin/glibc-2.7/signal/Versions | 52 - bin/glibc-2.7/signal/allocrtsig.c | 96 - bin/glibc-2.7/signal/kill.c | 37 - bin/glibc-2.7/signal/killpg.c | 36 - bin/glibc-2.7/signal/raise.c | 34 - bin/glibc-2.7/signal/sigaction.c | 44 - bin/glibc-2.7/signal/sigaddset.c | 35 - bin/glibc-2.7/signal/sigaltstack.c | 34 - bin/glibc-2.7/signal/sigandset.c | 38 - bin/glibc-2.7/signal/sigblock.c | 33 - bin/glibc-2.7/signal/sigdelset.c | 35 - bin/glibc-2.7/signal/sigempty.c | 38 - bin/glibc-2.7/signal/sigfillset.c | 47 - bin/glibc-2.7/signal/siggetmask.c | 29 - bin/glibc-2.7/signal/sighold.c | 41 - bin/glibc-2.7/signal/sigignore.c | 33 - bin/glibc-2.7/signal/sigintr.c | 35 - bin/glibc-2.7/signal/sigisempty.c | 36 - bin/glibc-2.7/signal/sigismem.c | 35 - bin/glibc-2.7/signal/signal.c | 38 - bin/glibc-2.7/signal/signal.h | 404 --- bin/glibc-2.7/signal/sigorset.c | 38 - bin/glibc-2.7/signal/sigpause.c | 53 - bin/glibc-2.7/signal/sigpending.c | 40 - bin/glibc-2.7/signal/sigprocmask.c | 51 - bin/glibc-2.7/signal/sigqueue.c | 33 - bin/glibc-2.7/signal/sigrelse.c | 41 - bin/glibc-2.7/signal/sigreturn.c | 32 - bin/glibc-2.7/signal/sigset.c | 34 - bin/glibc-2.7/signal/sigsetmask.c | 32 - bin/glibc-2.7/signal/sigsetops.c | 11 - bin/glibc-2.7/signal/sigsetops.h | 33 - bin/glibc-2.7/signal/sigstack.c | 34 - bin/glibc-2.7/signal/sigsuspend.c | 37 - bin/glibc-2.7/signal/sigtimedwait.c | 34 - bin/glibc-2.7/signal/sigvec.c | 39 - bin/glibc-2.7/signal/sigwait.c | 32 - bin/glibc-2.7/signal/sigwaitinfo.c | 33 - bin/glibc-2.7/signal/sys/signal.h | 1 - bin/glibc-2.7/signal/sysv_signal.c | 43 - bin/glibc-2.7/signal/tst-raise.c | 62 - bin/glibc-2.7/signal/tst-signal.c | 44 - bin/glibc-2.7/signal/tst-sigset.c | 43 - bin/glibc-2.7/signal/tst-sigset2.c | 184 -- bin/glibc-2.7/signal/tst-sigsimple.c | 57 - bin/glibc-2.7/socket/.cvsignore | 6 - bin/glibc-2.7/socket/Makefile | 34 - bin/glibc-2.7/socket/Versions | 34 - bin/glibc-2.7/socket/accept.c | 40 - bin/glibc-2.7/socket/bind.c | 36 - bin/glibc-2.7/socket/bits/socket2.h | 78 - bin/glibc-2.7/socket/connect.c | 38 - bin/glibc-2.7/socket/getpeername.c | 36 - bin/glibc-2.7/socket/getsockname.c | 36 - bin/glibc-2.7/socket/getsockopt.c | 38 - bin/glibc-2.7/socket/isfdtype.c | 31 - bin/glibc-2.7/socket/listen.c | 37 - bin/glibc-2.7/socket/opensock.c | 71 - bin/glibc-2.7/socket/recv.c | 37 - bin/glibc-2.7/socket/recvfrom.c | 41 - bin/glibc-2.7/socket/recvmsg.c | 37 - bin/glibc-2.7/socket/send.c | 37 - bin/glibc-2.7/socket/sendmsg.c | 37 - bin/glibc-2.7/socket/sendto.c | 40 - bin/glibc-2.7/socket/setsockopt.c | 40 - bin/glibc-2.7/socket/shutdown.c | 39 - bin/glibc-2.7/socket/sockatmark.c | 33 - bin/glibc-2.7/socket/socket.c | 38 - bin/glibc-2.7/socket/socketpair.c | 39 - bin/glibc-2.7/socket/sys/socket.h | 243 -- bin/glibc-2.7/socket/sys/un.h | 47 - bin/glibc-2.7/time/.cvsignore | 6 - bin/glibc-2.7/time/Depend | 1 - bin/glibc-2.7/time/Makefile | 58 - bin/glibc-2.7/time/Versions | 65 - bin/glibc-2.7/time/adjtime.c | 37 - bin/glibc-2.7/time/alt_digit.c | 193 -- bin/glibc-2.7/time/asctime.c | 91 - bin/glibc-2.7/time/bug-asctime.c | 33 - bin/glibc-2.7/time/bug-asctime_r.c | 32 - bin/glibc-2.7/time/bug-mktime1.c | 17 - bin/glibc-2.7/time/clock.c | 32 - bin/glibc-2.7/time/clocktest.c | 36 - bin/glibc-2.7/time/ctime.c | 33 - bin/glibc-2.7/time/ctime_r.c | 30 - bin/glibc-2.7/time/datemsk | 2 - bin/glibc-2.7/time/difftime.c | 122 - bin/glibc-2.7/time/dysize.c | 26 - bin/glibc-2.7/time/era.c | 177 -- bin/glibc-2.7/time/ftime.c | 43 - bin/glibc-2.7/time/getdate.c | 267 -- bin/glibc-2.7/time/getitimer.c | 42 - bin/glibc-2.7/time/gettimeofday.c | 39 - bin/glibc-2.7/time/gmtime.c | 41 - bin/glibc-2.7/time/lc-time-cleanup.c | 41 - bin/glibc-2.7/time/localtime.c | 45 - bin/glibc-2.7/time/mktime.c | 666 ---- bin/glibc-2.7/time/offtime.c | 90 - bin/glibc-2.7/time/setitimer.c | 44 - bin/glibc-2.7/time/settimeofday.c | 35 - bin/glibc-2.7/time/stime.c | 40 - bin/glibc-2.7/time/strftime.c | 29 - bin/glibc-2.7/time/strftime_l.c | 1444 --------- bin/glibc-2.7/time/strptime.c | 39 - bin/glibc-2.7/time/strptime_l.c | 1230 -------- bin/glibc-2.7/time/sys/time.h | 193 -- bin/glibc-2.7/time/sys/timeb.h | 46 - bin/glibc-2.7/time/test_time.c | 116 - bin/glibc-2.7/time/time.c | 36 - bin/glibc-2.7/time/time.h | 420 --- bin/glibc-2.7/time/timegm.c | 48 - bin/glibc-2.7/time/tst-ftime_l.c | 126 - bin/glibc-2.7/time/tst-getdate.c | 120 - bin/glibc-2.7/time/tst-mktime.c | 70 - bin/glibc-2.7/time/tst-mktime2.c | 142 - bin/glibc-2.7/time/tst-mktime3.c | 50 - bin/glibc-2.7/time/tst-posixtz.c | 88 - bin/glibc-2.7/time/tst-strftime.c | 111 - bin/glibc-2.7/time/tst-strptime.c | 193 -- bin/glibc-2.7/time/tst-strptime2.c | 59 - bin/glibc-2.7/time/tst-strptime3.c | 55 - bin/glibc-2.7/time/tst_wcsftime.c | 28 - bin/glibc-2.7/time/tzfile.c | 809 ----- bin/glibc-2.7/time/tzset.c | 657 ---- bin/glibc-2.7/time/wcsftime.c | 30 - bin/glibc-2.7/time/wcsftime_l.c | 26 - bin/glibc-2.7/timezone/Makefile | 223 -- bin/glibc-2.7/timezone/README | 17 - bin/glibc-2.7/timezone/africa | 673 ---- bin/glibc-2.7/timezone/antarctica | 327 -- bin/glibc-2.7/timezone/asia | 1843 ----------- bin/glibc-2.7/timezone/australasia | 1454 --------- bin/glibc-2.7/timezone/backward | 109 - bin/glibc-2.7/timezone/checktab.awk | 159 - bin/glibc-2.7/timezone/etcetera | 80 - bin/glibc-2.7/timezone/europe | 2526 --------------- bin/glibc-2.7/timezone/factory | 8 - bin/glibc-2.7/timezone/ialloc.c | 86 - bin/glibc-2.7/timezone/iso3166.tab | 267 -- bin/glibc-2.7/timezone/leapseconds | 82 - bin/glibc-2.7/timezone/northamerica | 2584 ---------------- bin/glibc-2.7/timezone/pacificnew | 26 - bin/glibc-2.7/timezone/private.h | 368 --- bin/glibc-2.7/timezone/scheck.c | 63 - bin/glibc-2.7/timezone/simplebackw | 2 - bin/glibc-2.7/timezone/solar87 | 388 --- bin/glibc-2.7/timezone/solar88 | 388 --- bin/glibc-2.7/timezone/solar89 | 393 --- bin/glibc-2.7/timezone/southamerica | 1125 ------- bin/glibc-2.7/timezone/systemv | 36 - bin/glibc-2.7/timezone/test-tz.c | 56 - bin/glibc-2.7/timezone/tst-timezone.c | 169 - bin/glibc-2.7/timezone/tzfile.h | 180 -- bin/glibc-2.7/timezone/tzselect.ksh | 308 -- bin/glibc-2.7/timezone/yearistype | 37 - bin/glibc-2.7/timezone/zdump.c | 668 ---- bin/glibc-2.7/timezone/zic.c | 2720 ----------------- bin/glibc-2.7/timezone/zone.tab | 421 --- 237 files changed, 38239 deletions(-) delete mode 100755 bin/gcc-4.3/bin/c++ delete mode 100755 bin/gcc-4.3/bin/cpp delete mode 100755 bin/gcc-4.3/bin/g++ delete mode 100755 bin/gcc-4.3/bin/gcc delete mode 100755 bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-c++ delete mode 100755 bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-g++ delete mode 100755 bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-gcc delete mode 100755 bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-gcc-4.3.6 delete mode 100644 bin/glibc-2.7/crypt/Banner delete mode 100644 bin/glibc-2.7/crypt/Makefile delete mode 100644 bin/glibc-2.7/crypt/README.ufc-crypt delete mode 100644 bin/glibc-2.7/crypt/Versions delete mode 100644 bin/glibc-2.7/crypt/cert.c delete mode 100644 bin/glibc-2.7/crypt/cert.input delete mode 100644 bin/glibc-2.7/crypt/crypt-entry.c delete mode 100644 bin/glibc-2.7/crypt/crypt-private.h delete mode 100644 bin/glibc-2.7/crypt/crypt.c delete mode 100644 bin/glibc-2.7/crypt/crypt.h delete mode 100644 bin/glibc-2.7/crypt/crypt_util.c delete mode 100644 bin/glibc-2.7/crypt/md5-crypt.c delete mode 100644 bin/glibc-2.7/crypt/md5.c delete mode 100644 bin/glibc-2.7/crypt/md5.h delete mode 100644 bin/glibc-2.7/crypt/md5c-test.c delete mode 100644 bin/glibc-2.7/crypt/md5test.c delete mode 100644 bin/glibc-2.7/crypt/sha256-crypt.c delete mode 100644 bin/glibc-2.7/crypt/sha256.c delete mode 100644 bin/glibc-2.7/crypt/sha256.h delete mode 100644 bin/glibc-2.7/crypt/sha256c-test.c delete mode 100644 bin/glibc-2.7/crypt/sha256test.c delete mode 100644 bin/glibc-2.7/crypt/sha512-crypt.c delete mode 100644 bin/glibc-2.7/crypt/sha512.c delete mode 100644 bin/glibc-2.7/crypt/sha512.h delete mode 100644 bin/glibc-2.7/crypt/sha512c-test.c delete mode 100644 bin/glibc-2.7/crypt/sha512test.c delete mode 100644 bin/glibc-2.7/crypt/speeds.c delete mode 100644 bin/glibc-2.7/crypt/ufc-crypt.h delete mode 100644 bin/glibc-2.7/crypt/ufc.c delete mode 100644 bin/glibc-2.7/mach/.cvsignore delete mode 100644 bin/glibc-2.7/mach/Machrules delete mode 100644 bin/glibc-2.7/mach/Makefile delete mode 100644 bin/glibc-2.7/mach/Versions delete mode 100644 bin/glibc-2.7/mach/devstream.c delete mode 100644 bin/glibc-2.7/mach/err_boot.sub delete mode 100644 bin/glibc-2.7/mach/err_ipc.sub delete mode 100644 bin/glibc-2.7/mach/err_kern.sub delete mode 100644 bin/glibc-2.7/mach/err_mach.sub delete mode 100644 bin/glibc-2.7/mach/err_server.sub delete mode 100644 bin/glibc-2.7/mach/err_us.sub delete mode 100644 bin/glibc-2.7/mach/error_compat.c delete mode 100644 bin/glibc-2.7/mach/errorlib.h delete mode 100644 bin/glibc-2.7/mach/errstring.c delete mode 100644 bin/glibc-2.7/mach/errsystems.awk delete mode 100644 bin/glibc-2.7/mach/lock-intern.h delete mode 100644 bin/glibc-2.7/mach/mach.h delete mode 100644 bin/glibc-2.7/mach/mach/error.h delete mode 100644 bin/glibc-2.7/mach/mach/mach.h delete mode 100644 bin/glibc-2.7/mach/mach/mach_traps.h delete mode 100644 bin/glibc-2.7/mach/mach/mig_support.h delete mode 100644 bin/glibc-2.7/mach/mach_error.c delete mode 100644 bin/glibc-2.7/mach/mach_error.h delete mode 100644 bin/glibc-2.7/mach/mach_init.c delete mode 100644 bin/glibc-2.7/mach/mach_init.h delete mode 100644 bin/glibc-2.7/mach/mig-alloc.c delete mode 100644 bin/glibc-2.7/mach/mig-dealloc.c delete mode 100644 bin/glibc-2.7/mach/mig-reply.c delete mode 100644 bin/glibc-2.7/mach/mig_strncpy.c delete mode 100644 bin/glibc-2.7/mach/msg-destroy.c delete mode 100644 bin/glibc-2.7/mach/msg.c delete mode 100644 bin/glibc-2.7/mach/msgserver.c delete mode 100644 bin/glibc-2.7/mach/mutex-init.c delete mode 100644 bin/glibc-2.7/mach/mutex-solid.c delete mode 100644 bin/glibc-2.7/mach/setup-thread.c delete mode 100644 bin/glibc-2.7/mach/shortcut.awk delete mode 100644 bin/glibc-2.7/mach/spin-lock.c delete mode 100644 bin/glibc-2.7/mach/spin-lock.h delete mode 100644 bin/glibc-2.7/mach/spin-solid.c delete mode 100644 bin/glibc-2.7/mach/syscalls.awk delete mode 100644 bin/glibc-2.7/signal/.cvsignore delete mode 100644 bin/glibc-2.7/signal/Makefile delete mode 100644 bin/glibc-2.7/signal/Versions delete mode 100644 bin/glibc-2.7/signal/allocrtsig.c delete mode 100644 bin/glibc-2.7/signal/kill.c delete mode 100644 bin/glibc-2.7/signal/killpg.c delete mode 100644 bin/glibc-2.7/signal/raise.c delete mode 100644 bin/glibc-2.7/signal/sigaction.c delete mode 100644 bin/glibc-2.7/signal/sigaddset.c delete mode 100644 bin/glibc-2.7/signal/sigaltstack.c delete mode 100644 bin/glibc-2.7/signal/sigandset.c delete mode 100644 bin/glibc-2.7/signal/sigblock.c delete mode 100644 bin/glibc-2.7/signal/sigdelset.c delete mode 100644 bin/glibc-2.7/signal/sigempty.c delete mode 100644 bin/glibc-2.7/signal/sigfillset.c delete mode 100644 bin/glibc-2.7/signal/siggetmask.c delete mode 100644 bin/glibc-2.7/signal/sighold.c delete mode 100644 bin/glibc-2.7/signal/sigignore.c delete mode 100644 bin/glibc-2.7/signal/sigintr.c delete mode 100644 bin/glibc-2.7/signal/sigisempty.c delete mode 100644 bin/glibc-2.7/signal/sigismem.c delete mode 100644 bin/glibc-2.7/signal/signal.c delete mode 100644 bin/glibc-2.7/signal/signal.h delete mode 100644 bin/glibc-2.7/signal/sigorset.c delete mode 100644 bin/glibc-2.7/signal/sigpause.c delete mode 100644 bin/glibc-2.7/signal/sigpending.c delete mode 100644 bin/glibc-2.7/signal/sigprocmask.c delete mode 100644 bin/glibc-2.7/signal/sigqueue.c delete mode 100644 bin/glibc-2.7/signal/sigrelse.c delete mode 100644 bin/glibc-2.7/signal/sigreturn.c delete mode 100644 bin/glibc-2.7/signal/sigset.c delete mode 100644 bin/glibc-2.7/signal/sigsetmask.c delete mode 100644 bin/glibc-2.7/signal/sigsetops.c delete mode 100644 bin/glibc-2.7/signal/sigsetops.h delete mode 100644 bin/glibc-2.7/signal/sigstack.c delete mode 100644 bin/glibc-2.7/signal/sigsuspend.c delete mode 100644 bin/glibc-2.7/signal/sigtimedwait.c delete mode 100644 bin/glibc-2.7/signal/sigvec.c delete mode 100644 bin/glibc-2.7/signal/sigwait.c delete mode 100644 bin/glibc-2.7/signal/sigwaitinfo.c delete mode 100644 bin/glibc-2.7/signal/sys/signal.h delete mode 100644 bin/glibc-2.7/signal/sysv_signal.c delete mode 100644 bin/glibc-2.7/signal/tst-raise.c delete mode 100644 bin/glibc-2.7/signal/tst-signal.c delete mode 100644 bin/glibc-2.7/signal/tst-sigset.c delete mode 100644 bin/glibc-2.7/signal/tst-sigset2.c delete mode 100644 bin/glibc-2.7/signal/tst-sigsimple.c delete mode 100644 bin/glibc-2.7/socket/.cvsignore delete mode 100644 bin/glibc-2.7/socket/Makefile delete mode 100644 bin/glibc-2.7/socket/Versions delete mode 100644 bin/glibc-2.7/socket/accept.c delete mode 100644 bin/glibc-2.7/socket/bind.c delete mode 100644 bin/glibc-2.7/socket/bits/socket2.h delete mode 100644 bin/glibc-2.7/socket/connect.c delete mode 100644 bin/glibc-2.7/socket/getpeername.c delete mode 100644 bin/glibc-2.7/socket/getsockname.c delete mode 100644 bin/glibc-2.7/socket/getsockopt.c delete mode 100644 bin/glibc-2.7/socket/isfdtype.c delete mode 100644 bin/glibc-2.7/socket/listen.c delete mode 100644 bin/glibc-2.7/socket/opensock.c delete mode 100644 bin/glibc-2.7/socket/recv.c delete mode 100644 bin/glibc-2.7/socket/recvfrom.c delete mode 100644 bin/glibc-2.7/socket/recvmsg.c delete mode 100644 bin/glibc-2.7/socket/send.c delete mode 100644 bin/glibc-2.7/socket/sendmsg.c delete mode 100644 bin/glibc-2.7/socket/sendto.c delete mode 100644 bin/glibc-2.7/socket/setsockopt.c delete mode 100644 bin/glibc-2.7/socket/shutdown.c delete mode 100644 bin/glibc-2.7/socket/sockatmark.c delete mode 100644 bin/glibc-2.7/socket/socket.c delete mode 100644 bin/glibc-2.7/socket/socketpair.c delete mode 100644 bin/glibc-2.7/socket/sys/socket.h delete mode 100644 bin/glibc-2.7/socket/sys/un.h delete mode 100644 bin/glibc-2.7/time/.cvsignore delete mode 100644 bin/glibc-2.7/time/Depend delete mode 100644 bin/glibc-2.7/time/Makefile delete mode 100644 bin/glibc-2.7/time/Versions delete mode 100644 bin/glibc-2.7/time/adjtime.c delete mode 100644 bin/glibc-2.7/time/alt_digit.c delete mode 100644 bin/glibc-2.7/time/asctime.c delete mode 100644 bin/glibc-2.7/time/bug-asctime.c delete mode 100644 bin/glibc-2.7/time/bug-asctime_r.c delete mode 100644 bin/glibc-2.7/time/bug-mktime1.c delete mode 100644 bin/glibc-2.7/time/clock.c delete mode 100644 bin/glibc-2.7/time/clocktest.c delete mode 100644 bin/glibc-2.7/time/ctime.c delete mode 100644 bin/glibc-2.7/time/ctime_r.c delete mode 100644 bin/glibc-2.7/time/datemsk delete mode 100644 bin/glibc-2.7/time/difftime.c delete mode 100644 bin/glibc-2.7/time/dysize.c delete mode 100644 bin/glibc-2.7/time/era.c delete mode 100644 bin/glibc-2.7/time/ftime.c delete mode 100644 bin/glibc-2.7/time/getdate.c delete mode 100644 bin/glibc-2.7/time/getitimer.c delete mode 100644 bin/glibc-2.7/time/gettimeofday.c delete mode 100644 bin/glibc-2.7/time/gmtime.c delete mode 100644 bin/glibc-2.7/time/lc-time-cleanup.c delete mode 100644 bin/glibc-2.7/time/localtime.c delete mode 100644 bin/glibc-2.7/time/mktime.c delete mode 100644 bin/glibc-2.7/time/offtime.c delete mode 100644 bin/glibc-2.7/time/setitimer.c delete mode 100644 bin/glibc-2.7/time/settimeofday.c delete mode 100644 bin/glibc-2.7/time/stime.c delete mode 100644 bin/glibc-2.7/time/strftime.c delete mode 100644 bin/glibc-2.7/time/strftime_l.c delete mode 100644 bin/glibc-2.7/time/strptime.c delete mode 100644 bin/glibc-2.7/time/strptime_l.c delete mode 100644 bin/glibc-2.7/time/sys/time.h delete mode 100644 bin/glibc-2.7/time/sys/timeb.h delete mode 100644 bin/glibc-2.7/time/test_time.c delete mode 100644 bin/glibc-2.7/time/time.c delete mode 100644 bin/glibc-2.7/time/time.h delete mode 100644 bin/glibc-2.7/time/timegm.c delete mode 100644 bin/glibc-2.7/time/tst-ftime_l.c delete mode 100644 bin/glibc-2.7/time/tst-getdate.c delete mode 100644 bin/glibc-2.7/time/tst-mktime.c delete mode 100644 bin/glibc-2.7/time/tst-mktime2.c delete mode 100644 bin/glibc-2.7/time/tst-mktime3.c delete mode 100644 bin/glibc-2.7/time/tst-posixtz.c delete mode 100644 bin/glibc-2.7/time/tst-strftime.c delete mode 100644 bin/glibc-2.7/time/tst-strptime.c delete mode 100644 bin/glibc-2.7/time/tst-strptime2.c delete mode 100644 bin/glibc-2.7/time/tst-strptime3.c delete mode 100644 bin/glibc-2.7/time/tst_wcsftime.c delete mode 100644 bin/glibc-2.7/time/tzfile.c delete mode 100644 bin/glibc-2.7/time/tzset.c delete mode 100644 bin/glibc-2.7/time/wcsftime.c delete mode 100644 bin/glibc-2.7/time/wcsftime_l.c delete mode 100644 bin/glibc-2.7/timezone/Makefile delete mode 100644 bin/glibc-2.7/timezone/README delete mode 100644 bin/glibc-2.7/timezone/africa delete mode 100644 bin/glibc-2.7/timezone/antarctica delete mode 100644 bin/glibc-2.7/timezone/asia delete mode 100644 bin/glibc-2.7/timezone/australasia delete mode 100644 bin/glibc-2.7/timezone/backward delete mode 100644 bin/glibc-2.7/timezone/checktab.awk delete mode 100644 bin/glibc-2.7/timezone/etcetera delete mode 100644 bin/glibc-2.7/timezone/europe delete mode 100644 bin/glibc-2.7/timezone/factory delete mode 100644 bin/glibc-2.7/timezone/ialloc.c delete mode 100644 bin/glibc-2.7/timezone/iso3166.tab delete mode 100644 bin/glibc-2.7/timezone/leapseconds delete mode 100644 bin/glibc-2.7/timezone/northamerica delete mode 100644 bin/glibc-2.7/timezone/pacificnew delete mode 100644 bin/glibc-2.7/timezone/private.h delete mode 100644 bin/glibc-2.7/timezone/scheck.c delete mode 100644 bin/glibc-2.7/timezone/simplebackw delete mode 100644 bin/glibc-2.7/timezone/solar87 delete mode 100644 bin/glibc-2.7/timezone/solar88 delete mode 100644 bin/glibc-2.7/timezone/solar89 delete mode 100644 bin/glibc-2.7/timezone/southamerica delete mode 100644 bin/glibc-2.7/timezone/systemv delete mode 100644 bin/glibc-2.7/timezone/test-tz.c delete mode 100644 bin/glibc-2.7/timezone/tst-timezone.c delete mode 100644 bin/glibc-2.7/timezone/tzfile.h delete mode 100644 bin/glibc-2.7/timezone/tzselect.ksh delete mode 100755 bin/glibc-2.7/timezone/yearistype delete mode 100644 bin/glibc-2.7/timezone/zdump.c delete mode 100644 bin/glibc-2.7/timezone/zic.c delete mode 100644 bin/glibc-2.7/timezone/zone.tab diff --git a/bin/gcc-4.3/bin/c++ b/bin/gcc-4.3/bin/c++ deleted file mode 100755 index 0eaa309cb75eafa2975dad4513739f613b6cec03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231400 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

ncb^P0K`xgJE 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 diff --git a/bin/gcc-4.3/bin/cpp b/bin/gcc-4.3/bin/cpp deleted file mode 100755 index 5ae9d241bf52234cbf21ce0126808d782e18b353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227304 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 diff --git a/bin/gcc-4.3/bin/g++ b/bin/gcc-4.3/bin/g++ deleted file mode 100755 index 0eaa309cb75eafa2975dad4513739f613b6cec03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231400 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

ncb^P0K`xgJE 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 diff --git a/bin/gcc-4.3/bin/gcc b/bin/gcc-4.3/bin/gcc deleted file mode 100755 index 28b4a57b40eb7f2a4d76896925b28f0906dfc909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227304 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

8i%GWw{(0g`Sq4NzXVr|K}-wK=U?-R0~ zss0^5t#cVq0|?z%9_!c^Tb4YLhkLX3^+uFOSko;%$JNw7WHl@!#_Xq@vb$w~D9hE>J$0$gC^_L20lm;3UtuOzUoKgj;a!Mtqeas+9 zIm@-*%8*mqALH*i8H{LwTtX^?FxJIIm#LscX zzZ7yw1Q5|4qZgL{F<|-bn?WbFOPFi2+G~fYUvol<(zs3%_}Gj>O1q~_PQyfgi5rCY z$8e7cXVn`^0k_X*RU1^SJOhY>VY_8=2*Q3!YM!-H(8glGfE4!jpW8|`h4P_j>VioS zy;goDT$6Q+n-q6{HL`41d(dOigJx~=fNQWlUM8BW{ENNMSVR{R*;QjasmnB;)McXc zmV!OgZ@TDN8%tFZ`fV^7FKY(75QJP!Nm6RF6v;mxU)4`kP&A3k z@KPy{GB7cIGxJUYmBS{13ic9)lZ2HLu@bC|t8Ovk;eC0FEmxg`6d3Qtd{HXBCtzU$ zT->6vm~vKLP{>yet?xS~>B zvR}74Z#(xXhKyPw;b@u(X3d}>wi-7D4wMuuc>JHhQ11* zqJ*)yDo;YSN>4~*vftSH8>alV#?8(?WThMOpup|9A{!$$NHT$r3(4BK$YD+EqlV!X7Nys3QDFDK`9jW?jUA%l2um zFydc=FN#20yiB|^K=&AAHer3UUEQI(ny4Ri_1$2f>1w%aqg-!}ZsU#+g!er7PJ*d3J@U11>JJ*{ zZLdR%)IG8#Wr;YGN#Ib=-jKIi{u+ti3LDLb!HQd433>})*n9j>(GnDt{C9UK^~`(`V$t znrPP$t|BK~SqbAPv1Yp3rm7Lot;E-mg8Z|IekeqNn&PGS{$auxrB$rN-5yuAB!dR)hmvHC+lLqfi-Ti={#XOzDo@_H4rQ zv6djpcs$h~AJQ9)#G9-Ub^mg65?*F&c>h66t?7J@@Dh$f`__9wM+m z=+Ry0h5sPC1}n6bB0wK(p@fstjX+Rnp+l6E z*@hC6p}^@v{ykIRxsG1^sX^qWcm>hRvb%Ikg@NG4GaTvQ+p>5%rBykA~f`OT0OjrPFlc-@@!(%}-T67aocvZUL$XX8)f+uq(w&8JmHKmEFOM(QSjn#c5Ihu1Y{YJcawu575`V){QO94EjMqY0v0i zeh}FSS5MqK7yUixiT_Dn`*G^e&qd$F75XR8fB3*0^iLJoH1+p@{{Kv6Km$74NNiW- zrKhXUMaHB>zbyNWC9LLM1&PRV?lfgAX)%`cDv548GQ3Z8+wtK(={14#B*o43o6kGH z;Gv0u+0KMT8qub93k9L)`_)V=`c~-kSo}~oR!k& z=|S%)BoZFGiLTjuAlYfoS}L&rrfdF_oV81X=0My%H0Yp%avC)7 zryJxSkkg=#g-HLc20in|znyO)xeW^lvU`>R7ax$*us;9C4TBve9`0UL>-vbED)1cMT@I5zZ^S(I^x=mpJ3k_l}G7^W%2s}(iU|M+ANb)J4vLVGz{#w>I-&8DC z%9U}`zxGFI)5;$EIMc@j>#=*d${Pw>Ww^D}i1+7HSF?-Rd1|{ssd6d98eK|s>OmE4 zgqPTiU!LQ=mhE<)3F{9K>5#sNesDJFAL)2=4b%|QPHt4uCdB&ov zx7d51)a}>Bm?_ z)nwFe`QNb%N94Pre#MR*716H`aD{2b0{a#OFrp}Qg&X=1Q%ph?ln zb0Ygn^bg#3gbf8=ekG3+Ls=Ht#m-uWNiRc;JZ9=)zzmD@5ZE7Qk^i) zLcW-doq2Xwmun~~H4?{S3K8vg5Zdjt0Pt9UP5k_Xqjm~TFvHbq@N?On)Ea^c&C`@m4W^z z)#J2H-%IpvjkQy+3ENY(wMsXwiOrmWlh3}Vz4N_H2jcLx zO9%c-vLuRITG;JkM)u0qSel#>I_@Vp`Agvj)!PD>wUR}M%HVE3NKdz zWOk!!7_i2YawQ(p*rnw}7&C`9QMxA7Vc0ymT%?x_a)6sbh!M65E8?v0#HMQ8`WK$% z%xxjsxBnSzqn_Azc}rnwPsj+_j#zHf{DWYRY4L)?s~jjO*-hSd^---7VJq$} zTztNeuj(pRhN}ZyBKiM&YYNA5dO^0PTw^Pa1^BDjfulL2iQzCPrAU$USEps~q zrsR}@9`xf(g1N70VoQL7nqU@7c^O9okg`Yym|C7h%uIYo9H9URA+)7Lb?h%)N)vm6 ze6Yqo1~9i4@eJD3ggBzpH^x@v*>AlqQ`U(X40P4zo9Z+AzhA&y;nrn;4b(2O=DH75 z|7QllWZ{rBy?!oKMiX*tkLlbf)aD7yJ}Z_Yn9 zN^@$ma;B8tNgROibNcWn_K?;AWNe9n5M994B$aJY*#vtLepHT(;J9*HH`KAOq`j6O z2hDr5@R4mz0$;mYo8>R97JHyEyBwphvE+8Gd6=sPNjXJ+^VNoa-Lm3m7is>w>{X{Z zeJefj6O`Y-R}STy1@=e8kF={9WP(4sQ@ICeuBN42rpQ%=(yEek3RBfGSU;mzr1z}D zQP&FTlV^`!o4ObI&>&IN0u|30_cX_wjl?nrv-2nZ zFjE@w9?ThO>!)$^cVcKyOC}@!Pd>!eCcR6JbC$R!^{iOI{V_ngIzWw)XywhNl?YGa zCnY@d?VH}r2v4uN<;@WP&$KXJdX#i^`C^izSW`EPGvPlZBl9+N&-ZD)UK5 z&hBj5qAa`(fa(og3ns@l;Y(E@4h9#qzZF&AYG+{aGMFy@59jHlec`e*(@jZl?h?F@ z=4Xf~8@$GnpQm@IM9OD2%G!)2BTAUOqy}7Ny46H?o*lk`zuc&5A=9OU5;A9zG}Ks9 zVZ>Y2OV>~%{x_XcHKi|~5nA4?rPwLOn>%0>qZ%eIhaaASW-+CX^AFZG>wkfi=dBb}Jzh!Oe zPU~zwPKL(Op2|(`yl9UCmyt#Zr9WiPR`pxrI4B~;BwixDX(E5vwBMQDS)A50dM(t7 z9|{!dJ95)^kbbVJy9+G#141S=&CJ?yC79G^Xra*}N`{-HpU0W++tXi{QzcyNr+mh9 zc-*N2we&2&r0}%3bv0p^CWt_LzU|?=T=C^RAhSYcsO(Jcf1&yY0F5Qnz0MR>jNU_1 zZl3nY0z}KS4QQdp61m@-k){=;$M^>FwliW22pq5<@iI`LY8tpr?G869TE*=^ACF5` z6*wcQFnXV&&~(i zHE&5>JI}$p7xJe4L!Cc(xoi?VJUAh zzjmrpnjZLJuAuupxx1kI(C%;nqj80}rrjPd+mwUQf5d<*GOji`=yL__MscaZAU`CfX&AW8w9(Mk{$qb(2B%XfIcx2 z{o&_OhGG8BTb;P3rg!gLt{~J6vyTVE>;8+511NW)mh<#c;F*xJ0D4KS3+xq&&~+Ka3697V{(7NFu_98!3(ZUt$DMS z>()_(4pc;ggk5P+qLewoewOJkXnD34BW2& z+0Qf}KG*AHj?r<@DOdziv>buw7cUpSSx9+YnHL|^JUb23=xo1kjw`D)fi@fNJR3&=s>vi&^7=b>dJhKlO zsYmSkGc)@!)EKv-9Fz0`dmbQI@##PpsKF5}>$A4h73V(GE@T%&g6q`BFO zo~C%Q9W>-qFcVihrXH#(Rn@dGR$Z+I2YMRtVn%Pw*|~Pxa8%@P(c>mY?vp}LTciXv z*yMq$Ew8DGe(sGNn;m5L!hzv33qB5|jos7QTKkpg8GM+<9QJw)_=r-hwdlrV+4 zy1f;;chWg+@hXLh5r0H1TG3{12Ltb};9%Uv_oRH4x+Paj$rn*F#4!^4(`YF*U8Hjb zCDMwv=(bU5T@MLJr#e0OW496%nsH-1S&+YVWj^OkS(f~pVK@(vj2#XFqPt^d^GCySy-h7gFJodR>b>C9MbUVpjpYr`S=7 zpZ_1(Q9gSPOd)^9;u@x=H0sN`OS2CEduQUy3eR2&oAJ3YvS75o-3CkrFquz9i?BN+ z`4IhSVQs@zvip$d^p%!r=fY*m8n&R>Iq(ZQt8s5-0dvma1)>a8m3^Q;-%q`~u3t*j z%NqSMK)o#ICDWB2ZYB<;E>ZF^V^vtlAPDZ+p0iTeC%uDnslZ}Y=q|poxEcMxY9U+T z)9wRFX%dk&v?@(sf7-dTD|F-x46`$eoWs|uhIE&v*EU=vp4<7mP`evgtK%Tq^IM!5 zkRu#MJPrkkG=14ghv4|-Z(1z`eeYWrN#6vLpI(Kk75+_=2Yw1_X!TR4H_i&0Yg@tL<8k2d z^p<0&ZSz^;gS}P`g9w6x;%1IqjV|Z3daT2Vt&TSEY!yHAD)lgDa-O3>s<93tWD`e2E-DRS05G^GsxJ0E2f@bO ziM4a71QJ-m=^6w^ZMiI7dd60BhIXgFp|(6^jk~k0ww37HE5*zlG$$+yR!&?RE|$Q3 zUi^oM3{^F7YL)#M1G-;!Q?{Ziy~c{_#Xj&r1h+o3%}tCBk0J#HE=0oUahF3S2Iaj6xlc8x2kahTq5*6Zwc@ zQXSGRNBqo<##3oWe#^!}OlyBHsDJOo@q z-VV+Lw2A)Q?8T}mP5vwknY^YelpN!Y?L;>c0tD;Z#wM#ulP7dXX|HQ*>EvAEXtWKF zxuvD^pcZ>zvR5}0=D{tmY>#d9M)Dc;+(RwF94LZ|I9*yksPw*kDLOe~75&hqY7hea z?`ojKe!PZSYJd;nZeo>`d6j}qK#)?^&S14_=jZ;dwIwx?!(o?2^e|!2K+oAr;WkFL zeDw#CxD{m%=yF!-o5}wHkzJPGo%`W?&L_TN`3??n-EF_-WWVu&itX0~$0Yk5AHpAX ztvO*Of_9Y(T+?C~s5n%ER|-2PZ(!u6dD`R*$;Vsl4PPsn7Us}pi?a`SEQMf%Ns!J( zzjih-?dP1A^Pgd^g+*jgrcWN~z#tqx4oa|COep(p4Yr?HD3AOW$#31PP0yaZqf3iQ zb3|F)thVnT&-d7KI0WwB+Ab#y-3eWR=yO?DlgX4o9&Y20P>Ovn>@s`}%!Z$#+8c@KFR3Dyy@u7-YV+HE^ca8-CaRLRyAKvZUXgyFo|RQE5TsN+>*`Jht&h zf5U`wf6M0>_^Zld8$X9sw2!!CoQEaHUL=T+g|t>zk9}!(TO+}iiU^rA2H8?v7n@P) z3HRYZ-CSGZea1R>hKb9&vT&F4WU98h*ruksSuYCCv1g-Fd@Av;!qhq}vx9_E&TpZ9 zoi(G>K7?9HEtS;N;~9BfC&&KWD{3YF&8*GBhe7M)VIhK>A)|xl6VipjWVp;Q=Pi~; z>kJOzC0EO1Y!hb%Tf8B!9gN*L3~BsKGs)av@~HYrJ|sY9g2f;|^NQ3@5~m~%?8}NG zVBN1E+SS@uPz$yv29fPP4$D54XCG_aMZO2{a5j?%2&mO%=ug712bXs6R;F)ph7XGaccrtIW01S-%!2gMN2{QK_?%K zGdn`*f-Y>}Saw}<3MzJ@5K;+V{w6O?@hh#TU70yFwu$pxfcC`Y?i2A5xsgcgEKfu! zJ5>3whdd)b4ml^%8ME&y(Orhw-(b9_je4}r6S4#>J@&lV0a4j%=c4#5H5ROJz93WU zD}^J*K-8qzT9mPCZ=`R~nkSe9D^wxI9fSh7aA~OGeo36RH(f7OiLY^68|eeQCf7V^ zeTHL>r+X~LhzyldDbRXCaiHcF)|4;fsRN7f^twE~!C`UE@wt4^8nP5YI8<9i?~fE} zTS<`=G}~XksK`hhOj@j?n-Lcm(7(y^^iySyjH1GQu6^XNGH@K z$L0Br##*mTPaan#4kd?po!+pcfD^+_Vm{XQYNeU=Rjt8_ZN^Q{;;slwOc$~y3tmt~ z$2NDDcoHOwcpIBUQO@_9E2RvuBpilS&?=!T1hHW3Gk8zl^T5}A!e^402`{Nir>+vr zvZK*CgEAG4{D~08Es_^9zeo+lh}11up(ZTj<_&m1L@V|ounrFxy@SbX@veNv!>3bU z7nx^wtMX2Jo^SF~9d#T~k+R^Y$l?$dl4PK!pr#@6XA)=NQc=5*3ys8YqoQ_UO~Z`G zjhm}sYRmVxQCYp~%PB)0k$1#+3z%C3xUzPk5$mS_qq%_BTplnZi=`@S!eSK*A~Bs2 z5i;jZRzLGE=BJjJ6Xq6T8WWK02O6B7n?z?joN$_GMhsF_gr$qHR1ro(h`*G=x}3I7 z+53&qzqB$`@r2NU1}-43#}&9qMOFtIuK3r~A!PRtnOnHYw8$9?;Z&?&BXPXY5DlJj zC?Co~DDt5Y4O$WVs-{4bM{akTJp&pzf8YZe_wt3(J~Bh*k2I0%=>A>vf}i|E^Wq09 zTv~PIp$glG9U%4k_O3{GOXY;cMr?`@KmtBkPiU#EW*0)38-dnPMY9n<3hR@Vl*vit zl^m1{Rq7cjz7H>iTS02oE;Zuc$VvFhgvLp;yDrVqr`1Z3Ly+Zbjl>h2Op&=i?x7mtb%Zkmf&S!{ICLDbPDS#-k6FbBv$NGA!DdQ&3jV^(k8++Rv)`FS9UzRGnkS17fi~xGK*mVgf_^-^Q4a}l=9(f0L+BU zk>Nr%LlS3DtjuqE-mg&eKF7qNZTw`7h)nhsDsB8wIwBd{F>j%nm!(GHz~n6cevM!2F!wU?PiH}M~ev2+vT0~KQ^#fz4r_$z8? z1u4jV8(UY@a6ek?nIhnj4UdC1xJZj6C0aF%c#PXwSI5^~n*(-F226bzt&+pquK;E# zlv!vF6)oaGC{RN&A#?jLlLgy^8KZ^VFx$+iT{mTmZl5q>9kSaAvOhuH6O^i&Md>b) z9B!A!XW-bO@k3jL#qQ;_%-2#A`C2#LIq#>7Z$VV~fCg^kn57wqTk#yYcM zW(K?vS&{M?A*G91c%5J+=x9{hMJ&6hyshFfx$2wd_{6#l&(8-k%k#JLMv)!Dzww)- zkc@19NmR7-0C<8IYW#t0zb$w4P18VoknLrZ?!5YyqPZ}olE#9w#04IKKB5`FZq`n% zhkh;cE?;Y>7QRmN*2}okxx_h%8u4{Nq=$C6nn`>q5Gs7~wC?B*R+&=(&z zCIdE9#FYsX;AzKr`5WlQoJ2TyOAQOmIs2CP>&_VyKv60qZ%|jAm;0aEvfNn)8w+>t zPwQ1X&Fy<0CyvBJ1Pke}CuC%8Eoejk(mlof+*q=xTP+~0f_>AnXeoZ*5VRb4KGV5s zb&syDMG~?|nXNt1vi9%5#)v=0MwY6`ToL`m8$Qw<$wUfRH)d(6WHEaWHO z5#RYNtf-(0Hr9!U@&ynf3(nZ!Jje-NXTcU3m!rAqC##I3axTi~;ERl#XCtUA-{7Ou zie8}N%PGU1B1BxS{=LYEoudFfxq!w^HUj8Br-T3Xy`NB0mB4nUQDH`34rle{HdkM^ zr9=J$`f|xnp%VXszJNSweR+!!n=JMEHV#dbF{>}H0yZ-R!UIYeS0wcmxCm27MiT7L z=!1zea$89crS-)_B2LoE%FlU$VRDrf5B-%Ls;490WN^$Lqg222)P{QdgQ?9a1;j;< zGRJlOaGEa2#c?Ve>)JSId>B)@LQPN02$o@J2;+!H;4_vyOWcCCI*xMz(Spgm zqGieew*J|NkVGO_ksk1QU+G-r)Y2Wfy|vyY ziL;G9Qv0`z;t4_nY+W*n^={L;p!ZA6S*s-iBYET4SzT2iBYZVMvaJcL5d#gQz0UKS zv-57EC)GPolj17$Zrhj*GPCwQ&91>@)IlMWqeo1Kb{zhT}U#p7)kaMy$r|KH1 zdV=26!XU;$qJU5B)`jpTFOQbm0jPL+%F$w{P4-JrD3jkrP+9A5FX$@>=#9&QVEz~vqsqOm zc{_BZwEPK8Kc!cMjDRv9L!bth2!d|FYcb)+|ie7 zH+LFwX($#Yf7=N=dOM%M3&QX$aikXG=Ep?dQHu-(nf&0iajUELF=o%D6j=(N!7M0C z;gk85Jm*Hfh;Hx3$tK)Uj3q%YshD1bA)VWK7DWit zqbe$EdQ@TwTVp8M3x@%%-Xup9{Xd%?{cNt}aZlkcCP>tVe=%4W=$>P!N?g{0=foJH zjFG5Ht#wY0H> z>rPHU`iO`=(BJHcj3%!|6i1(u&tlhAfMVb6$=8If*f3EuJ+`#1EGL^eTPtS3#Sz8-W6mJc~r2YTSRJ$}lxMt7xY=!r)IHZFU zD}Oom!pZBl+I)|*RZgE<^JKJa9bH~S7;u?k4hKj!9T-O?bgP9wN;B@XL5}LgenIoC zCnOp1U6e6rDmyDH67$%gbz>o6`CB&S+4*nad4$yRTWoI=?v_}r0pe;(mi;*4}j$uQSuIcDtD5 zapt?u&lLkIVHHfySRIrw(ysMYRb#*Mpz6y0*ji#6zn7iu{;Fp~ddTnf(vneW_!fMlrUi+t^khfbAG`TH(q`vq~Dc#Ng5+?B!AO2!h~h#$*ZQAVbE zM>?Cp@$QSWcALSopB0NgStlEbW@0XNGl@3HPvty$f1V{N+?T;T%6mxQ=iOu( z$E~h!aZ!*Fe-+zApaP5FNb1(}yVFdXXbjT@oyJp??xMY9P#wC9>VStzFu!)S+Lc>v z{D17d3wWGWwKu+dqZf(^P_!OJ-3$#TME230TsYk^L z{^$8WU!Hc}ckjLSde>fi?X}ll`<8zKoP&8#(f=r4`o=(GKZrMI>#^GHaJR5l#&#HT z!7;z@RaKb{Z*pEV_F;}{qGi;mm+JOr;75lRucgRroBR;_$<~1>6A|Sgsx?0a^La96 zgpQvG8C#3-x$cZHYQ&u%K(vfkOpZEG_tM(CxaJ5qpWYS3@vCBQp%;O8j@i2CbKr4W z3?VbXkjV=$@&MRnhfETv_|Q^Jk`0V|Wtuhjo9mvf_~26zZK6KmWCX6xDvao@|MX)g z7zl02;5#xnE6C)CCJD9zNm^A(QjjF&6L$@AQF`O1i|8pG{3+T5s}cRWHa@rEXmwPg ztUem}UK>EU)V~A!5aCtre>a|k4`c6TTYjh5cY}|JeTAvlyDvtYQiFSe5Q&2g7;lPL z|58S2m;}o|?lA@je{YhfpjQH1<=`Q)1>tbH`;y~>w;>a>1_DbCa< z&hAV)fud!h*EnpOTxC0$Vh(v7@C2yE?CXA%H4-f8vqVVdg57WN^oirEz zDolFi`)@&0I{bEMp1G*m$BrE6KaiWzysZ^25Ub5E+Q#JU=@>QEHRd12+}ZD`?CSPk z_h<`LQ~#G_0EP8awc3tjC&KPw2iL2Vs%A{+0_X9!;cVlhjrj#Lz^Yw;99>BN7;B@j z>d5pXh*^c06Z9h!AhObr9OtH7-O+Jrs5#2~;`!3ItUTnAwbQh4j~SeZ7icDSHH-55 zu|P$v$1Bmf_}0e`u79dzJs8%XPDS~H`ImX-I~YC#2l?g?%zdn|1b|orHPwH=T}ysn zyBFJ}yVW5y;j4Qo$>2+yzBdK1(~ z3ud8j{0Lt1&o+ z)rf2j@2$AGdB&x|S-W{K_EfgV=DNRDZ2LSuhaIw)Vz6)%UiBiqey)SXl-LcOKsoo- z=DJsiXX?h&wl$xr8ZqC0!$nA7Tx~GCM>am|^H#4#blsmTZuk+NvM0C=Wq^MjOLp_m zUc6}mmX1vu{1y}OeM%%x%g0d%yG8+Oz5wLL!~I_Or|W*Z?R{se{Lg3otpEAGi6m97 zLF5iT5;vfCI5y^g$;)VP@-{e#HEG-z26j%t^)G*-O;XtLODN5q>y}}e8W@5PZ$757 z7wi7>+T`ZvM`2x^EKTiyetX3Y_d_OH2QU?Y^IK2Op1xpWMgP|kgH$G@xeFYC;zOhkGuvE z&G{c6`SsvOko*I%0UNFGX6!e%56BjbN31VFLup0}L1SSPc@>T1c{-TbB20Ru`($*Zj zR5Q66FOVU*3A1TFUm(Kx*?i~=6Av^`JR~}1Y{QmEw=!kRJ>UYSqo2n^;f{ia!k72M zNXYM&C9^noI2(r<^);@pYhcR@Lg(iH*pe?a^GXU_bA{_q3%kKs*@e6HBgDqZ=8pSb@)3%Kw%4zAO6?qc5W6Zd{|2N8|1>xT5})H?|$G`tUW3yWV`Cf z0Z?ErN7VOE9^<{9xUc$n7LzUS;`6P+{9z+6g>#5&U_B<8_Yfxc0@sn^9*3*09;{>% zLRVc~T>sy=OnBP3l=pua#II(PSS%!60oSJBdJtLBkqyHTJA4k0*Sv7kYcsR+HoZ1| zdv*?v?|_isw(oDp(d}i=Ene1~JrA2g8!GO8=+!N1Rb7*6$l^}SXC8PTP!@6;JZEZD zh~mWwxX|&L2k2%gbQpxcf$qSKst@sk?uz~l8V*)3KZ?e;1yH!pQ7%REtY^jb8N4Nu z9>6#nQ{f!oL5GZf_;l=t;@yn2PTK)>DN_SO`#}l9FwM{pYgq6s*6` zO&Dl-qwvCZ|L>G_5P0lViBw8J;00lDSQul6V(oUmmlbMQZr)9y&b`FFmDp0TK!$sTd-n+aP{!HM!Z7F2E;yT(%^Y`WU5yna&mErD3MT<> z3B#SFt@&TI&U&Hnj=jhX`c!+S2?19IS?`w@iP#XH?zKDz@ztG5%fa09NeH z`2({D2gX)!n%|K74e#B&f5ui^S*vVGaE##=WSINvyj{gv*sR8oau!QsIUt~#$qxCsjQ69R&*$NpNX)*4UInb}{5d+U^MB5GnxGCV_Yi#g=%LQ1 z5j8cK|4AFDn-C12gyr?4M~Qm);dBxwM}x6uQ}IT2G_Yl$=bMVg zG*F3Z{AeA^4H@;ATfu=-s!zjR!0)>d_XYE8GGTIIDe_8dE7VWJHHYq>dwbODxIOC6 z+)i+i#mC8P+w{2v?v*hZ!{Mqu+A%>^5lRYP?i(uy$4CX{rXFtJj$I{VP*GToBKF5@ z^xN5bUPBayfXF?uyX79#J%vt`Y5;pSM*V8@(b_cj_+k8jV^q-B5%~af=Js-<4NfL{ zkVN71D_u^EC~DmPgFs~fa7T3QK(OKM@LYD&>TTlyNWG&dFN z{`van*mwPx*o!L?gkCg|BXgfR{1)Awho|?|2mT&3nR=^R^ia{J$Ad=m8xBM&A342{AE$uroXqkcV1{T_Z$3u6GE2k(8KZyoY^ z92JQ3ixjUcK2n&#PhI~YIqAxTTvyhNu^JSgzO1-JD7fF|9~6p;E!=Sq;=t@PhG+AQ z7#oc&7G!e^7Ri^gSvt2N<;0iDF?c#YR>I(EtmKgx{0RIFr3~hWhccMl9n#LYew6py z!D6+73yY(wXDW8C{?}R>Y^22{CDaXFtB8gl_*BHZ$lt$DMGTC4>`kCbO9j=0F}c}( zPnK;0gTK8O`%7ODcSKQtbQC60n%H;j$(|yB?BBizSPo??DCNuKR5m7Gb;k zc{Dw6EgQB;6xK3n^Tu1jJAD^Q?f@Mpl>}jxwcK8@Wd_hnXoAZZTH$OP4dE4qyEp>m!@OYr*R;(+zy*dB8%LW!4x@_S5 z|0w(p@&NPh@y5ERE4I*_1(Dl9+#>~^?xH_?C$24SIWVy7k;eRkb-VK|_cd2s{vY{e zpT)ZHYv;i(hh{&e5v~JDP)pr2*#tgxyWZ@*08Xd#pDb+DUwIPVsN7;$8Uq_|E#&F5 z8Q6GxVUvEjv#=H~hu#9iD(m?^oQ~z57t5tL=IuO1fGdP+dvL8L>rGjya$|k z99C)n@oTG)cq_`!q2s_sjVL+?0)^TgXjP*gYN>lYN6$#}tlWLgb-B-CNy&Y1pENXY zn=|@aY&2eWCmfm0`B&Pu&Dg!Ym0MW%z`y?Bgu+YkqapuASARBFXoTgBrc`(<;tYLT zIAGX|5pm1oXd5%|edv2(b^d9v_)y_aejgS9v0<3}_;qk9Jze-TF^oD0N)B8*6)wf- zK2=k*w_)_Tu%RK?W9pV2xb85}0^pH~8`wGwi7mV`ea`MyUVf8*nx&*$pl}(!(p(pL z5yR_ zi+CIg1behEI=69e^V@OZ;6QFCfC{(a8)8W_a0HY<_TGinBV6D87^)v`B66t}($vTq zq6PI?%zWk!x79t9`y>vksNwyAz=?Cf4}YEb)#2OFLU#_{jLaVWh>3|=jIsJy7CjBV z5mDM?r+*L)-MxgDzLJ46Pm(U=XdZ!|_{ zL7WaNMj-}zdjx;Juy^d#bFq{Q50G)@B_~f;gAEWz!Suiee4z0@{uVwe7_;Bf3D-*k ze+wC%aI;SMh$Qg0@LoxPH^)VHlO+D=2xMrXB<^4gRw5l5>;RB1b_Ya7m#h_UgY`_1 zg4Q#54uaCZkpEDW@flFFUA%l1H355*{sm~;=c)@=L0&nxkbg*SHs@E!jV^3Lf=+DB z?`;kLrf?-f!EgaPy3U+fn1v9qk(FWtbUwRM-aqv%sAw%i6F zEQe?ahOvJQiypppv&fp58~p`!m&NNgTh-QIlB>ROF&W2QCyJbWRoyM8||IIwvW z0O)RoGiFi#FPy%Zg7UQuv^#J-2ifYkO&N>V`N4`7oWwNcn}AorF&z!i(x`;Xq!G}o=Jz3!9E`PJ=g5V+ggJ7NxJFjcue2(rf&Ugw5@ zd{c06k<_?r|Ke8Vfwfb?A{?n~ScE+n8ynF4cjJ2l%c|K~ew9=WY@~w;*Z-~pqY-M* zp(Q$m!Z58_hgRuOl=3jJu}6niAT-d@3#EJklrnprmOkke1{O>$yjwt9`fwlt2tY6K z+P6i2_FjjUzp<}y7{TB`|0bcN0pH%49S8g2I3^WdEIi7@%@0)dK@Lt0InTt%|D*K8e9pgY;2&V zw(j5tFg6zqhJS`80RP9hLITCslK`kJxN}4@yNqPgzM8cME-zfL8~z!rzH!XcHtLUs z=pEq5)wPGeEfgXdm(h2EHt3q|a3_DKXwQ#G-xZp$8W09qHH3{WJPtm{t_nH?HDUP! z#Y@MFWVLQva39DTU3lzUnx?xg*XF)jcoce?C+_4vefZyvy$%HdeT_?-!5=ZMsWPZ4 z<_}y~+kgDJlU{96qjR$huYdsb|N9h=(#EisbU?Mo;U|JY4R>VRxFfNLzW?FtegZZ- zil?7QRnL72R^81|AQ*bTn12$8j<;9$@9ewVq@(qZ&BH_S;_-F}C;HHbvJ)_}%C}5C zd{dzhpKcy-XxwRR1N2S;6yF!@%&jAu^JfjN^vc6BI*p9ae)Dyh%3MWuOyO}06Tpxk zz()rOgkiPb>3@C)-HP|$0_7X5Xnv`1D>&FJ6HHC3aIRkNboct}fu>b#rx=(pW8qDx z{(Vi=V2nEa6q+H9Yku|G-n~zeyhQ!YDwv9?s9^qQ+1ky|U_I#d(qyiyL?guYtPJGw4P1yVK4SPYcao;TPs^gq z6u_R(t^-#Jc@$&w(Q((lF?h=ZpF!E~k-l|XcHCBUw#Z0&~?dZ0lk-WW-{V4U0CzL@>*OZj$;dQ6PpJX7 z42lg1keodO)wcqdA7Zln=ACW%jFWGwK712_-pF#~W&DNugDQ)&6ZXuH8v0+d^P}tp z&>O9w4{%jm{>NNRu!0WE_C*Ll1HZBGCsrF>*nb%X*nLeakOh|GddTqmf&(Ab_dGz1 z`&d~|7hX9^Nv`NW9R_9){Sy?hzPcoc^$FXNwQb-wxe>Ju;aerF5BO`t>14EL;hP{; zF#9uL>8ll6*8o%Fs}Evc>cgPmRUF>bKa9ZL>U1-+>88lX`P9BStx`!}#`_QXn z#&TA!V$04k)D)}9Cit`CKn}{JE5-aTEQ(#vLi0b3sovx56Z&^H=J!=>9S1b1t2ky; z`@hL@e2>-o1g zZaxm{_hwAUJ&Y1wTWhJoq;L=xOY>ID_co(O=7TI~7p!4p1SgV%&1kRl8*l^3J6g8< zKI_Z*w-Ix;;M~SDTHpmh!!aEAh4~1YPh3u$y#&(8Vd=wPLzhR-xyTdC_hrcAAP3!O zfBnzvSt(n4qWq4G{*-&j34*2INK}Z?0OdZQaE2p#_z4z znn1?pf%RD40xW;h66cVkgMUFSZ(ctKI_FCWaxI6;_g?ZH83DB!-yrdmNjyv9`5*>C zy`H+RhL~<$f^3k|-e$}oWNlgUO;hFW@1VDGe~!ZI%GEVH_xZ;AK%Z*KKfwuYsa=a; zP|n&e%FIJTu@yOcBI2%RvCh&Xce^XLz8&O1!tWs$vttI{jh@AnQ&(3D)(^GKz`!5f z2Bcqv1WUcp4L!{!?65!SlUaZI-lbUs1={xU_DUGiB0Z?Oiu^i|4k5J!A32c6c^C&U z32&q`zl#FexN8u?`r2r`?;N}W6+ppnl-aF{ElWY;5bnAq67GHmU(wuMIwPBJnjlg4A=33%0g|+a}qAfrj z_Tj*(iY-4So5LM|Z0dt1J8%>SY>$Dd;W825>2r$0Lf=f`i(jQ7sJT3#+wm?`b$;~V z6ee#jN%mE}t#@htFX~*g@xj8Pl3bGfHE47oeE=mK5JP&t6b7qrbYZ?WUWl(nY0&QD zLi|oF&ZRVe9tFju-Qe57awzBdh3CPZBGFp-bmg*$lUPKf>3D9)QC6?5S*>>lH^bs6 ze5C}9m&}WhT+$!P02;F#ZTZPF7U7s|4uzVrNa`l`r|f@eK9t%Ihot{x_ann_beovm z;ouLwCWc54us0}hQ)Yf@TYeR$EP5*UHB3b$YN5g5b6-QXe#}9^kMC=!WeAD$&9lKg zgM995Xg5LKMeS=?Wx_pt?rZ2Z!9G6Q@^@~+Be-wVRtE7WrowRDGzWo0{Nedm=I#_j zSiH~Zg+2gY!b&+M|MdOryssLZ^_9OJziRGIxI^Ke$sduq;=w71)cy03!Kw1TMSonI zzG4L9Vz90m=%Q(S;n*^y!|Kcb8KVYt%DHH;|EX-64d}NR@IpBL6=?FigD_Kr`7!Kr zF#>Lyz?VwAK+!jIMz)F8;A4HQ?2d1d(%SC#HaTCH-SM4_H{I|3oD&81n{b3RzL>jV zF4k`FbJOK>hreBj;e|4|6MzG_8>2;i5ptIwy@Pdi_>-mbkUugw_(gHf>+*_d7_Y#8 zYOjEBfTN^=l~@7xD1-!Bt)%`nN*gXRKV&Sh}BJ2w;-mepuU$}pl3;RjLHN&i038yoC4*QS?;UK&- znEON&Mhbg132}hRo0f^UY=#qM1>?w!!rPFslpkDz)POd+fNBrV`FK!OqUqzJGq?&+ znOHSRdkj!yCvvNb{-^jsAmq)27a$s|1=~kuX997%o(dnlm07WLQGc$zP>lng z8BwjFSBw_u6?&@X`vy9#p;r`MGZC-xJLrKRe5V5Ws={wg!f%oAYV(X4I1XN%=d$xd z%Wp;Vxb=UUCaI%?`Ee<{S8O>Cn7IG|5{+dVg1_(wa6lFX3{1H9=cqR(RTsWM9ovke z!4Bo^54vdldV3*kzJ8;QM=VWP1Zg9%&*Y6EF*sCe&!R>`ME5+5IG9p@j(8{g^UBTRDU12_iix!{zkM3 zbffoyG++AMoj95GHpEk(-J|M2;YsMPjQ@3D-24AJO?6<%i*fDf;|I``SK#y3p$75C z(!GTnUY*8vw6OoBX$p6rY{sOW_6K0;&R+nI%6~6FbVAAZH!o~pUJk0WO91^Nf!-TD z=N+?{Vc?8;K#94-COpK$cn{lkYyRcd{K5NIEo@So>N&dJ4EHTa?a&UI{3}3nkYl9^=&8b4WG{+bc@?}2PZu8lyynm0!wePi`^VQP z>0hz1Bs&w+PFy|(#q@Nc8x4-Q-c}sNN>_{aE6zq)Q+D{VV8tE4{$im3L9qUC&|~TQ ztI!8@LC_+#p-F=y->r`ALJyVlQJe+HAwQh8!Tc{YTNZ;YPPt8Ah|Lv%x2UI$&3J(C)RXh0VPU-S{ zdVH(>Yp^w>?}YCt%f54iI4*h$Q%FUA_qL{!>JD66EnO4KFrQ=c1{Ng9F?l=PzALzt zZ50aD1K-*n?V`ZeMy#CNjbpsdcn!|$7hd^F?)yAn%$fTt?l2vT6C1`AzKzAu#92*r zPGJdVXSmCH(dgi=-&MBF{hjD=I4Fa2_q1|X_NX&|@(M)r`xB>asl0f?v@K#sA!Q6- zu(*B`z6r@a<*S6k4!fT|%fqOT0M8Ra4qtY?i1kwEzYFujIHUHYAeMX2+EsD)^*g~X z94dh<8u%9)_yqt@z97ic(g+Mk7}w;?+E;P+hnWNCS`I}%xrkigD}%GJpZG(i@F&1O z^&i3SqP~AO%FR1ZH9;I3;v97N5JC3t;H)R^-2{DP$cDH#ZaoQYcLrnzYCg|VX(J|< zg4d5rptlHNIY;C5uOI#581!@;d`iu8@y6gWbPn4wACA^~6rx91LLYe2iGKK&zSoZ z{NDqcEB`r+h{I6OM~~;QmKaMP9!9aKvkPajK~YarO3VL^QlnK>rrwdCs*I{ypUH-@ zvG4}{2*hKZ-QjS(+K4|SPRsO!(vdE}JAptb6G%oPU6C$F#Y4&NT&O$ZRAroGD(j>p z;Z%1r_JK&3%4O0jnF^?7nOL&h>CDCA*+4AmWO^gvOwA+}hy%a=T^Z>yFBzr3TN46F z`W1;1O620%7@`D$GqWl)(}`uASaMA$9_v!hxhjxSCgiM%q%*Np(n;nLosqP&3c%{p zrlyrGD_WXXwl8V9q;-Yrn}5N|3(gPZlB<)cwMmpWnd=L5Cv)ojn)7NdPytXEP~lWA z-j$q*a^;fp&3Y8nk7^+!RMX-`?X7JsOIEfwE)A--){B=kE_sg$NK`1%8SBoaav3Mo z*_n>4iGkgq5%^-sa4OLok7OgdT&Z5BsHI(@Y)CE5M*6a9X=f&*0$sU8ukcUJM%_)S z%1oN1W`pw8D}f*pN_Lqz0W?g|xe}ppPb?WxfvAl}g;iyMK~*=+LUd0g-m3xu{gBW? z#AZY3?nu_e2D~9#Pb$!xjwQ2!Xe=HHBtwY^vgw%KbgH{FCbKS+PNj%0)P))fWOC7H ztWO1&hvwj?mp^g*tYC>EX}t8NBft`lWHKoRLzzq@(HUn_T!FG&B9hEH*_1Og5Ep4k z#4;2%6%ZzYlC#b_%LjOI3E;)8moHn|+SZ{uV@Z_W5V%my_T}m;$yNGkBZ>CgW%cRj3r}PCmI5hE~OvLfjV^}eMn(r&t-fmhUHE+mWX83S-|g9 z)y#{^&m_gdnC55NUZ72#+Z9=JZZa2-dy;!XZu10uRc%#xrm9J)K+LveyrP0d0%C^q zh{9Vol3<%4k04ilAieleAJ*kn;qr-n{A3~&kEYTIC@Vn{%_YOq?u419_4|^jTvVW0 zRaIZv*tV=?ma1{4B`!E0Kj+Q6NbwE-FH*T=QQJAX%|a5HHr@2bu-v&2!|XCZWz++<6VM$JRswO{yjl!~fFAbIwsUiVn`kc7^!XscNF?tV>eqY&w+0J5)hUlsPZKzr{=N!(7q2 zTK>EPLB3tWx3oHINhm8BdevF&p-eawS2ew%jHOBR%;i>rsk_wYZN z&?68mLKfVq=|NZ6yzID}BGHa^x#aE)Gn+I|dz=l+8tM&k*r4W*ONp6K?LBgn{P zCdP;91yrEJgwk0RXvDizWN#=77DnCog(`Fn(mK)cxN%4?38SY7G_^H$bVx@HL@D&u z>@E4mP6kA{ui!Yi5KgBMiGE)addbWH%$Yz}q%(&Os9UA@)h?*FWJH5Yus4$IiX_8m z{VK4CG3e3JLz}nGP=+4`K#Cm)$h5Dd5Ok#1senNAp)q(l#N@tgS1b*@QS-(;5Pp|o z=r)&!Oq}gv2@sCZ`dO_4IV6TtFc6@T@EWtFM2U5Wg*c;@J40!xFkoyA5Yoir`%ncb zQrS9ObRZPXGE)qI=GDz>y8<^t+L4WoF=PY7fdo1uC<@5-K-#Eb;qCXW1*-zEL}>Ox zIj;+NO2XRHwv&AesM)Ms7`L!|B2ewwNSCyDi32YqA}p}SP#f(U613CEgPe3(a*&uz znRpF^hMDXNrAr|)sMaJ!3*U1A+)jiz0D-WED7Kolh+vPBfHkfHiy6||%f9IL;w@@a zLlhGhs%t1Qy&-g8^2}r)XR$2G*F_Ny^hUZuNeml2uL0OHDav7>H%2k)jrGdIboCcA z%C+lMphdzoAu|yw8PX$}OU+6b3MHkga_vpDqf6aHF)dh$z8G(HYU@-(rZV2*`wdq? zk`hH3pmB_TTt3?gjky{$k~Qzo#UfBY@5gI8l1b&zny7tJQq^u0n_?z}E)u3qFH5I~ zQ+$C$B!NJitbEEaOkSWCP_>eGU7|A;7dE?=Qh@du;GhZ6f=v?y?x2qAiqXtLhbIs= zWW+R^jzMgDdq_$S8p*4rmN709Nke&+Xe+8K=!VV|b<`RJC~9o|Ytyl8#1Gx5U;hv%*g_vTb6lUS)$C*MF02J>Q5|D~MBEzAXbPv|-1;x=22D2IE#z0}GL&absB)EzZ zkv`~Oj%Yo3EcHTzZWJofwUQm|N~0(dbi4W!#I2lLvrJz%5A<%N@q8{UN7WrkM$(XHj6@>IH7XXRTFHPX?pq)dhoC`G z#3|lTOu~LMdZm7aQi{N|rsja8SnEoR8HyCxoJD5@28a)l^b07#9sKe@nu?(|$juXn_QD4=ieJUI26OpD`@4iv-Ae%&pyTnEy zizE8m^_(EPRskLmL9DGHYB(5U0j*H1Z5EhUJ9lpF1@kTt3koo>R2%J>*o;6jlNS2_ z;3UBQ^i0H=&XM-w_NA?hFQ3j~AS~gGGu;!B?TI+nyh_(dKGaSuol43`dkuyyY(>uW zs?2m5sA|nYmi%+|RdWM%S6@|&pV=E~XH~zi#uqbd_6)#fQz<7JS?ky_v>w4$)%z=! zaPVlX8xc^rhKt#>9|v53`GV@TLsX|~C~juKKrKAej@lBrOxEdves;g6%y8a~Aiu=v zq}v_rUNqTcMBF)EPXxUI21F=pO7*UTvhAVpIP+?2=R23ABN3+~70p6_Mx0Ah(7)md zn&Y%4!x-f0zok9&Ze`##0CdJcU*u#EVl8RGaA5K{VSIsJhHxsWwS1<=ahCQ(fE@WR zUpxul0jb$_7fF>x)5PO!=;$0zFE37oSTq(9jp62-8R&y3%yh*5bTIU!g0Z7<2qFEbP9z$o?!upThoGru zdyGhHM{B4vlZxlEE?vS22)nTZoXompHq?hEWW68ydsXo+Ck)*b3Pa6hh@TupKI>Nc zJG0q*8SOe*D`dl?Kxw8(bVlF`ri;a>OGRIEC`lm{O$%jdeNEGOzJ=jhALporJE?76L(aG*CF!{m2X8@18F*p z*GiRjXSta)8YSeh>q3I)*b+Pxh3r$GTx)X%Jb;myp$HLZk z*O`KJ_&xsuRSM?=VcT}`X+uq8=}JX(W74gjLrggE^mnV)cO$kl1D8iYzp=-+aY&Vf zE)+jH4>Kgv9*X5kKq)|lgpy7wDV+-2M8|tNmMmVpbY;h~OE3YkvZKAF=^x4$Y-wz6 zS<+FO-`bGy=UN+aSQfc(nFzgoLtxx=7tat7;WQ_C(9?KbkI*&Z*LRFxAHpwweSvqN zD51C53YHGh_lh3hre4HQ@ovD29i zrY&SPKnbS8GCL9J+8~4H%*LzctiS4?uf8S)q+J{EmWePS8`*fZq0>uR$-AY~B`~|L z7lMn%W_92&lsZl|O}?3dHHL9BDS};wRl{W@LZ~fT$eeMBK$&U2yR%LuR5>pH;GMHQ zrp)qD>quLMcB2E&)&ubvGp_`bEg$<|n+{qS1f3i^r6(!yo%xL~rfhzjVJ38*u2xf= z6maklc=VXT<83h5ymVNH0UUKKj+Yjo)_J8<)>u7w^%$V&pD6N)NZ2J>W_f7kYbXhs zg{>hDD2uj8FZ(7vowfil?*z?WdZn8YBLTH+a5w^JFuCPsXJzp46^P2>u>?vrK#^gx zZGq$gP8Xjjj-nUEM;GV&Aa%wqD7~JkVi91?ERyKMhXi2Ke_r|$q268^yPc8jTJ}yL z(KXR*TXkTwO|qGXc?!jtZgu%&s?(B*Iv05>=O`*+SUM7ivcbr~GJkQ0!7FH#TP~v{ z%{bLgewN^}dQ|IA2R*9TQZgH8bgNe`Fqm7QyUPs4!TrNTM@BOSE;X%Wx||{;gbXr5 zVRVgbU7whNEke229Ov)G=QZvvp(sBlb^rJ9(gLFnFzvTE59};J8+Xetbn2Ml%V_g^ z>GYr&Hoq5^6ren2e%g~$Gi%uVmUiTWta4Vt!&y&0S19es4$WQcHn$PNib=sGWf%*5 zMTcT3%I1_An~NPL4h`7hSZ;t`l~@G>^3yR}np20^Z!j(6pnt+R60!nAraT_{A&0}W zl<|}^`lNC)=?b+Tfj6D~jM2-cIEv*#2b@{BfHb;wO1z7qG14*E1f^?8wCOc$0mAt3NI-!CuVU*o9{8A;q+6D=?+~l(k^M=T2vV=|(+F z0oo;4<3g_&OK&<)7jTXfi$VmzO-vT^<|E*_(pg}1`S5sbUv5_6xWGejnRdCRShSKi zul{HE!>M%8LWi&nNwf%9LxITf2l}x1qXdr)w8d6qpuPs;gchYI*q!(1;1=v+&tbb1 zJu=XuDN%^E)_iyrtTb!XBMQSn4H<|LQP66H5^(e zT!;}&Y3qT?q{T)OWh~14GBOHu&v61#{7>NjV*Fn|htd%<0KNnY8NHzR=UzKtkUk7po+^^ zOkV>2P*qtK!(}b{FC0p8h^og*>zqK!@G&fG>(C*$vz7i(GSWYV4_M_XJ*cbibj4wG zsl9Q`FsV(95?f@S*Iiuaf|s2G{O<7){qEXOa6PP~M@M;Dgp*5>r4U8!Z6p9W$r5)# zfJxUsz-JOzwZ3J;q791{)mK&fC(1B)!?h=NBFzR%CfsIi)XE0FkrvK-01ti^)$3UP zR;?#qGa0!d>Iu|WMX=7rX#)99JeBN5RcCU&^pa&9&T86BQfE*(PN2nn4M?YJ~2b@n39(|84E~|A(#1Tc_T4w)pNE^fBwFrRdx>Yhik^?yV|T(;e>d zG#GC_=%3~5hvb;OvFghI8**Aoi4OhON>a8I6m598^&hxnbv#~M>W5Q%F=`->t|3cL z*mQKeDZz^@9rYMVRaLu7L#V<$YeEpjhZ-GC-Ea*jK*NxW1B^zr`W1Q_s#A}gU}0oL z>1oz^y2BxhOFVtuP*TbB4UnD<);1i8b^^Q9d)hA;$JHq4?EF+$%`-8>^}tdY__353 zx$t&D!*qqkj}7Sn@wMUlz+pQ<_JXE$Sd1flc%+`P%xBo5_=kde`{Cib!eKkXjT_m| zmxv~qy8fKV+}TL+N$KCwj84>MYU`$iP(7!GX}0dled1JVR9TG*+-&MvRl)NDGcQ?U{nChauq3>#@$yTTHD21X z5{omIE@`~nuN^D{U332L)?d=jH`GLp?!qE+n2-#!L2&&E7YQfo1Dw>u>Qx3{3HzGS z`pZ!2s`ah9?C=8kc*Q2FSF!>T90!;g%EZC}>{Q6XC5hoI=3Wsm!}qF;SlT0X8PdT1 z2l21&9exfXMtJD*jZCx*{hz@@5prGSL&e!&sao^?pR7o>x0ZVM`~MpP_uoL9(FY0c zguvbhkea~4Li6Tsh>%owLxgSDSa67?Xvst`hrDP)oQHwylie12k~KXJx|< ztSchNR+~V=iNvET_2xvj0#9V@y!jVUv!H9$n=#EQVjbu1(4-;&HViJ{6S4#Gs`crv zb(nla45s2a#txXU>9@_NkkQ0rVIpT;>MfiJ6D}9V^cfa@fVv1= zaK0r@Q->@~}^ZLLc^mg+5dD#RxuKVqGUqohM>rm9+V8MbU3oW+89tdfmIQ1L4e zOo>Wuq!@JZCn8}g-}RUCC&{0*Py~V)$nqyAV10c30Ds=gpJ|OG!0r{W?`9tmmbG>m z#=9kBrZ!@#)=Qp2q7b_h)d$xbf+;O&Bg=VJy;1By(Af>Ib`9NgvkX2)z_jLfkUYyE zg^!WWxd573W&`>X9g=0kn8?~-x2e=~8*yrl;eoGw#&Zj-D4-@DOS#>GpcI~^-p0`} zGN)R|sjBr$!5a=eOw|v+lZxI-z1;~OTUn}X)+y@s0VON!r8`p=Zuse9%9qhW0j-v* zW;<2MRRM{Vb&kM^*>-M8sd4ChM4D(QEK9|rSZrb8MlL{NE(fdaY9^s93p7d;D#2O4 zI3~Kdc#xaDGKqx}r9a|LE%z}uOX)Y(CyckshaJnwG;Uw=iO?gD7dgn5LM3G)z8=N# z1f8mS|B~=(CR5H(*RF0~px-o(;WCkllo5PQ_*wj#Cs;nCu3gsOn)<+%M03TudOoII zk*p6~v5v3Oo|p3NJ&8Heh~Lx2Cn7M{j}A!Uq(=yxH;-^wP7hDT1?O{tdv7WeL!C9R z#7bQ*FO%(q1Tvirla{o!Tu$S0sb@SNjbaTdsyf@V0h?npp(yvOVGAQi%UIY1refbg zeHc3i0mqb@6b&@tU!pgRP77(2x%1|grhqn+0`*yvXMU|snP2Nk(cRhxYC&Ygj*AW^ zUSt9q5D7`X75V8FFK&BNO`Gi`<6)~EObo?5LaVkH+JkSxB&}f(gY6Ss>St6ABiO_d zW3rQ@-5Yv0Sb%PjG*<{E;T>*>WJ|p6(GZFe3fWEHftb!ncPzP7GM5%!5{ku_Ai+HK zRFqL^4VwGJ!As5mXT3;#S%-9 z*ImnBI&9Xa(wyxmt~G)+JtPkL7zh>%0@>NbpvPB$TE`xwn+Y7mPZOTav(H{O`|L)cAjaSKisx>9G?D9y#zSa@%_|ozYrdqdvE8xz z*qlT(fHOC^w4?@(SBQiG#!h!HxSMlnuzX%SB$g&%D%^}4%g;{vCz9&DQ&Is8u8rJ7 z8Gvcg6qb7jqF9;$Qy*(QF&)ZTfZlFx5)YFsbGNXIVEsVFVj7$E&F12fCRy^xsbi<= zVx(Xr6Ml7b3dwtTLx-ucP_B=Fut(FeURE9uu_jHtQ`Ko2JL1u>z0ttgE!cFc8MZ~1 zX}##n%oHps11GS@i!c1qjo592?B>{tv5+SzW~yG#i|&iddYPeAp_PPmG6A^|wj&*))ovXvVQuD>nVX7k(4?W5CbsHQ ztF}}T6mOPdFX?c_V25U?cOkZdz!I_{*;iyzxN@MFf=w9SU;<6wW=iCeo{)frSaSPa z9z$Vpn!b2t80fIb*$Y)dol9ISDP<}mD+TinT2*L6gY-Mc*8YF{d|>tP-|zTurf-44 zU+(+=r}*;9f04guuG4%;eO5nzaO3}bD*Tn>!w1XoY0|%x^6gt?;4I#O&y>R3_+OiN zH9~$1U+(Gn@~^sO`0x4i2R^0Y+RgJS^Zc-R?lDiB?~pI7K0W+*F1&g8_%l8+eEj7m ze!?e9({J3a!+$j8t1{{R=DE~-=YuzCxW9d@G{2?0-19M$? z!@EuT^@dIxf19CemwAr=oW}Pt^R#gO=X-s0_`jDl>A&*HpT+Yt!7O>~pD&aDnD-Li(>w`hS?GtvCDp;|S@`ne-RS`mqtxN8^ST{*}W& zZiMtnBcxZ1kUnLE^f!-?{#VpQ?JjSqfZ*Rwx;_l-LKmT#4&Tey(H+vUS=(`|g^9mD5Ontbo~ zgwtslZm(S+6@hk2wl`ora^|Q(kpKkSYx%3K~&ps_; z^R)d#x%^hYmrJ+t`^(U8_4kxA-?#d^T>4oiU%7M}KVir4{IUH{b(!zm{-<1ez~n2J zZsUXZ4F7%Gf6puPecOMROTW-}^yLccXcpYalK$-|aNdo_jUi zk4%4I!`&u5Zk})5tl@4o@Q<1JkD2E-^R$H2)VQbilsm-7-9`_e3C_xZ3s6=8@i^to z!tfkyV434C2(kb;V=7E1_(JSEmHiSpLNJz*ygbnm-aqly*f>mm8o#OM8+r~F5%7Xz zNzcNeQ_TC{#TmtKbfb+Q)R;MFi%TQoe4i_+KY|9#Kd>_;IA~{<>qPW37K%G z4}P@?$9?fR6aKJyT08?L`~~y0^ncNW?=w$J=ROmDuwV1R#ve5CFZkg9YQj@LS_*%T z3H#wMHStS)@XJhi!1vvliO-#b!$R<9>CgD$uQlQ8&GUoiY58!o3E%FE|GEi3ouVL$$#nD{fdXt}lcpD^(UeRvL; z@H6IV;h!_%=Y8-;Ot`~`f0VH+Mw_SQ+XNGSvoHRwCVZwZezpmpx;kMgl)fI^-SKxf8GcGMH9Zy7r)DdA2d&k$MR#Ji9c%O%-UlQ zd`#Du*@$hy)jkuyb76zTJ!-<0H9CCIgbxIC_>U&sey$E5G2vBhI((n0w*&n;JpNzw zcO8R&stMouN1d*Ge`bZ79Dlje9y0HNG1H`S8Yqq!7y>8rz=*eS=Ik67gEs~>O(@fenS!1jcVD08m* zGyp&u>XbcVB8DT?(|XH14`5J%OH=@-@m_{Qd7D?_2SF?<;2VxXUUUWiFU3*BfLq3s z1=6W^PF!YApOrHS5WzF5J8{hS@=#Y74%7wc@=$koI?|0#A^&82Zs0}ccSg)oEV zHO{kVWz8E_Dw!Cb?~XH=7)szo$PD(r^Bo5vuESB_n3NX8*eQ*fSDBIKL47!xdO5Z} z<4iv+L%We2ViBvpaM&B- zaIj{ei$7Rwv?dhBIp52>A~;qZ2Zez5`gm_y5*y)xp_1B*bKChnTSr20F@U;r^Ru*O zVML?ep$8?@y%?5-sLNL$m*rUC0q<}u9Opp)=$1^Y2=l7bY914n) zcd*tvg>B79jsgP~dZ%*TWMUMzy2RZ>vX?{du++E*N1}^3%hAVLLWTFT!PT zR13~?mQM=ez`A*4rpZE%2XJC_HxJo2k>r3&zc~<7gj?Da85P6rHnDJw0%2d-!hFF< zI*J1(bR-t2^97a0qod3!Yl*=!8ysO5m3J(j7I+*1oK4wvH?~#c15wIeiYv9H9wY{Z z#<#H|9VMqInLC35SjUu!WK$ZkTq+d6N-+QwRSD!Ao74k54kv&Fe!a9!%1YB>UB*-0 zJe2{WOla(I$I5@HNqD(J_+uGf|h}J&E-$C>Rg8 zNaM_EL`b8<8XA4DX;BNYHh3r~4$;DbOq_WmdYZ8~b~p=R7j;7nsifR5BX3xZMETKs zhy*`HRnDlSFdD!V+EpgI4sI2rr;8CDUIN}5j}|9q6)-xNg;WG^Ixh=Nb!b!>U(p_M zz`n%l=73MhX?Hd34cp zW8tGdI6RQRj*66I#VWa?(k3I!+A}nCEK&4?jncQtXf5EMK-Re$caie706lNP-?)N4zcv;ebAL+{gY^Me!m!lon3DGPeAbDc!MgUuQ0Pn)We*ApD;JXyp>#)6(l1t6NEw!^Lcy?uV+d>eDH-yNpvihlE>|zv6Y2oN zHJWW@h9ylsdviP05 zvr4QF7F{2_;=ZsWmGeD|G1e$7#-OXy-I&g-jgMlobQZ;+*u%w7X}P7=ErN*ACCbQP zq*1Y!J&6gU+sf&Z@R*o@J+GYrYM>-7xs|EzTi<>gd?KaET#6!rtCdDHT z!6#VZIHMnG5RiyBHW9ks)nbU~dmt#ca%&Hkm_o@!(H89+MBS`AbzeklqI--s+3R-z z6m4&9lHV5mE?L^aC=3eh=tF|iTE*5$Qz5~`qS;QDXqW1$zFkaHH(QqtwAq=I~!urC= zIItz8S!BX;=?#)#97=Z!m1jFtDTfhM4n3gaQF0rROqGj5H@6Ol>C#jg0v_nbxPy8b zyFn6aiM{SoPJ)__sOiq?$U3abM;ikK$5;9#73O`1xB-PbNOTk$5Gqj4Z8Ol`7~vw6 zR2VXz#Q9YyFU|++!ePE>vQiM7dj)QV+4m5kJqAnOG4SH8UffoUa3^$r24VXSMJCs@ zbRv!f!FIt;5U3@7)SXAsDCApu$QUpUCkopPbb)xRP-m-PE*%9G-U(5KS&ifSiqU!i z4f7A9N3*X6?KIk%O$RzVQE_r~^BRfbJ(;i$i=1^&J@m@2S&IxaG|JVxau#Hl8?`Lt(3;F(Cdj!8z=swS#psYPx7IigE=R4r3&UQ8Ha$ca-Z1sz76w5xI3 z4eA9JgXy9eM#ZD9fPc@&wCMt%(8;3uh2wX;m>h=P0F}ICCQZI)h$bjRrQ6Md|Is!cn2aK?n z^zH>M>*N4x1(zITU@73x+8!z(+!x0(34Q)Vy*)^>apdM6ucF$Ery~|mUXim6YXn+P zVrrEEO~Jv*gB(`jAX7wRAEk)~94?|YTLO5hzubYv$OH!Q zydVkvWpp04bV$pCdjR$~brjkn&c%a%UK?7MQH$k{E?gWSX>wpINhm_=BkRxwSr?r@ z(SoC`feM42dqa4%*RYAWDMxMyC3odZC0S|G;|PAH=}GF6IvNruNYL%`TDeG%z19kO z>2QJc^E@ov9)(Nl=w6eWZV|jZ!CuGU0)ixNG?V^^eqYEUYe=*+_5twFL@1Y%{fUB* zTLvN4MSmV8!R-~P?7d-cFBzQ|mK$>Lbf{19ZJsKNt5USr!?K50!Z1ng zrb*3XeNu*`*&{RD0FYy%UtB1ZO%3Xe#88)ls69Rz$dQELbVFy)@pn`+*GRAqh_p~A zVQVXyV|yy3LhQPrRZ_hn`cRo2COOv$u%_J8DD1nJkm2GiacC@5>E@b3J#t6=%2lA! zDcIgB0G&!i)@SNbh}}Ag592z-ss^-7fJ>aNF#Vdak+3?DoXiD`oxwU~(Cik|q4{;X zz4FU)Ag9rFftzNucgRn-sS+#fXD4kR$z%8`j=1 z?W5HY#v$fHuy@h{ik;vQ`Ln_zrIl_@cfxEhy4x$7YbFfi1D#iCMx3?hRUO>&o|aLY z4~`=i|6w%zQf~DU^mGZy!nBql$iv`31T?&?T{_q+~ajl>)Gg?ya|^cX~UkMU3+22J9%*Or#P zLk>X0jUnRDweazYZM>Af4r1uQ#2&^_d|f6c=slxj))>usIid?W#W>Y;R0Z@XhvOM$udj$bO>jOWJao)yf8 zKG$&Y3!sU5kjwc)dOAatqZ~+ti#DM^*|fbubkQ7t!QM~6c_aAnl+#>LJ2HAU3yz5r{7{UJ=_hgc;^HROui&eQNhR#)-NlH(hlQ0AoF2(>%&+>Z;53>EDlPv zi;CYsd&f8)d?`_0h~<`RyLHh3ik(+fQ+PucD?IJPxQX*S1e9pwfA?qwi7xqw#B_5E zCU2Q*;@6Z?F?4S%VdZoj_a%Uu(E+)>O{S!T3VjNJ$N50!3#1%R0DB#qXUR2|z~FtaI6dSOT}uLq6d z3%7@T@SGR!1qjIO#;n1RFnnWZ7JUWQ(-Q3JWh&GEdo+Ika=(!hx>W(rT5 zr-@C3(m2Ry;rYa)m5YhtKnXE9)SqzBSh}b*C`cK$2|)Ld$}}oKQl;ry&zKZMJG+ZR zNaOu3>2$zGN}kJCg!Mg_(iS-^FeT`vUQI{P@M%aHGl_NLMoR@jycxlnZMFq!WrnkH zXb*@YI%;rM-)Sl|X0z;OGNH8rPH&+X6WJ22C;fQZOrl106rJgWr&bh`9%3POnlA>< z1)k#!cTEvmUl{9Nt(oKo+M=3hRHEq+&GGB`>9QBj)k?+5r6Ih=&bA*R@8V z6QqN4<8b<1DQRv58yJjL`Zh{jZN`9wlPuh$H6>)0un1weB?EOg$YGCsOA^=W`7wg7 zMF$qoCFt*vX$xZ}@f~hCR3R0&N#syHhGie{TzjGf*P;;aGMLWS=??SqaB#Unk2lN~ zvlF|{iY^An58(*K|8keE35$cK`>}CmadLPXJC5hE|e2TV)N!a>okFcT1?P^ z_Ei*K@f$k01_%Eap(PH@2tJyUT(ko8edwCLxL7(u3Fiq*59qTw(OT>)>LQcjvLc;5 zV?F4CArp?Q!GHlHZ8sf9=(+E>;n`+mA-x=*(qvdL zOq!^u5^V-#I@0Jyg!O!-{+ji+F@)<6beg5SbV7hyzcUr-Nd&|gWiZ?qLfLp@J;^o^ zIFPVtpJEh85n&n@6;Y32@fA8S&fg-Q0~9tGxdGJDVw7ccrpI z)eZ${{N`cmp5XU1bkeEAfKK&T70>|{v^l7A`)r`VHPxP(N;<5a5F90~MC%=@} zlS6Qv^X4I^!;?4R59BOy;=HaTS0m^rnlz4JD}rBeKEd^gkv7Bp+VkdLDBeZ%(&Pf} zmqI&C)LroR5(TCuLY=5DOw8h1$($^ffrxg)RS(Cptm%UL1I@@aKTHr!RZl-aR!o$g z(lkM7WyMtVl)x#?97Zxu3M`gQU(1O_q1~{SlTK6nGUCJmfl@XdNxL-xW~MpJq74lY zcd{%)2W}$F>Gwp~^ia!iwvo>2VVYwaOCsDS6%vK1wGQ7xr%6@@5>Za`(Bb5UnMmwx z$e4?QZxjJJlN3+#9X<~%phLhM{l+)#QK6#q7MpG?dq^RmWYL$NG-Kxr(=Fb`FC`Lv z{LOfk8P7P>_25N_$RQ;_TyGAJMN@eQa`D3l#Pdrm;N$r~FC%9-Yof5_Jx5C+rI&(@ z=^RWb@kJa?M4^o=nXkkO2omc34(&e5p66q*z0mcc77+_?W@DUdwkY}>PeT?;{NRa9 zs0WQX!3)U^N6k`T@EvY@uY98jgv>-JzIdFcA1oG2S2NeXnDq16n2_=g{V;S%z+@K7 z5FDcd>vZh~DKSUixDEzm<%ERkSwwrlG^#v#)dr?Fad;Ep;DzKW2>@zYXYHfF-NG$e zPeyjh5*-BFIDYCzB}Ji(^Z}5ngQFn~7o?%fl3Q=f(1+v#7<~Y?;lYWsP+bW;Xg~;J z;l(-!H?Q-$C9qCmEhc=)n9asIR$~v@wo8&RK9j=fGycTQVq8IJ1YBaF6X;nGYa18b zDG-ZEMAZaVpf*De)={C_?Z*`*g{yx+Ot-5wLBm2>x6EXDt-~N$Ugy`DmpbgU$g)$077nDc858J@VI zF$Pl{%g4D`nWj%vb(j@Y?xJ25Sm&;@w=cgl`~E&|p7)yPOXk^P_B~JigWe}_rg_dV zPmAZ+Xr(6Dfakf)?4t=7_+z8TspI%ls=)(Qe7(fL)!ufoL>?P`l7$~rgi>m(30yve zj>!TaRqCYS;O+jZ{X_9vl-_JAZRmfWOTWfnj{fWrdL~%Qe(PN~3E6WJzZA0KSe$X>4{dWJ|_M!CHPnJCW`>l?R zcJY_M*?`?YwbR9~>5mqhxCNEx?L+7vd&2U5YY6;_>G_Ua_W1CFpTqvyeRKDl?^yW+{IK-f{c+oU z_(9Kb>R`{kk&n)`pz`x|epQ5UT63w3tYfAZf@eq1WQ?pJ$&y@z= z`I@b-Q`Kz1uQL2;_tjU-!1uZEC#!Qj^xTP&toLt?fxq2_KTXX6z;ug0Qwsl)A@q+| z0l=5z|4jz|kcjO>$be7D4w}t<$04&-tI8)n_T#lRW0C^()|CZ z5B@#_zr%%}q~-$J%Kum&{C)#3DDiV_^kg*;&vNDcg@G@)_$$?U9{j6(@=!4FQ@>%$ zdxkn6@a5#~xPcG4@RQU#JoxYO)$jB_>h`kTg`c1<@WA7>pXHhQAE5D=C> zCBO*GF>p5i*yvN$d<4qz=Uv0V*PQ@eI$dCu2fzHH$6ZT=k_Jwd$_&vN{^ z!@wVK@t>^T1^A_=ygPjLd!K=y`Yl`Dsj30+R{rnv!T-X*uW;etsI-LW_M&|9|H2UZ zCo6ub9R05w_^mGf$*KwPR(^K+=$TZ|U*GA%j|cCI{Ga2~Z>Jl0fXE-)V+-EO(KF4! zA9eActS$k(rRPB(Jv9ct_72O>Q`Ds%c=@R3XWZ6S`G-?UJ5?_Hq*d2xbUZ`6(0B*KKZ=J zz;E@yzsCdrabJ61Y~Xje@RjPl9{64#e8|8bb>UA|S9##K`shg-_}cH-@}92V2Y9Q` zH~GrD*}wxt{;1Ed#vAxEYgz-BPgJWk zJ@_5^x5?nW)y4ld6#|$o?;}3^cN_c%T=-K|rw1Nux=TLtkfrClMSc>ZoIUfTfvH)mv=K&u-9RqL3hdofKVke+~-VpfH)io!8ztq4_z030dRJ9uL)}DFX zN6&i=e9(oTtm1&T{K0FI`Qm!s#42L2@%|HDUN&~*zw8w)!etzG;_qp)n z6fYSn$IsnE=s#U$PeA_@2L5&ze}&3<@VEK&Rl&d?a^cTV^o?119`W@r#|^x5w=M5m z)LIYxuYBcw>tWqqR=DtQR(*iC{JGQDzAiNIx4Q6WD0q}Bu8w#P$0`afXcx4Q7Bs||oZ%hYeyCl5Co_#H0%B*hCS%F+KB z1OJi>U!kt`&~vAc|KBk10FgiXL*OedE6?8<0)ML7bOQK?41Dzt%bzLgdca%#@OvMB zo-*)#F8rzLgC6)EUw`_7fxp#-pP)7a-tyn^mG`KDf60YEO>F^ux%NK!IW2F_J(m8- zsvq#+|7bkizp>`+pA5WB;QYvk5Gbb~rWyDi7k`ENFyJkJdVKWHGw`>#@NZOG0dLD& z@bU991Ha#eKSSjKZ{_Wf4}Zwge{Zq8AMw!toDYA>!UKkX9KR3XS+2YvF!0qb{)y_N zl2f;@mwfp94g3lh{&cks@V34Grw{(q2L4VD{0)G&{9NFZpF0fvAs7A)>PEm@ejfGV zf55;`{l4YTc(vU_|6RWJyWi69f&Z8X{&pYyPYt|);OE%rQ`EoUS&pBF4E!xF{>kbl zz+3&W#iy@c7=r(F_3;znAM?DH|D7)WN_8{fEk9rP@#hQ!ukN$_d4u|dhn|o7d(*Mtz3O=Ht+{s{FUmnfVcG(_sQqY2EOtKmY-A9=REj#_~hs7 z20rM*Pf(u+ysfWQzW(}q2ENyYpRB&%p=X5;{~k-f3qMia3V6$(Lq7ON4ZOPF(qEze z)q}ss2miE%2Mqs?jUKPQh-W!|77YA+7yo$mCCO>}YajlX4SbIae~P*d@Rt9TzWP-! zX!+mn!dI#<3%qX5bIH@F%OU0Mzoo$H)J-8+eV4R`je&3X(DQWgKXfd6Yl;7?IM5qOP%hOa%|GYtHJ6X4%(;0rGOZ%{u4d^veIXyB_K zvhsGSdJOP(e(e@tc@Gbvr$YS<(B-Jge)7v&o>#c^oT7eCa*Y1`l}~=& zV&FHq@RjNp9{2-3eg+J@fZ*rY=+o5`c$TC8;vw*-sDmefzrw)Z>Y?YCfVbmEyq5fh z4g5hDeyn;D5VpQ%`1D)M(zDmr*BjMSg7JT`_crix9o5l)0{_`6zv->LW(Prt!@6L`n}shB+7_fwqoczd3zTic5l?^F8C zpLP8E^NlX0QFhCpjN^Zr=2t84-~Gin{1k_;NdMF0@GgIwtcZ8tE0Op7yYq^b`ElPj zaYXUoh2_`ts}<>gN%=Y9>7OHbjMs&sVBF2$P<(XM$+O-(E5PIg7Mpdx@IxK`e_Qb# z0si|08jF8a^~d4AKTbaO{4K6em)rE0Y(D;p;`ey`Y;#)3sy&J6&!-gc zTIPH_6VP|{t{feQ$9%N-IS#|p*^}=o{;22YBKyUL#*SA@j34v7)rZC}IC;)A6J%s9 z|IM-f&Qg4f$4@snf?ipf!PiBKcf4{vr9FW>*SWf|yjtzo1K+0j zsZY56p6ljgMf>Bv@2S`0?fk8_zHCwY2R(j{nF@ZK{+x{YV||K0>hUwpG~nI(av&B@ zy+QHji;n-(Qxj}!6v3TJ+#kYHWqnRssJ0Fk5mO8=P0Pcid?{yrC5uif|Z zI9Z>rv*$CxPepmYL+Q^Ob@FU57lM8@eR#Lxw|M+4b5RZX{E6a+JpKZ6G4LJM9dvAZ z{drvRBOdSVNyYX3pA~_`JtA znwOxzM%Rn2vH5tZ;tzZLOfw(&io`+XI>jFi@RtVkAB^d9tKv_1{A_bsfZrUOFPjw~ zec8ze=l=uz+?YOhE56<1XPYYm{A02H?o#})$2Zm-uisYuV;(=ZCjNbjKko4j=E{Jd zi(~wJO!19has8cXt`fYp4>I_{uMx#>@pvB(R-9j7Q2Y^(uQv-VKSH%7w!Zw6;-B(( zcfPu^J^Y^I|4GOHY_kaTtLe{4#kYI>EOQO;)$H4}U$hFJLmofJG}oYiiQiEOUK;e>jGJh2pn({6%JQfPXHg&%KJ@6W}#o zt2n;*D&Bm}@iWidAoP3?S&ey+L6 z;w$>MCl$ZN^FQ6(416{HsXy5&P44md3(U)aug3o+ia+e}^=1k17+;~YB&PqDDt^@C z{qwUG<$tx}r+(eaf9ZtjW?2pXZ&ZAX$Imb?7k=z~ABx$}m5T56_(sW8RFlsu6+ax{ zTLbzBWA-Pb_}6QBx^9+PZslX|ipl4liWA}C7xkeH$ZGTVLyAA4{G6^k->eAu*&XZe zyr--jlUkmxd$Cy=;G1LXMSdLq60-{U37XGY5##?;%FnQ;KhLZV=+D3l6T+WqzigF{ zPkH&^{6Fwc|1XZs-{%xJ=JB)5+8X$al>Uh4=OS|p@YVFWMe$Sr+0FNh%_}UvF67(! z!*?jY!{aYB>uS&+P`sl>|80H1zpHoUzH#_-&8-$+alX6nnLX_JnJ(*THUIDrl>P~i zpDmtDHGTWYIDTfC+rUpX{HGQFgqEl4&M_N-clLivOh2DhT=Xwa{x<%_cvZ9yKUe%7 zkDq5Y2lSg`^U-~O?qeQr*Y|4jY5Y~I48;kLKhN9&`qlJjf#RFLQR4rVz*n;;H!9wZ zH|P5n;H$}Vo#HoY$^6W#YS8Z=M}N9`HSkr^U1pc!hXela1m4ZZqp|UNyW&SZezw^v z^lf~7A~t^?a{N5)7pzM-+e8 zgbQl=pT`t`((^yVq=No_BIcj`Nb$*Uy8cc#+kme&zQ0oZ9*;lAbPD}s$hQA`%CB4H z@5em;V$%h@8?Q%V{9La16COXuq=mj6uP8QNHz_{)R*8T5OAvm={eqQ>?--A-I9|6Y ze%Rx!KMZii@k%THDaH3rs2vZ!QSpuc>iC~&?nZyB&EErxZ})hd{|DZU*TR@Q->dlj z9zWCci9D^p@s#4F3M2Iq#gBOW9Md1*AB@?nzf=4PkDp|+g16&UA6u_Kr}*fY>+c+s z3-D88^>s1+n-qV{<6mTU0PohX z;g~$z6tCpqzcrYhz*pmc(>VMbGbDI7gB>MX_9%Ypcbq(N{vUXUekNw0Z{6EkMu6wH zUk`jW`@eM@ezJLk#n**|>h;5$#_>Ph>;}GCf8U|_4$uD-^G4vE{KGc*_wOivzsJus zZ>mB6{fhsvmVDmx&6a=peVNWL`2hNlEAFtT-(dF0MLWMtY(74z_!AyK%e*DPKNZ7& zPw_3^b>lV1ycPIr^7*CWdp-U_v$qERywj~BvO^xbix96#rpdu!0Y zS@F#tKiljB-sxL=Y`&~l{1%U&W8N0v55(q6O7Z(W{sOZfc%$*fP|Uu)Uhzjf-shJp zt``RsZ@%aHYyC;cr=q{{km8db-)Mdt{8W?YM--p;_}cV8<@on_@6S}^=L?EI;qg<< z{egTotNf)3QhQSIlpue&AN>F>HfnzIv6y|B_pFsmi3MT&3yz8hbg@2wUuT&wsFk3Y}+uF$vZ z^>A!`Kd88)9^WMXA^KZ!yqb?&K035KUAM3%evR@o;_=@9Y!E@{FK2I4ia+V`Q_SxN z@;MZnFLx`x=?6|ev(38$d{b;bzR}6Y-F0dKkV_d%tHbG;u!v*;ve() z2J@Z(AI0#86@S9xXPZA1ydAHO82^8x_~?hOzm4X-0sYHj^uMV1H6B03918GTWBUI! z#pgY~-n{pDueM&_q4=jfex~{Jfd8hL{Y)!9`my8ZV)GXP|0X8Sy^8Pf`18zP2K0ww{e8FM zhdsW*JO+HV`SoGNk9fR4?>CJaKQFd^J*xPrCmjDa9|(C0{%{OGqWCpc@QyyaREPgh zD4uQe=XBi#<`cLGd&0~9$E{!A8;752K56kD8~*WQ#SeRaW|~g{-w}d>zt1Rs)Z-h> zr)%IFCRn*N{=~^=t{DN|$9FM*=`zK;Ch1@OZ4Lf!9EWc-e^&#)R`D&KpYzP$1E16e z_r&<=Q2cO!e;oJ@#dpQlqn(N$@%Tpb4*~vgjQ-mdf70Wpn$HCIBQg5Fqxj@cojlJo zpAGQ4WBUJL#SeM>x#lSFPX1eC{CryRhdq9Z`5f?B?QctrpQDN&_4sql=Y_ttKhMPU z|Er2W>G8A77l5y}K0d4XrvGsLy}&#X@V_R;&zR!31o$ro_`aAu*{`@G9)G#{67bI7 z*dN2stFwGusU`QD{;>xCo9}B?$=TwC&XcTEy2m{~GtEDNel>f$S@F^HPChftmw|WV zJ0m8aZHjOAcz0g3z2bWJI>qnNlILBY1pPg>JL7)8TX6?H{W<2V!jIL5Q>qWF;{T5* z-Vx&YsITEdHT(QmiXZj#XPK|pz<*xxU)PfRBTunmjo0?X#`ihJP5qgZ=QQ)r0e+3H zUs44szfgRO$4@u^65!Xx^nc<+OSjkK&oSQszMB3wD*m9y*PEw>zLjTqKAhF(EB>hf z|IGj&o)2gB#foqGx$Ey-^Q{2CCAMB)Hx7TU`PTqH6zlJ5#rJyp=b2-IxBkzb82#5O zemKB?JHS60vsZ(Pf6C)$n(qMb>=n9L_H&Qo%`aSkr<(5u{LhQcm-`jpIh#yaxSm zD!$p%clM!jJpP>G^BzCL{1Ei3*{feE{*cGx{C~jz@z{KvQE&Ts+~en(=K}mavGJO( z_~@5TK0bd{k)_3o-*T4tRf-?>`03`yHTt_z@lSdDx#k4$Zhbi!>u-Zv+>}rGMPx8_ekt9~-Yr72kB)@qd9i6X4gy?DG=EcX&LWCjx$j*XZ(Yv?<=z2IuY9 zxVo_1r1)V^f3}%WM}*b?{V{oVEB-N$KgZMs_yaL~LGi~tzR^q!@K49&bFbp3o^kTI z(9{R`PsHT^KE*eC{9H3Bz;BJw|4YSpc>FvwIlvDq{~Qwj|0l&C@%R_H{AWe~?K#Cq zV~+pxYT_qOwzxeWZ}YvTNX!{bIdsbz9Tl@TNU5z z@w3c~0KYIsf1~1iJ-*S*4Dc;6eeP2HA&;M98i226PlgnK+~XU~tbqQS*!aFf@l6xj zsKn@Ry=fG@_1~Ie`O;yil0~Su z^Ag4H@%R~L0r1YBd?+@)S3CSSZ96Z&?>^k8^nXuFKL2$M@Q}aU<#293eoS$DJU=!bL4Paq^Y@BB>hTTc+MvHp zvH0#Qig)c&p4S0iO`gvx{)DGL(_Am~?fB+n^na%Kc~hMH&ozsMzSB6@vMr}iTP}a( zJ${CHsnECcy*{Q7^Avx`<7+>^cDdrCsg9r7=Ei{kLoxktQT!H9GcPjodkH`7{0Dm|ppZ6;MgvU=a$pHUQjQ)oe z-!$FHXRc`t@QpG5YDDp0(31JX(8l(Sm#W#8UG_xka zH^%7SqWE5qpJ&zzK6xoS_E?O5m*Nk4{4{e*KtGDn&nbSy<7b*z1o%(H=)Xzv$31?A zSr_1+h|QM+if^3Z&@ z&ob=+enw0`Kco0ke&9TFo8Xh8SMgupRQxedf124C(0?XI|G47k&2;j)z-$WekH_RQ z;hg2tCZLY0si^edURZIjk8^U zUu=2;{KYZ(KdkiEczmPj4e1GJ{jxwo~KK$W3Y&_U_p5x!X9}Mww#peOvuk;;-U3K>T zX$XFoyE>L`y*sS!K|T)RZjtiqif{7tC!4p{=H8@Zw>s<6@NnU_kf=_)WCn@x2?W4UEuW1=PM?M zf^ovyrue+a+voc*A1mVj>RwC#u*cV?->39XczkX8k1PF_d5-_u_%W5wkjLBS)2s3S zMWz3k$J_IG)$m_e{7H|m&CidtzsVOl{%!uD8vS_(tUUKC{(j_JsL$2#QyP|s!-)L9 zw)0p5%AhT&wuTiyZ&% zyobe)s6IG+Qt`S$2R%RK{XH1#?_Vl@)Z^>T!&T(Z80C|S|E%Z7ogcRRG{)$ES8-D>cJlZ9 zi$0GIlx{@KQ>?S(Iu|G?)@Z|{}%OENrLn1D#e%Pugecd67t9A?~RI2diqn%p9cJd_$27J zD!$j_&%>ESTriQ?s}R2jwZn=#;_;W5k5<9616!0nDe{N$;1P>Y^7E3If8L|`#@}-C zar;?Te>!6N^Jd4t$Jd*W2mFNgkOI3`@%ue~runk~ANJRv{z1i)SN;U+#aezY!(&qZ z@i@Gg<);*Wa#bo0py{7V(&xmfWga{QOi$Eh)XmMFf(nXn>1#%;) z3;&}rectHsTJpTa-&Wv%A_cU^m_fx2d-~<}^H9uw?pFNUJ^gdc-#cbOGUT7thZOge zr(bU#5BPEVLw;!gKcx71FLCmmWd5NFJ_7zv72gryKT`#t1pZOQ9}e)LzY+37`|~%7 zpE}?1GsPUOLVpkFKR%8=&i_}zll~VS|DOJ2^Z9Cc)PGg+M?8L#`9d{3?8(!LKko6> z?LSwHA1FS$)b)3=`C>Ktus=Uh{KPrS(RjNZ-yhSr zR>kE#Ki=OK{ZGc`?;VOi;WdpL_a#yoCR}$_GO$Ki}7Qs>##0_PM7@O8*~~?y$$(=dD&K zy?8Ng-18TfK6$P5Gv}?XQa$SF`}f074)Kov-2E2+4c}j%FA{kCJo!H5=cK1^`RO)E z!FQ?u?Am&#;#)3v@^{Z)TfD=$@&k(R@c4=5JE9Ls@s}LVl|OUx^mzMxWrqXA%7$~7 zOU;PK+w~psZ^fUtseGnh;rMs0hb$QJ=qAqra_+>-F^g z`*14qf4kxjd%Rums_9#Y;!mC>e!JqM1x`M8e$B7QjWI>VuQ^Nn8x@~FOZ+~?4|}}r zZ$;$+kMC6ch{s$0tKr|R_~U1Z|A68fo1A>CJ*g)DBZ_Z7OZ+DlKkV_gzt!Y_RPjg8 z68{y&n=2jvwdsFL@g;q*@p3hOPAI;~)3^Fu4PQTZxoB2Ne`?b|U-2EDerndX9 z;P)*5uA1LJNPn!+B&F)GuBYz$OVmEUO!;#3o&A3@hF`BZcfZ5$aTT#Lk?2kL<(Dq$ z>`N62%ciZ!6!LwkT~SxM&^eIF7c;qRArw0lPqhe~HCtX|^?Mw}1Gua;03}(A>orC@9Y%$%nFv_O}QvLjH zY5pV<@-bQ>#j>SKcBJ|S)61r9N*66KT}%(St5Go*$#w9uDV>hCrTcO_qi*n#iaK-s z`96T7zD%J=mV_YhmZlP|OI|maF0i9$B$X}fOb;xZ)>2kNz$2*B79P)#+?{AO*GRhrlph@(@Ql z+nFJ4bc$MshWLFv=~OZ5&lC#Ol{gPQN~Oy-1G?)nAeUIbBH9KiWqPtytHQ2AG2LHw zvq`MKEm~q{lpUK?w7&HfD-*99%waOAFevv8PK+{jIA<{*A#sSUFTEq(Cwi?z1N;UH zNXzUg{)7Wh8g;EuulAXOY4-gcD47qi^ zjB<|>uS^dW2T~YZbTI|WuY_@kQrmLqeX*BTg1S(IPWSaiozRM&bhNV<8fpbhnTonY zU0Ro~O~_==q%iV200ZQeKLOpsU?HFB%;W|OWI@bZe;Ni0+R)WCkjB&p_W^z&T^tmP z1yvmw?8Jw(*e=dV+Pc)hKx&ukaByEfhe3x8h*Eu-lng(#uxqftpK8}5X0H&or zg+EFVV-MD|(S~hzb0+ObC)zM83Q##3Ad=aZrg$-p(gU68Jhf`uE}2n1sex@N3`A!R zla({Z@nOd;lTGFG1G)S_hVvs;EDmI#%$#SqiDSW^Ku(=0m|wKiJ(!g#jUmsWS&ks| zlmaa7$~%n;?rXDx;E<@6a5mGLLT)rmpwLh2Fu1LNRRe-R4HzWixf1vyBnhcVH9_!p?7OHZ6JZ@+M8}_5o)gDy5{Dg@_yxWBD;wFD?n>AoC4WS z7zEIVPFP8cG|Ko1@orss-5_r0&gi05-VXaGi!~b|?-UmYa6VN=9lJnoP~xmi!9b<3 z%24zDG82x^jub{x*D|qXJ-tOP4|Y0=R?P3qWqa=K&(G(4n7;#y;r8+E>U`K0WwG8; zoBDE{+hvfr;w^Mz<7?n@q_Q#y;!Vh!K=&fwyQ`4t#1cT0qv8ws&0xXD{H6`aLdn@F zm9JVEszQ2T0IYI?aWtT=c3nV4qFX;DXrQ|6`rMy_0b^T!{$K=QkvJ2nfH|lLbqjt| z=`*wulVAsCLD_u(!H0rXr47a~b#r<~scueftZ!Hj)0~2~XVM<$cVIdxA+9c1%&@q? z94)j?*+OV-u{Q@-3SEP;^udCNjVrgS&gk8Bm!F$=-PP1oGR;?B8M0^%N6_!Acz%8r z$-`=}9rbu*btuqOI$ z5r&-ntlwi7)h0jV2D3Y{UZlIOboZ&$+`PcL!>m@{5)9fIfCvD`om$b|tn_^<^;YQ+;KAfcG2V;tmdEpvW*tu)qDV z?{w{zo>RPFe%k&zQ7Nzx?V>4QXRb?hWqL4vyV5Be{gm;^X_)9sXM21bAT8tJ{RLTB zN^6m5hILZA7Fh`P#;JIQ0%p&Z-W)@T$YuDG`b5~7f8EGTOAX&e}vs2#5 zkRc1&huRDzN-LVn8n`fB@Iki|^SFPoub4>$QD61=&)WU@ zSoPBb+4*I|E;bVDB;8v)D~PEP=&MB1*<3aOj}vLXqL{DlfeceSzAIwnttP1)=u$;` zi!-DF|0K90Gf+gx0#>X}!9Nb#wfti3#o{YLCRbZ)IbCEN75Z{mRr^x|+i?N5cmQrf zM%H@L=eq$X(2+!H2+I2pB8_iC1F$=_-KD>Glzthbv8DV)Dqs5^$q*kQ3Z1*53R^pShBDbxOgV)+g^K3a5 zY%oYr-TuccqO@8{UP528F6ev8|kNNA%h{a>$lEF(RXr+yq2hy&rOuA_VjPn z6e1T6!8tzV{yefobfzExtCQfDE+GSYy$vB5LNR7LRqM;-JYgZIq^}I3e9bZ!7yWONkv zpiB-npXSG60kwn6j2$@4*A(ozjM{uiW`5MvcBRDWcC480f{{YF2eS~|SOD(otFcl! zd13ygZPG2G&U#tc$iHme@o_|XAYFhVMWz~)fWz)$=#t(s#e&QXjJI=iqe5@0E4LG( zgP<^6zTcL2t1F2?@K2=?VL{aj=#cVFyXReSQDm#!l5g^~DegSxTkx_k)Zy{2=Ep3=mRJ*lj2<$4p8^CKqg2X}1%YrbFT=&^uWI ztjn)14=|ttdkCiq^WP?UZBin*kJ&a!c*%k%%L7KPfRRQJ&?j7$*@rMk@4`j!%`Fb5 z!c|NqtBoZGdk@?MisgB-?3XwgrRBVA(x7dpS28LjEeR!YRuPm~cg|1EFd2sR0omw2 zoi3rA=9e7c`A`PUkf|jMa~WSr1a%O8MI|{n4bL4UgFx zZ3=8U(pz2PGGJ=AsoGh2a#?YzLK|*Fo^cbk6jw?Icgn_0ZV+k4US#}{9A_i2mMP@h zX<$OKW$nQpW75Dk%J*7(3^-yPc&}VbN!CuVlmy>G)8*sU%!6I)TFH3OPYTQqmu8Li zTy&=&CCI}b45pIZ#O%Xv7#E)b*;!KJvK7hRyZK@5T+&(IrYpzCS_m(_kL+wQ`|SD4 zmS(99vCDkLY;-9);kVDq#*?$#I%wce=8QzSGPAhVRpzKkdzN1;qCr+7HCRN7jE!N36cx=t(da@D)o4`7FPFUVe)b6K&+JR#s&%E z(&DYw%SHq)m&v)+!MHWLY5|gJq`VNTR(}Th9%uI!LWbN_w1Y!s35bGAXgVyy03u-y zTF|ye5VGq=!!AJ{RHhZXLY`H0FqU+IiC6oWQ?&_cJLoUY!!Z zfJlJrZMSnLK_fx*Hts=b`#j)6c}T#{3vzw|&0?mB@4y~O6T(3v(YCI2)28;;&1-NH z1lB&>Tu(?4$YU7b+-@cKa|`eeWideKAznGXz#TJ$Owcm#IyOm;j^1jH z_QJeCNA8AHv0@V6$5GQ10GGMWbQgE4BJnX|^I);>s-A^W6^vCNNwyvO|IM7nsf#!gV z_ld&=mSbu+QKj?brHJIBnaEe#IRP(+?=uj~h{$O;$K--4(>o?qL zH?2{FxL8E6E5d;>SSf^^lJ(itddJF=!&xZTgKda93OH!T=?IX`qfp1Y21SXmvS7Ch zoA*BJXWH#W_&2;6E*$2HE{oX4mn~Jh0SBWQcu^+Ny$uZ|V7Cw=CdAEIx+J?S(w|LO zLTt=8PP4-~Ak{0BV%G)|bm=14E63icFHbORglm$1#YH+ip3t3?} z#-$@TjsYZTuq)0ZB-|cHMm>w^Cc%aN4NVcBlQUmdN!zj8(M=c$SYOf&Z9mPL-V4CC z)HXnhe#a5>1Au;quqU&mH|3K-IR^#oR=^LvCQ4%~U;ZriLiw0lA}1I>;W=R`B`B+e z^PsMi`FK|C*?sI6Y|dy-#IReY<$vRkuR} zJ*NKJjgf&gjubIMl5~(wWhY8&wVO-y1nja{nnuol%wr8G_wU{6pfMO!U(P<+w1%vM zu*+hz-PtoY{};S`0d!Qi%rM9ZW_gm2p)4au20{hs2W^xP;HDz))r~w!F+*P^9)XiZ zt7ba`g9Ed;Y#Qg3?TD=q3nOrbFZK>K!-m*xnVtlXTOf%@9fv{Y+#6IsjNzJXlLJXS z=3%ifeRj7Hj~oZiyVa(>X(x=4WkRx`)i`kTKIN4OW+lHXff<)i^;oa5Y&E1OsC;uY z+IZ%qT@$d}z>%}QrTHy$A))R}nJE!9Hm~GiNUQ{MPO5Fw%7y5bEWx}*^b4(Ikfi6X zEKUqo#bZ2tc0lg6^f%BQw$U+yb6sNLO6Kh<1hwH1(N@yf_N9lQIre0ay??De!n$C^ z0b8h-~&1+^MF2?4gtG9%Lu0X&XIh-+^9 zn%jxhRTY07Y&$$IM3~;y>q>7M?CG&AOVUAGv^UFAX_tIiA9N-sy1TYPt+PcOmA9#i zWj8Mo?6Nx-j;mU@XwjnAaH)0PytE1Sr9CJtq>9ievieIs*tmHeq7Gy=#RbQ)BgoWh zk5!oUP)CZ*?T+FU9W&jSu9}pkKy53*qGe2p0ZBmPJli1MT?PvF{MB~xt|VjMBAf46 zB@qN@`U7zx$7I}21AS~wu-S2rx1)*M=mp4+;}1(<-wWP^CRfmgB2LNE%`dGLbhTaV zB{^RDNH{5o1fZm?O)FeDs$p7zth=0HMTx~JJBWMT zzKOUdii4hHQqXyvdg?4B;Op$f(v6r5p6Sv%k<3f)=E|`P9$7a1nrUn3E90aY@@6<{ z!l~wtIOsj}aH$^K;H20&4kmeTVkf*M96^9W_~tkgt(YHJLW2XiB>+YdI~+Z3hLJ8O z6uny+WZEgXMG~@T?8W?Znmd@*ukV6wK@iV8v8?^fVdH!fRZ;s7d&q7qxNHHJc5VaV zSbR~oUIMSSg5EPgfm}qEU|?8h{sd#w`4PTx`75qPC-)F2C(poxx>*cR2o4t zDF~vhsO&V$sWstzlS|BEyN`=2#OzOl`>7>H!^Yk#^g$UbL{6B2G?srkH3*-RXGS<2 zrUKnSx!gIpg?0e!sW=9A7$Xi#O%{Z{TYpx(vUTIC>yQ}W*;i~L zhPx(ntW=G=@$?sI#Plbns?CXnr7SnVj33fWGI*gwq?!kL3>C4s6+-Wqlgs-=!O|D_ z!)kBf3&X4yuy&Mq6RQ+8Z5@=ZY`y(T&f}6fvJIE#X_(rzwnSoG%t|Z>crc_Cvkvlf z2Q|$`)<|#jkRjwOiL!+F#-(VKc~uUjSRh2`);QTXGzIGLO&}j$waj7_P^+fmbome2tYW0WY{@A?%eo$jO?B~mBrS>F(+gyVk%a6zg9l79NC!ajrQxh~7x&k) z3q*gpaKhv>-(+p5^?2-ZMgJP-OW>V5_s2!1&H!%W5h)oI9`eTi2~3gh9{MyoXz}n1 zx5!m&-086LU!mtxxv$KJ1btLXonZ=Rr#|Kf9nMG!VVBswR(m$lW;uvOGCS(&yt_2M zHiVK<@9c%PTaKN*hGyjkgmxHt(08PA!n?HWVg7gL(+Q?pmfi^;b=syP_Go~xQG@tW znyS_F99T=t_FQRS=xmLr-WE?V(EC9X(rowrW92PAh%`y(quUtv`@MX#?FI z4Qtc+?H<~*r!!#!FfUbHn7@2H3i}+fLva#rz(V&SjSdG?rZ1nCbN5+2_W6X;LJo~V z>I)CuO1dzvej3+E8rI(|ZSjnG7}#h-Zv6F-A^kawCLRe2_NapOn|WLgk9z>~h4AXp zI5rtcsb?B%pUWNgVi3C|!_vv7PYj6shj=yvk33sIGEjgU?;97>nJ%wF^Lfq}~ z^eih%$GU012^r)+bZazPee3P;OYB~wCcZH>%GY5|VBi>-+Z1gUC)#rIWSz>5c?irx zA954z_c>&Nu_wVxp^d#!_n446w9hAC`KXwb^z)QY$yg?^ba4g3v7ug@PN((iM_dUn zU2{38pq^nXt+N;Wx(7wASA|^@%tJeo?BPf}P-i!KI5_FDJ}RH|`*0diI@CLeX9jIU z1wStEE4Xlz0J?%tULrn$Vf!ax7tes=^tMd_h(MgaoCTebxMy331JAWsKK(O@2-Dy# zXpSG7*qpWQa6WF5Z9;#hi7q|2sH~I4p6KYgts=L)lwwZxat4v8U>ejo0im z0&XjYI_}PC+7l1f8L|@9{S@b&M2o~T@&_EeJQCu}l#V&eCdFERZb6sXk{951zr_!2 z-PE>rt!}|*ZM#ZO(+`!Y>BV3@hu-V`aI#yD znJmN3H#P{c4~KNA^%mR%3ZACFpJ|V!OGtiqHkI8CA8$9jkM0UIBtcRl(9R7-iht1$pa3{_B|H5@uYwSSL?FAKW^8&^}HI@Nj2|jqy#}U|uq1LLHN4dzOnM z#}PXfJp;L&`sxAl2M;_R@RZzs9wW7>v67N8s-b!ZPOnqgwX)O5B&6pMmaoW%#}Ti? zb>Oq=aBSg)!B^&trnne)*|48?`ez0U2zumI3Al;`HsgV%R*lad?}7)W9HU65U8yb4 zB|KJ;$AT(}R~VMke4%--#+NFC=k101QHG~iRE;m?#t*ah+YJo%I1$`nJRvup36oS6 zLlbs@dkoxgf_vzm0CnpC^>_fnmtB5_gBrJTKwLteO*y>odD?T{2peQBao9MVSfH~7 z9+bdmCLyrH?d}5;W$j2Vu#f=5vIT^rytYHg6Ls>aW|Zfla1s@cO2eZ4_BieV%4r5- z83d^7D5n${ia{Txu8i6Q}te0&SV2{mmk32h{4VO=DubJ)G!vZ1a8{B&!Ab!pI zd!xg6f$1)G(fI@5i(4w*b}%%RiA=@9pxGmZx7@l``%C|aD}1<`6b2DQ;uRWM94oc) zw0m=ekHOqDtl)2z+AdqV$w)V{wR{qo2GAZ;v+K8t(~d}~d*kk>O<~~A{>tWxU$t?o zx-Zg;`ifXen6JR2qi%d)U+}a>LXHj~<$^$c zy*|95IY>AG_9ExtK$^~xG+^&5Wl=P!Dw%d;W;5J0|IEqqT{o|apuOZk`r1%)*wo5r%!jEK`7Y=-|R zZiZ}6K<#ySWS_?^wDx$HWNEC)Xug`FRu=yjiTXucLp5ir2{exXti1K>a1+EKD4$y*> zR&}crqRF@b*TJ40ft|%NCkLZ--<7M0Zte?ra&!oEaB7PbT}v^_;JfuVdPD`4XIqR%84fFvm6;xS<>Bn16@NSW`-JUcWH;1izF2#Lt9r3X_ z9z#eCx%*NAMVPFH2*93p#T{fySVhby@4{sQ+b}0!98H8+?OgJAM;=DS~ zA^2mX`k;u9{=`xviB{StbnReEV10Ykgv~olWgJidh;KdMHh~;CMO;n?WrM}pV=8u@ zWur}-T79mul%L@a({{dy3Qo;E0EHB-@TY%kw$>;Kl|0XvdPNyJW#riXes4Av^#| z+ei1Ymk+4|kGJ7)$+qrgDZHbbp=`mku#bI~Tu^t6H+aXLn>XWz<(8LjC!AkV{-7#<}FbX`|uHNnw4`B{N*6NVNWzgXyDh~Y9IN-nufwD?dH z-w&T>VK_mP15I$}#wwk=wt`~*`~S?j>o~oVzcbFufdxf}B;+p(aY7w68wWAnk@Urp zL3*e*kIZ=yqOf|G`pr{s@)o$#SzT)>{U#L8F1gpKQ8C;aN`c$==yA&0%~9EiqH6o0 zx1PO@BO)BcNov?wx?o(lnUHUglgp`r&V-GIs$i9#?Vogxi#+*M&8E@h2PZYo^ zHpb=n9-{#mPTEaG+;sot6tcXF%?5G~==irM#Js1XiF!*wEuBmovk6N8O;Q3&Vj zb*lPkmGP}(Y1kY4ZB-rYpot)=>SoEYKV?+ znZA+{=Z6P4oDxlmnufaVR?dy~fob~e?u4-Qqxzv!VmM$z<;*zaUamL#h;>3<4_8P) zJNYVDMg|l{MS5HtJO(2VarR;{VKq)1;>fub5*6Ov?;~NZq6p_JG6Q@Y4s&W4>ZsTT zc(w@fO3xrYO8Y8129NIf5}Onhy^)mLs?3mdrHwb?eU7rVDQ#oNLli_@+(2FJ!y@oz z3pk3(lU~s1FeA^=@b;thbe~J`0}kCnV|Mz{pODKp2;gj-KsRNOFJi&W(7j4ba|RgPRpkKG!pUoJ6<7-=uTw0; zVHJf5rb8Goik9)F0KR$@s-&+U);QiiF9wGP;R}=ue|Xc6;XHe4obS>ion+aKkfyM| zidRy*tpxg-&QX8U~uRhym<069)k2Nnw~dW()aBN@QC=A4>{+d5@B*QTsk>xNi%DX%Ah? zVldo8QO*bSivdQbY~#P$eKzY@^)`dJUk<3!CS$WV$Y1Jat3B83%m8g{3OWH>9zZz{ zC>Slnig*E~x8Iz?j{8-`qXYoiJ?lYBxAu(D5vzH5w%m5!#fEQ0r7$WMzAdmmTpyBu|`U>w4|V zl`Dk;wj0nJ9%!?9gZU(z?y_%>bzPayy>QvhL&MBp!y~0Ua5Buk+tl8qjJoz^4D6JF zz{}hh_#Iqf&=jK^lJX4ct8OqC*)fvDI*pl%O+L&yNtKEAaLt!hReTuk3!!H)26~p> zUoD-xcjvkBeu2Rh(#5)4fO7zNY6bZT#6)8 z_JD+Xu{}KdhJ_nPLfsASSZIu%-N%4&#B5qtlafVZpO{GS#d!rj^En)XkU&D-n2SE4 z(!ImQoA7{^1~(89nnW}V-e3wOp-MY4 zzXw~Y`hIB_kJ!CL_XK76yeDUg?rcu84v!rnjjYXpLlMuoAEDV6N=6! z;AmKEASZf(C(<>K!s%nZLHYg!p3~v;-5Nn-?SVpwfFPefJeCW}eM|4OC(sgIyBI)q z?iR}alQxPY0%>=Nf8xj{{2{jI99(7D@g>iBTi#uYg7G0+1P3nu;jvHafcQvgVd+4O zeHnME;J=Q;$9;k40m;B=P*QCyUf2njC=hRx7~DozMjB_7r?0_cAf-*~JVc5((bm>prVruvwaZ^fu%qA3 zz~}ck&|Hmmm)pfN5G%q#+8_UHUkDQU+6SPSo2G_iG;nlOH-j;eaB9FF7KKugntOm4 z{mvFBQB>*~ILZhy!iC zzKZ#A<{s!Fb?%Cs+r&|CTD5T{-mFnB0KHG-S=u3Uu}lf8^Bbd&V}{&4t+e_0Fsc023V0{_4I@tjyrT^U2+(!^m=v-cS(0h zaQq>TQoG~zmhnXj`|OD{UIa5JGbxB%C0E9FN_<5iYDGX1UYb8>5>YVU--l_x*l+>!&4m?idAa!{BmgQoou#Ze!OBQ5?_7aqT* zU5Copvm1U4y;?ar)CPe?*mu~BgrkEu+@iJLC=x8)${xG*?GAqZQM6HBQ`KI>{%Cwv zIu;_HsyjdeSDp{&(jTWo1&wRd9522(0+oS31B(L(l^GdX*sSzR{D>f|J4)ek$e{iu zm3Mr{a3XJc=ecN{eFK9#zQ;CNB@HTfl}}&TKuigLh@Znu6p!7=1M3)iou+unv!f$< zD0BDMW{dZ;ky=#U(C)5s^tE-F^`VB&z-z+yh;_%`N;sChvWe zzwCrUEp7g~T~|92tKIhxc_)PuS)NPx_D8GRtlxXrU7bTIe942HN`(BJQ;x>1+3;`W z4e{6ryvw(GSH4L1rz#t!jib&-ne2m7$h5(N!WY6D{1}duf7t`{&FO_pgmdk;ryDrc zWgEDd>M405n9tNf1Z-umJHR}16yPA~H)LT;4bL`8gyhmF8oxR$_ZP5eaP_JhSy}n2 zy%?AQ-Z?-M z-Hgq}d5@nx1`AjdnCkAsb~{2027CObD>73$gbaU=<_Je3Fux*Dk9{Y*Z#$6VM$i1NH|PYp+J-08G-<~>e1G~-grnj(Fd`L_<1|;2T_*aI!&t@O6p$ z8Zxb*Dy_b?b#ox+iu5;aZe6~q#PkdH)AKRz#@h0~1E=}Q#Q6gK-ZE|gYSZ_8jk_^{ z7l#knWc3SwzoEX(%6&sY@c6O87XitJj(dF{^U`>|1O`YHp3XbYH(Cf3&c8bl_woJy zSU2@s6&ckFCmbWBbU8OX#I=mLw`|tJ&bUkZ`oOjN-HS5ekvzvrB*x5Mc4>Y4PB^j6 zs&9!5(wKM@mtU#L7kN3wu^+i(&-d92f-^1)$wtMUc)OgQpG#!qn+MP0%OWk#vF&7; z$Uw*gcnz3Rs3Z;@20_Kd06FN@Dx(Qg%HzGd*Nosr}8DRW&1| zqvvU=aK`Nr_T~5%$GeqDk zFCNFl!FNXTxEtQd$DZJ@)-CoK19|z8xRJHM;A0)5KoLr9pyij2w0lpF(=A!dF)#Q+ zEsBU*Wz2Hq7?1|$0?N4!F5xZd>kyi*O}rEtH~-ALob|THzDoA6Qyv)hl6TAJI9ck5 zIDM!vzMcK~q0Zi(Yj4;V4yE4b?J2w;zCaI0vVnXF77VnS;}>_8%sY{zw%8Q%?9pD zAYm91BuDg9`K&DruYC=q9FXpg2HRL;ugkU&8I)dkQy=&qL4BjW3@7$e=(URvXCFPY zPTaV0PawZWBu`MHmk3y0f*0-|9D1dLLwM-zH7GifU>rvaZ!m-(1(o7ri7rXon#MqO z2w^?P$DZ-C=VmOI@U!V^;j|?@Tm7aED`zH+u~!JCk_Rh#Bv{Kui~7VjbGxXRutP03 zByL!Y=%g!yul8_hWN$y#uisM9C{fP(p0%d+o31SF+S$jG+;jOzC(Cmen>MXnyy#l- zfaTBYDiF2)F>~@I9We5KGA?#XVCNcHkLY2Q8k9o?`P+q+@IZh>)h zsBh#RT5`53B8&w0FO-{=$XP3z3OG(jh+XGcy8f(rs!T_yUC-Z}R!Z^zaaP#(PVu=1 z$V-S?KFjDkraAG(`xSCEwt7GYwfOb~TYqzU=8pRZAFQzgLdqi7S4XR@?l-DPf8cCn}W;{ z6AkihSuuasdD+~-YQlp7?5aIUkC`uzNqN6pmJxVENNON@p=l6<`J1=Hl?=~tXg?C} zee2WOCGT&uXtXx&f(5QcZWu3lbKk0=o5iv!+O2f1;dt>j&#H-^$nmkA76SHr*WGve zVf-{&tv9Y+)3+lDlue z>vUh_i}zx{OJL639vQ%jt8Qh9vS>A*f`AW(AQlJ71Pk4_yS8>uU*(STd1$P3yurUU z4>1Rl%XrF6Y&edfD8n1!lwkvw$G&BUz^a*zNjSY+%(zLOM5Ye|R|**yt{2pMXOuoxkYV+wGH!%8bFcQSu{T-hSW~vWO7yb7J zpA9{Bu`;e1Z!&SMT0vCC-82rj!oPE$%U5@52gHgYgS&?>Ah_wKO6@rj;TyxRkF{En zKZn2Rr2#tN4`-z0Ta3`Y9D?QvQlI}0a2%pqa^~;_vc}}7Dz6s(5@xj;VhPG`w^FRw zAB=M-Z)->5cUR^+lz-*>YK=!vb`T>{YkbT2V$K7Ze5ThRT5!D>x7MPM0O6*Vn{K)p zP}hu{Q$#)}kSnZDLA~BS9IL~ox;R+Mm+m`Yp7 zwhj9!T5pkR2S7toQm}fG`zTo+3?Vj*@Fj-s2`QVbGCYxs=nP5qZFtB6ALT5i``BRy zi`|J9{%$ef*>e#8e_tBBX0R}DjjU=ciOtNxohKw4V%q)lu25Cm-H5k z`J1od&5JNzi*f@!*WeA0g+;x^{yrQ41HnZ%MAtQ6du{U#*WC~`p<~F~W49d7N#RLH zJnD#7({nGrKkB;{PkF*N+Gou#9~^(d24;8weJQSHu5Y=)^rY$Rruw_OQ~lRAo6KU= zAxtkK_DS^j4;emaf1N?2c;voVEM0Pc;hIHb#N3~Y&Gs7-*W;H#NQvZ3VzK^Vwznj3 z${m+lOg7h<%ck5dCehzHbnOl3OTT!@uKs#+=tovi17}&DjNz{QvAy5XsaEcZ-FLR_ zIo#i!<^9##clGA9<+uC!|9_P2XKMH30`2cteqnKM`?)O#wT#Q*rc<@)#qs}DpR4ir zU)A3KZMyILwUzT$EnWL-e)Zo&{*IsjsxtXY+s{8eY0I}vZ8iLPZn7^Hf&l|K{6)T(dv!he3{M_Z1jw>hVXIHxV zc$KFSBLuO|~4< z&pj`-pWm9aWnRnK&Gxe^e{!w;e2$ja==D!&nO|zJzh{Xp@78jemd#3czVg?ie0@OM z|KQ8*eLua-^VLdAvNs?(V9km*mNYH$hv)F!gRBFefx^F8(EmmEAi`^ zVt?LTgY!c64@N>#!(Rj2%oh1EJGUA4*5G_5j|0QlMk>A2z+mGL2V?Z)I1)F=#2Ak& zJr>7fQTQhJ7+SMqa+6$=tW|if1Sc-B=flUUI%QKR-qbcE6QY$HH{RO1ex)Q%+gEP6 zYt!ZxsJd(OhP&F=wy!Lu0Fj)pa9Oqm5HT~~(2pZ*NF_mNt`BBs3L1X1&8Hz+wGX!8 z+b@thix!v#H%Dd%GDF)9o+Y?WB$YP2wj*x~H_@w<(HqnrXxTAjKez9+WqyY(JG5-q zGSae9%PQne-PAf${;zH7^7`dd@vpwTzVfHrrZ$^e|K?5@|F0ZBJTdrJH+)wAJcYVu zGjC$>uWsI1{d4!%RTInqJM|OlCe}}yJZ0*%>F3Ot*)Xed_MCI)o_GEQ^Imk}MHgT4 zTQ81YGXK)cF27nz31M2Z`=R&cl`E&`|f{W z_?`djcOLxRcm3YM-+%WXJoKJFeD9(6z5fFbfAB+pboh@y{3nn6=|?_#+nd<3IS}zdiTwKl<^BpZxScp8wg;e{u4czxws5(`Uxaf42Xv z%iC70T(x@5+FM?+ZvCwr+Hc#qY4h!OymHH{UTynd{rZ24{!hQWa5fW%v`5Quc0Pv(+iCy&rRg$Pa6mtY#|g0*VimPk`qImhaIHT4)df@1F=HlN zH1TB@Pcr8HXywSaPmQ(U@8~q#U{_xaTlI4$1jSZn3{W01{*?8jA*ki0mIg0WK$`dHte}eX>f>$b$C?7*Pe9q~yr%>i+oE|%ga?i}u zV~yuPehsI`no&lxPmlGYJb`i;W%A{?59KkGPoW%L4g3tqY0c@eCX^j0lPHgEz?80l*8`>e+}q2$~7p>2Y^SJM|lWk$HQn3f9&*FgmM(+8kCKH2Kl0lP!6N) zKzSJD2+9$Z?T?-wJI3qZ!??`GeJGnzHa?5{Q8xeZ^jIEc66JoBBmai`__^`S*m0EY zD9s%3gK{3q{JCew+EE@t*^9FMyfb6NypHlP%2AX@Q4XJfX6yvYWAkv|xhP+BW-N)a z@!~UMLnud49!8nJ1bANmtutdMQ8q_s#+v3r-YDBqHogSypln9D2W30TgDCSTkDwey zc@$+dAN-=+gL3M5sK4~gSPRNS3(kynpge+d2;~UMVU)=$aX-q&tImv#qHIQaoaNPL z#-j6aec_q0H7Jjv>_wSRoEh7XvV9TwMrp1=yDXc}j2%Ncg3??7dN+c9lu49Her`eg zC?k|ZDBDpEqwGL=7-b&i2o=MSLyZ$A&X_WFc!I6J7*~$GIB8OfVL|+2{Ewof!IbqstY3%! z&8Wwe^gpD*eX}I$Kf>D9hQ`$m$0qEp;|F7S{T}>3f$PUmn&l0Rtqt?`PCQU|OT&o? z(%!?U9(_sDT*~XXpZD^NhqV0`L4GKTqR-$Ncj9SpPi!52Jn&%8=d+ z+&hB$XILNOgY7NE^&^)i&5tTvm;U4Wq05ryB3|FnfEjA}=tBJn>M>;4Fe}yXM*T6= zf135$FVcCCbS_Vt%UG{?w*Ls~M^S$}>sKC_xaPjP%?;7sdVb{fCvd&_ilq4hEAD9M zI8e85qP=Rz>^WRF3zFt#EYZK^4fF1w_(0vthG=<1(}79%)vsu1Zf$7UJ7wSG)eY?= zV(+^Q@=i7-&FP7#u=g#Ods+p*0z&6Kq(FLdA9>%(`xYk6J=)%Vb!!^t9hkVHA=-zg znpQL<_fBGe?*VQ!krcf$tL*r){vp&iE=rmvQiL4bxIap|sK1-_w>2D@u&-_}S>q4o z@FcDu!S#2u;ugwaT|;yLmG~iF&*RVbYm#O!E6|_&AcA?V4N)t3YTi3(U;TlJq;oNd z9s}-u#ND#5e($8)8rtuxJHWQc-xB;W+?+HEcsreF`zEse zBChAJO^QDG_C+ow4i*FV5O9aCOPV32!=ai7$y3ZL8=9Q-lUDcy+3|W3_eIwy%|>=P z94|LQcAQr?qW{Uf{&^;fWdbxBViNBtqxUkzC4Zk5!64-`rD}j z907i?dT@&LmL(1O_5EGHcglgu_f5LL{sBR994{Y6e&ao>^E zN%On7&D_G-2tCvZNjdDs_4YN@uRnzACu&^(1g;OSO`4~Kez~4gUQgqC{+6Vf#c@!1 zvEAoUzvmT6^R3`M7z=)qIXD+O(XkG8DXu@Rzxi>~UG!%i?u#}g&EJyH%KPd&81aK=8_~7&mx){oxd_DwR@{LJz5P!S**R1o87<>A^lqpOr+g{-1gPuqx2uw+m9s8Yj^|rq+ON%BUU(q`cpwY`Mr$wA4{4B z(vyCznmKuuog=q!*ig;;*8w;3@ub;`za3rP--Y_<&ywbFldTuKQsMpsz>R(*X|Ce^ z`a?N9jC%8Q(mcyLF9$o@UPBaNqA&)8paF`Y{(V&+xw{jhYHi zZz1Xrq5gIqH)oHrdb*h*7S)|))PhCOwhgKEb}e+8}|!Sx~76$6F1f8uN55_wWG&60LufGTNNz~Kzc0c6jA=G!Eo`1U^{{1NG_n=-~Sh>XdCs2O~ z^}px9D9Qgbr2iwegKCGH1ODsb$hQADY2L*9pkG*z_QC(;npD5Kp_#R2A^!t63f#3S zNBB?oO}wA}(*gQ3`>2O>YTSI-3Vh>F(5_IhzsP41^%3e{7OOvi`VQ2;n)Ny_$^XNs zA3^=wSdaBq=JSDxGM^Wt>Tz6e|0(P)S+(}W`)4sbFRk9h^G@ z{X~6>*0bO^FGPJK_Tw(D#|P2lTV_sP{=meQ_t&qvZ;}{98LQ2}H8-^ys)PF>pM9uL zqJBu__W)e{7xHJ=?!&lmx{q{u$J_qyAF-jebTf$j>R% z??L?!)IK~w|CFv3JS^{D*%f4U!yY>+NN+I|IDcEK^GhRC+4T?ghfx0!LT}-smy&rv z=jnh7gZCGKYv0s5&Tl+``aP&$O@h)-_>JNjS^AIQ`Y5jdC9h+gSJRumk9u128!4hE zfg9f3YF4sePF`!v*H_|B0e9?Q?jTtN_0yyCeQTWC~U0HT+P|4*)+3ysY=&TjIcdb!!<1F2wam za6Nx#tJ$vl!>LF8IZ%Hef(qJTAvt*;h!X!a`QF-U)+-+KwInawy38R!W&CDfqBg&_ z)%-Op%Itu+67{T>@dxe%aC2CpKdfJe`o_CjO~g9z@7C2W(ydUx8};oK>K{aX9`zFE z1^(GW?WJ1H zKd?^pi1EOEllD%zCmo>*PMfAnO{M@2?a2KZ@&(y{+cOysmOyj6a`1eKYD$vmWF3 zK;0{JK9AE>AK!8w)FUU>oB{tTmy-QwI4Hv|`neFe>u~)T zuD_$o^*&tBZ*MhUm+N%)Zfi)YKg;_M;Cg#stN8%0TX{1RB1;hE`3SC?{#MCfm|GD= zBkbjUkF!48YV#qtz^j=2D#~i#Bn&3|_YAI&;Q9(KOk$VTbB1qj7{MZaza4PWp803ogZEB? z7Fm09ir29p`XDR79|L072hzRxT>QemDgSmq{ChF#xvv`Me;w+ZQ6K6%@m;7-qMl)a zSyQqLyHVeP`s-P*^PKnxQGW>a1=g=E;U7VLw7b>Z%zDj-5dS#pJ5axc^{N-Fe;V~8 zs9(T(#ZxZNqy7Zym$DxI5LGPV-}vEubMdSBjjd)GD?pD3)-S}bJnEZRuj5JmT7mjQ z#8Y^pU$1G%Q?r6~g!lL1*ReOZicaFA{E(k}P~W&G)RS8ph9i5O_wmQ&CohWSCp((X zjJYu*j{Gdf|1GG0J1cH^pl;vfZg^#IO9Os*>3@FyM*{yNf&Y=f|488fJqe8IkL!8- zv#X~|$RD_t^5fS0$6l0_&j_L9XYN~CrL^9nF-Pl?^7&_H#&Y~)%_RHT#XF|Ke%ADe z8P@C0caYpG?n8(!KjJ&!uk-Y?E7V;#$M5QtDz_FMRAn`Yg#_5<%cAG z4zT_~#0NG5+klXL3^)Ot2F?QKfvdoE;1+NPSicYPfz7}+U?;E_I0PI6P5`HY zv%q=aDsUaR1&r=6wbrKOUO53>H0wsg;-jA{Gz?0vcyr9Ykzen?(;Bg^A+=ojJL5P#(TCcM(gtUo?i{}5i6 z@aXTtx$N;p!ec%D6n{sB$GCS*W&OP@JRj0~x?gzx!m}Z4k`4&3EIhuyo)TVz@K}$7 z!m9|6^>|Tujl$#mrAK&G;n|QhNv{d-9pUl)R1scIc#PZqakiZs2ea1!-`7o_WO=dp zW4lx(?xgVeK7U(yQ^I3EU|e_?g~#jfr2`#kp#azAx@TNIA4tyE@ONI~mZe?TZ}?1j z8@?!1DzX3bd4t^N!&x5B$CdGHJLlfa@_2r~l(>1}@%~s5UaQpCrht?5v+!c^$NS@V z;k62n*Xa%66(uhH9hB>@DDBMicK3yByUd6`-f#B_Z&S_(>$_igd5Oz<6ouC+JoY!c zg%{W09T(o5)Pw!!Q^IQye>}c%;pK#v!}(oC|9fF6v?JeZjmsf_34Unrg1zDUP+kGD z{AJQ;|9j7g^YhYF3Zwdw>kHA{4~$^|1Ia+Vt5`BXYqXWzqj?o_Kj=}geUDc zpSzE>#7`6+x22u(J;!XFq$BpDgVh%MvzXoD-DcUn9RA0*L1DCP%Zb?{Qc=Oz)H_{? z3ij`MCkoFTdj3&c8Xviyw|bt9k`+?Qua1_Zg8hb&t$ZHv%;`{q1tK$?E{vC z?%3QD^_*|(LPz_sm3vZsutrgv?RXnf&-u71=>7j|Jb4|x?HHf+YB$?n`%usMy$BsL z&gU5=N!tFMX0_Ml&Ex0%*%CUEUqQ#?XB=XWmHXTr^PHcnqND8X>q(D4SfgmbcDyaA z=X~HC^i>cUU+X_Cdd@G#7@%@K()B)OQ2m(MyiMqz^Q#LFn9&m3Ipl7=eok3ITEB+* zzBTA$4!Gce*A1FCIxG5Z%-d}53xfRv*)v8R+(qw+p7X)?z8iGxmy^%<%uhnk_AjA7 zTY~<(#cceTLg19>qxR50irW3EwEj?y`X`09xnv)Y!1!@T(8nD?{}%^@5b*pV8_hu< z*mk}!kCl5RShT%V|ApxD(C6<^KQHSpJ?ph% zHm6X(iTU`=zF;BWwVs$KUNc)-&-wi8(9iJ1B*XMnf~B$^>J(gPDk1w}ytheS|b3p0ue7@V1f zwjGQv?6SHlx>pxn?_Jgh0t%A{WB^|XuA(R)2zEQ5D2fP3{@-tPPtqB^_viimZ}XXS z)u~fer|O(K=hUN%2Ry#3(;N;d`J_o#N{k)7xLknDzml}7CSAn&r(7zQI^b`v)J-}I zai@SWg=yt&-UHJ_R7$=x&8WoEGVq&irO!?)M~v}uzEHCHB;QF2`DT5sPq`H|-=9u0 z=}f*QDNm#`A8E~*X{P7Q^b2_Mt#=YpX;qH-PUa(d%vWyZE4T6`-zzP`lJ8{u*f#zi zw%Ye_S~+5jm-A&&)%qqbpJcw5tb8w}l@lx_-%0Y4?_|Ew2Ln?WuDjZ7U)|LeB46^| z&FZw|JDKk~yvEX^;UiVU4L%3`X%|cqSAor({8_F$bjin`c0oUGdQo`yy7eR zT`{Ep+*$nxiMD5f5aN!wW~?A7+5e=MP2l^6;0+%Bh~SVqh@N6=Zy~^XM&f-fehPl& z`0**h?{fUEVFb?@{BFkYcleFN?@IjmT!&v$#ySc}+dq8~z0d*`;@uy=VfYo}SBYOA z{LaSDiyzx_6MjSSyBa?}qw&iZAxUB*dRXD>@lMJ+L2e6v4&Ed18-<_Gg7MWEKNo&C z;MWzui}7PW^uzDBK1trQU;kf^{3{6O0(OA~Ps)ZJt-CF9KEmW`Py8;m!P_I8hhIDV zEU}j^LYNQbybFH48L^%L$pGHz_+5tIVEl6NE5dIee#xg70%ca@k|YrCtMI!5zYh3O z-uMhMUs5UF!|^M?&r%E0jRUv=b3b&E!)5ym!C&Yu75 zZ+C4{owWtI4|m(N?yu#4IQpmg)ng}Tm3*gl`=*Eg*SZ(E%;#)$OtM}=*k(RysL&2) zd->d(g8!@u7P4l?PgeSGq}$;o$j|3q{Os^aR%i81sdu`-mZbkk!N1cgXM75NjfKzR z@~p7^wHOh5y=#ex=X?C@@N+GAX-azsTkt3Fw&Qkfo>EaZ6F0tr& zHwAyW#Yg%N_Htga%DFHFKGA|}De!wN_{@}gsjvB*lLFswf~8R@@M@=-z;S7(r`E!M zI0c^6e_y1Oa~0_0GZ{a7IZ1vcQt2juyNm z1^%W5&rg9@S%#!t3Or!dJ3OV{gaz-BLTAt_|D%+0p0(hcQs6PGoKOlpX*d3r0-tJ? zb4LpN2dkWd6nfZSd=B7e?`PUSKC|$%!;^aTnv`;eT5?;H0?!wvn0DM=&N54`zD=Ps zDWCC_dS_VW_esHL|MD4=0#BC1ezn(ozlHw*^4Q_ei&Ef^q|l#~&lgk5`6J?d{)(Ty zoSjzrCsW|pTk5X3@%?-@)&%Rfx znpfq&Tbet2&a|0d!|hZOl4)Wf*=xb zKQW0|?VmntZk05nr79H1I{cI8RMhr*4uAYU?sh(o;YI;@G>=qINv!>6w zr)rKMq}o3-FdZrA7_#@SX*2IYY#!(du<@cbE%e=9g(gY2Pn$V~e4H|C#$-e%`~6jO z=Zb30+R?CC?0U+RC0qir+Dy2++7hUV6VX+3szHnB?76LigN9OY&~4M^fN3Lq-r*G! z2lXG^5*pOMh(et9i+{fc`z2N?Bpv1O_rLx3zs-XIipPO^vhe1Q&-v4)VXBcXy?}8_ zSg`9fOpDT_R}km35Awo?YB1^R34k@uX(q-BfcYn>7YOJ4Gx;R-0^ywVCZD7}B0TAf ziL}{fz3mV&DK~Ru+Ta$6A|cBLw@i_M=h)zuiWl%a8=Q3~pWZgOrTRtEKpUJiC7)s& zJgI}3R&Il%Lt7rj2IpKo`HZ%~J0^j6kF&v(b3!IhvcWk|Pd-y^@T4!mwAnUzlJ|tq zv%!--1>rR|xZVCNvBA$LqV?3;;GL5|yjR%Z**5q}8~g$re3cE(`FHYJZG&@eo_yBY z;1?!=c-PtBux>5S78^V{mtx{}8@yW!wj}Mc!8y-QKKpENu74yS-3ITT1mb zPuSp`>$g0=ZHrocLkC%Mr z+28|{K)h>g@Io7Wi48u;2CucjlXFleudu;~*zi}{;KH0(X{&7TD{T0yZSddO;A?Gg zt^+2YIvbpG_T;n01|OOP;=SDl=bB>j*=2*5CV_bGv%!<=Tujz&@Z`EC;YV%os|c{3 z6E=8x63F+QR{3|?;F&h~a2q_!2CuNeb8K+84W4I%du;IDHu%*x_&^(cgbiM7gDW<8 zxee~M!4(^PqzyjW2IqQf@)>7?`;tJsC)wbYHuzK<{2Cj4whf+~Loj)s4L;h2Ut@!F z&XRnT(BVvdJS?WZo_`Kv{Xz+C%4}>d>Uv{Oskv7-{FS?xBgFVrW;6CRQ zb`kHuI8C@wC*o<0r!&4<#7~YzoF>~?DdOKTjyffyR>Z$zoF>|+5%K+u(=;2iMf?-S zX_AdeBEExhnqp(Lh;L(@E{#zx;th<`BpU-od_Chd#YUcpzsxvIu#qL=FEUQkYe*vg zEaNn}#?dnX^m?3enp$I@h(E?SO{}q9#2;durq!qu@dp{FNi|lB_EU-^n;lr%@x~w=+(YY0MV!TNtOQG$x7o^^DU*8ly#gB;z!VM!AR&XPhR{7%1XH z8K)^U@lyJ`q2Uahft?yNGvSoF>eu z6Y(_0X}XNnB7SlV;xt*tN)i8#@m`GAiuhNI(?l6HBEFw-nkHkmh=0O3O_DK5#CI@G zQ)G-5@okLL1R3Qb-oQ9bk1D^F-{X=)QR|mjMH=&t3~`i#%VH)l_EZeaheLFR>bdQoF>Ak z5%Jp@r)e-|i})>!(y;3gem!TuSudStyRW#?i(LE(4QWr>T-Y!&Z zt^KJf`+Nch%UDG{7|2TGBTrqXqB_T-(&in=>_b4&vXsb<;1^BK*MRHT+E`uPU+x|T zNz523`{y+%fdyQ!mLS&EF;5nrF94%1iVpE<9H!I zXyemDU)=f7ZBz!5)F{eR;?DnU1(ZuSD2onnC(-Jd{DJbC?TQ-6@2x~LmNU!xzvY!9 z#g|{~Q{DOHK7dwz&C`*3_oKv*2E5@VO!DF>ae*;Wc z7HuMp;~T4MU1M%g)KegOm&lzY8YH$5J+4Q&WTzJm+L)n2NLtDMZA2es6TPXr% z&)(8ANqsBT_I6|y*6BZ!eszy%YGJc}1`>^|cOa|PoWnm6QZyEj7>%ZWihxC%*qrgM z35{%>{yMU0#rh;aoC0-^qBg|ZgZ}Y_b;i#y5pDPj{4>ZBqeFmRspU)EuOCFIk-B+V znma$ImxP9tNi~ubXpfqRG9Ci6SI-hi_a-#wA3zSI_H#n-!=Ouil$7rq6fL&~Qm;gI z2RcK(6m6Kk1Q?1oJ`=FuH(-ig-iWWH;E!vA4+-qaA&2L;@w0c&|66`OO5xJVc8vQC z{Oku#2xfv0;AejdqgM83WVQI&?S$ZG1Q3&-eE`spgH3`ZddD9H!&=7UZ;;=d{Qukb zK11o#%J$#%8`@h&72DEc{YoLNWq(IjtG#{E9?0)bHt|5<{8lIF|LeOTsw$0U1nvL_fG448PuhKW3lp`hkh2euaFO z^=1PwERLc?Ma?Y~QRh$$OL@)t;T?f|C0gN-yVp>pYEBN2*JLTOdl&U+ct`MSN` zJ&=2XFG%<*l%qQLAf`G$C2WNf?VPTZ>B^m zZ$-U)3U-ZGohz9yI@|$U@dAR4<0006Mc~7STvFUQ$U|Q4O|^*<@+AQ1@|A2T zEYoIv2zaXacR`ndL~lCOl6M&L-Q7X`(5HT>FaN%|*{jXZ&r#G*6!mL88x8V0CNTbu zqD{yzSI`)RO&g6CjWhlYd?7!sn_M?~)ibWKt}$Nq`>_z0ouZc_JLJdETe4Xg9C`6xAh}}m{|vI(U!$TKmkRZsIM0&LBYEDEBl66=gMH61UL+UXgf_VC?uqLlMNB}94--!lN^ zNG#`TdIz9Ie-=HA3igoWimH#l)iuF&tLrw`#KyuSiLZbW8zDGYctn34I*KYD{s;Sy zorj(a9i9q@Cjp12Jbaw8kO$-U1^pj&KIOufpF^{n#qKF*x*|tbp*JW1au4u}*6g39&vwZ50&0`>Pkvb41NB#)9YZYw<>>SAW8Zq*p48G$# zDk2(YWC7KBH5%XvH_MS3!qko701V`pUmNXvsZaezA0Zl>T0^i1#D`9#$&sNVSLb|Y zQkda_U(Fzg&mm%He*Qoya4~ytp#Ju^WVFZ*o2FtQ+Jt0OwDeLXI@+N>j>Z{>p`Y1r1C_He-sSLHf(fGH-JxQc5O};}s|L885q8Oj%ybaP^2}kF`wH(E< zaI*_Txd}tL{@C+!CTTi?^2yR_<}74 z@_PdLCn9Uk^@zCSHQyKR@T&XPt-OLx&o@m{nZQ+@Pas*pP595wM_5F3Hi{^ESQPOm z6wxHX{C9eZNt&~Y;5FG#;T77Nrj#6&-S02S7Ww?yQvro_b9@KKWeCDQzOVSVDm~tZ zdMiUzQ9JeLs{nq=PNm?OQu47PUz6QcBxRp(zB2fNW;I7lV~jnceyD$TM0Cs7*Y=c* zQy4R~8!=EMk*e2=H0KVak$7ViI^LfC4APBb$Yi(wg>|9kG+41?0q1zk*wD5sYpxmq z$6c$)9FKV8#tc-Td(g|!dxoN=3kST#zYKlj5VhK%M>%#wUrBsfZQ4`1GM4}GL(>1qf&ZbO$L{iv%~G_W3sglYOxAAqVOb?}S=7c`|y7O*RT zg*zg3UfKNt-6ER#OgcYsCQSE;WhUM=>En3#!7_)LU`6m&EqmYfJz>DUC_EC`@xb|s zt6Vfhq0O1@l3qvX_YZLX5 zqRhfNOODpBKJ1bt9=|E(>rh-+RUfOpMC5vblNfD91716gH)-xasVAf^#k>t zzyu6oMIDk)4U|bARBuc)HG^!u6pLd|2*^j{w7z^Vd60#-Yq}I0H0O8|&bRCDmdWveSZjN8l zi@*fhRoSzPW~ULIZTk1rJ0Fa_K|Q7qLWz;x@D&4n;Hzg~O@;Hzaj`5EqCa;7^TsjSUoKGAUq-r2{CUCtg;fPTZxG^ zqM}-Tm|4@qEj2x8)kKap)>`rbffXJT*6_bV%Ruia=$Or<;2h&!P>g!uNbC+&mfV#W zgyI?IQxECQ;0ZeLfU9PK)W@g!v%Fg0{J?#*_(NE21dCf4`GI!YsQk#*;JA1NPv=qX zWG2;4Z+6Ct>*@Y~$pP{+f)FbuT9K*Vm4^&ShYhO`GN7mx7){P;BiU&ca0+v8Lol(3 zowCfpD18e0*W>U;gO1~2DQ|d%R4#{SiQxhi7>#Rjdex`~V13=aeyMOP^^v+=QAg%r zmegBWbaLEWKOpr%G_ z!XrNaad>%|iH@Po7+sB7?vjIn0(VItOu)3cCw%I6aIp1@bsfd}EO za-<0F(jIb{Cl^cm%VF-pl=hXwlkoPb2NLbA`9h-uvr>6YgZ#SLr!Qo{*9d-DbFyDx zf6d80fzN7AmIZdzoa`&`1Mk+H>>t=#bFw_J$*bl?l1?5HeRMvMyGX&zikkUYYz}5Lc{)2>p(bjs z9QQEzqQNaS!=ykjy4LcVbhyf0kT0zaUqBDaIxiA3qJ+Q99l3j(*5_6l^fFcL8cnL8g+HUWRsPmQPOTAG!X-X9oK zS{fK#dQGC^8KzMb8{Ot3nf+cr6Hj7`i0u(}p@tc||o z!m*;>y3eOpK|`PNsWXoH)F6%NYB0>D9@mG0A8JFiJRLIzpMSryf;0C}-Nj01-%+Jt zlP@|wU-pI$BHK6m#a}izV+Pu{W?u7vK)WVs0G%OE_;{1lpT2ohxkC!HqxKjOxLS!W zAB}cl1;8}G-yJmd^So>=G8GAhJFJDjayUxMpx{BIR;5$BgGMcQVyo~k5HHY`(227G zL-4mla23@->~>5Q*QKKcr!mJ}jv6xt1eYSk8T)X#m6AB0<6B_2z<@1B$dkeyiKRlm zTTK?G=Qd*&I^4TvVJ3X@pMwv$Agb*p*mhWF_Ch9FqWICBSS!$#bZD+&6?ykeQ?&ab zgkPb-`f*}7?#gk2o$aA(Cvd`r*?VCft$GekR~}@xcVjKfgzp4}MGq9kz-O+=X_AJT zZe~SJLM=S5Ujg27J~#)YCsv#GF6|4!Z&i47Gnf^YXy&dw7DONSxj)WTPxao zHC*fHoep=&4{~%r3RnD_ktKsv!P%)xWSL4f$5ryRytJMOTDp5^UQp*^0!q`zqJv?n zcGV_sLV1ta%X`c$uca(YVY94-_gdu~u9@eU89apjiCMvYHS^N@1wTQ_87%n}x)mjF za|wkM_hfM<*2=+F{`oK&?(M?_XCOFP3|XxKBDx84=6&fQ-61cllh@QGHlbIp4alN5 zT__H{BPIT+747!04@NplzFlxY@z)D-wT!x&;%fsvT+!iaT=Zjabgm246KSKOr759? z93TXb6xOvN&zJzYF#SW*>SNRAyb7!a2HMf^jK8(ft>q2}z!TXmM+So@<}^T9>xV|t zbtyZ56YS7va9uth4m%UC$YFC7wHOxqJ&{(Csh_hSx}qYF=3JOuMg3S9@n1K(u$>35 z>M4n)C%T#RxtFA&iZiI9u&!np3|So&pBoz90~PPX+_$r<=0ra^>_ERGG+ho4K?vq= z8_D8|<}ha*!Mk5G+aO`0qaWXg@up?}9dH&!w8U}{{wI+~L7q;3L{MJrM_FQGmi-Eo zw4&(*uW>$yS7;k1X74I$(LfN5)tM#EM~LHhPQ?pj-LVBL1wMp-+(FmA2UM1`7ctbg z6g9gKLj{f8#3}g%^RrG}35dG7g5E9yt5c@=`pLyS+vLS>Ko-2~d)?oI2Vtjq*ZGI` z>sK|kU$uAboXIn)`c0iO$ETj>Q%7P|WO!C}e0a`+JalOTvukCq{0^^BV^?@hs{zsH zvJ3n==#08^*-6g=DlZ;_I?&7rv9+>4h^oKRZ~Pp{>Q_p7b^ws3G;~2H;zPh3z`luD z*EnkhcJ_6A#hn|=P1i}xU%x{)6{1YpU5`%b4vZzv$;9(JhvEe)(w!F~VC$;$n5<@} z^Hs2oqE_&h*;USOP&A}MH(wv~Ws2=uZppQC&!EOrsNPJmfwQp= z^DAuO+(kZ$C6W41t-YO%x|uY(CFyx2ft|4{!T4LiORRgN!)Pxx=Pi(4%yLd)D9M=Y z6xPMwUW)nFD;T=4661|K_kw_y`8eyB*KAu)wWL47=`0FD{fRZ^c(ta&m=wcySc%}Io&-Y0BjH?|I z+&s*xP-h^gy0)p^1P);6ge4>33&zus8vM$u4awIRu~=14sGNbv@}3afm_RFN>reVS z$u(mx6)8}K-O){`V!>)P_)=i1TkF>j08iw|!cjhd@FfhX<}xvXPRQ856_e-298byN zKwr)CQb|QtFu}Q)wqP}!e7zJsPs5``t9HS|Pp)BaZ6pBGW*a~&>JCT=1gN7Hz8R{M@>S#NBFYHN~?icr-Wf4|AE9Et3q3tW_ zSpFIOQq*(gHIBk&IJw=SJjX$)B;XDQu4TdUnzYiq;J4~W1@9?XT#8=jP#0op{6=uw zdq*pbXX9^q8|Cs?M*p}$4&mDjIPiKW6@)=f0+ZofFz+xgTO=z!q8`4uktddRa620sBH&|9n8H|1w>_$L)}`?2mz^sGb!V`3p<2 zzq>;n`=-2f9U6w+kXMly_k4hel;|Ate1PTk%{iLq%@WTCa+sU{uH&ApjNm~pwi!@J z9mGeUy&J3Ck!F|LwD29clPj^b!0iilY;B@bD_>6sR=Z2)W(AKZ+Spo?vvqpaCxWdX zYn>9qK$SLj1#B`JCzuk=fU3U%3y$TPq(@P+v>Q6d%f%vvIyy`3^g8kwH^ByL&dz9R zq)uM?Ck*qrXS=|Ud$x$TmV0T5Fi<@`;VSuxW ziJtUdeQE+0&F}C z@od4u*Y=X^JWww`l8g2mPeU)34hZBxL`{Dv&?y`F6m5%SYT!h8T$&&!B9KESEw!n#q2}yo+-%v9s*F( zj<|H$gv&6Qc5VP5V33 zv|RlWa%g4u0A$QX4~hj|Giel(5*mxGH<7LfQkx}vF97o5v*`7iZCJG{*#?duw4pm+ z=8}CkfxKCCk+U5lO%fY$x)@viki1MevYzrAies`-b_e@y>7}MW`3X=gfAS*)<;8In z(v+5m+#Ai@O*zKzAy1?=+obh*=CN-tJSlSWV^xdR(?k^geIIdE=Ul!_T4xL7`%PNM zBSKm==T^}grxyUnHQMxnnU&nn^P<}@{=A_Dm>!3RAqEHIQWnO^!7yh}QP{uGILJUA z+nfnVTBTMcwJ?8H3o%FN|EbPH!f6!DKY*ZM{tg7%Fux9fR_5QuG9qX0NjoUGxW0=KM=xP5_(9)A^K zOG^HQpuBhu2!z9oq`xq}rqecJXk{T0bH2$Ky=XQ2UIc}+eA4uiZ$^BH^9dsOodLXr zmwW>PHZR%7WHq~tuM{u2KqNUYF<7L#)|X01$1Z5MUHbaZKo*vS#li=+I$C{4aelymLbwQH z%)+vfJ@GG_e<%FWU!m`NGzIkifLAMhdl74;Z}Kof-wuK4e2XuC?wicehQ6-9iN06O z!Xn82o9LS&YAvf`buImOEn=>`!Yit`tE}V`v2~~&L(|74EY6p zt@~S84K&Z!fWMij2giEUe}lKfoX3$(4%a}Gu&04A=6JjDitT_MhE(iP{0&0JyVWD4 zX1_(0ct$<&%~d&7$3mMYJ2VJtqWwNK`#uDMoqvVpwdz-H^$`3QbJq(p(IO7UA}mbS zMu(8Cx1j>HXcDWzGCYNC87>Tfuz3J7=mjL#)3r`_q9r%rct!YqPy_Y)80zNC3u^$6 zASf^13b?rj@J}XbWm5@W<9r4$u?Fy-nEZ=;e&=0)VxWr2|L+jCjn#5QF;)xtvW-eS4I)QNb)qfqkp`LPFKSv7W-Z!mZq}$FZ$1^?!D9NTCys!1YMFwIyi}la^UY zw;-uXoHhAI-?yCv{NgZFK=U>PEZO$kD@*(EA0_CX|lq!L;Cy8=* z3(DVGP=*5q^ELbVpkgsG#omFul=p)0fCx5Da^TmV?cuuleE=d-0Z;lwDYh(NY!JFq z4lhCo+m2i;k=DY0lS<-pq+Ariy%#@{+)Lc~neHVW^P$}{=|6h8qKV@;UI*4yaa7E! z4dBLA;@#$EEJ>2j>%ai4`ESO_1@3!twT;!Y9C=O0d{5-Kyj0BNwA{@=$6O_m)jCi4 zK2XXcxig2;QD5r~?+B-P4_s(B7|;{@dJvZP6z%L}9-qVTlwc9tm)|?Mi6=UGV-Po> zQl3T0;aLpqpbpXv*iIx4NptZ$Q%|&+$5hZ!7Yc&eTV^N88{dcfU01(9vwg#&lf1S_ z4j)Ew3kNJZS$ZX7+(TG&vJBzC{fkasDKNyTHk{_#VouQCfK3H@528OV(62-|_?fHz zaCeKwWex83`x6zenxA@*3Fvl7Ed0okAjXB^7nT^T6y&ipO_mBGjT_O&t{*>etNZJ} z>Rwofc?{0B@YD_3j5fK?rpG)7cFo)9tP)S=f()1H$&BS8gZ>qyUeV6?sd;X7 zc9uG|vs;~qeT>mq1%i=I?p*x0>)v9!q1AtAyZ&Mx*-#gJ5c?KmT~UKu^zjhm*vi2b zh&dD8ntRM!I=jxF1G*lzWPzC4<^Zg^A1 zumRYa>h7>;DBK~a!0v}h!&FpZQfEsUJr~qngA`ZI!e%Mpt5m<|%-)MhHRkVEH73+}QKPYb@3QGq(rlAvh~A2Y+!x2L6r-RO4^3x;Ahd-rm4C{GCC2AGijgc>x7~ zeIkA(LasnD{@y6!{Sg`-=#9U(i}=L|O%3Fr{`*Ay9Bkg*>_}u=`a;A!;oWjLfNv^K z$0lJEtOKVo@qd?_rSD(`o+ZlR=U^8_so^IWsyR82<;meFVy9!vHEg@G2d#V;!MzX@ zG;Qp%XvPKF*iC)LE-UeDl6~LN?A1}Hi>?)n&=xFHq8)Mg<<=#bsdJ|?+PP6ZnrL6E zXt$hDRIKH3J&%@Gy%39znb=&4#4)3_K;J9!o_Py0bZau?rewF(lX1BxRKSZbvg?G z5B%&%23U<%_D6d|dCTEfFj_HsKka6X-gitDTpGnf|5XFz@Y&}wJ@;)mUxi!Oo5x7u zKkA`#I7-WWCj0X6SMY>JRAVkjIwwc8&opzT_S@mmr%WA&qQD%2A}moqOLC_xPKJHJ6CEg=03?4gn0MrTxH9dQ;1xglUrpUs1D@IjjN zS2ux{1rR7@Ma}$l8pTh3#8M-^^KsSO_v3)d=w1j0{0 zp|_J|m}y~t`xhJk6Y_8hYEiMBzsp+DIxR@KOq?sW(OT-UMoY0?^il=M#9_5dhiu zR_$lN+}P|Cph4jDB+%##jf&lu`(RgR1p@e66_|;?V**q0Hz@4&|B?O2i4l4L%j$U2 zdn%}~?7!HiBWw&{r&Ck|4i`cuLeBmeS~#4y38Udt_*^u4MiJT!Dbr8I@Q!;#Irx$R z!Bt3x4j;Qp(L8Gv?XgJ*pkQIJ;TP42V?bk9=$n~Kt6b%UIBUTbYk4FX{?kev6I3*H zHgn*^7}--_S#riJUyTF4k$KPr`i6~Smn-rts;Dga@$Ng7(1Nu$1^jRiYOoJ69`Cij zX#Qr_nK&2oAMOs}BpuFIow_MdT8V>KIEnp@?m_*&lB09>nU&)3=GXdUQFahphryMx zIUq|pnoK_X8h{R zMo7I9KkEjJbu3GJkdCG8EBNA8Sv;cwJ84K2RV2wvFNevqPX;3w0?t ztYbtbQSKzlwj@d)Hbbkd;qo0f<-Cekx_K%F0xVB2rvpqJ`zobb%wfz4kfLVnG={)W z#ZcV>uWVrmXj=AF5Asz^x9m-<^TD{jb}{7wI4C(eIWE?pW};TKf{Cj0FMOd*;al}KZCK=xbY(s8oApI_>7^f&nB1{&A9*~z zyP{QKGB`N4j-sIP6ZRL^5ks6_4}Ol?KRHiS8`uzQG%HkrkoYIpby;|Vv1d@^P>{Et zCT`;?;x+3Iblf^~B?2~e&-yp9D1q`vB7=#Sf#C?ekKY6@C;b)mt4&D1T-2XiaZ$3k z6-WZw%RpoIps8Kn5Di)l%+o2(l^p2{nKE_hG87?nsX-2?dy}*GRp^NSZuWj6-1S1cU2ChJAmNkoE%i_GzF&Q|-dPrZ{10VmHUlQ@;=`-wDXrC9>;_cXl zU|i~Vhu>cvFVE-);eU;V>KX{t@QsVMU<=PPnA;&ZSfpQ%(vSy2s;D`7{_DV%Q6lbX zSSwN>nGLZ^%^`AWj4fVJLzSRtXqRc{pfn!93WiV`Pz~>E9w>}g)41KY0^1PvMtk_W z7;+OI5OXV+_)5_>OA;$smnVpmTk${OP_d)~4f8XXa2#68K$0oL2WUkap-E1s%tqwM z6&N%eK{%A?$muB!#V|FVha}O~8yiltdYeUlk=;q1{ESEmu82KscEWWKcVXQJ^VpmA znu1$g$vm=$(!x&SFBimIb!(gIEHAfMT1D4 zwqR4qf@N~}T>2A!t}>0qDpR)x8iUBOpGXy4A1tM`sP<@QxItpIO3^z1n+AX@Rz@X; z-RabcT%;BRU@CR4=uhbR3t)$C5nQ%);T;erbYW0ScI+%rtzTzC<;d^Ral$r<0NlA) zF;t@dEu>GJ#rcJ^zaRSU7ta1W1g1LsYY9ws_Wwp;sdI{ViW znCk2gB{0?5??qs$v!6v^s2&JMI+E9xOI@~>m*c8A)hBqi z3&-B8)8cn*MG7A*CRxVApl(80-F-51;82cAFO`LV;?o2U*DFS<8GYPp zuf8b7tu~C(GUVa-$OY$Ia2rNl@XunY#J^3;J{t&7HE%*7t=(ogpKA8^7a|^a546hf zh$F5Y2O5Vkf={O`Jp^wst?bawmX!^m=e2BqYk|oFm+8){0c^s7KGq&D&qAl5S5S|6 z;7`r&&tb7hRMK`SBRJ8lW zp9c)<_dC^27n`jbBwFRg>L0Z4AR|ju*mjvD*x#&hQnJGT1jnHwS)n-}W`%=Thp}CZ z_>>iu$irxySw`<<8Ph}=PqGXMqA3u8H(l%35@Jqin@;=Gk0>U8hnPSLrbF>U3UXW9 zQ@8^dza|AZyju_XeDMv4tt z*9N+7_$tj64K}+~BZ!MeP82l3d=~3EJWGlez;0E)M$0(6LSECkH@7FSVf2>zZb6f> z0+^D%5tw4q0PA7Qg(^OsvO4y^ul(#izoGJxto(C(<;S7pe=#ush9>@UV7?94p93>p zj7JR2i}6{X__)O3JP5%Yi3Vc`VV|>sLufylYy1i2pSJG)XcDXoj?xn(Y1rgio z@`9fU{fOdYgO;Pf*qg0uCt@kP4}p7$Nd{X>fftCXPxZsBm)8mK?4#L(q(C%+MG){E`_8%He0tkXH_`Fheus@KQ50uew$aW3I$e5y&xtT+ahgd|f3+-lLnKl^t)oEWeV>5`7eCf^xbxAxS9N70a~_j`P9KN0$MP0 z|H53;xhoSrPLVhMj8EKR#ZQVE#3`hmjzXJFL!+?!~O9(}s>X z#Tw;YrdOF2a!y3yrZ<>} z%1+1bqKn4?CA_(y9Cv8uQSa&SFIfn7NmwGwMWBEM)qr?$F5c4YypKYnGOdLjdy&dcdmw>`dQZp%)?r1gk z3OfB2Nyao$Q;NG9A+mY9OC0OmVk<%2JW?withaj(-5fg6E-((h_h4__!z!^UP}k0j zV|A$TYO}(?0H501r}q0DqO6k*G){j;9(B5i70(4jVyjJFJoXO?X1{d66K}<~o4^GC zo=)+ZgXfzabuWB8(Wx(@#M3c9cPi;7n!S!ry$3~EoqBT;ccH*->u(3Ugq)WVA>{1F zmmqU25V2~|FVHdMT!^vbF#ZE;9GJ4qgDXB8mp(KH4!NQuHe$75Z|RVGupnC3oWHs5 zeO@ma$^bqn2|2$fGff9PWcuIR<;Wc{t-`J1eK!xs^TQ^oVQ z@TuhR??eE{pWHlP!v8rfbP7&Yo(RD2?jiy%E4{sl!Kso&0Dkw6pe1z5+J6cgA_k{w z9|EqLW;os-BGl&S({Xq#;a9OpbK1ULE}%~dsBOPoK$ie&-!I44T`l|NEq+R{P-q%Y zbV`Q9_+dA7?gyg3%}JIUWrUoMr=!ON2X+FZ&E~p!hoc;M7v#c!3H&R$vu<7P_>6s_ z4P*ss?Tc)J&ig5Fwna7ptR~R5$R>c-5olXv6TngeZHsIIco~7VMK%FEk3c#e);Jfy zpJAEpi);d@6KGpx6TqDW+7{UakRSKi7uf{x1p-@k)O{*}VsdOOLy9$j?T#QmNsMrZ zO-SBc5fJ`7ci<>{;fW#u!Mjleyp}vEA_jN{dkDpvO41kVkwL>Z+Q6y^H|a^n0JiXQ<+DX<`>M{N?_sU0W6+zAd>VtNzo%uyp85*|y($+}9d6lcep^>I%_v-)vs?Pgpy z^gHb245h2ztnb6l0EQ8kloq7%py)naw~37y?BMad?|ILla7;9DZ|%jn$ZW5&qA4RM zd14mdNN~4JYw!_Ynk(Rs2hS0TxGS&jvW;{M3O_-eMArkI)TYm?l<(ZE5qp zQ}TW_xB3=OgX7~YUWUi}X{`Iz-gc{-gMOUA`|`{sIEX(G)Bg_<;ze&A#dVCmzogZJ zK`d(mT!69x5~q#*%?)k+KU%-Hv3-BB=9_|d#CDo2UpKGzr&o1|}j z(wu=gMcRDcs2g|a6=&g$-55mFCVc*Y&k^-!{z^QYeqOSh6|4ZbDWf;?KY{BT#Ee)! z2bpkdnS$>#G6Pi7vHEFxAB>EUxauz0AB|1&d69{L)TAtWRKv zuVnMwvuf@;(*d_)4eb!vC8iaLw?qL=Tp7Xl9-xA^z~GXOW_=@ChLh=D72hGq;cg(S z=43B9{3+Un>#87Cfnm5PUk-1C%jg5;=J^y{cu+bN-(zF(uCvkyC+=gro~FCSZL;}) zgXY3o#1a&t3`5%89q|DRzrSx^+CJdK3F`!|0Qtnc6&iPg%|-HXCLckv!OM%|?t&)W zL&p%E!jAwh6hz{KD9AZ3ZQ_S9T+_f^R{SXW6sbt`7d?R#p88d{$ZJM9N;}~CNgp~T zc%bH|4mj++HTa2J#oA&czUV$kj|krfuR)*iYn8-B*7>5+o)Ab}bF<_u^I`$ix(z*i zS?Pq}7d7`eIxsDW`=%Pw(EW*nwWS>bxNx|^ffxw+w&^UG=+b=LIHrIQt?1{UAy-=2 z*La1RFlhNPm{VVz4%z7RIn!{TCtqT1UG4NP!&u_veVWnESxWuqPQ?M8aEYSci8U#T z8yt3*m?+>a7XI-TSKqK+oIc$vM=pWhRn&gJ|LzjWpl&biAV=JI^L&;u3IWJdXP$)3 zBVzL71UXWR(tWtF$ea`g;mTtX9lNtwmk4&^q9$%~3(Ngh>RHGsQ`E zpTccbI+V0=1k(nKk@)a`Rcr9cgwASZR4XIp?3NVX)E4+QS^2rGm7m36+nQUpiRYV@ zn{FfJH?B`(^)peu=whrJvzuon<*|KW3S3p|KEWk&_!PWEAa>5@h~+U*T#bkMVe-Pk z;6+?Oz>1i><^pU+bU|t|DWLN|$GC$3IYyz?hi$@ZoZ&6v;>eRJXxTsMppJD*Zg)nkcsaNb^=tdYZ80pi_|_|_j^ zpdHc={Ds;!xEJ;EgZK|bR1Tko&i1K4;4lFS_*&m!fv18VTuqHDCXWOU;B&amsEOaZ zMZQI`Jkuj=%|N{p?9=Yb#|Q6`O;$?FC6VH;dUIOddW8he$zqV%?v#)tTLDOXs_rQ` zV+25rdFRb-7$JJ>2}r_&m{Fqvv0{@seV(FMzZJ>W`QJkrjU}}2YQIOm#t0vRbpYJs z0fOmpT#6WlEs6{;scT6LLlv6MYC^zCQTe+7ePSD^I|t*kFhBj)bX)j6OfZ-e;~9 zjXnVrm;Aogy1y6y4UBe0;a1`4h;1qT*bAssXo0}l&;eik*xYPh@jDE$53Shx(TB0y zeGdNjD08=aA(&Ckr{zAP8w!uBr}PiecX|(0tNZw8#BzFlYJ9v=$xgN7xBcD>AIfRY z0+V$S9p+cd9l+RbdFgt@d|EE~%0nLF!Xwwl-C#*2F8tR9uEQ9E2>-~1oIlsek2Un( zj&C3F^{Xqi14~`?I7M2Q=_>g+xYO%zz@m8u6g}=o9gOw#f=!|{;SKum{~?I)ti0;) zD%FXZ`tDU$zcd8ed9@K(Bg?|a6My-U<6*13G|MDw0po>7aCpe1Del>X5hNvWZwQ2Q;t0-W$(oWCfb@=kLv7!Rfu`{L+j?zM*aQY!VGP zj#0Ce^k9>CC(?0?svK^I&b?Nfa%HAB1fwd4Ul8h{(>KR1k=C={H?py@kH8H5B5>HN zb+$Gos#kQt8 zqBp$6 z#og*h61k&FCX`75v1k9>qCI#WkwDv+C zlAEMUlD$9)Fc}rO3F?P};T|>vbnO+&s8caA+t~IA*oMylv-C;JSa#8cNH+T~_9z!2 zd%X<+#USz%l*%a0eI*2v|6^6)Ie5e%M*kMGlDdt>*x}J9h%#{5Qm7GMu{5u!Z$P&uaarFZnGzKGuU|;+v2QNIm`|4A9#LyQ5C4FeQqEsk|OF z!0~ZR`vio4Kuv^F;@1VqvRznV11{^mv8fG zWA?D`Eci5FF;bEoKg6&ROIv4JqO7}*$~^P&EreP@8XmJKlOr@Nu$-U85C&QOF$vymHI`fViV zL8Px=oq%Dz2;1kTVeR#2n9VGt!dJs-&?^wN{@bLDN2q0;NTRQtYfET{PSy`UVkTtR z50W*2+E5mqJXBf`JkbPpkXg+YoS40H;$F^ZuxAoQ3e^*uSY=` z<&Qv$#3+AFw97dcaj$=SjGoD9xOUr52*DS#MsrGuJV&S`0`ucewM{Kgqfhmd>-o9C z6eRG8J8x?Vjk7|cTZ}nCuCB#`{t!VFsB3c7oSCmix`8_R4`F21USk+HNX~u+63_$M z+|2qrWOd=xuNuPFHtlvZ)2Ue|q5hN|{d>^ec$$6_Kw7De| zYYDBhLS{YhLAN8+gpGx%J0ah#JaTG+3u_LWLSQ_|mP=^)FRo$Ka&H9^j9~af44z8$ zU?RhsJ&eVgO#i@ltuwlZg9mwptl)Dj+NjYt*+}(0IlLQ$`_$*QAdbzw?Rc>zU|j|Z zChH>aVRIAzC(;(MrIPNB7oP)q{kV5AS_|yNIhDBdIZvbvK#HdXt~oE2T+UP+DrU*p zht1dbs$!0{J+y)S9&};7tE0Ru(ui~ugcD4SH5(Ym&FTDT`+U?aHWf-5a7DS9B1ask z1-!fyTOZhl!xut=XgOR7IF9f#rVoAys-sjOE^u5cN4la$bW9rhTXc*Z-iE8BY@H)V z)&YR8vf>dEJR91=)*bLMuruq{Hi&M+y`9ExAjQfdIM8Z`mRh2N!5Eo=N-I?yl*bK> zxzoP_2g#kjfbvv{8d-siIACx3doA&#KJFDM(k7)DMS^ z9BzEQpN2r%MEpsgXigk37syC#6+&8izZ@Bl>b(4q&~T9lfF8I*n;oSKg2#AQOTnSg z*J=7DICyTY%$30C#tk0$Bx~uts0BSR2q0elVjjVU+v6!YEr%zF#KHXkkfwoCa0&J? zya27m^|n{Rp2VF?Ab+hY=2@75xN~+J*iyhS`~DK0EPM`e<;)=fu}Ap{fcP*%6hI@c z;Xfxr?fT_N=0a_Z|Hqo%jU|-ydk)ACY%~5LvX*r@B$knn>t`^x#sCQa5pd&0{HfK7 zE=7A_9WOHQYPlRR8!>tD?;)*l5VMGZt0A_dF^VJiTlhI~=RW~#ZOp$>aNPMcU~r{O zJ#N$kCb}H+Q^=8!Z5V~{H;{3vRgp#kdlI7JQ}-zaM|lqt{9t_fphR8C8|{@SIIn>7 zl#quZA%%7LmIOP*nC6$z2Q7vH5DtkrNKjLD6&f$$1U~A~isoXFi@uB;f1s=JIB7Cn zpgeTbjYyQ2MgZi^*y)|luoE=wK|@uXh3kGHXls9L8y_+xNigB`J6ZL9~Et={gO|4Ri*)rl?MY~#q^O@{qv;U>d9fTZF7D?}q(MWW$H zQkt92j8quiQ7k!lUqrOvAAtM(I#@k2nlS*yJ`2FzU4==qR~1p&qjW{0|8IQGtueiyMSYm-R&i z#i3CBCn7rfbp^z1a;BiX?7{<9A8#=YWcXIVjR5`#G%Yubex^Ek5My7c6MYX%7Gwt^ zEQfJ(jHKtjLQ^{)h$XwQ!5|9GE=N>Z!Fl5Rh7)25K==H`D%H?X8Sa<_F{aeQ?>-0+ z#AO{|za}mPNNyFEix7jjECDjarDb;iY7e z=FDP`Vy8hFmfZ#((M*J5iud&MDYLZo{ZZZyhF9dYcK1)dchB#GgF;2`F z*W!=)y@*z{4P9tFAr!ImZjh>I^DvnfcVaw}%v^0{K83e&9y0r)p4Ip?d$mVcZBHG0 zy9w74H+i;7>jwU_JShm~*5%@)xi%_Is;)^E+{r5VSr)v`Omrj@j~+8gjxh1B_#^hW z%9en~QlQ)twb)!vGd2UYRmNUN3`%H{(0IZk={#)Gitr~Qgv$E2EomW3y1xzL46~%O zY$e^&2Em7z*6Hf~a0$0!w=Gom^5>-Pc7#@o(6}U>i&=VZo6NFVdJPaQEdBI%g7hFj z)`qJ|{}+I_(*Gf1WC6w~nDD5{gtfe10r9$aV1{6V#SzDPLSkaO__UaeIN$jQ<>M>+ z$C0(BSdt?{AjM*d;r<$nyQ-&76aozh<1I4BkXZ~6BLV_ihRVON+s8@P3wUFsVDj}e zLKrFPb}Sj@VLOuJWHey71)qwD|8b3;1~&w=o1W-eU>JkVhUf3GfL01ZpljFitKo27*FMbmp+$8ma0tz5*cG2yi4z4n1 zs?ho}=zy!tSd!J}0-=?q>4=#b3z*TLeL30zWjBh-E}pTSBg{;1pTtD3hR?-fU}*P{UDrj_qf(pV6XkrpgLq|GHqd1B>DvA@ueRQN7PyrjeTXN^x z$~dC94a|%S~G+&`}XwP+SnVdu>z{#ehJ*->JI2fa1LG_ssKuc^=aD);+bI zI(6#QsZ-~ypio)oSo_>3HDu2FU&(-~y&I-MSFwc17_b+iYagok46@&>`C3Dr#LB^5 zVIG;tK7v8M#OvI%TM?f?d{zDNb;)$A8f(O3{IdC~!=!>NojDrZr`FtA+y7JNYJup_ z0qoewN2yf6Y|r+rrpa`uK2&AWd)xZAgWeDA z!_)`gQo)t^p%~M!XWpdV`aH-FWNuFdNwVra0f|}Fw^4>Tub3~iP#xvX%V{_-*3c=E z&#JzPA9UpQ#mHRTYto5x-;)}Ar^#Dp2l7`EjTy(l)ac4_@<|WNZ>OkXxsuOqzN4fH zH7sR3$v-_TCw~b~QBGEGxgKzB$@tPxSozA zhjl^3J)cKo#@qCwZt<}fT|DvFKSr)>9aeZ{$UF!!{dm51A*LRC2l?0LOYtP=18GS5 z`)*=CC_TOvu@HGIaSgxDba}xBVWj5&&gnvSynjo#WPkA^zoKjJPa&L&htdCqi>j)_ z-KwUF{!KX>HsZ3cQ0!$5cw>|AZ-A?+<2tYNE67NX+Z&VBxFz0YB(7sl zu$h)gS$&;)#5^MZL6>bhzfTDp!>FYwrt)m#I0m)EI=CB4yb(X2(-QxZW)!Ze{bnMc zatc^groIIDA_uF_DeOl+)+!$o@o080$g+H|Ko(Z<%lw58-$4?4Ig=k$MIJ`b>b`(a zW@3kM(phpwZ22BiSssw|_ zj*qmVyH^@FOIl(jr6s0s3#Gtkr9Ecx7rdC=ZAl`YJU`){!p~%VSmr3AYZyxVke@@z zdapfaQnvknQKt?qa^uYc&QS$g6TPH+2+UxXX&!K5s&DZzT z=i(%vo%>~>wu-mCgUGTc?!{?Q!_|1YZod1I!*KSvA1^`#4}Sre-B?m59$#; z=z&ZZP2tDV6!0zTumBDmHn1AY+TzS%KmI}ueg|2Q!2%NI#WU{IN<)k>*?n;pSlGqlm!y zZWqx}F!N_-T6#OYLVc^A$T#O)>M-BZ*nC{2_qp>e(vJXLI`u9M9TezBYJwNRr+Ufm zuKpcX_dNT-4+MelGEG*447x2V<{+V^{QD(kd|Up&t6PWXff1!hb=J^UAqCl4FXEDy zF#Z0Z&AG^y{9iSBP}RwK2*`GYI-_xQ(+WLa<4KiG*B@2GG{OIY=h%Rw8ECI_m73vS zHLcU5cYJOkYnpzi3ptF`Mnp_k?f-OGYAUXmuJ=%ASE8iUI!|ZVd;d6t zMyxQINxnkr3?+|wpQ0pahfjibH1aH#H7)$sSplDN#~V-bmW~@gUA~yh1qoW!_S9!I zAXeQ%X&xQNMeGajrCB)7inYUe{z(?B1{a>u2Qe65iht!D6-?yA)<7Q-<<;OzrtuWj zT5vQGW~(PqTv~!XmE<}LBM`V24f-;2Q?~ZsNbQ!diZRAFtgk1hdYQ1UIP;lu7nE;k zm=a*pm04Bm?DkJpR}atMJ3@k$ z#wGUOjlY)QrInnvjDZrwXl$ick^hyID0488S`kWKg^!pooxb3Sn5Ra3Exm|tpBh1; z1~Xkj2mc3l*<83X@^rA`{qW=FI@XfJn;gxPrK7)%_KkMbu1434oAN8CU5skud_D(f zBV+{4cv%A_hOA!&tvl2sR-3|?&;653#>i1BdjwzF8W3y90$ljh;wuB_p&#V*5}hV0 zjbaRBv+c^e>AJhGtxpXAF^ZEA`je2tRh35k7Vsl#fhK?HC;i$L2XYx!4=|2;;7=-bGDsge*C#lQ6cJ zDn&{;ZIOda(e1Jwb&adlFkequsV^8JrK@F}+(A0m;dPySg;3sT`ExA8#P~YJ5Rfh-zCa`5 z3bOu-NAoSD*Wa=F#)(%RD4VSB)LPvyd0o_A98drgz-GNPfR$j0GCQj^cZr8t4}-$u zzyMYPJM98idb|M~$+K%^D51jb1^iQ@n*tY#wsf0GvMU$^M=D z!H~Hw%k~Zswg=C<#ww1irpIe|4jZ@rT87c;dk#s$1DP)IvM9|MWf7MiCMeHpw*6qA zd8O*$5uleC)rtwqS4g6hCsG6xye5FP|6I%|C z8b0Hp|0l7975xXTD~hN>7W<3TFbI$TJR$XmvAwEHiv~kzQuKxcJ&_9lj@?k?318)Y zk_^50niUlac~dZv>BAeY?Azf8TXowb(DoI4wn@>JqM-^AB6HF5TtdAdCF zbW!H%eD?_gJlB1+PoxRvGP~_=A)s^RKE~)h2)UAw95PYGsM)+m2#U)@zR$>y3yshD2_?HJK`~(Y?%;K# z)zd&_P=g(Tcb7LNObblI;PR`ZoJYAvL{2K*S&POr{o_T4_JqYuX+M!NLOyV zR9aY-AFTK>Vx)S>cm*-Y4pw{^?h?HbC(^|G_$rtjyOMZrWU3w^wLkKjP$6fXpWBB% zhKNyd71w!+d#=Ko4A$&^QW1|lq}i4IIcB{18U9Qknl{WuBJ&vddMCyQi0ti1H-u{{%52UIpwItPf66}a5U(#-`WF4CAN^rUP-)=`tp?--6c*j5ap+4_Q z^gmbgoD+v?vOt){m&s2~94d)GHHI`{|4Ne`RB*lueo}+nzK7_M^t~a|_rv*|?R!t& zu(mdrN%sxu7&j$yyZ&PvU4J^=^{XycUH^c@)ctPP-{HlWabdS~*SGObr=OPOg}xL& znNEKtY0~L81*YEj1V8Cc-_CPRr>_tQ6?ywl^3*>k^7c4MNdAfQ=AmO1RQFT#&q?ZM zr7`1K3?=nATuD;XuwKJxQTI}wY0>ZbQ7!t0Yx?qCwP-jGw5T^f(xT1uz{7J+i{5Dk zLKf}f59KM-BCF49@@|}pEZ=9j0_yWDKXx1rqWY!?5pf}b?SsoCcS^!|VkG7*_PYX!#iE$7F+ zT2V*wI7vzl>qh&>@@UNX5G_nyQ#NF3Az@OhL*@zWScd=*vMyf9y1~NJr!TL{R4!i6 zCC_WTq57{v-c+!%Pft})ObSxsT=kF3$!LCIUjdStZ)H-B>0pzykq^w_wfumLZltTh z-lj%*r+lpUy~R(O?*74ZPS+n52($P;`AK)(?RA6tBvp90!GW~%^JKQ7Ou>e=UC#CB8y3w@~y zuf9;;Ph#uTMc!l8b6XH7F|Abl!s64V)yZK+5bJ0jjTsvdsOpx4FOb&uFRg3r+i${k z6Ry4b>X7+|!jSoEa8)WsStNkdOrUsaGccxJD*2L*pU>o_z`~eeAeMc|IB-X@89yV z-uECsY9hyZ$f4$`^4To@qx|ea&F833zSH$jfFFB~)&tkjMuo7))M;9EdHTIfz56yS zR0s}Z5MOWZUgpiQ})OBxb=r`&2b_L&Om9#XmKC*9WDErU)78&@1NeCYyn-N9&+38>ppTKu@ zUoG-_(7K^eZgp3`s*30c9|kEm==d{SuTgjFmNKJ0e3*urzIg&=`7TpG5+`jL_a?%l z)qYD|TM8d9BUIHl@(r(5H-rzWstWh2IxF&N`mXB@k$2Pkx8(I+`v<|RxilqV#`{4s zrIZ(W7D_s$Np*>fC+bomqfH33FlH;wUUjitZb#{`Xq(b5(ch$HZO;l}><-F3jx1<# zl3|gymFkFoVlDLv^J?%a?q*k_W$9DZCDKFW%hVy9za2y>XT3{Ne~<+WT>U8Df&B)E zFFA4JEO`Z{RNeO#vQGS7O`qyxR7D4foj^Uq#Pwq}2H|U>+bhHMk}OIbtcsHtc*8*y zrWgoBdO4e*B!y2x%kLkD5v&uor)&=LX@L{nei$~goJ*>My3QQDun%gER-%_{4ti0M z?+-_zipc$PFZ&xcvD>`Pwe0OO{V)=~-Cwt|0g#)yMbYgyh|0DKc{+SZbo*IG;%3i7`u^@WqgM* z5Hh|e@GI$;sCEuV-B~Z^tHq4ozKkz%+FcV`@SCdT1jnjAfI|KKKNwa2m1|Skg9KxS z=&?l~hOJ}wvBIWoB!tw9ssW$KkCsh7;?bC~Lk5m`r@Y`HLG!R56p)aUZ<9P)Lm!l% z{OVVQ-p%4Uyydd88+mW=wFpeT?;d^v=A=T!&LX_zu(Ll3h*^Ar{OrNbeycwD0{UmD z`Z-?d_^=IOi{}@;I%=G@BIQa_FjY-57*s*!Gqh(Uo|GX=lcJFj6QR@wB>)G^t@ah? z$Z%D^w}itGxlxoelB4 z!bV(zL->A28UjI%-~Sg>U@LJtA~&*v7Agrbe3fsigR-7~ zLwz%yQ%KVBr!V|Hw1Md6T+X`Ni1_curLH3#ia2L680sXSASZ}lwq*nPynB6~re74l$J41bD+C;@p!WtTyuUDaXKJC<3C-tI` zb@hJPEi^*zFN@z1#a|x2fgxH2GVW+`?o>mu8~RmN<@4o~7o^L@BMx`HX;EO!A*r2r{S3mCP{^ig~I&}Ul{ zyv}dQ;>PRj<($ZiHD8zjRIy@zXvE(TGx!WsjIZETU|-}Hx!_ZXqbnoWWa}mFA=Wgd z6(0*Xl%nZ8eXi~Qx$4|5d+1~}Z}1W%=O;e`6|#ImN*IOKvG4pm70M&)D~0H_ZT5v@ zpo=!&AwbDLE-p;sk&6q{DirTb?JG+hjVysHp2w$Yhv{v#lpCGg)5B$YYfw`)IvMEp zH|N0CUkzBkZxN={$f_8tR-Z>8H2)G6unJ*wA5Ij`27)LI&Ef^v(|DHT@38-QrcgCo z{x-yT%G>fg;UVbMC8u^ARmyf)X4b9Eg zAXPQ*p~_^Iu3JDm(cm6vZ-shjnfC9ZS1>t7uv2a;5429yy%&JID?ufGQU;c`v%zvxTOWGF%PJ#1%5<2!jrI-@_Fhi zR$SZDIhK_1*kf^kC0=Apd6l|Ph-{*^QT;bb!Mhf-cf->Z+U5vO0x<7vvqw@H77x8U zkR1Aas)o|{mi)+UzFCkGtA2%dG&r@s74pIKHS*)!%Qvg~!)I8cvCX&@={96lmk9ud z+S2v5TJ)`I{wVqPVlDsT2b`ucJ4czjFa{S0z2)KEot>RTZkq!*Q)iRY%n=e2-u0BM zhJA2HV~kO^{emS$VUWrlqZQEOPiKMV3Q+G1kUgEjqMSeHfQ}^W1pA>|EDhTF+kE-Dt(X=56*%_HHeu5a;bo{OM7+Xrm-4i zd=AJw0eLeEa)JgKo&&O3K%UNm9H2o;b3lR*0diXwzORWYuB?n}j zfV`LmIb4Gr4M=)O7YWEcS&)uX)uo&8@kh@HOTLCKrR)Km06Gh8sxYfkVOLW zU>2mS2H8Icq+LL6%7T1;io(n0C$gQcc@&TfvLMSf$SXM@4FXb?1^K%Mc?6L30IU;` z1G6C0G{}scQu;jx$X02i?)14D1=$%=oqhshNP{%Y2PBdK zftRlwDV%TUUnocU%sLJ8n#N0?A_S}m7|0eQ6tuW=xgXF*@gmXm2;828TS&kFp#wqK z@>Nm-%P2a@>H=z%wZGVYS3|rH#3&q(Iq!bQb}QaNBbxP>Wh!sJ%4@`@AqJ5D-;AW> zf78B4L){M)wukNt7U?dx7H;&OfVhSamAd5lgc}%etYk8E3^lQxl1+63JBF&RZME}6 zPQ_O$KO!jR^BZp_-ucm1WS(4B5#vdbrK?ycH-(4fXeV$USQ-8mOJfRg<=-^3sgMPT zzK@2b;pYr{gEnUdn+lGTvCh2)L05^ei1NYum&`G7%%u@8J1C{Uv}hbH;u;ik?2qA- zGBRv3aiT)aU~zGK=QSGu}5VbjrdV& zEPTy>7yT;8>!IGO+aKX9R|}-F@oHBQ7zkH7p^6qBfazhFd*nYdh_?Zl_4>1n{$$-H zNkc*vTf&8GCdd+54g3YW!JkQ^T0NCYyMv1p%I;Z~I#Mp71;oGEF1xf&YYblABKVq5 z<7Dq}rrJBG%~DTP-LhHw3IMBiK3z(zLKYglUN%9qmZ9lLv}xIhJ0I!+%J>@(lIeLe z3B;3Zs9b93SvE7ZM%)9P$=1d>0sJ)$(xf2kmE{{j`=ye`tumno)bLu1tGPI*+u$M6 zfJOI{OdIx4r-CSkQCL`Xne_3F4hMZ{kqn_)XziW6y`jD^$x z&J;|Zh6)sSPN+f|S!nHDx!>|HnF8-NNt{WJTl%&c! zp?2yBtIzXnKR~+G=d*dzn%bFie_AGBtFNB2a75eZK7dduDj!u3QkHl;8q776?{Qn> z!`=cbu)%<0FDi0$r=YMgyflgb&(G}xM8*Gx z<2I&|jK~Azl(0Z^j6^5E+4Oayk8JvIvrISGzioe5-kWip$h#kN3FFrHcxqY=qU}C# z(p*vvLCvxs#Wn9^PEdq@cwTp<1X?pzjT{~znYi3n*~~}1;dMUaIa^B4GN%VQ^)}jR z6gaE8C#^_Ny$Qd{PCI8XppBI@$o>mRRg=njjlmYOzL6BC2!K}KV(7@@oDMr6Ffx;Y zl|ZBJUOtEc8fVp)f(z$m;TY9BAJV%Lhk~u4=Tf=w)AjP!{V6D>)pxlRNKv=4BV)9` z9NY|_HGLP6T-WjmLoSAYC-No+f4yX>lp_cj*$vj{-W+#?xp&O?`?dfQJ?U3Q{A8MB zzw#c;FTZam68(4<#&+*OujRWzTEhtZ77*gSpu9;6AzHmx!}sdU-evZ)wXkm7od`vV zE^!6(m$gqW@)a2kc~bO7xQp;aE~9@9`4H*LxQ!$bHD*pj@qHA?ZsAS7D3er7ujth$ zgV(^H&Ei}6nkD2*Rppg-4TB%Op~MpzkAkaSCHiimfRSd;4bkd45}0P6pf^%oH+_W) z8$Pf6NOu;iPm>E(_iyIKes#Uzskk#)6F8L!997~q8e;OLjHX(?<0xHt7b{bsVuNwp z1+*V)BJA{w*D^*Nm|G*61gkLTslZyb99AbbWwE8D6|IqvQ=Kf|cZ@Nz!GH&)pA2a~ zKxoUYR0$IX6?!g06K}8(J2Rsub5zL%G>Rpa6YBMp5zFmq9yVn1>7pmY~YRW zJs<_*hI1?h#j1N#zSp>|osTTCSKrGbTX37}%zX!ZgaO6*-~hLxM){_78k^2SIWggY zVS*tx%*8{xpQ1HkQYtxC>sPA&eH@0ESZ=z&@M z8PAbFz-Qm*0X`e~gVpDDhBvW(+E`Jx*UpSq<$J2Uxb z&m>RNY#M~}eI2db3YQn=P|+vAmm3$tU~f=0tPlI_I!M6|^9NT652{p-^qN+a+dh#l zG>JH858(-BHl1-;#1PXs#De}`NuqBMnFcirPrLO1QmpFVk}%(k7NXYo#@+A$FR4N6 z1p5M(Ma$O$H99NdBBt+VinF&dn`r!gG2dtZ0M(Xnt^hm-faRMdkB{-#^u3lRcff-1 zRrhOD%{hzIMp+Xt1jo+Vd{COkgAuqg%d*p*H^$-+DoArZBlb7?(dwz$O@MF=AeAf- zxdue;oI?g07u3g>esnZSp($0w=a3)K>3RxYfe0jre6H`u3Fl-v>fmNkcnbCj{zr8A z>brr>08VoKw26~8lt*PKHAQ}b+qWX+HP%ptT{t|=h_6M+6-K;umc%gMlaZ=qfRS|OqQk>Od-5$aQAAD62h~F-nmEi@sj;@#w+Ig zcCKWag91D?z6v8s~D zs$tP712`FYisJqSN#uo}lTyQv$fYP;3+3D#L1CYAvi@r`_nD-pX9uif6_}9Px@sA#T$7;3`na+w?A?n76qN9D}|9i2D)5S7N|AH7jQli zlahn{9nGb%)`CFAm1Q+XycNJ8%W*&PbU(V0A%&{)g4QvGq2yGiOov^Dm=Ua`a+Irz zkL$}da>1nPEDn{&hxe@_Vv8r-)!%k93n141cSNV={V}pRIyL|5$QRM61p~x>AhJR3 zt1YaiwB+Pn6lS0Ekf3FmxZmP}x@c>61i4}uOh$YS!@c&sj1cc$)hPRZSe23?mfL@z z45BhrTvS$WBvLdlm7snLjLBO4qUupV_ozf4NGa6nAl5h}rTa{Pydakafk(o?N9 zZHEXHabaGy6)T9fP-`xqhIQJOR1xK?6Ic9S5_e)+KkGM%t>G^NBD4fdVhoty$~A#i zNOSS#04>3*C#m6=YYAh1nqN-IL3~gl-e2+Mjeo7JcqPno!u1!ydx;u>fQd}hHPux+ zfu34Lf92)|gm`wA3Z08pdZ;W|SN}Rq^vfbIey3D1MDkAk#ht%{o0sk8KY4e0wK|6^ zj6Dg(VC|PBTy3FM-%h_q^X&}#tOt-0xOc;pQPjF0J3}Zk@~T{pg!c~^3$MT~;Rd1$A&J~g0W$}$7Yqj&)zQ;Bi*?UeDXeYQ z8;PzE)!=4YQROk_G)rWNjt5LLGqccKW=$FbmIEI0a)K5=s!6_H{O>!Pz09gOJbx1_${aRm6i4(yF>lN2jW) z51;x%5fVV-V5(?ZM_@GjY}TWBh2eh%=w%gKs%diwN{DaZue_;QQs=yaa6^E5Abi7C z;Cd!&h^EPRB-15cAmjmOAr{6^uoz`nHH~PB(HZXgBd5 z5>v0_raUSsi>n40@kz8Wz;)7q+EhPDF9xq?fCDn3PAxM~q8t-m5_+vlbWAIO*w0YN z9NAXTuZd#Z?_kh~e@`Ys^eJWmoKoczTpBv9TRIICgxGx$0;|<4#jMO0Bd=1m5IqxU zN?AXE&yeX<8ZfytaIA@M=-gSu@y~~LWd*BZd!FB1I;}r@69#4f4hEsH>auV_)uoZ* z=#>3;4UF_q(@&UXUaZ@bd33r;gyr*LKmOSEJmWUmXsO;;2`xDz_%OH`Wb8I4c(37W zW)?WLfWhCZL=f)*=4rXw-sSPU8@3+KAC|_J^C_5JwCoO~aqKf;l^+l=q77-hudbi0 z9ZnlO$Dc#cDg=ciQI8gN0b?r6vsP>pCaP_b6tBWCr_+qYuM~wdy;Z3}X?CpJyaMMc zN*-0eR0krwc&4AL7NHVi=Clyo;#CQoH4*^*^tQlU6`9T@(~hPQQoWWYK7fvXFJO8m3lNht zF&Q{AY1+O*YLXr|9Yx0MA-q2gk(zU=73fjOv?fYIxT4W>+ zpv=_$i{vgyQ@JixjZFAa9U7%HH|?%P2MXN4+_ac;BXwA1Dzt4* z!c)0H$pm6k7++buX5&h0?!N^o%r6lGABU6b-NMb{h z#&!V}stl-g7#q{i52pe>0R#q_Q1h`;I=IXc7(@A_-q6-|$S*5Pq5jUi-pj zbbabRWRv7`SqdC9@In?BiCEh)`H&D-RD~B5XlbVw|7~Hm0DK)5)c{{d@_FOzFnQU%Rk1w z+=$qD64Cf-!iVs;Opbwy#drqepd1I`m?yCx5kshxy>a+~MPZ}N6@$@^=nb*B!!ozS z4&BiXB`*>O!=FGQpWA&IVyQyexft;~$SldH&~AExK)YzXAjAl)6XL=U>?>BXYpxTh z9{{iupowNyN*PA{8mM2IY9z4k=x{FNPt~z?$%%PNkR@<932uMs4HpZ|b{t)XeuF2r ziTppEm|u~uvi+Ftpcv?gZaX&2U8lEGYb2`O=Z)iN3e|rz895!-Y7FN?5EWcdnra04 z6wOpF3c|>@pWCTpa+4AdI-koQwLEv(`yz~>+eY{x%z5%&0OVUKu;{@U$d<3PUHt)NG@&xo^q#G1=H zP;9It8={l*j*YwM;HIb+|+> zT7Mgri1fR-#@cc=2Cf^5W$G?`317r&sVsbojKxvF& zx=KNNu)@9+yh(3LktTU}K7d`Zbrv@#!aN-z5;9AHUz77dm2*Yv-!kJ89h0lr^VAp% z+giRZjJ1!)=8si>QvX={F&xy<>q((lJ6@K>qAAwiEqt-;Tm7;20(?NQKiaY^)_zI& zx>)a?)c{d*6aZ&5`l9re>9Mk-g4u>&2|l7){RdZ} zKfoq6GI8;C8mYW7$f~5zpAoijKvGcVSFNry*FAsxHrWHLX&g!~Xg&g%;L>B?5tc5T zS9WO-4t&YSOv9c)NLe>J;H_ei=nY_~@X(2rdxNaJaf0%EwwJw{!k*V%6Q|MC7 zSEhdqP+sgKZ(n{3*mU9gPnj(l?=|i_ zwW;)={GxCG0n>N+BVl&z*FZbdca6CCkC6-ljQA1~XCly+wb+HR4MwcphX)$cj2V}Z zmAPQVx9~uv*x8cq|6zrPpT&oQn#hr&AL^&hDKA8u0wQY`Pv*m-zWh=4)a$f9b^52C zQqUkc*MTh9TT(?h665CKzIg5VF^kOa@NWPuLz<=96x=4y~t zWxgK!SfQ?T`bYG)MsVwi(pWH94hCxg3W#ougH;O9n8@~C?PmPbcSyMt_m?9J!S;xY zufAw;2Xqn+iSA;tPdc+EauR*5*@sav5`%!`O>}gLllAj4JgfUY5@XsB#YS-P7&4;W zi1-$tBTt|(@hz>OzX}u1O|U-IzgT;x@G-G=!$?T@-vD&gZ*fRv{v^B-Qma|45c*|! zu|jWZfiy)80piNTYHS{*aun$(zj93Jb1{4XL=ro%Y*_dNMkwN9KOGR-)39u*|+(M1$^9vYV9 zd1dFBZP13Ox<)I(>>c}`?2Nz&Ujf7$KFRiNI&E}r+6_7_l$&;mq|p*pt90Tnnjref z66ZepCv<_qJ2QOoRrFFFjX4m&;s|fbS(6Kao2bQO6$JC6O(4b##EU$kbs3@v1Jz67 zVG13e_;Rs~o6&H$pfHq1A;)eFB&acC?m^#+6yuYzy;>m8C_9hB#vvsYv55tf4rWN{ z?ZV84GrcX_3u_uqY&bIy4(8##;go!mTDG~V4W|?=%bp+L_f~R%4@j%4SRIbYg!W?h zEQRrLM8sL-9UiME=&Ct?G3#qyi_}QeZX9|jNme!8l&;; z)RQcRaiJqd@yaqJ;)_^#%s18Ih)~}zXmv(H6m2r%Qjzi-04WtlxA&P?z`0vF?%0R{ zGgpSE(eE`D?%T4V(7Sr_CwQSv2E6F($>^@P&`qH@Vbnr7%%ezFm=alGL}}h{8J+>i zfaf)%@nniREl-sdnH`iGbBmY43p%N?Q}c|42L{=SAg_I4ucRM{`St6A$X(F!BnhibK)Y%gX$W0i)yy1Zy`vm61?BP2|PyT%&nkyrId z<0fByNSAi)(~?c0M&%qoQ@rn~)44kHJKYkR!Ei`iGpq)hHE!i3qA*mkaY7%t0opm- zzsd;L(k3>r;zH#}-KKZ4ZSs%xpAWg$aELi9Pc-hk)vLa`V0W)Oq}Y%NeZJ=4&B)!avF@{(48_2EvnY=pG9~_->>l&J;{h5`j5yh^ejP$g#S&B z$d|$dRne+LdxYmHR2z*W7?`tmX{>>0+*{y2#=cOMuVv_<_q?(~=X+9^jJflXGuW1- z>}RT9;Ah!P=2LH6F_*_SY>TbTYZy^(_6nM(uv0p@NZ})TN%^+6PHHB!oh%YCBGk!B zB+~K?lz^q)Nn&>7vu`^bhGN}N8f-%(5Xj*Ql3$%u0bQd8d%a^v{ z{UqgF_dHgnoRa>Se=o~qL<%IRxJ<%W2Z5{KoOD63p2Le{Ry0?O-1)VAkd#6^jN~|P z_<*{K_a=hg)8TVCr2E=VmMQN{5^aU42Gz3N*2gM5>G`JC0|mT+l2UKj6?ikv@B{x@ zLGP}N3&>Z*1>`z-Y|vbyW-y0X{p48$z$OoiSkSyf3x(!_vUwy1&3M^-e(h%{HN6GA z9CV3CFOeRj7nk1^uzYVM7^F4{TfwKc+Cl2q98;nsu2Td)Hnot_?kg*z`p9oFYZQA| z;*xb|zgP;m{g+=+gCgarKpY0yE#`KV$9AOV>C2_rXbhN;Lf-xhmQhWiWE4qVS`tLA zm0xkcXx-u_#ob@sSj^8n$g#*l(?9dj)?iz_Oe9zN7yF30h%6+$tHyXvmuWnw%S7fa zrS&Yo>7u7^ELBO!x4~q*teMt@K;%kFl2V(cNdEEohJK=gqVZH7A5Yy;(hJEV|9I@i zV=0d^F*(d; z>K65hC1*Kb$_o7$V{EOu*0}kfQVbbYzr#3{&?t}$lEnJJY9MSMbJcdN`dH>dW_xO~ z%TJ~w*yD9CevK59EZDD6UWG+ed*#6x#%?H5XfHp^B^M3@)z#==#jUz*|8k?xW!x2CmWlSd4BgK+ zIy2G!OEil8T*r8Zu8eBs)GyOZMML*W%ATFmBXVYL=Z=yF?|t%3>%(W!i%RFd6H5I_ z=e%uoNRfI(Hm59MXR-+N_3Q_FtL3ke=&o9$=`dJvi_1Z80StYQ|9N_XfO4X;QOb}n z>z^W9gf&gJBA^=!t4fk1R#$bI)XzVCTgQ#~8!lF%XZiTH->7Rz7DNNd(6H6PO1*qW z93J!hRBqXStwGA&#n zW4ZSh7Us5an!x^t7XCNK$X$v&aCH<15QuXsM}!&fQYt*OT2f-QgS=EMq7y?T!c?Rj z8Acw0))FOVdRLjRGJyny9mhiDH1y~L$&1b-{vgM=LDmISm$!2k(p4h3u4lPg>aSnTbg{sr>Di^*k^?i zln`BE1K#Mi^J>sO3olT@zHxHv?wCFYvWaf%A1+R_`VUkB{NZ`bd4JM;O>3Pv!pt;3 zC{5aX^Y1$#r}_KkHh(X2;(wFYejfYx=QiKuYSS+?|NUM$%|BgW)7alj^Z#ce0}{}A zMq;}vFTGrSEj%X8`eoa1EMzzD3P^a0b(bk)VT-Y_TS;`=(c%50+fEAiNbd=p=O}Kb z-~6}p8y=dNNZh~Nj~27IIucbZy41`4z_Wx-WaUHOgv0&ti0Jn7!^2!5Eq)U_vgr2n z!oQM)ApQUl>v*bRQkEc8i({u=m;pMm?}Ue*0)ZWk75}!ABCpA%!NH^oAsr!N8+--* zm$O{PJU!`|^+w`?Eu`!@G@7z}hviV#SCsY(Lo=+H&*_zBk-+|kq4{r8)@~iT73A)v zLx&!k)1f}U+@U}9%<0hQf~5be4!!uze_U@Oxg85gWB1MjX78WVu^#`AI|ez5fBSu? z*7=7_xIF~OJXwc?3pg*p@n-H$stYzthCM_AO{y34$r;(!F_dZfz7UguPUSR*P zI#i+VApI=qb?Tkdp_S6{y?3a0Zij9c*#CnLu@)JLzA^)kkQta}o;8wu+Ls(iagx89 z{mu6k3zTqW-1N*r2yI%};~Z!5aBQt*0Tfw|&PFT4%Sw%SFS5FlUCho?#|=u9OBvR% zQld@tt7yet)Fw=U9q)Dcui1+Lt@KPcpG}P!p=N?0fA2_b>%r&re6AK)7pe8DgWfw_ z?N>psI`7-=zEzk`GYfLiyE>zJ$tu8D^hGViW>rJs;RbbV)ZW3j2Rw_7qmzm~b zN3OLcWmwZlMfr*FCR5QBlC{IvICdA#onPbv%38cOC4fImW!*3m%^>6tp!ydOvama! z(+D|6VE^AyS#86`YzXdCxEjUnnrOb)d7O@-H0)$7yiXAn%ELU5zu^M$PneHDFPi}` zdgNStnM=o5McS%LmryNVjX#zEf_VhHN9f(f^zG(UR_+5xK7x)`GD}>2p zLSf%Pm!g&DM-C8gUYPF)84A4o$~SHRXGvr?J!=^%y$mu=5>ndxocSvRm?4oa0{inM z^553AiXID6$QQM-Gt2Jia1|w`M&fu>AtK%OL%My5FV6Qe+HC!L1;p5Bt1{IL^#3;Y zMZO*WD8p-Hb2(G8rY9I%S&#jzLJAoAxvH#-s;nPHMwcixrd(JSxw{!i+!c)CBsBlP zj-$0&7?+uLEyZ(b2WcDXOH-or8O3E$@2bW17ILe2zfRNPa_1LOU(z)P^|uPFMm=2( z&K5PjQqcdRc%0Vhdx^%OTkX_q#CBDEtU?0B$^Oc(if%vJh(F4D5#4^0k@%A=9QX5wQbE~Dpahrl8#1>wiO!sflh3)Q zz3aow0Ald9+WK>@&x*CkA2a}Zu)@JMOTr|$mBZGbB&VFB_ z%E^AMP_@hD0GZRM8YZlL7HU1PkjXlN{h?8pI4+ffjN4 zkD^mGZuD&Jzx=~N;$Gk;y9VcXjY)3S=Y5UvspltYz($ee&gIBpASh5Gd zJ+`yzl`vZ|Zz(b2bIDa#u{>NIASm?z@1rRU%NYeZnv&qsA#c0ltrs!@aF^qY{is;x zTxs;JW9XSX7!W154)vrTWfGiaRTD=7I9{M-v6Pp2)Eh1fXMm{XN!ZNT_r(wjfDlYu zN>tbQ)1@?VCP;==_Hlr@wTNZVXHBpp27O~}X`cP=d$MGWKw+S(Hs4X%82_FDbE#XG z{T)!d@tW&DR^y+U1lI_Kr1AYT=YPHosyY7?SSG=L_xw*WI(7cXG#Bzs_ek@BX1d&j z&P3tOw`X@A-6-9u$?};}MkjGF%+Kk;pV(ts29UWWLM5_*D@iKdpwbC;!=1QX0mX3T zj82GSTV&E(ehf74)67SXH3?+lN^O?Ev|99m#*A{5zQ)2kwB%u~=qKeA`OP;PdUndP zpWV3mTXI&Nru40h#4lieWI+z*n+5h~*pKw9nZ^Wv_M~zz+*~b7xkQmG3Z+FQ=QNh8 z#gKkRu1KF*he!R-IfOoB>8<&}jn58lPOO(B7Nc$%s860ZY<24I@P`KRiW;bR*|@Jc z-fScmGnt*c`6Jg`<6YF@f~)brS;8LY@XaU5h^bBblpNzMF-_`Pv6OglK)NzOjgeT! zn~N)9o{UKO>~5c|(GGhQ@MhPrX&F6TN*KxJkmK0&&RPV?S?e9n{0 zzZ^*we_a07T2EB`l^1o?Cf+` z(ucb^Nd z7D)q)g%w78nR@Bq*6VwG7pZG9^D#+&^IJxKSMwM7#=FBn@G@)B&*)3_nxyrmgT!)E7fwy)HtPCG4H83>_MWRP&RD~U`Z$R3 z$yQk+Z@8&SE8WwoS0la>jsD=RDGW;%wsNz!;g*7CI`UHtztvefpE*Lm9t?L)+v@y` zj`sw@22?C@&oeuawrQVl;ytYCQoJYix9IiWv61(r*4DVH66yU~E%pZ}o=v z3I4#|)Lqs&e7pu6N4qLBxpC1h1uh|-AejDyGg~!oi4(zy6q9(3^ro@=;n03p`eboZ z*XVU%E8Z6<(s$;j?L6OKz1A zs8`vH=g_!QN7K@)0E@y4V%F7!UK*!BZTYr`e7Wq)c}P};%23(a#B-zi1^|tPlfBLa zRg6AEQf8j^#oT>!Cap&bH5N`0_qO=BRf5t}{H%-8}P0Ue0{E7EHkh>m)v`zcyQ zw7<_sC94XYp;Q>X&N~)#c+pQtHJRh+^@wtNB7u^3r4f)u2pEthMJ9s%$2VO}D4X%L zxM)9zLuY5zyHeM#^Rey)y=nVU=dK-MKdCOR>-f0A6S;sU7IQncJk)eb`o*}t*|=+I zzokaww{QxZ&kA}AE?U9_)ji{q%cf`v+%W2THd%^)mx5QEgG3MlstFS8lZCbJZFcyP%R00JPuI z#8!a5FcQ6>=TL@V9^tJ{OjFaRcP>@nx{h*0Yra(P{#5GEEdHM}a{ABXZlCh0qw#92EY55nhV7-6^vU!}!-{SDIu4b28# zFl}0vH+_lj9YtuzgLFv9l@29JSrhE-?YrO!o~;G>g+?L9v2GZ5O3oL{puwnZNdLvgxHpA|&anB>muY z_eyX#Qv-qq%clp`lt&)1fBZprpMKV`J{s{GFA@zj)*ED#Ew=got`5fLR?Xhog(+l$RRQuvfWiZuuMj8+z2-ood{faz>>u+9I^At@mQcDyN^5HY;0jhjN0PfI4 z3XR_@uW?PJ&BSWfufkGfj!f0B!l&f*kNQ<+jJ#gJYnls-_d1D>1uH%gHoX{$)8h=` z3CW?_NC-KnnSXerEC@fH$F~bDC9lnwi)m@00EeF(+3K}1S0ccEr)NoYd$kdNA7V<| zAL+=%{wNoAW_(YLEMLuXTd(1c0wGSepn=@y5!HK!xr~B}e!fvV6-kfGCoJmG z<7Z|odV%6)No>fcU>2@6R6SHvs;X&WuDVhU2K00Q9~7=#V9v?4+lPUXe??Cm8+kwq zL2Qu{)MS$fLRDW|6aCs7IX*kd{tgA2FUd4RhSP##dY(BiacGA)B%Sp*XrZ&i18(t` z{2jwHXDx$5UAWs#R~P9nVuYIRCyou@R1E8n03Ya6bX(}z4~U+I}PE?lg%VRM?DL%w0K8uwEgFy|~@KuRA~*~dEjf$HTg z{ZgV{R_T}C>SYNpnW6L)cp{X1i`)QbH0;7N}u3dF0g17I*V;AW=22J zTF4Rjqz7oEbO}#cT9jt2`+T#jBXsms6th!{oFiAOj&zo;*EU=tmfQKeVY?HpR@XtY z_qVt+AXhlFGbbWP+#2si zF#|Ou+TG+OiXzK4r4*}py*qa&D`~HaM}B(FUHa;xEs^L&P{r9K446@m;fJ zl9{VKg&Scl?*k*gt>l!j0M7{q<7i+#jJ zuu-$ob}kY}0^feQOBhCNxolp###VBNc9*}Qwj5tqvs-JI5lv&csF{Q2n0dj9w%UML}s?{xou&X-I#a;{B4Gh@N*C5`$phKt|UnON;C1B$aq*V1YSgrc`wSQ}ENloNP$YmZQj9XKh=j@}} zHe8N;bp}b?iZBOsIXm@DeE$iOU6S9E`k{O7C$6=8r-cY#-?KT{b9A6$`?bO0$(|?S zdyCuPWAIc{utGVmX|W3+;sTu42stOGFmuy1ZE}a?^Ud}?%sRMLm`j%}&i=Gx5eUOg zf($P5wX>dOKj;3c|15JgBqEbCee+N|2I2B?P@KP`LOF12ux&)4Jn~y4zjf0;d+F4j z9hy~|L(1x=x9)g4pLn@nz%#bC$qhqyL02I9Ue@3FNXz(!+4vKbV&8^a$ieIJX_DHv z;fy};zGd7z`BCs59$04;l+{^R^)uhy8aUhQ4S!%CCOxx|?0U}L13I#XN(&-?1jA#> zV;gVuH;gIww|tF)zp5;@@oP{;|3Dk}VfkXOlZNmKZmmLzertDH1$DI-;WB49yrsA< zHnr3f?!kq+nfA*dF4n#)jGz7Gg}dD+Q?=E_K5MF*{;IS&_EJ=ePbHoyOszpP+fOj% z`~mFOSyM~x-%%^6rIMO@I>WE)^>UiMm{d$ zjo$3ef2{jURBFNdyZL7l`tHA6uTb)f2Osg<1f2(2l;l}ft)N=LNH<@U9X!m?{qzZ+ z+#<}R^eR)5`JnVn7Z}?J3MnP_G5x{=10dH>n!+lzvV zkeQU;N?d@3LwK+h^79iiRuu`suW?%^0gt^Xz4T7JENCSqBWr)Gg$+SMRb<^SZ6ZR3 zYN?e}eQ67s24EQ6(Yo zx{9QtN;9#6FUBqJaQ-UxRr#v8ka<7ykJfeJ;K#%&2;<+jLFena(|7A*xy zhITTHGBqKwIKU_X&T;L>SaE z%d=6+4plzx;hPa31)me{jM{gF$S#BIzBqNHk9xMv60`&?J@>rm0TJ11XCnA4GUhCG zkWg7Rmleji z`A=xuUDO85^^M4Bc(&)y59@3D6R+bz>1&-8_^v%zEz`L_`Wq|Q<{JFx0HnV)9C zS}yhbVPeeJHut@kTq#1*ZN*pY^8C7rmx5-`WfO35ydhv#Et8Lw(NjI-1=|XiNu83K z4|qX3p)NTp4|j>RURj$4QT;FXO-K?)#7OdE2-1HLWijc%) zL2I($6;*U>Q)lrfL9(#7kx2yQe80I|%Al3F!>|f)+1g3o>BU#jp1kMLUiS%`Nqi=} zrYfDdLRyxcjm}w=soKb&2yWaWc_H(gR3DT`oq`o=!7^@MkM%>eVt*X#@PN`gn7j__ z$`?Iko%ojUJiAkschbMflb_m9#|0HB3wnwy2%#ZK25Jgw8X|uqaVjPiwQ~tjD0Uka zwR3A4rao=lTn$lMzITRY<*sih3~+?s;aM$UZWiFm+POxorvjXx3wZ670W-2dsto_Q!4Wg`^%M34rq@O@QNpwT1I8fQ!e2hLx~K<8e+So+7ukohxRB)sf@>fYpy zztFw-VX7_5bmgH6+lU=3_48m^*oQvh)^9&!#$^}>RPAfT z{w}}WF)ia4>k@?StG-R9EK#$qF7nq^txZ6)_tytgWLG2x*?L^xT{%V`E87ztQTdG#ZsUUI}R0D zeUFv0R4TNd9j$)S0@c~-O|O(Jk`{|(ohh%ot(2x(DYYztXyI{6=}Cr^END|mg|jW% z;g6Pgg&w34+tp&P*3{^AT+40v8yA(-*>@)I+koi2Q)IbHQ`bN#h}*Qm*{+7cNIVXt zUPV!%S!x_Ibbd1BY6(+L5XyPWlD0?I>@;bArl}UP&lcQ88pX~{I@B&Blvv9-1DKMR zV8yd~)NVx!8LCuro00fC0HaLY)TtHU5upYjt1A`lxN-9I73I(WAeu~Tk(nC(Et&1VIh%M(k(F(n>i==U$w?*BnRg? zdyviyh?xm5NLHwPQBdi&EWAcqCC$-IX%n{WHsw9#kI5C^G{q;@WN7|=AhR@o8*dc3 zLFhMrlN6HS?XQW5mYx95@D0p3Y1TTKSNbb{PNGJ94G`(69j;~(Uj&4T*fFVds4}vMGki2h z*3_uWFDG?H;mVHTHRDb=A|6fC+oRg3JNrf^yKQ5aI#(fDs+g^&ucCJ${N3mFX9(Qs zxy?Deu*p3}3l6R6e@xUG6|L>x66*hLU42WS|2Jsq1IDSVvSfD|GhEnsD2Lp5>;<`b zPbkZiGV@AJeFe~7d~#_L&`Sz8NQk-zjv8SzWdWKp-;Kv)F_q`gXRl9p+b+Av9r>Mt*a9h1|kV=0i0LOwkhlPAKt+AJ9H@xaGyFS`D` zmi9t^@*T0A&%%lbs$gU7SSViv60+dT4eo=S>~-dBmU%gh$bDI19FcQgMh2f}+&lwD zW%+)8d|J>8RD3&Ouu}w!%ay<98L{&f;GkSU<0cyh^xu=g*S`G=LaJie&Lk?#$jjlZ zyxi)_%eD;2e?eXj{!&xo-!K-SCoL~;He%OEy}td9OQSI>FRuVLvjjo|iWyfV^%6J_ zRY-;t9K`H{h%$UzaStW+#Y4hQ(!$EGd4XVZg%uCum7S_*!rx?a%owgjzx2|Ec>9y3 z%_#-MZ60Ng>iFq0U69+xiBPPoAIVv!Gt2T3Ea|FgdRd0C3_?N}g+BtHvG67Q7PQuJ zoePK-ROS^e6MA#>&pCu7;=zjafX}dXf0|6}i6;N&W*{PCL?c>qoV0pkO`2^sPrJxm@#W|HU((-V4N zLWWF2f{{&ndb($tOm~m{NM_6vl7TdBAd2|d#T8w5b$u;9h=@og1QKu&BOqo)C98tn z3<$^y5e@l$zo)8h-@Y@Q!QJ2Pe?R}vZ$3%iTUDpdJ$35TsZ*z3s6pky5-ShmjKV)M zHgvl2OYVo3|~LNgc8TYM{QkX?^z2zJwV zVcx+LaZklfU&q^p5(`I`a&y5arwtDOAFz`|68+i7D{eZUC?wZA@TPJVCgC+FGXOO| zNnJ!g?VibfK#I=qT99(2{_yBYBtT7Ejt-1!&=f5?J^72~3t95J75~JpXs+;!`xp$` zjUfV!8Gp84f9u@*$&<C;%ypbaik07wD<{>WJuJ8!VOkAS>0#{ffq=lt zLucfJcr|?(hgZFCTRfp&?%Tmp@JL&X!eAs z6PBY?>f`OHEL~>?n+e z(6N~nHe&loJ%K8*g)c?5TJ3a18lDq!sQ&EL<-X$igS^PBR^@M?qC|J&Ia_ zuMt;xVZnehZ}u#h_+NHC)?;#IB<>w9aY4dt_%<5r=Tyz1sq$Rb(f>+kgg7H%Djh6* z7ParMy>d+Y?W}`Ih4qw;ihUJWkv3|_8za-d*>mY%7LTa7DZt{sF$Oj92*%PC`*7#e zQfMEl==aq37pS9=c7TTC7}3x4>k1(KyAzNb$JTg_Sfvb4V%?0>b^R6rAaZqGyBb+r zxx2eiNn$Ed$4KXOBVJCe>I)$S`#40`L1=X6vdX#=Frww4M&d&KLe(r8Y zLw!$l+?nEM#fT((Ng%g<9FFBb@Z8A!{2ycG5wuo)4%6E>?iOdU`f;u%lcpf435(Xo z!63&*8^>*{{I$DUNEdxGm*J&8cgFMrHyY{n7Z~uVK4ClexaHLNFn3l{%~R-UFm~%i z^s?-)3iCt&MOg**Y<)PuW2CkBRX&q{;!9GM=fc;r^Vfgj%=Wobv(0MEgIT>!Fho+?}inFr*k!bhPX(bPs!zn+N|I*Z51dS6~81$El@O$>c`R|c+1tk{>Y*mViU zifow@hIY;Z4&gDoFm~ID_j-(2>i0BpA~D;y7vDxFx|@$hw=;y@Kk0Ykol)sYXw0=E zrupZc#$g<8Y5%#urckl#N%$uGHSh?&58qb(d!Zk3v>15hRmJ^RiS43R$zX^ymZk$% zs02neJ}k3x4_9P=2F}4esOWo)FFm86u^+@6wDoA^cGxGZm9ZU$TyV@Ee$ASg4(+gC z()MA7YNBz(h?i>)rQk=07O$qr>^b8h_LEJy$>R}aBdRGo8S{BEW`vF(4;kBp@ww`Z zF>1t}A3(H_x&}`SKRP4M4PBjIT?YgF!RHD>woyeQw)T5rSKgYoaJS5 zM3Dqrfh6snRYFpLBxPgYDR5DG{fG)#hJpL7|6 zh2QGr$>@~;H?eR`Y(Y3&_ANbG_#!evYanp-$-+4R!3#zWJlp&a?22BlxaATIRybmK zZY)L%*;nA=7|Y%W$I;WL`VORWeGO2bU3ijAg5}Ah;|u>F0Yz}(A;_Lkc^_VAoFZ`5 z$-;ItMdpm`Eu`^E;}VBfpDZ+}_)&#gyflR#!EHu3-}^6tnn!rM*Ar;Tg&Ty+#^TyT zRw=aj^jRQEzBZmO@Ks0l!rKl87MhU@5!T*{UECmFh$0eQKx8kwGwB41mW5j5u;+|w z;}?O2fh%VNBMzBK&BLxqO-u*Mq~;+#sX0lhcT9R>mJ*YiZ#a{h(w&v`1ZXUu#Q^1y z?#kGzOZqaJ6(Ui4M9FI=od+Xn?jwbRP!w)`brby?&`ERQufn8Pw(rwuO1MOHpMNfD z_VL$`^c~4e_wQ*!3&d*kMSGZ>J{zOPn)>V`m^=F|m0iul+aGI$YU=w389-tERJF3> z*om-vxQFXiN>wu^bb<5advLb#@%rrI>0s4?-;K>-?HwQOV-X(!ab@m9xu>L>}r-}AI1U|u^z8R=i*r(TiE<` z$$BuXKb?Z|2ePm5%y%$+Iu7#99+~@iegy!r25O4;zS_p@;rbCj!|Ji@Q+koC?H=4!*Jrp$vKW=}bi8n$n8f{nIZC%zA(a zV^3jw^w<2kV$a{>bJ!t!nN_jtHoU4udVO36iz%^N+JJKIYyO&7iD$~zv-bGUv+6P5 zf6F2yFs?cfIw%{T)p@Ji5MA@fid+5_PuUaPj55H#jwQR<=P%u{7)!^d7QVqme4i4@ z)ADiD!GRHgS||XSv2efF{9*gQ@A=SqR`#c}p6GkAXFN%jyJxwBkHqEF4#)cJzwt5} zoV*PVVoe(Ng@K)uasA65Xp`jc`8O!d{@ztsrUr)K!#ht{=}T4rxh=l)#SvInCreZN zUff%8%l(jvrW~dMaDMCQ>9ZG)ujuA5^AIt(wW%2rklZChAC;PmtkGu{M{_Kxl|7GE3B>wqH%%EbP{=s@3#Y&)35Y?xSA zar+@Gq^~HCMQ(I*$UWUAVh%CN@q+U(XjbjzBZyy9Eq_%6qCv%G^gl&0N$L>B(OLQnCjH*TA=g zfc$q*pn=av_Hwg8{<~7TUm+K6)|&fB_JRF(V(n4hLbkQ99{~mWazxzMhC4b=@M`&S zydeUUEg#_X-GS_YmY4im;>vBtB=bSSWPZz5Ey&-!9<6eU5S|nrl5PuFv2tk@Ns|p)uvx0uMT5 z^uuRkKNRm~JluGMIS)5J$p_YS0tI$1@Wzvh!;OzJ602-qHtqWXO+GBIjX;=N_9U;R z&NV*S910)7L_|&Fku4vPE3A8v{FCsL&Dq1v*~b1rDD$M8=z9(12*l$~?*58hM8S+r z*?!zteT*LiWxH@S-z%B74+Qt_o+MPlLI4jXCEX1B&tc)2Sbv`xmuq~~KR%zHhi#~t zAMx;pUEcvBB*DI-w4-_|c0Gj`V%d!&P}vvYE1B;c8UgD8x}dQ?KM9(dM1i&|vZIex z?D`Ed>})(Tg7jTcB+mW$$(k%zT;>HVsO)q z!39o%i~XuJ-rEoa(KxRa@&!=80tK_I0x$Z~pM|};0U^{@;TL$Si`xr7!R!7yfJ(8x zg53=$5~>#yZ|L>Gb-5>c8RTczHNcDd$=?mViE0PF%MjyQpRQG>DA5x|{pnJkJ6~AH zb~TG4!(Cj1uRUo-hdHwudZrq!Z6S8xY{eo&5|f^WduyPpuzry?;LZmq)R~vLw-Q?_ z7Rzui|2(<~L_-;;?|@;>qg`+|Et@&+(z+HaNM0D2+5{&7ZkocKq)pjhG|l>bK8(5y zPAhzRUF&OQh}Py#>B`W)Mn)#gHInl)B+k&Qv%r^H-oxyfzWAKUO#e# zsD~d;BXM$M5|j3%XQGbB<|bW%0~sI`$7lT<1`gJNaUh-l5lYlF3hVS&PPgUm+n4e; zlgq@8n$4XCg)|DZWlzhmAV(pD6Y~MQksaM^8R+?@Kq=%Vq8dM1!*WALUFKFGcjlUR z;x6EK*Wtcko=ql9&hJ9r{ip%lZ#@;)96Eo_?NNV0&-6!bCpgOD<7Boy>RbZn${38{ zaMd2|m;kE?B?T`JkCuaDqyjTj23q!FSIH<;6jq~%{V^N;cDk0=5Z(4Y7UFj>0^}al zgZYo6R5|R~81ajp$E%arF|!!r0$_!~+Y%nuJ{Fu6OZopJpr@3(`+Y6KS+N9Ct&>|FiNwKUjB z%S%eA8oE*u-FJIbM1uT%Ybqi)W+bUnQb9GLO>VZ|(`B1LVbZs;zw}jcM-=r(YrdA! z#J=NT`b+_2|Mu*+$n2wQ54Ps716704A1bC#!1Cfj>Hlcb#njI&`N3om2T~@;7xFhU zIk#kgX>7NO{fv&Ctf<-f;JCuoNKx&b_J46S@fOAtr<1&)#}hAuA>Q$X+$J~N{q19s zQLcqE_qQLyNA&&eM~Aq(-KDSVug3H>#;h1BiHTCN57x<_G1!1*+CO5)8@Q^Qhds%F zCG!H8?}z9P8l-_{t(y+3zKL`HFeOSqi(Mo@MviN%!UzA?&#ARMlSKS@q z`3HUd+s=W@2@Z!@Z|2W|t#o*2?y8JLg{KKJ__~kLIqZ+eS*n^$d zz6|K}Ix)z1EV?NDI&M)`sNnuCqS`ZBkibPT^SG5p7xYZwgZLDR1A~#J>*HiOi;5_O z)BjPBS?t69G4gRV@VPI_eT?o8tJq2SP=QmA?)wYTI-d<>uZ7(n%ZtY#d<+ZwU&hKW zY=J+H+T8)M!`#8%?6QyII1#Er`pd)ef{j!k!b|?}d5EsTk_6b=yKbe2EPHK#Zq-LQ zUwQ!{b6flKU-%{}02j#b!LSJ1)#uanz_o1HCXxRVlXh;s6TDM*p=6HGaWau0tg^;0 zSL~V&v{>8qq(8UyNIj0E@YfvAHa?kY;)d^A#v&2bsm`exnCQhp$1cw;_;vnl$RNzSC+lmTsn|tx7DVm^agXMCx{LbkUAVTm z@knmfqxIPbYaYlp-si8l^4Hl_cVJ!kwt2A2q1n%@hwFe6)L8ReI))E@S#9=S45!nA zpXa|0sl!)(4sTRuIV_Fb);sfA`fPGrzntHpUhc|o!pp$hg-c(1Hz*Npf|LGGe&oSg z=v??1mP_Cn%QxpTm?7GF{E>s;#FMZ}`%Z4FMB<$&KZlOFMfE5;2Lk!^ccE2{c&M@F zFBy79{IfFm`D-$FU`fe+aG%uq_ski&4I7PD-33RcKl^I)p6L(lZQ>TzgYd6EI4*Ci z{EM!=Ba^R(<&CD4Z~hnEj1FQ41Z3$DM#POzqHRpa_o45F)!Apj;$!(^%nu8I*f30f zayy(#&*Xnd3?q($k|W!uz@->DY*keqsvCI`Y-kAfsG3zrwhsU;03NNlg{?!A*vKo> z=RDBF%WtyJu#|KQT+WqiCVGrX#PEt;ve;1+9Yrt$mUS&@NB{^nt|2L z+23$pV%DpH?9cNJkYOH+coGT(d$bo_RDa0-UR*es%k%>%|0FPpCC$JLz(OiMfYl>h z-~BkMA8sOYsR`0l&l#e{wQ0w<5Om_MQ(a@bsc7K)5HVVGwhPsNr&mhsC+tA`) zw4qwz+nQ<$y$D}O(}CZP3FLO}007;saK?XTHTz5P@E?1mOL z2;6P$9x;bfn5x_y0NG>mf8mCJY(t>1OlsV*e{rjFZqpR72uCVw7GclD);cu*2k^bz zs+sI8|Cvwoux(FoP4&U@PxFZ1n&&*J+)*2w%wP18QZwYjh5AA_Fei94CU9r&)c z*P$SwuW@NJ_#?(ORR&eX!rb=izLVQed#%wLnVFqG9|WNPKWy za7T7&cO>@E_dT-x$6&K<@$?g^>bXzDs=FNu1VitavOfo+lPxp*`g`{2bhQ4_S$HU3 zI@to@L?8N4dK^Yp*~TdYx8=VK8Sv+98g~j?j^0Ut;`@S~xmAQedwyY^TOL-?X{3Gj zJGWyhb3NHHna3@R14DiQ9~~qRhSg@f@5OuQR=j@=ly9KI|8oAwKk>T_Gtu7G<6OPW z+0OOXxrX&@r|_dNWBxL*`f$TcFvc2q8qE;LHNUp)SGpl)pNF$2M*+a z_GO66%ITA{xM6)@A7`)~e-W$VW$JHM!4ynI1+q`1t9L$!^`O^Fli5BIjj&?ZjSOV* z4P1yVK4SPY`$<#bZ)MSC0$?wud%>0b_fU+T$H#0tH}L8GYf-lEN#D9BJ?0IZc*?=b zOLHH;p9ypO^Vc#nTndn2*vAujs$b95bbt=zAO9l8czd<>R^R0Jzyaf-hT~Hx=)vlY zV(eVD=qZH|BZ2e^?n{9;>kbCq2GRz;<}E)43+TFJw1D1AIx`vZ=`PHlTV0Kd#Bppv zX1qVQ99L{Vvdx#@i8?Uii7`O9x4{&{R_D5Vzu!auImSqS)1D~6ph5~UMCTA2w^41^=hIgAG z!ygLdKC13{fEf3%vYyGmdYqD6(RVh7N9doRfYsF{0jy8hi>%GLFUpOm%?RHqVRgV? zGfpR?JqzCise;*`0!v@3*u4>$>R)>h^HMjBU|%`1qHhL~!_sFnekR|d1~O=@Se-l? zDK!sa?)IVAMvdmIT*a>bQPdP0$R_x+yMP>&Nmq*bUsx0eo`>dt22;H!TgLVE*Jlq` z>>dL&sI@N4ruKauU*)NZ{mck^2|ocOzZ=QP3#fQF+v@Ra@tnopOUHoFwk$YJT9zJM-|o^z2W zmM;u>EX+U*+F##`YF5e=Fg+1W8C}1hg|6tEf(p{Qh6C3u?A?=voABd&7H4~<>;un3 zUkc|ZlJSQscE^y>pWBS(Ex_^za{h3GO^z1+gj(LYc@A{WKOo4p91h>B$#-M~6wa~| z;un*6mc;cz41&5{bv+Yex_bq(K}x&*m_bOJvSb^k$lc!ocjexW!mG+vH9Pmk`ujki z)tLPmC$yz@4T3@?zg(1=hlFAya^^(D1J92wk-G;fcE1CxM8e&_!&ek{ zS58l78|H|Ogsy5L7qk8zdOm|SW@xu0gS;#}%%;q)Y|EWaS0*)|OLZf@hwB&c7UEjs zQTa{q(V{It9robBDO|fvHiudP+0X+`cH}q?*d7H_!(k%6({qgVsDy>Snf&88w$uRR zR6D*NAlZ?H$xQxsNwTNvO}$I&{}+{OHa?i&T9QkW+i$NY()}o5P7LXVQWz|PQib`- zSRuX|r9r#z65{)@IG0WF?@>@p+7;dlmP0u&%%4|+UkRV8To&<%ETYzQJU8SxtJl=5 z(mREnusHHhfyXaj!FN? z?nj2<=r%FA!@(bVO$?Ftvp2|dQ)YHbb9OzZEIKD1uA72L)Iy!j=i$1U>M;ieKY6&W znjs`E)XzHo4Dfllu0;n`7j?L9y$*NsdAP1y2YdKz&fc{HkHFy_yBWlvm`^>JnTiV=*9!P=*zi>C2~W6O{Zt1tUUj2h4>XCi^Vr_)I`pnu1J7sBxqpvgWE zfSDS|j$)UK5pV-M8<;D`3lzPdGqMe|1|RQfVt4#$DXr;#zbNPHvOB(u@w)rHpL3$X zeh|(kd@*y&T&&&T=T^w)2ELj93|=Ta{Q%72Zj45&4SF~`@*dXJz^6*(A^Upa9e*dz zc~xE!4eb^959JjQ4seu|TZa{3k3mSF)$%* z#L;=M8nEI((Xe9)i_YJ=e}@D6DyU|Yx=>($@8EqJ@uJx7zutj8j5t5cs&#NW)93Iy zN`Pql>Bb@LY%oRVA7} zE;@s&0F{YVleEV$#g97Od3+RaBpSVKP9aFGx@G#}{M%6m$8qrD zJeQpxN`5Q+W4`*vR7o8f$d36O-Ya&^2WBn+fJ9@NhTzYiL+L==l-#&`Z%4f`X=eU& z)UkdP4R$DRe^5o^*IV+pX*zFJ@hHTZh+mW6Eb%>?;TYWcVBOk-`Fl}k>^i%1YQbg} zTQ+gRbl|YH3m-CI$U7S2w--MpjlYM%e6{*S79-V@`IMkh6yEAkcmkb-z>e0i*HBC@ zEBi_2Ebt;LVYZqR?v-y=WDoK)XShCdv-6oxO6TXWtOGgnzy8}I%kFR>y8v0LzhA$1 z9~gdrJz5>Q(HDT?=*#qxaiO8>}6*99=&QBjgA;vL9u& z@=L*C=llPxF<$?BYfH$I;i0R4>wB$LIcT!40?kp5l`5d8@~vbqiac>GybRCeM*|7@ zGcdqV5x;kQ4ch;Vg(c}3n0DgwDJZ6A@}ELWA+GlnN3qh?qWy}qQPz|VJRYd{7hr!W zpNAkAe>mtd^!-`r1G=71Ds&?iY2O35sgAuu50&z9oCU}sKb*CJ>{E&@%fS{XJE~R= zvZarNJ|r!LS5>9D@~h1GAM$IQZNQh~r$F#6K>$I?caq^K?kMJT6P2{zx*=rc zUjnMN_wd!3(&hKm_*VJXU~5R<3ExqgediW&Ty*CBq$2yko`%zEj%=GLT@%Z&kYn;X z79_wic?;dXYq*qcJqpzc-`YXtqQKThtekuR$9SFd2AtQwfAya--{<*a_T1NShv{gX z*f1vl@1MXYfO96%+4&o8M-W>#myHY@_|3%TxxWz|4hLmm?!hMR${umv$v;ChzdwHJ zu8Eh9o4QNvD5Q+y3l`V!z&9beXZ{r&+{IKsFlXV&40eK#=&&b1tj{EQ-U zfu9(dh5f`gmcpL`|CGN5zk~Yz2T*R_d8!EF*bwKS!-oj69|+9)*}Xf^Mm5#1 zF$$JnzV&1L;*05b&qeoLhkW#0z!<4NIr$mR%LZzGnR&jbCn$@U%n-L|$tq2uPS!&_ ztCm6M#;gGyT$7kSXYSMRf9G~ijE4|000n*gWCm-Av6T7|6pK1L-^vC>JxwVs{*ACk zT9v603+-_T4 z!FWd|*b%lXQ+7O&wv*vdq9Y#tNVwg~q>@%V;j>nyqVW#9EfeiZ`=W6>)g2C{swP;z zF5p+c>%yJ-C1t7aRs}(ldPSmyVwtXV6j6e}o>7^aVMkMTG`=y|6>Ycdi!5Kl(jj|e zIGKtj;&wa}YYQjs^#HamYiL;4xTdjTUCWBbrA=$Bo`n~$yLf>w6WK12@l21e zBc8DqRL!rt*z$oopA|}Ey4vG2P_9f|zFCWcdQmN5gw?QoSxZxMQ`K&0}>UCwM9EJiA>54wzVb08>3)1Xav4!Jd}uacZJhoRjx!gQ>>Nga8KG=*_KLK zzV=M4TR3OUMy*Y#Oih?z%?8aI)*)*w7;o2c0;r3xa>at7&S*Sr`64D7RaKb+25V-+ zEJSyPySgo(Pdy~G1hMI0vLl?q}_)?ijB-&&7RtM+cr<*@r_*ugeg_C&cPKJRc6i%fQ3M6-p`e`kL=G){T`5)`GR-l}edZEUSBoi^Pe1cVpn(oT9hn<&o@kBV8RAMIWClZaf zn_S?l%9RY0y_R|?`9~e1^u$>r1s2wd*;}mcaL>AEJesy6K_F?j)Pp%tr*^mpDQxDM zlqW^A+)hVh;goeg@Y|JD^CI#y!D3-_!_%$K*KA$X9^QCSJk!+c zR#n3CMNJ#VD=JtdAgVc!D7>Y^F}4Qs2y)c}(u*JUU|n4qDxcWHPsV~>kwh{EH6=(Q znRrNAoG??jdruP8iskcLl{2rdZ(h|n%c`=c#x7ofpZW6^S$xC)MOG$W)N{6Kt&l|K zjmE*)t}dzxRt{T2G8luNWe6=N8B9jQI=CtY#mN+Vt-_JI)@Ea>s)Bl4E;;~B-KwOv zTq(^_p=n6OBhVyJ$M&XZx>H52>`X%D>{y~bEMK2sL4i4nkQE66;t4w%@6JFj@R=0E zuB$5?O3$+{UQk85k1q+`WTp>>jITZ1mO%&9 zVI}z0cBr>_SbS0;%f_| zC?MMfX`+UNH{Un5tL1|wLW38|x!30^32RT;PUg*L&1U7otcB$hhH6iT+oi=z9C#TP zVSzn{+GtUbpq=I&``K{!!6%(hLrX)FRHz`iyBc7#e^l+b(EOyAi6Jkrc#izXd2~frwIGH!|lO11`MuO zA8eTf<`kr_D|Qtsk=4Oc;u5Jl;uag2UkKHCP3xdAkiH6PAI!%#mT#%nU1N@UQQ zsC^Pr)lL+fVk(F(5~fWzOQ!}>e1Sy7fk2t8e98b!UZ56GwUW0t)|TiJHanJ*kMch*U8);Z0#eaOq&PH_?!lP7 zpg0o5Fg9g5F;LjaU@;gA3a(;AxCi=|V_8=oL%qhCL0f5DXL~ZWPL1YN0*n?_v9s*T&AQpt`ntE$c)kdhqty|Phm(+J zj6}lmjaD>5wUPo)oHt*%3xWnk(M9owViNZ2(JS>Ulu{U`H8lq$#aLHj%uuAj<}^AZ z7%%O!>AQ%46`>7m!;DTOYY|B))P-D9xdLtx>hmOI&xROafDW4zrZSA?Id(9OM{Q-h z@||p@FGLz@t@B2;gKQEZZW0rLEVgKG$76!*N&&b)1hKM#sNZ0U`II^_mYHu}_1wAD z7tgy`>?gp$POUd1VmJ1n4Z4HvK}{|&eR;{}y#2B>!BVBE}tVOnU0 z8MDPQskGe*?d*Kb(t~*?g8UL^lWKLadeLCxVR7TQ{Sfp8Xb_>SA<^9nRohA7vFBA+ zFSM5?!(qEM5lKUPhV7*ZXkYOF&9R%}Aq?@<-^xyUwNmgI06L|i7uhLZymruZVKx(>okyKfDV>mAPmNl+u2-IJ>vi{Ph=BAa` z*g&lgfGTnQ{p30Cn6F+0$pl0 z6l_?P#w-RMlJCbXgjLlv;) z(n*xeh%+k1YmfPd$~PjcfD|3tXJwUjW;vM@8cWDy*M$Vpu_bs!lmt>m!#xN;QZ1q@ zXV1_=m_{W+RnUJJg>N0Me7mieg2)aMOofF4431n=`q6F@luLTBD=XI)m9g>nD|r)l zqbsSjI}qEJg2Th7-q_=tIHXEKJBlBfhnW#+55;oDpcJ4&f^j<$mrjLkqV<~A70Z{e zT-Um4DJCA)wYD@i{8jk^jrIP<6|JTDjRgsBuCWk@WRU}x3e(p&2*ycw@C*VGPIGbx zJ&oJ(2wfvyeOr6=A^hUi7kC?r63W~)X0**;BmK|9^iFh;VJJc+v>aI~UwP2(Mr#bS zPXrzqcwOBlv+L=PreGrWg5NR`gq8*2gsCiDDf78zEnL}bCm)&!+~E{IsOylUS*Z4P zUk;zC{xfte*{rZ`p}=y0olI@fZ6UPviVJh8PIvET6J*}z`;M@Q6mPIuR&vT(_!2NaMQ6kZd!m^<&{oZVRhkE zV}PP}qR1yAVV7u_<)W3Z!8l|VwuZQ$4B8^S?3>hN+G4=GA2hq^m2O6i1k|#|VGE$f zMfowM`(MLL3yeBI zx8LF{u)P><+$p=zsbYpMqsi~4(}iNl{BBrMfb!_sX;)6gtReFo+K~^k$~grWXI=Rm zp)?~qG2>UUpo64t(SFiES3iyaB9h7(&*GF z@h*qPNJe23l&&37rUUWA9)S-jEgD5-m-b7~>0%gh;!t;CtWTxTH?ve~%%_H5itkvI z0n3fXc`>Kqm*Xf}Y&1o$U?soYQ5Xx6sv%ULX~aWuOUJ44Ci?(Ke_UFEy_mPY9nIQB zif+|LU`qQbW5IyWZT4c_jk=fuv@5W-gO6=fmG>AOU7H3Wa4YdpImUh(;b%nr#sC{*G zwNNimus~<42agFhDC4IT*-$uic|#_n=V|b;a3=d4DZM7p(4z4q?7?l2C|l@<7136c zL{td|)-+=a<>`Upp_hY|2u7%&=o&Ofh4q4$&1i1xeM;dYByW5JpjTiO8ui zb!1>XvmhnKYEojU;m|taLJVUVZ@L&qRt9JtI5J;K&lB2m2}1gm0Y}{`x5Yns>-MsE^1MKp`a_2g(xa-BLT=smbe`POuGIGK9j)8&5c`@ZCSRgwsNL-nhY~HTzO)q(M+&p zx^320rEK6EY2>^I@Ze`zt%~JuQttiUb2+U zIZcyE>I^E!_BHCS0qIoK6s@V+@%%*56x!m-$f?dPgXZXmEa~|1p0Yx4+-Pen+p3~l z`Q75DYAZV!H(@+Tux(6tp`{khMO4#UL@-`Hj@dHZ)@E&$GL?L3^Hfi{$mhXD8$X_8 zsG^ikf=cbVzp>TuQtD`GL^+Io?76@pXSQ{g16R5Ee+$e1XZXWPb^n3kr(lw-kCyht zh7k5OioWSVUxM`kvP7>_oT>Em%d`%bf*RXYwQ#AA|70utZ)?Z@KWts@I(5IZ#dlPp zkJ&smLFcYs3Db>LZto!MO85|E%6TD97xrl~?~y$Z07hD)gT#N!e0RwBg}a zf8dVM@px^l9ZKy*sexR&hAcg0(^2iF1TV6*)?y@8In!AfLKWs(5rQB-RBtQlhH5xI z8irgNpf#e=uh7#_ooeI+3nL{;PqEI`9S&Mr;_B-LlS-a%f%I%Kw&8HJ6WF2N)qcS^ zu0=s-=cT%Go{kx+2bRjfkD*MxSd!}XM9 zKEoEpKNQs64-eH94%rEA-O7HxL^Q$F%@>B}&PIwyO5Z{=I#ru7?M2&HhB5!IUQ6o^ zHdGYV^50jl3iDghL98)X6T)kw7_v^)dCa@PdQJ(`Y}J)}#HrM%G8z@Q+0>P)g69Qh zUcAKmr4egmL3nfhm6xrmzpQZ`7H6znQGcaZI~WE!=KNdMU((LER7JGz!V+?rkPNdy zaQz9F2*+xDoYceGRR&-Qdz#Va%Teme%}uK8@B(;v#U`rOu>uhs2bdX3MMFO9Q^>$2 ziQz2fUJ)a#iJn#o1e_O7s5T ztVp)E##-n5{{?~jZ=g-{Zl9qI-98{|#=r#_u-=C3ff4oA{f*;dlk?#nbVPgN>WRlTUzMB-bS9>!rUMUf!k z$bUOU-2CaK32RhAs!-)aUHC3uV2D%Hp$Zgx^r#)UdJCQk@rlTfSZCrWX_cC( zoT<1BTeb_F#d3M9k&T8?@oNxFh)S)e7_{>zEMY3&%~$d#&Yz@E1cDey^Cu%=ZEXdKVCuwYF-;J0)YLW@4JD7CeJQA$A?A53V-^6H3yCm-EV6t=NH} ztpi@|D!S)pX?%=;Y0d8-d6q^BA0wS}J~Xq`7W5@5B#VYIk+sEaQmN(k;lxJG15f$1 z=N4E|Kt((jaytbevlBeFvQSyCQ&j5% zO4ip)cV-#5p{I)}Us?zGlv=8sZCA$E`y^7{w2w zaC?$Zg&uj_$U(LgDlQZ8wJ44&Xjj&H7lhAbGUW_)?dbN!>P_JoDifJV8Nt_tpT)1a zg5@)++GYK1to2<@G*|W3@-g+Qc&+cMUcO3uUdgv>VsoSsU(?PfA~4sF4oKppNAS&` zM>s5|ho|D=1zg_Vok&GdXa03qsmtYMvU!j|x|3njipIt(X*{lUjpri~tU*Opr#rV` zYiueQ;chi-VB}~S3!A`H>^i6oVZR{Ym{OIXfhPQmb%)StA&oLOe_m+{XwxZBpCx$~ zR-2TC)vgrPt!<$eL`LklXl3Fe9Z-Nsi1V$;Pp5cYrZ-iznNG4RWVC~hp_qqh)pkRB z@J*PcGz?;}d4fy*w8~)wn>b>0c5<|1OZOH7&;gR>3ZW#t)d`VoiB~-uLQz5?yY4#> z(-!WC##c(_(!xtZvG@`sn5*7O*0t4E)_ONW%%oBc+LhPfi|B&rqhh(}se-R!Q)OG_ z@~w=3MSyTSVls#+@)iCUCTORIvmM2?MzE#_#X%nf!E!+$`|(QH5g*Rl;L?&RI9?$V8W{WB-QZ5nm4Whk&5&4{fUa;o zZY)1L<(){Xbx%q8Fu2xo4`l$RMG{!U0mM!Q*gK*XBV@pfgK zZtRFh!*)jlXNO=@t!Bs;S*G=(FVj=7qzs(E4llm&M>S%n4YHeKE5<^exR|MGJukX1 zF6(86QiWC$Qpp754s^+}#2IoStH-^(8C>z`ySA#7QVk{6IThS>f?QVV3Kxu|Z80wt zIZ`gmkFXe20D+c>BgWXH86$F-$3CX@9ox+s^#T0D9 za0g>(`X*B>6L*CKEXb0Z@A41|jZ^o<>q0<>Mb2)h66ze{qH!rx5m_miXV7Z8DJ!_8 zPTo&!`v3O1f5Xtt&;hBADb z@bOZpOC4_wli$FXd)l7->pwm8_q_RipHXlv`ngs=Z_>|$`f2hV z^MtLx9r`<$+&*;tIiDOl{z@G`?o*}dx9(Np-|6yI>hwPST&cfv!)*%g&5xDlH*}YK zKCbh2*53p-g(qFzG9G`kFHN zJBCTWZkY6hPEVD=-!n}5)?w0b7$*J3VbXKMq~9`3`fbCce@ds{p`WJS%=7cZr2msn z|K~FKzcozycZW&8ZOxjM^~FFj0p?=b0G zhe^L-nDm>5N&o0D=^q;=-IROxy-GfB*YKu(4d2$^H*~t`AHL$rXY!l)iT9VvzezXx z`Q9@5jeahd{)o<3F5UDG<3_G_5&*1r~3;No~qL?(9fqdo;4c&qdNWy{k%*+&1b5roYQ;C9p>X~r-$zZ zXJ)_^D64^ZoN{VOXbv{A%yAY5833F#6{0hI3HG1Lz6l&87)?oDo@)p%pm=Re9Hv0E z|J3yjH5ZErc*C)@XUX6xOiSjJq$q(yia%HB@4V1^I84O>*sM#{P>Tnd|vo-bo{ycY3O{f z4lncAKeKiG2R!f%2Hq3jqQh(SbFF^TF&)1}KMg(Gb@)d8G7eiDSn%H>oyfWQ$J1o zL>-=_pN5`y>F~Qf@Rd4zfhYbV9j@0;gQro4uhCCK|A%yVqkbBCuGishdrIm5xQ_p_ z2mWpye%urPY#I0wxN3-hXXvN-ZiNmvdcJ$Uj(^_*92$Z@L%+`xzfgx4>E~koluY

ncb^P0K`xgJE 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 diff --git a/bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-g++ b/bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-g++ deleted file mode 100755 index 0eaa309cb75eafa2975dad4513739f613b6cec03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231400 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

8i%GWw{(0g`Sq4NzXVr|K}-wK=U?-R0~ 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

8i%GWw{(0g`Sq4NzXVr|K}-wK=U?-R0~ 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 -#include -#include "crypt.h" - -int totfails = 0; - -#if __STDC__ - 0 -int main (int argc, char *argv[]); -void get8 (char *cp); -void put8 (char *cp); -void good_bye (void) __attribute__ ((noreturn)); -#else -void get8(), put8(); -#endif - -void good_bye () -{ - if(totfails == 0) { - printf("Passed DES validation suite\n"); - exit(0); - } else { - printf("%d failures during DES validation suite!!!\n", totfails); - exit(1); - } -} - -int -main(argc, argv) - int argc; - char *argv[]; -{ - char key[64],plain[64],cipher[64],answer[64]; - int i; - int test; - int fail; - - for(test=0;!feof(stdin);test++){ - - get8(key); - printf(" K: "); put8(key); - setkey(key); - - get8(plain); - printf(" P: "); put8(plain); - - get8(answer); - printf(" C: "); put8(answer); - - for(i=0;i<64;i++) - cipher[i] = plain[i]; - encrypt(cipher, 0); - - for(i=0;i<64;i++) - if(cipher[i] != answer[i]) - break; - fail = 0; - if(i != 64){ - printf(" Encrypt FAIL"); - fail++; totfails++; - } - - encrypt(cipher, 1); - - for(i=0;i<64;i++) - if(cipher[i] != plain[i]) - break; - if(i != 64){ - printf(" Decrypt FAIL"); - fail++; totfails++; - } - - if(fail == 0) - printf(" OK"); - printf("\n"); - } - good_bye(); -} -void -get8(cp) -char *cp; -{ - int i,j,t; - - for(i=0;i<8;i++){ - scanf("%2x",&t); - if(feof(stdin)) - good_bye(); - for(j=0; j<8 ; j++) { - *cp++ = (t & (0x01 << (7-j))) != 0; - } - } -} -void -put8(cp) -char *cp; -{ - int i,j,t; - - for(i=0;i<8;i++){ - t = 0; - for(j = 0; j<8; j++) - t = (t<<1) | *cp++; - printf("%02x", t); - } -} diff --git a/bin/glibc-2.7/crypt/cert.input b/bin/glibc-2.7/crypt/cert.input deleted file mode 100644 index d843fa8a..00000000 --- a/bin/glibc-2.7/crypt/cert.input +++ /dev/null @@ -1,171 +0,0 @@ -0101010101010101 95f8a5e5dd31d900 8000000000000000 -0101010101010101 dd7f121ca5015619 4000000000000000 -0101010101010101 2e8653104f3834ea 2000000000000000 -0101010101010101 4bd388ff6cd81d4f 1000000000000000 -0101010101010101 20b9e767b2fb1456 0800000000000000 -0101010101010101 55579380d77138ef 0400000000000000 -0101010101010101 6cc5defaaf04512f 0200000000000000 -0101010101010101 0d9f279ba5d87260 0100000000000000 -0101010101010101 d9031b0271bd5a0a 0080000000000000 -0101010101010101 424250b37c3dd951 0040000000000000 -0101010101010101 b8061b7ecd9a21e5 0020000000000000 -0101010101010101 f15d0f286b65bd28 0010000000000000 -0101010101010101 add0cc8d6e5deba1 0008000000000000 -0101010101010101 e6d5f82752ad63d1 0004000000000000 -0101010101010101 ecbfe3bd3f591a5e 0002000000000000 -0101010101010101 f356834379d165cd 0001000000000000 -0101010101010101 2b9f982f20037fa9 0000800000000000 -0101010101010101 889de068a16f0be6 0000400000000000 -0101010101010101 e19e275d846a1298 0000200000000000 -0101010101010101 329a8ed523d71aec 0000100000000000 -0101010101010101 e7fce22557d23c97 0000080000000000 -0101010101010101 12a9f5817ff2d65d 0000040000000000 -0101010101010101 a484c3ad38dc9c19 0000020000000000 -0101010101010101 fbe00a8a1ef8ad72 0000010000000000 -0101010101010101 750d079407521363 0000008000000000 -0101010101010101 64feed9c724c2faf 0000004000000000 -0101010101010101 f02b263b328e2b60 0000002000000000 -0101010101010101 9d64555a9a10b852 0000001000000000 -0101010101010101 d106ff0bed5255d7 0000000800000000 -0101010101010101 e1652c6b138c64a5 0000000400000000 -0101010101010101 e428581186ec8f46 0000000200000000 -0101010101010101 aeb5f5ede22d1a36 0000000100000000 -0101010101010101 e943d7568aec0c5c 0000000080000000 -0101010101010101 df98c8276f54b04b 0000000040000000 -0101010101010101 b160e4680f6c696f 0000000020000000 -0101010101010101 fa0752b07d9c4ab8 0000000010000000 -0101010101010101 ca3a2b036dbc8502 0000000008000000 -0101010101010101 5e0905517bb59bcf 0000000004000000 -0101010101010101 814eeb3b91d90726 0000000002000000 -0101010101010101 4d49db1532919c9f 0000000001000000 -0101010101010101 25eb5fc3f8cf0621 0000000000800000 -0101010101010101 ab6a20c0620d1c6f 0000000000400000 -0101010101010101 79e90dbc98f92cca 0000000000200000 -0101010101010101 866ecedd8072bb0e 0000000000100000 -0101010101010101 8b54536f2f3e64a8 0000000000080000 -0101010101010101 ea51d3975595b86b 0000000000040000 -0101010101010101 caffc6ac4542de31 0000000000020000 -0101010101010101 8dd45a2ddf90796c 0000000000010000 -0101010101010101 1029d55e880ec2d0 0000000000008000 -0101010101010101 5d86cb23639dbea9 0000000000004000 -0101010101010101 1d1ca853ae7c0c5f 0000000000002000 -0101010101010101 ce332329248f3228 0000000000001000 -0101010101010101 8405d1abe24fb942 0000000000000800 -0101010101010101 e643d78090ca4207 0000000000000400 -0101010101010101 48221b9937748a23 0000000000000200 -0101010101010101 dd7c0bbd61fafd54 0000000000000100 -0101010101010101 2fbc291a570db5c4 0000000000000080 -0101010101010101 e07c30d7e4e26e12 0000000000000040 -0101010101010101 0953e2258e8e90a1 0000000000000020 -0101010101010101 5b711bc4ceebf2ee 0000000000000010 -0101010101010101 cc083f1e6d9e85f6 0000000000000008 -0101010101010101 d2fd8867d50d2dfe 0000000000000004 -0101010101010101 06e7ea22ce92708f 0000000000000002 -0101010101010101 166b40b44aba4bd6 0000000000000001 -8001010101010101 0000000000000000 95a8d72813daa94d -4001010101010101 0000000000000000 0eec1487dd8c26d5 -2001010101010101 0000000000000000 7ad16ffb79c45926 -1001010101010101 0000000000000000 d3746294ca6a6cf3 -0801010101010101 0000000000000000 809f5f873c1fd761 -0401010101010101 0000000000000000 c02faffec989d1fc -0201010101010101 0000000000000000 4615aa1d33e72f10 -0180010101010101 0000000000000000 2055123350c00858 -0140010101010101 0000000000000000 df3b99d6577397c8 -0120010101010101 0000000000000000 31fe17369b5288c9 -0110010101010101 0000000000000000 dfdd3cc64dae1642 -0108010101010101 0000000000000000 178c83ce2b399d94 -0104010101010101 0000000000000000 50f636324a9b7f80 -0102010101010101 0000000000000000 a8468ee3bc18f06d -0101800101010101 0000000000000000 a2dc9e92fd3cde92 -0101400101010101 0000000000000000 cac09f797d031287 -0101200101010101 0000000000000000 90ba680b22aeb525 -0101100101010101 0000000000000000 ce7a24f350e280b6 -0101080101010101 0000000000000000 882bff0aa01a0b87 -0101040101010101 0000000000000000 25610288924511c2 -0101020101010101 0000000000000000 c71516c29c75d170 -0101018001010101 0000000000000000 5199c29a52c9f059 -0101014001010101 0000000000000000 c22f0a294a71f29f -0101012001010101 0000000000000000 ee371483714c02ea -0101011001010101 0000000000000000 a81fbd448f9e522f -0101010801010101 0000000000000000 4f644c92e192dfed -0101010401010101 0000000000000000 1afa9a66a6df92ae -0101010201010101 0000000000000000 b3c1cc715cb879d8 -0101010180010101 0000000000000000 19d032e64ab0bd8b -0101010140010101 0000000000000000 3cfaa7a7dc8720dc -0101010120010101 0000000000000000 b7265f7f447ac6f3 -0101010110010101 0000000000000000 9db73b3c0d163f54 -0101010108010101 0000000000000000 8181b65babf4a975 -0101010104010101 0000000000000000 93c9b64042eaa240 -0101010102010101 0000000000000000 5570530829705592 -0101010101800101 0000000000000000 8638809e878787a0 -0101010101400101 0000000000000000 41b9a79af79ac208 -0101010101200101 0000000000000000 7a9be42f2009a892 -0101010101100101 0000000000000000 29038d56ba6d2745 -0101010101080101 0000000000000000 5495c6abf1e5df51 -0101010101040101 0000000000000000 ae13dbd561488933 -0101010101020101 0000000000000000 024d1ffa8904e389 -0101010101018001 0000000000000000 d1399712f99bf02e -0101010101014001 0000000000000000 14c1d7c1cffec79e -0101010101012001 0000000000000000 1de5279dae3bed6f -0101010101011001 0000000000000000 e941a33f85501303 -0101010101010801 0000000000000000 da99dbbc9a03f379 -0101010101010401 0000000000000000 b7fc92f91d8e92e9 -0101010101010201 0000000000000000 ae8e5caa3ca04e85 -0101010101010180 0000000000000000 9cc62df43b6eed74 -0101010101010140 0000000000000000 d863dbb5c59a91a0 -0101010101010120 0000000000000000 a1ab2190545b91d7 -0101010101010110 0000000000000000 0875041e64c570f7 -0101010101010108 0000000000000000 5a594528bebef1cc -0101010101010104 0000000000000000 fcdb3291de21f0c0 -0101010101010102 0000000000000000 869efd7f9f265a09 -1046913489980131 0000000000000000 88d55e54f54c97b4 -1007103489988020 0000000000000000 0c0cc00c83ea48fd -10071034c8980120 0000000000000000 83bc8ef3a6570183 -1046103489988020 0000000000000000 df725dcad94ea2e9 -1086911519190101 0000000000000000 e652b53b550be8b0 -1086911519580101 0000000000000000 af527120c485cbb0 -5107b01519580101 0000000000000000 0f04ce393db926d5 -1007b01519190101 0000000000000000 c9f00ffc74079067 -3107915498080101 0000000000000000 7cfd82a593252b4e -3107919498080101 0000000000000000 cb49a2f9e91363e3 -10079115b9080140 0000000000000000 00b588be70d23f56 -3107911598080140 0000000000000000 406a9a6ab43399ae -1007d01589980101 0000000000000000 6cb773611dca9ada -9107911589980101 0000000000000000 67fd21c17dbb5d70 -9107d01589190101 0000000000000000 9592cb4110430787 -1007d01598980120 0000000000000000 a6b7ff68a318ddd3 -1007940498190101 0000000000000000 4d102196c914ca16 -0107910491190401 0000000000000000 2dfa9f4573594965 -0107910491190101 0000000000000000 b46604816c0e0774 -0107940491190401 0000000000000000 6e7e6221a4f34e87 -19079210981a0101 0000000000000000 aa85e74643233199 -1007911998190801 0000000000000000 2e5a19db4d1962d6 -10079119981a0801 0000000000000000 23a866a809d30894 -1007921098190101 0000000000000000 d812d961f017d320 -100791159819010b 0000000000000000 055605816e58608f -1004801598190101 0000000000000000 abd88e8b1b7716f1 -1004801598190102 0000000000000000 537ac95be69da1e1 -1004801598190108 0000000000000000 aed0f6ae3c25cdd8 -1002911598100104 0000000000000000 b3e35a5ee53e7b8d -1002911598190104 0000000000000000 61c79c71921a2ef8 -1002911598100201 0000000000000000 e2f5728f0995013c -1002911698100101 0000000000000000 1aeac39a61f0a464 -7ca110454a1a6e57 01a1d6d039776742 690f5b0d9a26939b -0131d9619dc1376e 5cd54ca83def57da 7a389d10354bd271 -07a1133e4a0b2686 0248d43806f67172 868ebb51cab4599a -3849674c2602319e 51454b582ddf440a 7178876e01f19b2a -04b915ba43feb5b6 42fd443059577fa2 af37fb421f8c4095 -0113b970fd34f2ce 059b5e0851cf143a 86a560f10ec6d85b -0170f175468fb5e6 0756d8e0774761d2 0cd3da020021dc09 -43297fad38e373fe 762514b829bf486a ea676b2cb7db2b7a -07a7137045da2a16 3bdd119049372802 dfd64a815caf1a0f -04689104c2fd3b2f 26955f6835af609a 5c513c9c4886c088 -37d06bb516cb7546 164d5e404f275232 0a2aeeae3ff4ab77 -1f08260d1ac2465e 6b056e18759f5cca ef1bf03e5dfa575a -584023641aba6176 004bd6ef09176062 88bf0db6d70dee56 -025816164629b007 480d39006ee762f2 a1f9915541020b56 -49793ebc79b3258f 437540c8698f3cfa 6fbf1cafcffd0556 -4fb05e1515ab73a7 072d43a077075292 2f22e49bab7ca1ac -49e95d6d4ca229bf 02fe55778117f12a 5a6b612cc26cce4a -018310dc409b26d6 1d9d5c5018f728c2 5f4c038ed12b2e41 -1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793 diff --git a/bin/glibc-2.7/crypt/crypt-entry.c b/bin/glibc-2.7/crypt/crypt-entry.c deleted file mode 100644 index fdddad2c..00000000 --- a/bin/glibc-2.7/crypt/crypt-entry.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * UFC-crypt: ultra fast crypt(3) implementation - * - * Copyright (C) 1991,1992,1993,1996,1997,2007 Free Software Foundation, Inc. - * - * The GNU C Library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * The GNU C Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the GNU C Library; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA. - * - * crypt entry points - * - * @(#)crypt-entry.c 1.2 12/20/96 - * - */ - -#ifdef DEBUG -#include -#endif -#include - -#ifndef STATIC -#define STATIC static -#endif - -#ifndef DOS -#include "ufc-crypt.h" -#else -/* - * Thanks to greg%wind@plains.NoDak.edu (Greg W. Wettstein) - * for DOS patches - */ -#include "ufc.h" -#endif -#include "crypt.h" -#include "crypt-private.h" - -/* Prototypes for local functions. */ -#if __STDC__ - 0 -#ifndef __GNU_LIBRARY__ -void _ufc_clearmem (char *start, int cnt); -#else -#define _ufc_clearmem(start, cnt) memset(start, 0, cnt) -#endif -extern char *__md5_crypt_r (const char *key, const char *salt, char *buffer, - int buflen); -extern char *__md5_crypt (const char *key, const char *salt); -extern char *__sha256_crypt_r (const char *key, const char *salt, - char *buffer, int buflen); -extern char *__sha256_crypt (const char *key, const char *salt); -extern char *__sha512_crypt_r (const char *key, const char *salt, - char *buffer, int buflen); -extern char *__sha512_crypt (const char *key, const char *salt); -#endif - -/* Define our magic string to mark salt for MD5 encryption - replacement. This is meant to be the same as for other MD5 based - encryption implementations. */ -static const char md5_salt_prefix[] = "$1$"; - -/* Magic string for SHA256 encryption. */ -static const char sha256_salt_prefix[] = "$5$"; - -/* Magic string for SHA512 encryption. */ -static const char sha512_salt_prefix[] = "$6$"; - -/* For use by the old, non-reentrant routines (crypt/encrypt/setkey) */ -extern struct crypt_data _ufc_foobar; - -/* - * UNIX crypt function - */ - -char * -__crypt_r (key, salt, data) - const char *key; - const char *salt; - struct crypt_data * __restrict data; -{ - ufc_long res[4]; - char ktab[9]; - ufc_long xx = 25; /* to cope with GCC long long compiler bugs */ - -#ifdef _LIBC - /* Try to find out whether we have to use MD5 encryption replacement. */ - if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0) - return __md5_crypt_r (key, salt, (char *) data, - sizeof (struct crypt_data)); - - /* Try to find out whether we have to use SHA256 encryption replacement. */ - if (strncmp (sha256_salt_prefix, salt, sizeof (sha256_salt_prefix) - 1) == 0) - return __sha256_crypt_r (key, salt, (char *) data, - sizeof (struct crypt_data)); - - /* Try to find out whether we have to use SHA512 encryption replacement. */ - if (strncmp (sha512_salt_prefix, salt, sizeof (sha512_salt_prefix) - 1) == 0) - return __sha512_crypt_r (key, salt, (char *) data, - sizeof (struct crypt_data)); -#endif - - /* - * Hack DES tables according to salt - */ - _ufc_setup_salt_r (salt, data); - - /* - * Setup key schedule - */ - _ufc_clearmem (ktab, (int) sizeof (ktab)); - (void) strncpy (ktab, key, 8); - _ufc_mk_keytab_r (ktab, data); - - /* - * Go for the 25 DES encryptions - */ - _ufc_clearmem ((char*) res, (int) sizeof (res)); - _ufc_doit_r (xx, data, &res[0]); - - /* - * Do final permutations - */ - _ufc_dofinalperm_r (res, data); - - /* - * And convert back to 6 bit ASCII - */ - _ufc_output_conversion_r (res[0], res[1], salt, data); - return data->crypt_3_buf; -} -weak_alias (__crypt_r, crypt_r) - -char * -crypt (key, salt) - const char *key; - const char *salt; -{ -#ifdef _LIBC - /* Try to find out whether we have to use MD5 encryption replacement. */ - if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0) - return __md5_crypt (key, salt); - - /* Try to find out whether we have to use SHA256 encryption replacement. */ - if (strncmp (sha256_salt_prefix, salt, sizeof (sha256_salt_prefix) - 1) == 0) - return __sha256_crypt (key, salt); - - /* Try to find out whether we have to use SHA512 encryption replacement. */ - if (strncmp (sha512_salt_prefix, salt, sizeof (sha512_salt_prefix) - 1) == 0) - return __sha512_crypt (key, salt); -#endif - - return __crypt_r (key, salt, &_ufc_foobar); -} - - -/* - * To make fcrypt users happy. - * They don't need to call init_des. - */ -#ifdef _LIBC -weak_alias (crypt, fcrypt) -#else -char * -__fcrypt (key, salt) - const char *key; - const char *salt; -{ - return crypt (key, salt); -} -#endif diff --git a/bin/glibc-2.7/crypt/crypt-private.h b/bin/glibc-2.7/crypt/crypt-private.h deleted file mode 100644 index 3dd26bc5..00000000 --- a/bin/glibc-2.7/crypt/crypt-private.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * UFC-crypt: ultra fast crypt(3) implementation - * - * Copyright (C) 1991, 92, 93, 96, 97, 98 Free Software Foundation, Inc. - * - * The GNU C Library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * The GNU C Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the GNU C Library; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA. - * - * @(#)crypt-private.h 1.4 12/20/96 - */ - -/* Prototypes for local functions in libcrypt.a. */ - -#ifndef CRYPT_PRIVATE_H -#define CRYPT_PRIVATE_H 1 - -#include - -/* crypt.c */ -extern void _ufc_doit_r (ufc_long itr, struct crypt_data * __restrict __data, - ufc_long *res); - - -/* crypt_util.c */ -extern void __init_des_r (struct crypt_data * __restrict __data); -extern void __init_des (void); - -extern void _ufc_setup_salt_r (__const char *s, - struct crypt_data * __restrict __data); -extern void _ufc_mk_keytab_r (__const char *key, - struct crypt_data * __restrict __data); -extern void _ufc_dofinalperm_r (ufc_long *res, - struct crypt_data * __restrict __data); -extern void _ufc_output_conversion_r (ufc_long v1, ufc_long v2, - __const char *salt, - struct crypt_data * __restrict __data); - -extern void __setkey_r (__const char *__key, - struct crypt_data * __restrict __data); -extern void __encrypt_r (char * __restrict __block, int __edflag, - struct crypt_data * __restrict __data); - -/* crypt-entry.c */ -extern char *__crypt_r (__const char *__key, __const char *__salt, - struct crypt_data * __restrict __data); -extern char *fcrypt (__const char *key, __const char *salt); - -#endif /* crypt-private.h */ diff --git a/bin/glibc-2.7/crypt/crypt.c b/bin/glibc-2.7/crypt/crypt.c deleted file mode 100644 index d878ff90..00000000 --- a/bin/glibc-2.7/crypt/crypt.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * UFC-crypt: ultra fast crypt(3) implementation - * - * Copyright (C) 1991, 1992, 1993, 1996 Free Software Foundation, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * @(#)crypt.c 2.25 12/20/96 - * - * Semiportable C version - * - */ - -#include "ufc-crypt.h" -#include "crypt.h" -#include "crypt-private.h" - -#ifdef _UFC_32_ - -/* - * 32 bit version - */ - -#define SBA(sb, v) (*(long32*)((char*)(sb)+(v))) - -void -_ufc_doit_r(itr, __data, res) - ufc_long itr, *res; - struct crypt_data * __restrict __data; -{ - int i; - long32 s, *k; - long32 *sb01 = (long32*)__data->sb0; - long32 *sb23 = (long32*)__data->sb2; - long32 l1, l2, r1, r2; - - l1 = (long32)res[0]; l2 = (long32)res[1]; - r1 = (long32)res[2]; r2 = (long32)res[3]; - - while(itr--) { - k = (long32*)__data->keysched; - for(i=8; i--; ) { - s = *k++ ^ r1; - l1 ^= SBA(sb01, s & 0xffff); l2 ^= SBA(sb01, (s & 0xffff)+4); - l1 ^= SBA(sb01, s >>= 16 ); l2 ^= SBA(sb01, (s )+4); - s = *k++ ^ r2; - l1 ^= SBA(sb23, s & 0xffff); l2 ^= SBA(sb23, (s & 0xffff)+4); - l1 ^= SBA(sb23, s >>= 16 ); l2 ^= SBA(sb23, (s )+4); - - s = *k++ ^ l1; - r1 ^= SBA(sb01, s & 0xffff); r2 ^= SBA(sb01, (s & 0xffff)+4); - r1 ^= SBA(sb01, s >>= 16 ); r2 ^= SBA(sb01, (s )+4); - s = *k++ ^ l2; - r1 ^= SBA(sb23, s & 0xffff); r2 ^= SBA(sb23, (s & 0xffff)+4); - r1 ^= SBA(sb23, s >>= 16 ); r2 ^= SBA(sb23, (s )+4); - } - s=l1; l1=r1; r1=s; s=l2; l2=r2; r2=s; - } - res[0] = l1; res[1] = l2; res[2] = r1; res[3] = r2; -} - -#endif - -#ifdef _UFC_64_ - -/* - * 64 bit version - */ - -#define SBA(sb, v) (*(long64*)((char*)(sb)+(v))) - -void -_ufc_doit_r(itr, __data, res) - ufc_long itr, *res; - struct crypt_data * __restrict __data; -{ - int i; - long64 l, r, s, *k; - register long64 *sb01 = (long64*)__data->sb0; - register long64 *sb23 = (long64*)__data->sb2; - - l = (((long64)res[0]) << 32) | ((long64)res[1]); - r = (((long64)res[2]) << 32) | ((long64)res[3]); - - while(itr--) { - k = (long64*)__data->keysched; - for(i=8; i--; ) { - s = *k++ ^ r; - l ^= SBA(sb23, (s ) & 0xffff); - l ^= SBA(sb23, (s >>= 16) & 0xffff); - l ^= SBA(sb01, (s >>= 16) & 0xffff); - l ^= SBA(sb01, (s >>= 16) ); - - s = *k++ ^ l; - r ^= SBA(sb23, (s ) & 0xffff); - r ^= SBA(sb23, (s >>= 16) & 0xffff); - r ^= SBA(sb01, (s >>= 16) & 0xffff); - r ^= SBA(sb01, (s >>= 16) ); - } - s=l; l=r; r=s; - } - - res[0] = l >> 32; res[1] = l & 0xffffffff; - res[2] = r >> 32; res[3] = r & 0xffffffff; -} - -#endif diff --git a/bin/glibc-2.7/crypt/crypt.h b/bin/glibc-2.7/crypt/crypt.h deleted file mode 100644 index dcb89d81..00000000 --- a/bin/glibc-2.7/crypt/crypt.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * UFC-crypt: ultra fast crypt(3) implementation - * - * Copyright (C) 1991,92,93,96,97,98,2000,2004 Free Software Foundation, Inc. - * - * The GNU C Library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * The GNU C Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the GNU C Library; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA. - * - * @(#)crypt.h 1.5 12/20/96 - * - */ - -#ifndef _CRYPT_H -#define _CRYPT_H 1 - -#include - -__BEGIN_DECLS - -/* Encrypt at most 8 characters from KEY using salt to perturb DES. */ -extern char *crypt (__const char *__key, __const char *__salt) - __THROW __nonnull ((1, 2)); - -/* Setup DES tables according KEY. */ -extern void setkey (__const char *__key) __THROW __nonnull ((1)); - -/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt - block in place. */ -extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1)); - -#ifdef __USE_GNU -/* Reentrant versions of the functions above. The additional argument - points to a structure where the results are placed in. */ -struct crypt_data - { - char keysched[16 * 8]; - char sb0[32768]; - char sb1[32768]; - char sb2[32768]; - char sb3[32768]; - /* end-of-aligment-critical-data */ - char crypt_3_buf[14]; - char current_salt[2]; - long int current_saltbits; - int direction, initialized; - }; - -extern char *crypt_r (__const char *__key, __const char *__salt, - struct crypt_data * __restrict __data) - __THROW __nonnull ((1, 2, 3)); - -extern void setkey_r (__const char *__key, - struct crypt_data * __restrict __data) - __THROW __nonnull ((1, 2)); - -extern void encrypt_r (char *__block, int __edflag, - struct crypt_data * __restrict __data) - __THROW __nonnull ((1, 3)); -#endif - -__END_DECLS - -#endif /* crypt.h */ diff --git a/bin/glibc-2.7/crypt/crypt_util.c b/bin/glibc-2.7/crypt/crypt_util.c deleted file mode 100644 index 0db5be7b..00000000 --- a/bin/glibc-2.7/crypt/crypt_util.c +++ /dev/null @@ -1,914 +0,0 @@ -/* - * UFC-crypt: ultra fast crypt(3) implementation - * - * Copyright (C) 1991, 92, 93, 96, 97, 98, 2000 Free Software Foundation, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * @(#)crypt_util.c 2.56 12/20/96 - * - * Support routines - * - */ - -#ifdef DEBUG -#include -#endif -#include - -#ifndef STATIC -#define STATIC static -#endif - -#ifndef DOS -#include "ufc-crypt.h" -#else -/* - * Thanks to greg%wind@plains.NoDak.edu (Greg W. Wettstein) - * for DOS patches - */ -#include "pl.h" -#include "ufc.h" -#endif -#include "crypt.h" -#include "crypt-private.h" - -/* Prototypes for local functions. */ -#if __STDC__ - 0 -#ifndef __GNU_LIBRARY__ -void _ufc_clearmem (char *start, int cnt); -void _ufc_copymem (char *from, char *to, int cnt); -#endif -#ifdef _UFC_32_ -STATIC void shuffle_sb (long32 *k, ufc_long saltbits); -#else -STATIC void shuffle_sb (long64 *k, ufc_long saltbits); -#endif -#endif - - -/* - * Permutation done once on the 56 bit - * key derived from the original 8 byte ASCII key. - */ -static const int pc1[56] = { - 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, - 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, - 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, - 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 -}; - -/* - * How much to rotate each 28 bit half of the pc1 permutated - * 56 bit key before using pc2 to give the i' key - */ -static const int rots[16] = { - 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 -}; - -/* - * Permutation giving the key - * of the i' DES round - */ -static const int pc2[48] = { - 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, - 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, - 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, - 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 -}; - -/* - * The E expansion table which selects - * bits from the 32 bit intermediate result. - */ -static const int esel[48] = { - 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, - 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, - 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, - 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1 -}; - -/* - * Permutation done on the - * result of sbox lookups - */ -static const int perm32[32] = { - 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, - 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 -}; - -/* - * The sboxes - */ -static const int sbox[8][4][16]= { - { { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 }, - { 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8 }, - { 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0 }, - { 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 } - }, - - { { 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10 }, - { 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5 }, - { 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15 }, - { 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9 } - }, - - { { 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8 }, - { 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1 }, - { 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7 }, - { 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12 } - }, - - { { 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15 }, - { 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9 }, - { 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4 }, - { 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14 } - }, - - { { 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9 }, - { 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6 }, - { 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14 }, - { 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 } - }, - - { { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 }, - { 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 }, - { 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 }, - { 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 } - }, - - { { 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 }, - { 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6 }, - { 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2 }, - { 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 } - }, - - { { 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7 }, - { 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2 }, - { 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8 }, - { 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 } - } -}; - -/* - * This is the initial - * permutation matrix - */ -static const int initial_perm[64] = { - 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, - 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, - 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, - 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 -}; - -/* - * This is the final - * permutation matrix - */ -static const int final_perm[64] = { - 40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, - 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, - 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, - 34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25 -}; - -#define ascii_to_bin(c) ((c)>='a'?(c-59):(c)>='A'?((c)-53):(c)-'.') -#define bin_to_ascii(c) ((c)>=38?((c)-38+'a'):(c)>=12?((c)-12+'A'):(c)+'.') - -static const ufc_long BITMASK[24] = { - 0x40000000, 0x20000000, 0x10000000, 0x08000000, 0x04000000, 0x02000000, - 0x01000000, 0x00800000, 0x00400000, 0x00200000, 0x00100000, 0x00080000, - 0x00004000, 0x00002000, 0x00001000, 0x00000800, 0x00000400, 0x00000200, - 0x00000100, 0x00000080, 0x00000040, 0x00000020, 0x00000010, 0x00000008 -}; - -static const unsigned char bytemask[8] = { - 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 -}; - -static const ufc_long longmask[32] = { - 0x80000000, 0x40000000, 0x20000000, 0x10000000, - 0x08000000, 0x04000000, 0x02000000, 0x01000000, - 0x00800000, 0x00400000, 0x00200000, 0x00100000, - 0x00080000, 0x00040000, 0x00020000, 0x00010000, - 0x00008000, 0x00004000, 0x00002000, 0x00001000, - 0x00000800, 0x00000400, 0x00000200, 0x00000100, - 0x00000080, 0x00000040, 0x00000020, 0x00000010, - 0x00000008, 0x00000004, 0x00000002, 0x00000001 -}; - -/* - * do_pc1: permform pc1 permutation in the key schedule generation. - * - * The first index is the byte number in the 8 byte ASCII key - * - second - - the two 28 bits halfs of the result - * - third - selects the 7 bits actually used of each byte - * - * The result is kept with 28 bit per 32 bit with the 4 most significant - * bits zero. - */ -static ufc_long do_pc1[8][2][128]; - -/* - * do_pc2: permform pc2 permutation in the key schedule generation. - * - * The first index is the septet number in the two 28 bit intermediate values - * - second - - - septet values - * - * Knowledge of the structure of the pc2 permutation is used. - * - * The result is kept with 28 bit per 32 bit with the 4 most significant - * bits zero. - */ -static ufc_long do_pc2[8][128]; - -/* - * eperm32tab: do 32 bit permutation and E selection - * - * The first index is the byte number in the 32 bit value to be permuted - * - second - is the value of this byte - * - third - selects the two 32 bit values - * - * The table is used and generated internally in init_des to speed it up - */ -static ufc_long eperm32tab[4][256][2]; - -/* - * efp: undo an extra e selection and do final - * permutation giving the DES result. - * - * Invoked 6 bit a time on two 48 bit values - * giving two 32 bit longs. - */ -static ufc_long efp[16][64][2]; - -/* - * For use by the old, non-reentrant routines - * (crypt/encrypt/setkey) - */ -struct crypt_data _ufc_foobar; - -#ifdef __GNU_LIBRARY__ -#include - -__libc_lock_define_initialized (static, _ufc_tables_lock) -#endif - -#ifdef DEBUG - -void -_ufc_prbits(a, n) - ufc_long *a; - int n; -{ - ufc_long i, j, t, tmp; - n /= 8; - for(i = 0; i < n; i++) { - tmp=0; - for(j = 0; j < 8; j++) { - t=8*i+j; - tmp|=(a[t/24] & BITMASK[t % 24])?bytemask[j]:0; - } - (void)printf("%02x ",tmp); - } - printf(" "); -} - -static void -_ufc_set_bits(v, b) - ufc_long v; - ufc_long *b; -{ - ufc_long i; - *b = 0; - for(i = 0; i < 24; i++) { - if(v & longmask[8 + i]) - *b |= BITMASK[i]; - } -} - -#endif - -#ifndef __GNU_LIBRARY__ -/* - * Silly rewrites of 'bzero'/'memset'. I do so - * because some machines don't have - * bzero and some don't have memset. - */ - -void -_ufc_clearmem(start, cnt) - char *start; - int cnt; -{ - while(cnt--) - *start++ = '\0'; -} - -void -_ufc_copymem(from, to, cnt) - char *from, *to; - int cnt; -{ - while(cnt--) - *to++ = *from++; -} -#else -#define _ufc_clearmem(start, cnt) memset(start, 0, cnt) -#define _ufc_copymem(from, to, cnt) memcpy(to, from, cnt) -#endif - -/* lookup a 6 bit value in sbox */ - -#define s_lookup(i,s) sbox[(i)][(((s)>>4) & 0x2)|((s) & 0x1)][((s)>>1) & 0xf]; - -/* - * Initialize unit - may be invoked directly - * by fcrypt users. - */ - -void -__init_des_r(__data) - struct crypt_data * __restrict __data; -{ - int comes_from_bit; - int bit, sg; - ufc_long j; - ufc_long mask1, mask2; - int e_inverse[64]; - static volatile int small_tables_initialized = 0; - -#ifdef _UFC_32_ - long32 *sb[4]; - sb[0] = (long32*)__data->sb0; sb[1] = (long32*)__data->sb1; - sb[2] = (long32*)__data->sb2; sb[3] = (long32*)__data->sb3; -#endif -#ifdef _UFC_64_ - long64 *sb[4]; - sb[0] = (long64*)__data->sb0; sb[1] = (long64*)__data->sb1; - sb[2] = (long64*)__data->sb2; sb[3] = (long64*)__data->sb3; -#endif - - if(small_tables_initialized == 0) { -#ifdef __GNU_LIBRARY__ - __libc_lock_lock (_ufc_tables_lock); - if(small_tables_initialized) - goto small_tables_done; -#endif - - /* - * Create the do_pc1 table used - * to affect pc1 permutation - * when generating keys - */ - _ufc_clearmem((char*)do_pc1, (int)sizeof(do_pc1)); - for(bit = 0; bit < 56; bit++) { - comes_from_bit = pc1[bit] - 1; - mask1 = bytemask[comes_from_bit % 8 + 1]; - mask2 = longmask[bit % 28 + 4]; - for(j = 0; j < 128; j++) { - if(j & mask1) - do_pc1[comes_from_bit / 8][bit / 28][j] |= mask2; - } - } - - /* - * Create the do_pc2 table used - * to affect pc2 permutation when - * generating keys - */ - _ufc_clearmem((char*)do_pc2, (int)sizeof(do_pc2)); - for(bit = 0; bit < 48; bit++) { - comes_from_bit = pc2[bit] - 1; - mask1 = bytemask[comes_from_bit % 7 + 1]; - mask2 = BITMASK[bit % 24]; - for(j = 0; j < 128; j++) { - if(j & mask1) - do_pc2[comes_from_bit / 7][j] |= mask2; - } - } - - /* - * Now generate the table used to do combined - * 32 bit permutation and e expansion - * - * We use it because we have to permute 16384 32 bit - * longs into 48 bit in order to initialize sb. - * - * Looping 48 rounds per permutation becomes - * just too slow... - * - */ - - _ufc_clearmem((char*)eperm32tab, (int)sizeof(eperm32tab)); - for(bit = 0; bit < 48; bit++) { - ufc_long mask1,comes_from; - comes_from = perm32[esel[bit]-1]-1; - mask1 = bytemask[comes_from % 8]; - for(j = 256; j--;) { - if(j & mask1) - eperm32tab[comes_from / 8][j][bit / 24] |= BITMASK[bit % 24]; - } - } - - /* - * Create an inverse matrix for esel telling - * where to plug out bits if undoing it - */ - for(bit=48; bit--;) { - e_inverse[esel[bit] - 1 ] = bit; - e_inverse[esel[bit] - 1 + 32] = bit + 48; - } - - /* - * create efp: the matrix used to - * undo the E expansion and effect final permutation - */ - _ufc_clearmem((char*)efp, (int)sizeof efp); - for(bit = 0; bit < 64; bit++) { - int o_bit, o_long; - ufc_long word_value, mask1, mask2; - int comes_from_f_bit, comes_from_e_bit; - int comes_from_word, bit_within_word; - - /* See where bit i belongs in the two 32 bit long's */ - o_long = bit / 32; /* 0..1 */ - o_bit = bit % 32; /* 0..31 */ - - /* - * And find a bit in the e permutated value setting this bit. - * - * Note: the e selection may have selected the same bit several - * times. By the initialization of e_inverse, we only look - * for one specific instance. - */ - comes_from_f_bit = final_perm[bit] - 1; /* 0..63 */ - comes_from_e_bit = e_inverse[comes_from_f_bit]; /* 0..95 */ - comes_from_word = comes_from_e_bit / 6; /* 0..15 */ - bit_within_word = comes_from_e_bit % 6; /* 0..5 */ - - mask1 = longmask[bit_within_word + 26]; - mask2 = longmask[o_bit]; - - for(word_value = 64; word_value--;) { - if(word_value & mask1) - efp[comes_from_word][word_value][o_long] |= mask2; - } - } - small_tables_initialized = 1; -#ifdef __GNU_LIBRARY__ -small_tables_done: - __libc_lock_unlock(_ufc_tables_lock); -#endif - } - - /* - * Create the sb tables: - * - * For each 12 bit segment of an 48 bit intermediate - * result, the sb table precomputes the two 4 bit - * values of the sbox lookups done with the two 6 - * bit halves, shifts them to their proper place, - * sends them through perm32 and finally E expands - * them so that they are ready for the next - * DES round. - * - */ - - _ufc_clearmem((char*)__data->sb0, (int)sizeof(__data->sb0)); - _ufc_clearmem((char*)__data->sb1, (int)sizeof(__data->sb1)); - _ufc_clearmem((char*)__data->sb2, (int)sizeof(__data->sb2)); - _ufc_clearmem((char*)__data->sb3, (int)sizeof(__data->sb3)); - - for(sg = 0; sg < 4; sg++) { - int j1, j2; - int s1, s2; - - for(j1 = 0; j1 < 64; j1++) { - s1 = s_lookup(2 * sg, j1); - for(j2 = 0; j2 < 64; j2++) { - ufc_long to_permute, inx; - - s2 = s_lookup(2 * sg + 1, j2); - to_permute = (((ufc_long)s1 << 4) | - (ufc_long)s2) << (24 - 8 * (ufc_long)sg); - -#ifdef _UFC_32_ - inx = ((j1 << 6) | j2) << 1; - sb[sg][inx ] = eperm32tab[0][(to_permute >> 24) & 0xff][0]; - sb[sg][inx+1] = eperm32tab[0][(to_permute >> 24) & 0xff][1]; - sb[sg][inx ] |= eperm32tab[1][(to_permute >> 16) & 0xff][0]; - sb[sg][inx+1] |= eperm32tab[1][(to_permute >> 16) & 0xff][1]; - sb[sg][inx ] |= eperm32tab[2][(to_permute >> 8) & 0xff][0]; - sb[sg][inx+1] |= eperm32tab[2][(to_permute >> 8) & 0xff][1]; - sb[sg][inx ] |= eperm32tab[3][(to_permute) & 0xff][0]; - sb[sg][inx+1] |= eperm32tab[3][(to_permute) & 0xff][1]; -#endif -#ifdef _UFC_64_ - inx = ((j1 << 6) | j2); - sb[sg][inx] = - ((long64)eperm32tab[0][(to_permute >> 24) & 0xff][0] << 32) | - (long64)eperm32tab[0][(to_permute >> 24) & 0xff][1]; - sb[sg][inx] |= - ((long64)eperm32tab[1][(to_permute >> 16) & 0xff][0] << 32) | - (long64)eperm32tab[1][(to_permute >> 16) & 0xff][1]; - sb[sg][inx] |= - ((long64)eperm32tab[2][(to_permute >> 8) & 0xff][0] << 32) | - (long64)eperm32tab[2][(to_permute >> 8) & 0xff][1]; - sb[sg][inx] |= - ((long64)eperm32tab[3][(to_permute) & 0xff][0] << 32) | - (long64)eperm32tab[3][(to_permute) & 0xff][1]; -#endif - } - } - } - - __data->current_saltbits = 0; - __data->current_salt[0] = 0; - __data->current_salt[1] = 0; - __data->initialized++; -} - -void -__init_des() -{ - __init_des_r(&_ufc_foobar); -} - -/* - * Process the elements of the sb table permuting the - * bits swapped in the expansion by the current salt. - */ - -#ifdef _UFC_32_ -STATIC void -shuffle_sb(k, saltbits) - long32 *k; - ufc_long saltbits; -{ - ufc_long j; - long32 x; - for(j=4096; j--;) { - x = (k[0] ^ k[1]) & (long32)saltbits; - *k++ ^= x; - *k++ ^= x; - } -} -#endif - -#ifdef _UFC_64_ -STATIC void -shuffle_sb(k, saltbits) - long64 *k; - ufc_long saltbits; -{ - ufc_long j; - long64 x; - for(j=4096; j--;) { - x = ((*k >> 32) ^ *k) & (long64)saltbits; - *k++ ^= (x << 32) | x; - } -} -#endif - -/* - * Setup the unit for a new salt - * Hopefully we'll not see a new salt in each crypt call. - */ - -void -_ufc_setup_salt_r(s, __data) - __const char *s; - struct crypt_data * __restrict __data; -{ - ufc_long i, j, saltbits; - - if(__data->initialized == 0) - __init_des_r(__data); - - if(s[0] == __data->current_salt[0] && s[1] == __data->current_salt[1]) - return; - __data->current_salt[0] = s[0]; __data->current_salt[1] = s[1]; - - /* - * This is the only crypt change to DES: - * entries are swapped in the expansion table - * according to the bits set in the salt. - */ - saltbits = 0; - for(i = 0; i < 2; i++) { - long c=ascii_to_bin(s[i]); - for(j = 0; j < 6; j++) { - if((c >> j) & 0x1) - saltbits |= BITMASK[6 * i + j]; - } - } - - /* - * Permute the sb table values - * to reflect the changed e - * selection table - */ -#ifdef _UFC_32_ -#define LONGG long32* -#endif -#ifdef _UFC_64_ -#define LONGG long64* -#endif - - shuffle_sb((LONGG)__data->sb0, __data->current_saltbits ^ saltbits); - shuffle_sb((LONGG)__data->sb1, __data->current_saltbits ^ saltbits); - shuffle_sb((LONGG)__data->sb2, __data->current_saltbits ^ saltbits); - shuffle_sb((LONGG)__data->sb3, __data->current_saltbits ^ saltbits); - - __data->current_saltbits = saltbits; -} - -void -_ufc_mk_keytab_r(key, __data) - const char *key; - struct crypt_data * __restrict __data; -{ - ufc_long v1, v2, *k1; - int i; -#ifdef _UFC_32_ - long32 v, *k2; - k2 = (long32*)__data->keysched; -#endif -#ifdef _UFC_64_ - long64 v, *k2; - k2 = (long64*)__data->keysched; -#endif - - v1 = v2 = 0; k1 = &do_pc1[0][0][0]; - for(i = 8; i--;) { - v1 |= k1[*key & 0x7f]; k1 += 128; - v2 |= k1[*key++ & 0x7f]; k1 += 128; - } - - for(i = 0; i < 16; i++) { - k1 = &do_pc2[0][0]; - - v1 = (v1 << rots[i]) | (v1 >> (28 - rots[i])); - v = k1[(v1 >> 21) & 0x7f]; k1 += 128; - v |= k1[(v1 >> 14) & 0x7f]; k1 += 128; - v |= k1[(v1 >> 7) & 0x7f]; k1 += 128; - v |= k1[(v1 ) & 0x7f]; k1 += 128; - -#ifdef _UFC_32_ - *k2++ = (v | 0x00008000); - v = 0; -#endif -#ifdef _UFC_64_ - v = (v << 32); -#endif - - v2 = (v2 << rots[i]) | (v2 >> (28 - rots[i])); - v |= k1[(v2 >> 21) & 0x7f]; k1 += 128; - v |= k1[(v2 >> 14) & 0x7f]; k1 += 128; - v |= k1[(v2 >> 7) & 0x7f]; k1 += 128; - v |= k1[(v2 ) & 0x7f]; - -#ifdef _UFC_32_ - *k2++ = (v | 0x00008000); -#endif -#ifdef _UFC_64_ - *k2++ = v | 0x0000800000008000l; -#endif - } - - __data->direction = 0; -} - -/* - * Undo an extra E selection and do final permutations - */ - -void -_ufc_dofinalperm_r(res, __data) - ufc_long *res; - struct crypt_data * __restrict __data; -{ - ufc_long v1, v2, x; - ufc_long l1,l2,r1,r2; - - l1 = res[0]; l2 = res[1]; - r1 = res[2]; r2 = res[3]; - - x = (l1 ^ l2) & __data->current_saltbits; l1 ^= x; l2 ^= x; - x = (r1 ^ r2) & __data->current_saltbits; r1 ^= x; r2 ^= x; - - v1=v2=0; l1 >>= 3; l2 >>= 3; r1 >>= 3; r2 >>= 3; - - v1 |= efp[15][ r2 & 0x3f][0]; v2 |= efp[15][ r2 & 0x3f][1]; - v1 |= efp[14][(r2 >>= 6) & 0x3f][0]; v2 |= efp[14][ r2 & 0x3f][1]; - v1 |= efp[13][(r2 >>= 10) & 0x3f][0]; v2 |= efp[13][ r2 & 0x3f][1]; - v1 |= efp[12][(r2 >>= 6) & 0x3f][0]; v2 |= efp[12][ r2 & 0x3f][1]; - - v1 |= efp[11][ r1 & 0x3f][0]; v2 |= efp[11][ r1 & 0x3f][1]; - v1 |= efp[10][(r1 >>= 6) & 0x3f][0]; v2 |= efp[10][ r1 & 0x3f][1]; - v1 |= efp[ 9][(r1 >>= 10) & 0x3f][0]; v2 |= efp[ 9][ r1 & 0x3f][1]; - v1 |= efp[ 8][(r1 >>= 6) & 0x3f][0]; v2 |= efp[ 8][ r1 & 0x3f][1]; - - v1 |= efp[ 7][ l2 & 0x3f][0]; v2 |= efp[ 7][ l2 & 0x3f][1]; - v1 |= efp[ 6][(l2 >>= 6) & 0x3f][0]; v2 |= efp[ 6][ l2 & 0x3f][1]; - v1 |= efp[ 5][(l2 >>= 10) & 0x3f][0]; v2 |= efp[ 5][ l2 & 0x3f][1]; - v1 |= efp[ 4][(l2 >>= 6) & 0x3f][0]; v2 |= efp[ 4][ l2 & 0x3f][1]; - - v1 |= efp[ 3][ l1 & 0x3f][0]; v2 |= efp[ 3][ l1 & 0x3f][1]; - v1 |= efp[ 2][(l1 >>= 6) & 0x3f][0]; v2 |= efp[ 2][ l1 & 0x3f][1]; - v1 |= efp[ 1][(l1 >>= 10) & 0x3f][0]; v2 |= efp[ 1][ l1 & 0x3f][1]; - v1 |= efp[ 0][(l1 >>= 6) & 0x3f][0]; v2 |= efp[ 0][ l1 & 0x3f][1]; - - res[0] = v1; res[1] = v2; -} - -/* - * crypt only: convert from 64 bit to 11 bit ASCII - * prefixing with the salt - */ - -void -_ufc_output_conversion_r(v1, v2, salt, __data) - ufc_long v1, v2; - __const char *salt; - struct crypt_data * __restrict __data; -{ - int i, s, shf; - - __data->crypt_3_buf[0] = salt[0]; - __data->crypt_3_buf[1] = salt[1] ? salt[1] : salt[0]; - - for(i = 0; i < 5; i++) { - shf = (26 - 6 * i); /* to cope with MSC compiler bug */ - __data->crypt_3_buf[i + 2] = bin_to_ascii((v1 >> shf) & 0x3f); - } - - s = (v2 & 0xf) << 2; - v2 = (v2 >> 2) | ((v1 & 0x3) << 30); - - for(i = 5; i < 10; i++) { - shf = (56 - 6 * i); - __data->crypt_3_buf[i + 2] = bin_to_ascii((v2 >> shf) & 0x3f); - } - - __data->crypt_3_buf[12] = bin_to_ascii(s); - __data->crypt_3_buf[13] = 0; -} - - -/* - * UNIX encrypt function. Takes a bitvector - * represented by one byte per bit and - * encrypt/decrypt according to edflag - */ - -void -__encrypt_r(__block, __edflag, __data) - char *__block; - int __edflag; - struct crypt_data * __restrict __data; -{ - ufc_long l1, l2, r1, r2, res[4]; - int i; -#ifdef _UFC_32_ - long32 *kt; - kt = (long32*)__data->keysched; -#endif -#ifdef _UFC_64_ - long64 *kt; - kt = (long64*)__data->keysched; -#endif - - /* - * Undo any salt changes to E expansion - */ - _ufc_setup_salt_r("..", __data); - - /* - * Reverse key table if - * changing operation (encrypt/decrypt) - */ - if((__edflag == 0) != (__data->direction == 0)) { - for(i = 0; i < 8; i++) { -#ifdef _UFC_32_ - long32 x; - x = kt[2 * (15-i)]; - kt[2 * (15-i)] = kt[2 * i]; - kt[2 * i] = x; - - x = kt[2 * (15-i) + 1]; - kt[2 * (15-i) + 1] = kt[2 * i + 1]; - kt[2 * i + 1] = x; -#endif -#ifdef _UFC_64_ - long64 x; - x = kt[15-i]; - kt[15-i] = kt[i]; - kt[i] = x; -#endif - } - __data->direction = __edflag; - } - - /* - * Do initial permutation + E expansion - */ - i = 0; - for(l1 = 0; i < 24; i++) { - if(__block[initial_perm[esel[i]-1]-1]) - l1 |= BITMASK[i]; - } - for(l2 = 0; i < 48; i++) { - if(__block[initial_perm[esel[i]-1]-1]) - l2 |= BITMASK[i-24]; - } - - i = 0; - for(r1 = 0; i < 24; i++) { - if(__block[initial_perm[esel[i]-1+32]-1]) - r1 |= BITMASK[i]; - } - for(r2 = 0; i < 48; i++) { - if(__block[initial_perm[esel[i]-1+32]-1]) - r2 |= BITMASK[i-24]; - } - - /* - * Do DES inner loops + final conversion - */ - res[0] = l1; res[1] = l2; - res[2] = r1; res[3] = r2; - _ufc_doit_r((ufc_long)1, __data, &res[0]); - - /* - * Do final permutations - */ - _ufc_dofinalperm_r(res, __data); - - /* - * And convert to bit array - */ - l1 = res[0]; r1 = res[1]; - for(i = 0; i < 32; i++) { - *__block++ = (l1 & longmask[i]) != 0; - } - for(i = 0; i < 32; i++) { - *__block++ = (r1 & longmask[i]) != 0; - } -} -weak_alias (__encrypt_r, encrypt_r) - -void -encrypt(__block, __edflag) - char *__block; - int __edflag; -{ - __encrypt_r(__block, __edflag, &_ufc_foobar); -} - - -/* - * UNIX setkey function. Take a 64 bit DES - * key and setup the machinery. - */ - -void -__setkey_r(__key, __data) - __const char *__key; - struct crypt_data * __restrict __data; -{ - int i,j; - unsigned char c; - unsigned char ktab[8]; - - _ufc_setup_salt_r("..", __data); /* be sure we're initialized */ - - for(i = 0; i < 8; i++) { - for(j = 0, c = 0; j < 8; j++) - c = c << 1 | *__key++; - ktab[i] = c >> 1; - } - _ufc_mk_keytab_r((char *) ktab, __data); -} -weak_alias (__setkey_r, setkey_r) - -void -setkey(__key) - __const char *__key; -{ - __setkey_r(__key, &_ufc_foobar); -} diff --git a/bin/glibc-2.7/crypt/md5-crypt.c b/bin/glibc-2.7/crypt/md5-crypt.c deleted file mode 100644 index 8a000f0a..00000000 --- a/bin/glibc-2.7/crypt/md5-crypt.c +++ /dev/null @@ -1,272 +0,0 @@ -/* One way encryption based on MD5 sum. - Compatible with the behavior of MD5 crypt introduced in FreeBSD 2.0. - Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include - -#include "md5.h" - - -/* Define our magic string to mark salt for MD5 "encryption" - replacement. This is meant to be the same as for other MD5 based - encryption implementations. */ -static const char md5_salt_prefix[] = "$1$"; - -/* Table with characters for base64 transformation. */ -static const char b64t[64] = -"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - - -/* Prototypes for local functions. */ -extern char *__md5_crypt_r (const char *key, const char *salt, - char *buffer, int buflen); -extern char *__md5_crypt (const char *key, const char *salt); - - -/* This entry point is equivalent to the `crypt' function in Unix - libcs. */ -char * -__md5_crypt_r (key, salt, buffer, buflen) - const char *key; - const char *salt; - char *buffer; - int buflen; -{ - unsigned char alt_result[16] - __attribute__ ((__aligned__ (__alignof__ (md5_uint32)))); - struct md5_ctx ctx; - struct md5_ctx alt_ctx; - size_t salt_len; - size_t key_len; - size_t cnt; - char *cp; - char *copied_key = NULL; - char *copied_salt = NULL; - - /* Find beginning of salt string. The prefix should normally always - be present. Just in case it is not. */ - if (strncmp (md5_salt_prefix, salt, sizeof (md5_salt_prefix) - 1) == 0) - /* Skip salt prefix. */ - salt += sizeof (md5_salt_prefix) - 1; - - salt_len = MIN (strcspn (salt, "$"), 8); - key_len = strlen (key); - - if ((key - (char *) 0) % __alignof__ (md5_uint32) != 0) - { - char *tmp = (char *) alloca (key_len + __alignof__ (md5_uint32)); - key = copied_key = - memcpy (tmp + __alignof__ (md5_uint32) - - (tmp - (char *) 0) % __alignof__ (md5_uint32), - key, key_len); - assert ((key - (char *) 0) % __alignof__ (md5_uint32) == 0); - } - - if ((salt - (char *) 0) % __alignof__ (md5_uint32) != 0) - { - char *tmp = (char *) alloca (salt_len + __alignof__ (md5_uint32)); - salt = copied_salt = - memcpy (tmp + __alignof__ (md5_uint32) - - (tmp - (char *) 0) % __alignof__ (md5_uint32), - salt, salt_len); - assert ((salt - (char *) 0) % __alignof__ (md5_uint32) == 0); - } - - /* Prepare for the real work. */ - __md5_init_ctx (&ctx); - - /* Add the key string. */ - __md5_process_bytes (key, key_len, &ctx); - - /* Because the SALT argument need not always have the salt prefix we - add it separately. */ - __md5_process_bytes (md5_salt_prefix, sizeof (md5_salt_prefix) - 1, &ctx); - - /* The last part is the salt string. This must be at most 8 - characters and it ends at the first `$' character (for - compatibility with existing implementations). */ - __md5_process_bytes (salt, salt_len, &ctx); - - - /* Compute alternate MD5 sum with input KEY, SALT, and KEY. The - final result will be added to the first context. */ - __md5_init_ctx (&alt_ctx); - - /* Add key. */ - __md5_process_bytes (key, key_len, &alt_ctx); - - /* Add salt. */ - __md5_process_bytes (salt, salt_len, &alt_ctx); - - /* Add key again. */ - __md5_process_bytes (key, key_len, &alt_ctx); - - /* Now get result of this (16 bytes) and add it to the other - context. */ - __md5_finish_ctx (&alt_ctx, alt_result); - - /* Add for any character in the key one byte of the alternate sum. */ - for (cnt = key_len; cnt > 16; cnt -= 16) - __md5_process_bytes (alt_result, 16, &ctx); - __md5_process_bytes (alt_result, cnt, &ctx); - - /* For the following code we need a NUL byte. */ - *alt_result = '\0'; - - /* The original implementation now does something weird: for every 1 - bit in the key the first 0 is added to the buffer, for every 0 - bit the first character of the key. This does not seem to be - what was intended but we have to follow this to be compatible. */ - for (cnt = key_len; cnt > 0; cnt >>= 1) - __md5_process_bytes ((cnt & 1) != 0 ? (const char *) alt_result : key, 1, - &ctx); - - /* Create intermediate result. */ - __md5_finish_ctx (&ctx, alt_result); - - /* Now comes another weirdness. In fear of password crackers here - comes a quite long loop which just processes the output of the - previous round again. We cannot ignore this here. */ - for (cnt = 0; cnt < 1000; ++cnt) - { - /* New context. */ - __md5_init_ctx (&ctx); - - /* Add key or last result. */ - if ((cnt & 1) != 0) - __md5_process_bytes (key, key_len, &ctx); - else - __md5_process_bytes (alt_result, 16, &ctx); - - /* Add salt for numbers not divisible by 3. */ - if (cnt % 3 != 0) - __md5_process_bytes (salt, salt_len, &ctx); - - /* Add key for numbers not divisible by 7. */ - if (cnt % 7 != 0) - __md5_process_bytes (key, key_len, &ctx); - - /* Add key or last result. */ - if ((cnt & 1) != 0) - __md5_process_bytes (alt_result, 16, &ctx); - else - __md5_process_bytes (key, key_len, &ctx); - - /* Create intermediate result. */ - __md5_finish_ctx (&ctx, alt_result); - } - - /* Now we can construct the result string. It consists of three - parts. */ - cp = __stpncpy (buffer, md5_salt_prefix, MAX (0, buflen)); - buflen -= sizeof (md5_salt_prefix) - 1; - - cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); - buflen -= MIN ((size_t) MAX (0, buflen), salt_len); - - if (buflen > 0) - { - *cp++ = '$'; - --buflen; - } - -#define b64_from_24bit(B2, B1, B0, N) \ - do { \ - unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ - int n = (N); \ - while (n-- > 0 && buflen > 0) \ - { \ - *cp++ = b64t[w & 0x3f]; \ - --buflen; \ - w >>= 6; \ - } \ - } while (0) - - - b64_from_24bit (alt_result[0], alt_result[6], alt_result[12], 4); - b64_from_24bit (alt_result[1], alt_result[7], alt_result[13], 4); - b64_from_24bit (alt_result[2], alt_result[8], alt_result[14], 4); - b64_from_24bit (alt_result[3], alt_result[9], alt_result[15], 4); - b64_from_24bit (alt_result[4], alt_result[10], alt_result[5], 4); - b64_from_24bit (0, 0, alt_result[11], 2); - if (buflen <= 0) - { - __set_errno (ERANGE); - buffer = NULL; - } - else - *cp = '\0'; /* Terminate the string. */ - - /* Clear the buffer for the intermediate result so that people - attaching to processes or reading core dumps cannot get any - information. We do it in this way to clear correct_words[] - inside the MD5 implementation as well. */ - __md5_init_ctx (&ctx); - __md5_finish_ctx (&ctx, alt_result); - memset (&ctx, '\0', sizeof (ctx)); - memset (&alt_ctx, '\0', sizeof (alt_ctx)); - if (copied_key != NULL) - memset (copied_key, '\0', key_len); - if (copied_salt != NULL) - memset (copied_salt, '\0', salt_len); - - return buffer; -} - -#ifndef _LIBC -# define libc_freeres_ptr(decl) decl -#endif -libc_freeres_ptr (static char *buffer); - -char * -__md5_crypt (const char *key, const char *salt) -{ - /* We don't want to have an arbitrary limit in the size of the - password. We can compute the size of the result in advance and - so we can prepare the buffer we pass to `md5_crypt_r'. */ - static int buflen; - int needed = 3 + strlen (salt) + 1 + 26 + 1; - - if (buflen < needed) - { - char *new_buffer = (char *) realloc (buffer, needed); - if (new_buffer == NULL) - return NULL; - - buffer = new_buffer; - buflen = needed; - } - - return __md5_crypt_r (key, salt, buffer, buflen); -} - -#ifndef _LIBC -static void -__attribute__ ((__destructor__)) -free_mem (void) -{ - free (buffer); -} -#endif diff --git a/bin/glibc-2.7/crypt/md5.c b/bin/glibc-2.7/crypt/md5.c deleted file mode 100644 index 922e7cc7..00000000 --- a/bin/glibc-2.7/crypt/md5.c +++ /dev/null @@ -1,458 +0,0 @@ -/* Functions to compute MD5 message digest of files or memory blocks. - according to the definition of MD5 in RFC 1321 from April 1992. - Copyright (C) 1995,1996,1997,1999,2000,2001,2005 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Written by Ulrich Drepper , 1995. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#if STDC_HEADERS || defined _LIBC -# include -# include -#else -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) (bcopy ((s), (d), (n)), (d)) -# endif -#endif - -#include "md5.h" - -#ifdef _LIBC -# include -# if __BYTE_ORDER == __BIG_ENDIAN -# define WORDS_BIGENDIAN 1 -# endif -/* We need to keep the namespace clean so define the MD5 function - protected using leading __ . */ -# define md5_init_ctx __md5_init_ctx -# define md5_process_block __md5_process_block -# define md5_process_bytes __md5_process_bytes -# define md5_finish_ctx __md5_finish_ctx -# define md5_read_ctx __md5_read_ctx -# define md5_stream __md5_stream -# define md5_buffer __md5_buffer -#endif - -#ifdef WORDS_BIGENDIAN -# define SWAP(n) \ - (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) -#else -# define SWAP(n) (n) -#endif - - -/* This array contains the bytes used to pad the buffer to the next - 64-byte boundary. (RFC 1321, 3.1: Step 1) */ -static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; - - -/* Initialize structure containing state of computation. - (RFC 1321, 3.3: Step 3) */ -void -md5_init_ctx (ctx) - struct md5_ctx *ctx; -{ - ctx->A = 0x67452301; - ctx->B = 0xefcdab89; - ctx->C = 0x98badcfe; - ctx->D = 0x10325476; - - ctx->total[0] = ctx->total[1] = 0; - ctx->buflen = 0; -} - -/* Put result from CTX in first 16 bytes following RESBUF. The result - must be in little endian byte order. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -void * -md5_read_ctx (ctx, resbuf) - const struct md5_ctx *ctx; - void *resbuf; -{ - ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A); - ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B); - ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C); - ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D); - - return resbuf; -} - -/* Process the remaining bytes in the internal buffer and the usual - prolog according to the standard and write the result to RESBUF. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -void * -md5_finish_ctx (ctx, resbuf) - struct md5_ctx *ctx; - void *resbuf; -{ - /* Take yet unprocessed bytes into account. */ - md5_uint32 bytes = ctx->buflen; - size_t pad; - - /* Now count remaining bytes. */ - ctx->total[0] += bytes; - if (ctx->total[0] < bytes) - ++ctx->total[1]; - - pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; - memcpy (&ctx->buffer[bytes], fillbuf, pad); - - /* Put the 64-bit file length in *bits* at the end of the buffer. */ - *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); - *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | - (ctx->total[0] >> 29)); - - /* Process last bytes. */ - md5_process_block (ctx->buffer, bytes + pad + 8, ctx); - - return md5_read_ctx (ctx, resbuf); -} - -/* Compute MD5 message digest for bytes read from STREAM. The - resulting message digest number will be written into the 16 bytes - beginning at RESBLOCK. */ -int -md5_stream (stream, resblock) - FILE *stream; - void *resblock; -{ - /* Important: BLOCKSIZE must be a multiple of 64. */ -#define BLOCKSIZE 4096 - struct md5_ctx ctx; - char buffer[BLOCKSIZE + 72]; - size_t sum; - - /* Initialize the computation context. */ - md5_init_ctx (&ctx); - - /* Iterate over full file contents. */ - while (1) - { - /* We read the file in blocks of BLOCKSIZE bytes. One call of the - computation function processes the whole buffer so that with the - next round of the loop another block can be read. */ - size_t n; - sum = 0; - - /* Read block. Take care for partial reads. */ - do - { - n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream); - - sum += n; - } - while (sum < BLOCKSIZE && n != 0); - if (n == 0 && ferror (stream)) - return 1; - - /* If end of file is reached, end the loop. */ - if (n == 0) - break; - - /* Process buffer with BLOCKSIZE bytes. Note that - BLOCKSIZE % 64 == 0 - */ - md5_process_block (buffer, BLOCKSIZE, &ctx); - } - - /* Add the last bytes if necessary. */ - if (sum > 0) - md5_process_bytes (buffer, sum, &ctx); - - /* Construct result in desired memory. */ - md5_finish_ctx (&ctx, resblock); - return 0; -} - -/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The - result is always in little endian byte order, so that a byte-wise - output yields to the wanted ASCII representation of the message - digest. */ -void * -md5_buffer (buffer, len, resblock) - const char *buffer; - size_t len; - void *resblock; -{ - struct md5_ctx ctx; - - /* Initialize the computation context. */ - md5_init_ctx (&ctx); - - /* Process whole buffer but last len % 64 bytes. */ - md5_process_bytes (buffer, len, &ctx); - - /* Put result in desired memory area. */ - return md5_finish_ctx (&ctx, resblock); -} - - -void -md5_process_bytes (buffer, len, ctx) - const void *buffer; - size_t len; - struct md5_ctx *ctx; -{ - /* When we already have some bits in our internal buffer concatenate - both inputs first. */ - if (ctx->buflen != 0) - { - size_t left_over = ctx->buflen; - size_t add = 128 - left_over > len ? len : 128 - left_over; - - memcpy (&ctx->buffer[left_over], buffer, add); - ctx->buflen += add; - - if (ctx->buflen > 64) - { - md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx); - - ctx->buflen &= 63; - /* The regions in the following copy operation cannot overlap. */ - memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], - ctx->buflen); - } - - buffer = (const char *) buffer + add; - len -= add; - } - - /* Process available complete blocks. */ - if (len >= 64) - { -#if !_STRING_ARCH_unaligned -/* To check alignment gcc has an appropriate operator. Other - compilers don't. */ -# if __GNUC__ >= 2 -# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0) -# else -# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0) -# endif - if (UNALIGNED_P (buffer)) - while (len > 64) - { - md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx); - buffer = (const char *) buffer + 64; - len -= 64; - } - else -#endif - { - md5_process_block (buffer, len & ~63, ctx); - buffer = (const char *) buffer + (len & ~63); - len &= 63; - } - } - - /* Move remaining bytes in internal buffer. */ - if (len > 0) - { - size_t left_over = ctx->buflen; - - memcpy (&ctx->buffer[left_over], buffer, len); - left_over += len; - if (left_over >= 64) - { - md5_process_block (ctx->buffer, 64, ctx); - left_over -= 64; - memcpy (ctx->buffer, &ctx->buffer[64], left_over); - } - ctx->buflen = left_over; - } -} - - -/* These are the four functions used in the four steps of the MD5 algorithm - and defined in the RFC 1321. The first function is a little bit optimized - (as found in Colin Plumbs public domain implementation). */ -/* #define FF(b, c, d) ((b & c) | (~b & d)) */ -#define FF(b, c, d) (d ^ (b & (c ^ d))) -#define FG(b, c, d) FF (d, b, c) -#define FH(b, c, d) (b ^ c ^ d) -#define FI(b, c, d) (c ^ (b | ~d)) - -/* Process LEN bytes of BUFFER, accumulating context into CTX. - It is assumed that LEN % 64 == 0. */ - -void -md5_process_block (buffer, len, ctx) - const void *buffer; - size_t len; - struct md5_ctx *ctx; -{ - md5_uint32 correct_words[16]; - const md5_uint32 *words = buffer; - size_t nwords = len / sizeof (md5_uint32); - const md5_uint32 *endp = words + nwords; - md5_uint32 A = ctx->A; - md5_uint32 B = ctx->B; - md5_uint32 C = ctx->C; - md5_uint32 D = ctx->D; - - /* First increment the byte count. RFC 1321 specifies the possible - length of the file up to 2^64 bits. Here we only compute the - number of bytes. Do a double word increment. */ - ctx->total[0] += len; - if (ctx->total[0] < len) - ++ctx->total[1]; - - /* Process all bytes in the buffer with 64 bytes in each round of - the loop. */ - while (words < endp) - { - md5_uint32 *cwp = correct_words; - md5_uint32 A_save = A; - md5_uint32 B_save = B; - md5_uint32 C_save = C; - md5_uint32 D_save = D; - - /* First round: using the given function, the context and a constant - the next context is computed. Because the algorithms processing - unit is a 32-bit word and it is determined to work on words in - little endian byte order we perhaps have to change the byte order - before the computation. To reduce the work for the next steps - we store the swapped words in the array CORRECT_WORDS. */ - -#define OP(a, b, c, d, s, T) \ - do \ - { \ - a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ - ++words; \ - CYCLIC (a, s); \ - a += b; \ - } \ - while (0) - - /* It is unfortunate that C does not provide an operator for - cyclic rotation. Hope the C compiler is smart enough. */ -#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s))) - - /* Before we start, one word to the strange constants. - They are defined in RFC 1321 as - - T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64 - */ - - /* Round 1. */ - OP (A, B, C, D, 7, 0xd76aa478); - OP (D, A, B, C, 12, 0xe8c7b756); - OP (C, D, A, B, 17, 0x242070db); - OP (B, C, D, A, 22, 0xc1bdceee); - OP (A, B, C, D, 7, 0xf57c0faf); - OP (D, A, B, C, 12, 0x4787c62a); - OP (C, D, A, B, 17, 0xa8304613); - OP (B, C, D, A, 22, 0xfd469501); - OP (A, B, C, D, 7, 0x698098d8); - OP (D, A, B, C, 12, 0x8b44f7af); - OP (C, D, A, B, 17, 0xffff5bb1); - OP (B, C, D, A, 22, 0x895cd7be); - OP (A, B, C, D, 7, 0x6b901122); - OP (D, A, B, C, 12, 0xfd987193); - OP (C, D, A, B, 17, 0xa679438e); - OP (B, C, D, A, 22, 0x49b40821); - - /* For the second to fourth round we have the possibly swapped words - in CORRECT_WORDS. Redefine the macro to take an additional first - argument specifying the function to use. */ -#undef OP -#define OP(f, a, b, c, d, k, s, T) \ - do \ - { \ - a += f (b, c, d) + correct_words[k] + T; \ - CYCLIC (a, s); \ - a += b; \ - } \ - while (0) - - /* Round 2. */ - OP (FG, A, B, C, D, 1, 5, 0xf61e2562); - OP (FG, D, A, B, C, 6, 9, 0xc040b340); - OP (FG, C, D, A, B, 11, 14, 0x265e5a51); - OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa); - OP (FG, A, B, C, D, 5, 5, 0xd62f105d); - OP (FG, D, A, B, C, 10, 9, 0x02441453); - OP (FG, C, D, A, B, 15, 14, 0xd8a1e681); - OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8); - OP (FG, A, B, C, D, 9, 5, 0x21e1cde6); - OP (FG, D, A, B, C, 14, 9, 0xc33707d6); - OP (FG, C, D, A, B, 3, 14, 0xf4d50d87); - OP (FG, B, C, D, A, 8, 20, 0x455a14ed); - OP (FG, A, B, C, D, 13, 5, 0xa9e3e905); - OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8); - OP (FG, C, D, A, B, 7, 14, 0x676f02d9); - OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a); - - /* Round 3. */ - OP (FH, A, B, C, D, 5, 4, 0xfffa3942); - OP (FH, D, A, B, C, 8, 11, 0x8771f681); - OP (FH, C, D, A, B, 11, 16, 0x6d9d6122); - OP (FH, B, C, D, A, 14, 23, 0xfde5380c); - OP (FH, A, B, C, D, 1, 4, 0xa4beea44); - OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9); - OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60); - OP (FH, B, C, D, A, 10, 23, 0xbebfbc70); - OP (FH, A, B, C, D, 13, 4, 0x289b7ec6); - OP (FH, D, A, B, C, 0, 11, 0xeaa127fa); - OP (FH, C, D, A, B, 3, 16, 0xd4ef3085); - OP (FH, B, C, D, A, 6, 23, 0x04881d05); - OP (FH, A, B, C, D, 9, 4, 0xd9d4d039); - OP (FH, D, A, B, C, 12, 11, 0xe6db99e5); - OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8); - OP (FH, B, C, D, A, 2, 23, 0xc4ac5665); - - /* Round 4. */ - OP (FI, A, B, C, D, 0, 6, 0xf4292244); - OP (FI, D, A, B, C, 7, 10, 0x432aff97); - OP (FI, C, D, A, B, 14, 15, 0xab9423a7); - OP (FI, B, C, D, A, 5, 21, 0xfc93a039); - OP (FI, A, B, C, D, 12, 6, 0x655b59c3); - OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92); - OP (FI, C, D, A, B, 10, 15, 0xffeff47d); - OP (FI, B, C, D, A, 1, 21, 0x85845dd1); - OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f); - OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0); - OP (FI, C, D, A, B, 6, 15, 0xa3014314); - OP (FI, B, C, D, A, 13, 21, 0x4e0811a1); - OP (FI, A, B, C, D, 4, 6, 0xf7537e82); - OP (FI, D, A, B, C, 11, 10, 0xbd3af235); - OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb); - OP (FI, B, C, D, A, 9, 21, 0xeb86d391); - - /* Add the starting values of the context. */ - A += A_save; - B += B_save; - C += C_save; - D += D_save; - } - - /* Put checksum in context given as argument. */ - ctx->A = A; - ctx->B = B; - ctx->C = C; - ctx->D = D; -} diff --git a/bin/glibc-2.7/crypt/md5.h b/bin/glibc-2.7/crypt/md5.h deleted file mode 100644 index b474a84b..00000000 --- a/bin/glibc-2.7/crypt/md5.h +++ /dev/null @@ -1,148 +0,0 @@ -/* Declaration of functions and data types used for MD5 sum computing - library functions. - Copyright (C) 1995-1997,1999,2000,2001,2004,2005 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _MD5_H -#define _MD5_H 1 - -#include - -#if defined HAVE_LIMITS_H || _LIBC -# include -#endif - -#define MD5_DIGEST_SIZE 16 -#define MD5_BLOCK_SIZE 64 - -/* The following contortions are an attempt to use the C preprocessor - to determine an unsigned integral type that is 32 bits wide. An - alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but - doing that would require that the configure script compile and *run* - the resulting executable. Locally running cross-compiled executables - is usually not possible. */ - -#ifdef _LIBC -# include -typedef uint32_t md5_uint32; -typedef uintptr_t md5_uintptr; -#else -# if defined __STDC__ && __STDC__ -# define UINT_MAX_32_BITS 4294967295U -# else -# define UINT_MAX_32_BITS 0xFFFFFFFF -# endif - -/* If UINT_MAX isn't defined, assume it's a 32-bit type. - This should be valid for all systems GNU cares about because - that doesn't include 16-bit systems, and only modern systems - (that certainly have ) have 64+-bit integral types. */ - -# ifndef UINT_MAX -# define UINT_MAX UINT_MAX_32_BITS -# endif - -# if UINT_MAX == UINT_MAX_32_BITS - typedef unsigned int md5_uint32; -# else -# if USHRT_MAX == UINT_MAX_32_BITS - typedef unsigned short md5_uint32; -# else -# if ULONG_MAX == UINT_MAX_32_BITS - typedef unsigned long md5_uint32; -# else - /* The following line is intended to evoke an error. - Using #error is not portable enough. */ - "Cannot determine unsigned 32-bit data type." -# endif -# endif -# endif -/* We have to make a guess about the integer type equivalent in size - to pointers which should always be correct. */ -typedef unsigned long int md5_uintptr; -#endif - -/* Structure to save state of computation between the single steps. */ -struct md5_ctx -{ - md5_uint32 A; - md5_uint32 B; - md5_uint32 C; - md5_uint32 D; - - md5_uint32 total[2]; - md5_uint32 buflen; - char buffer[128] __attribute__ ((__aligned__ (__alignof__ (md5_uint32)))); -}; - -/* - * The following three functions are build up the low level used in - * the functions `md5_stream' and `md5_buffer'. - */ - -/* Initialize structure containing state of computation. - (RFC 1321, 3.3: Step 3) */ -extern void __md5_init_ctx (struct md5_ctx *ctx) __THROW; - -/* Starting with the result of former calls of this function (or the - initialization function update the context for the next LEN bytes - starting at BUFFER. - It is necessary that LEN is a multiple of 64!!! */ -extern void __md5_process_block (const void *buffer, size_t len, - struct md5_ctx *ctx) __THROW; - -/* Starting with the result of former calls of this function (or the - initialization function update the context for the next LEN bytes - starting at BUFFER. - It is NOT required that LEN is a multiple of 64. */ -extern void __md5_process_bytes (const void *buffer, size_t len, - struct md5_ctx *ctx) __THROW; - -/* Process the remaining bytes in the buffer and put result from CTX - in first 16 bytes following RESBUF. The result is always in little - endian byte order, so that a byte-wise output yields to the wanted - ASCII representation of the message digest. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -extern void *__md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) __THROW; - - -/* Put result from CTX in first 16 bytes following RESBUF. The result is - always in little endian byte order, so that a byte-wise output yields - to the wanted ASCII representation of the message digest. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -extern void *__md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) __THROW; - - -/* Compute MD5 message digest for bytes read from STREAM. The - resulting message digest number will be written into the 16 bytes - beginning at RESBLOCK. */ -extern int __md5_stream (FILE *stream, void *resblock) __THROW; - -/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The - result is always in little endian byte order, so that a byte-wise - output yields to the wanted ASCII representation of the message - digest. */ -extern void *__md5_buffer (const char *buffer, size_t len, - void *resblock) __THROW; - -#endif /* md5.h */ diff --git a/bin/glibc-2.7/crypt/md5c-test.c b/bin/glibc-2.7/crypt/md5c-test.c deleted file mode 100644 index f56d0eb4..00000000 --- a/bin/glibc-2.7/crypt/md5c-test.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include - -int -main (int argc, char *argv[]) -{ - const char salt[] = "$1$saltstring"; - char *cp; - int result = 0; - - cp = crypt ("Hello world!", salt); - result |= strcmp ("$1$saltstri$YMyguxXMBpd2TEZ.vS/3q1", cp); - - return result; -} diff --git a/bin/glibc-2.7/crypt/md5test.c b/bin/glibc-2.7/crypt/md5test.c deleted file mode 100644 index b57d3cd3..00000000 --- a/bin/glibc-2.7/crypt/md5test.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include "md5.h" - -static const struct -{ - const char *input; - const char result[16]; -} tests[] = - { - { "", - "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04\xe9\x80\x09\x98\xec\xf8\x42\x7e" }, - { "a", - "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8\x31\xc3\x99\xe2\x69\x77\x26\x61" }, - { "abc", - "\x90\x01\x50\x98\x3c\xd2\x4f\xb0\xd6\x96\x3f\x7d\x28\xe1\x7f\x72" }, - { "message digest", - "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d\x52\x5a\x2f\x31\xaa\xf1\x61\xd0" }, - { "abcdefghijklmnopqrstuvwxyz", - "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00\x7d\xfb\x49\x6c\xca\x67\xe1\x3b" }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "\xd1\x74\xab\x98\xd2\x77\xd9\xf5\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f" }, - { "123456789012345678901234567890123456789012345678901234567890" - "12345678901234567890", - "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55\xac\x49\xda\x2e\x21\x07\xb6\x7a" } - }; - - -int -main (int argc, char *argv[]) -{ - struct md5_ctx ctx; - char sum[16]; - int result = 0; - int cnt; - - for (cnt = 0; cnt < (int) (sizeof (tests) / sizeof (tests[0])); ++cnt) - { - int i; - - __md5_init_ctx (&ctx); - __md5_process_bytes (tests[cnt].input, strlen (tests[cnt].input), &ctx); - __md5_finish_ctx (&ctx, sum); - result |= memcmp (tests[cnt].result, sum, 16); - - __md5_init_ctx (&ctx); - for (i = 0; tests[cnt].input[i] != '\0'; ++i) - __md5_process_bytes (&tests[cnt].input[i], 1, &ctx); - __md5_finish_ctx (&ctx, sum); - result |= memcmp (tests[cnt].result, sum, 16); - } - - return result; -} diff --git a/bin/glibc-2.7/crypt/sha256-crypt.c b/bin/glibc-2.7/crypt/sha256-crypt.c deleted file mode 100644 index 0db13e46..00000000 --- a/bin/glibc-2.7/crypt/sha256-crypt.c +++ /dev/null @@ -1,345 +0,0 @@ -/* One way encryption based on SHA256 sum. - Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2007. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include - -#include "sha256.h" - - -/* Define our magic string to mark salt for SHA256 "encryption" - replacement. */ -static const char sha256_salt_prefix[] = "$5$"; - -/* Prefix for optional rounds specification. */ -static const char sha256_rounds_prefix[] = "rounds="; - -/* Maximum salt string length. */ -#define SALT_LEN_MAX 16 -/* Default number of rounds if not explicitly specified. */ -#define ROUNDS_DEFAULT 5000 -/* Minimum number of rounds. */ -#define ROUNDS_MIN 1000 -/* Maximum number of rounds. */ -#define ROUNDS_MAX 999999999 - -/* Table with characters for base64 transformation. */ -static const char b64t[64] = -"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - - -/* Prototypes for local functions. */ -extern char *__sha256_crypt_r (const char *key, const char *salt, - char *buffer, int buflen); -extern char *__sha256_crypt (const char *key, const char *salt); - - -char * -__sha256_crypt_r (key, salt, buffer, buflen) - const char *key; - const char *salt; - char *buffer; - int buflen; -{ - unsigned char alt_result[32] - __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); - unsigned char temp_result[32] - __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); - struct sha256_ctx ctx; - struct sha256_ctx alt_ctx; - size_t salt_len; - size_t key_len; - size_t cnt; - char *cp; - char *copied_key = NULL; - char *copied_salt = NULL; - char *p_bytes; - char *s_bytes; - /* Default number of rounds. */ - size_t rounds = ROUNDS_DEFAULT; - bool rounds_custom = false; - - /* Find beginning of salt string. The prefix should normally always - be present. Just in case it is not. */ - if (strncmp (sha256_salt_prefix, salt, sizeof (sha256_salt_prefix) - 1) == 0) - /* Skip salt prefix. */ - salt += sizeof (sha256_salt_prefix) - 1; - - if (strncmp (salt, sha256_rounds_prefix, sizeof (sha256_rounds_prefix) - 1) - == 0) - { - const char *num = salt + sizeof (sha256_rounds_prefix) - 1; - char *endp; - unsigned long int srounds = strtoul (num, &endp, 10); - if (*endp == '$') - { - salt = endp + 1; - rounds = MAX (ROUNDS_MIN, MIN (srounds, ROUNDS_MAX)); - rounds_custom = true; - } - } - - salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX); - key_len = strlen (key); - - if ((key - (char *) 0) % __alignof__ (uint32_t) != 0) - { - char *tmp = (char *) alloca (key_len + __alignof__ (uint32_t)); - key = copied_key = - memcpy (tmp + __alignof__ (uint32_t) - - (tmp - (char *) 0) % __alignof__ (uint32_t), - key, key_len); - assert ((key - (char *) 0) % __alignof__ (uint32_t) == 0); - } - - if ((salt - (char *) 0) % __alignof__ (uint32_t) != 0) - { - char *tmp = (char *) alloca (salt_len + __alignof__ (uint32_t)); - salt = copied_salt = - memcpy (tmp + __alignof__ (uint32_t) - - (tmp - (char *) 0) % __alignof__ (uint32_t), - salt, salt_len); - assert ((salt - (char *) 0) % __alignof__ (uint32_t) == 0); - } - - /* Prepare for the real work. */ - __sha256_init_ctx (&ctx); - - /* Add the key string. */ - __sha256_process_bytes (key, key_len, &ctx); - - /* The last part is the salt string. This must be at most 8 - characters and it ends at the first `$' character (for - compatibility with existing implementations). */ - __sha256_process_bytes (salt, salt_len, &ctx); - - - /* Compute alternate SHA256 sum with input KEY, SALT, and KEY. The - final result will be added to the first context. */ - __sha256_init_ctx (&alt_ctx); - - /* Add key. */ - __sha256_process_bytes (key, key_len, &alt_ctx); - - /* Add salt. */ - __sha256_process_bytes (salt, salt_len, &alt_ctx); - - /* Add key again. */ - __sha256_process_bytes (key, key_len, &alt_ctx); - - /* Now get result of this (32 bytes) and add it to the other - context. */ - __sha256_finish_ctx (&alt_ctx, alt_result); - - /* Add for any character in the key one byte of the alternate sum. */ - for (cnt = key_len; cnt > 32; cnt -= 32) - __sha256_process_bytes (alt_result, 32, &ctx); - __sha256_process_bytes (alt_result, cnt, &ctx); - - /* Take the binary representation of the length of the key and for every - 1 add the alternate sum, for every 0 the key. */ - for (cnt = key_len; cnt > 0; cnt >>= 1) - if ((cnt & 1) != 0) - __sha256_process_bytes (alt_result, 32, &ctx); - else - __sha256_process_bytes (key, key_len, &ctx); - - /* Create intermediate result. */ - __sha256_finish_ctx (&ctx, alt_result); - - /* Start computation of P byte sequence. */ - __sha256_init_ctx (&alt_ctx); - - /* For every character in the password add the entire password. */ - for (cnt = 0; cnt < key_len; ++cnt) - __sha256_process_bytes (key, key_len, &alt_ctx); - - /* Finish the digest. */ - __sha256_finish_ctx (&alt_ctx, temp_result); - - /* Create byte sequence P. */ - cp = p_bytes = alloca (key_len); - for (cnt = key_len; cnt >= 32; cnt -= 32) - cp = mempcpy (cp, temp_result, 32); - memcpy (cp, temp_result, cnt); - - /* Start computation of S byte sequence. */ - __sha256_init_ctx (&alt_ctx); - - /* For every character in the password add the entire password. */ - for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt) - __sha256_process_bytes (salt, salt_len, &alt_ctx); - - /* Finish the digest. */ - __sha256_finish_ctx (&alt_ctx, temp_result); - - /* Create byte sequence S. */ - cp = s_bytes = alloca (salt_len); - for (cnt = salt_len; cnt >= 32; cnt -= 32) - cp = mempcpy (cp, temp_result, 32); - memcpy (cp, temp_result, cnt); - - /* Repeatedly run the collected hash value through SHA256 to burn - CPU cycles. */ - for (cnt = 0; cnt < rounds; ++cnt) - { - /* New context. */ - __sha256_init_ctx (&ctx); - - /* Add key or last result. */ - if ((cnt & 1) != 0) - __sha256_process_bytes (p_bytes, key_len, &ctx); - else - __sha256_process_bytes (alt_result, 32, &ctx); - - /* Add salt for numbers not divisible by 3. */ - if (cnt % 3 != 0) - __sha256_process_bytes (s_bytes, salt_len, &ctx); - - /* Add key for numbers not divisible by 7. */ - if (cnt % 7 != 0) - __sha256_process_bytes (p_bytes, key_len, &ctx); - - /* Add key or last result. */ - if ((cnt & 1) != 0) - __sha256_process_bytes (alt_result, 32, &ctx); - else - __sha256_process_bytes (p_bytes, key_len, &ctx); - - /* Create intermediate result. */ - __sha256_finish_ctx (&ctx, alt_result); - } - - /* Now we can construct the result string. It consists of three - parts. */ - cp = __stpncpy (buffer, sha256_salt_prefix, MAX (0, buflen)); - buflen -= sizeof (sha256_salt_prefix) - 1; - - if (rounds_custom) - { - int n = snprintf (cp, MAX (0, buflen), "%s%zu$", - sha256_rounds_prefix, rounds); - cp += n; - buflen -= n; - } - - cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); - buflen -= MIN ((size_t) MAX (0, buflen), salt_len); - - if (buflen > 0) - { - *cp++ = '$'; - --buflen; - } - -#define b64_from_24bit(B2, B1, B0, N) \ - do { \ - unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ - int n = (N); \ - while (n-- > 0 && buflen > 0) \ - { \ - *cp++ = b64t[w & 0x3f]; \ - --buflen; \ - w >>= 6; \ - } \ - } while (0) - - b64_from_24bit (alt_result[0], alt_result[10], alt_result[20], 4); - b64_from_24bit (alt_result[21], alt_result[1], alt_result[11], 4); - b64_from_24bit (alt_result[12], alt_result[22], alt_result[2], 4); - b64_from_24bit (alt_result[3], alt_result[13], alt_result[23], 4); - b64_from_24bit (alt_result[24], alt_result[4], alt_result[14], 4); - b64_from_24bit (alt_result[15], alt_result[25], alt_result[5], 4); - b64_from_24bit (alt_result[6], alt_result[16], alt_result[26], 4); - b64_from_24bit (alt_result[27], alt_result[7], alt_result[17], 4); - b64_from_24bit (alt_result[18], alt_result[28], alt_result[8], 4); - b64_from_24bit (alt_result[9], alt_result[19], alt_result[29], 4); - b64_from_24bit (0, alt_result[31], alt_result[30], 3); - if (buflen <= 0) - { - __set_errno (ERANGE); - buffer = NULL; - } - else - *cp = '\0'; /* Terminate the string. */ - - /* Clear the buffer for the intermediate result so that people - attaching to processes or reading core dumps cannot get any - information. We do it in this way to clear correct_words[] - inside the SHA256 implementation as well. */ - __sha256_init_ctx (&ctx); - __sha256_finish_ctx (&ctx, alt_result); - memset (temp_result, '\0', sizeof (temp_result)); - memset (p_bytes, '\0', key_len); - memset (s_bytes, '\0', salt_len); - memset (&ctx, '\0', sizeof (ctx)); - memset (&alt_ctx, '\0', sizeof (alt_ctx)); - if (copied_key != NULL) - memset (copied_key, '\0', key_len); - if (copied_salt != NULL) - memset (copied_salt, '\0', salt_len); - - return buffer; -} - -#ifndef _LIBC -# define libc_freeres_ptr(decl) decl -#endif -libc_freeres_ptr (static char *buffer); - -/* This entry point is equivalent to the `crypt' function in Unix - libcs. */ -char * -__sha256_crypt (const char *key, const char *salt) -{ - /* We don't want to have an arbitrary limit in the size of the - password. We can compute an upper bound for the size of the - result in advance and so we can prepare the buffer we pass to - `sha256_crypt_r'. */ - static int buflen; - int needed = (sizeof (sha256_salt_prefix) - 1 - + sizeof (sha256_rounds_prefix) + 9 + 1 - + strlen (salt) + 1 + 43 + 1); - - if (buflen < needed) - { - char *new_buffer = (char *) realloc (buffer, needed); - if (new_buffer == NULL) - return NULL; - - buffer = new_buffer; - buflen = needed; - } - - return __sha256_crypt_r (key, salt, buffer, buflen); -} - -#ifndef _LIBC -static void -__attribute__ ((__destructor__)) -free_mem (void) -{ - free (buffer); -} -#endif diff --git a/bin/glibc-2.7/crypt/sha256.c b/bin/glibc-2.7/crypt/sha256.c deleted file mode 100644 index 941612e1..00000000 --- a/bin/glibc-2.7/crypt/sha256.c +++ /dev/null @@ -1,304 +0,0 @@ -/* Functions to compute SHA256 message digest of files or memory blocks. - according to the definition of SHA256 in FIPS 180-2. - Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Written by Ulrich Drepper , 2007. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include - -#include "sha256.h" - -#if __BYTE_ORDER == __LITTLE_ENDIAN -# ifdef _LIBC -# include -# define SWAP(n) bswap_32 (n) -# else -# define SWAP(n) \ - (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) -# endif -#else -# define SWAP(n) (n) -#endif - - -/* This array contains the bytes used to pad the buffer to the next - 64-byte boundary. (FIPS 180-2:5.1.1) */ -static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; - - -/* Constants for SHA256 from FIPS 180-2:4.2.2. */ -static const uint32_t K[64] = - { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - }; - - -/* Process LEN bytes of BUFFER, accumulating context into CTX. - It is assumed that LEN % 64 == 0. */ -static void -sha256_process_block (const void *buffer, size_t len, struct sha256_ctx *ctx) -{ - const uint32_t *words = buffer; - size_t nwords = len / sizeof (uint32_t); - uint32_t a = ctx->H[0]; - uint32_t b = ctx->H[1]; - uint32_t c = ctx->H[2]; - uint32_t d = ctx->H[3]; - uint32_t e = ctx->H[4]; - uint32_t f = ctx->H[5]; - uint32_t g = ctx->H[6]; - uint32_t h = ctx->H[7]; - - /* First increment the byte count. FIPS 180-2 specifies the possible - length of the file up to 2^64 bits. Here we only compute the - number of bytes. Do a double word increment. */ - ctx->total[0] += len; - if (ctx->total[0] < len) - ++ctx->total[1]; - - /* Process all bytes in the buffer with 64 bytes in each round of - the loop. */ - while (nwords > 0) - { - uint32_t W[64]; - uint32_t a_save = a; - uint32_t b_save = b; - uint32_t c_save = c; - uint32_t d_save = d; - uint32_t e_save = e; - uint32_t f_save = f; - uint32_t g_save = g; - uint32_t h_save = h; - - /* Operators defined in FIPS 180-2:4.1.2. */ -#define Ch(x, y, z) ((x & y) ^ (~x & z)) -#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) -#define S0(x) (CYCLIC (x, 2) ^ CYCLIC (x, 13) ^ CYCLIC (x, 22)) -#define S1(x) (CYCLIC (x, 6) ^ CYCLIC (x, 11) ^ CYCLIC (x, 25)) -#define R0(x) (CYCLIC (x, 7) ^ CYCLIC (x, 18) ^ (x >> 3)) -#define R1(x) (CYCLIC (x, 17) ^ CYCLIC (x, 19) ^ (x >> 10)) - - /* It is unfortunate that C does not provide an operator for - cyclic rotation. Hope the C compiler is smart enough. */ -#define CYCLIC(w, s) ((w >> s) | (w << (32 - s))) - - /* Compute the message schedule according to FIPS 180-2:6.2.2 step 2. */ - for (unsigned int t = 0; t < 16; ++t) - { - W[t] = SWAP (*words); - ++words; - } - for (unsigned int t = 16; t < 64; ++t) - W[t] = R1 (W[t - 2]) + W[t - 7] + R0 (W[t - 15]) + W[t - 16]; - - /* The actual computation according to FIPS 180-2:6.2.2 step 3. */ - for (unsigned int t = 0; t < 64; ++t) - { - uint32_t T1 = h + S1 (e) + Ch (e, f, g) + K[t] + W[t]; - uint32_t T2 = S0 (a) + Maj (a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - } - - /* Add the starting values of the context according to FIPS 180-2:6.2.2 - step 4. */ - a += a_save; - b += b_save; - c += c_save; - d += d_save; - e += e_save; - f += f_save; - g += g_save; - h += h_save; - - /* Prepare for the next round. */ - nwords -= 16; - } - - /* Put checksum in context given as argument. */ - ctx->H[0] = a; - ctx->H[1] = b; - ctx->H[2] = c; - ctx->H[3] = d; - ctx->H[4] = e; - ctx->H[5] = f; - ctx->H[6] = g; - ctx->H[7] = h; -} - - -/* Initialize structure containing state of computation. - (FIPS 180-2:5.3.2) */ -void -__sha256_init_ctx (ctx) - struct sha256_ctx *ctx; -{ - ctx->H[0] = 0x6a09e667; - ctx->H[1] = 0xbb67ae85; - ctx->H[2] = 0x3c6ef372; - ctx->H[3] = 0xa54ff53a; - ctx->H[4] = 0x510e527f; - ctx->H[5] = 0x9b05688c; - ctx->H[6] = 0x1f83d9ab; - ctx->H[7] = 0x5be0cd19; - - ctx->total[0] = ctx->total[1] = 0; - ctx->buflen = 0; -} - - -/* Process the remaining bytes in the internal buffer and the usual - prolog according to the standard and write the result to RESBUF. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -void * -__sha256_finish_ctx (ctx, resbuf) - struct sha256_ctx *ctx; - void *resbuf; -{ - /* Take yet unprocessed bytes into account. */ - uint32_t bytes = ctx->buflen; - size_t pad; - - /* Now count remaining bytes. */ - ctx->total[0] += bytes; - if (ctx->total[0] < bytes) - ++ctx->total[1]; - - pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; - memcpy (&ctx->buffer[bytes], fillbuf, pad); - - /* Put the 64-bit file length in *bits* at the end of the buffer. */ - *(uint32_t *) &ctx->buffer[bytes + pad + 4] = SWAP (ctx->total[0] << 3); - *(uint32_t *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | - (ctx->total[0] >> 29)); - - /* Process last bytes. */ - sha256_process_block (ctx->buffer, bytes + pad + 8, ctx); - - /* Put result from CTX in first 32 bytes following RESBUF. */ - for (unsigned int i = 0; i < 8; ++i) - ((uint32_t *) resbuf)[i] = SWAP (ctx->H[i]); - - return resbuf; -} - - -void -__sha256_process_bytes (buffer, len, ctx) - const void *buffer; - size_t len; - struct sha256_ctx *ctx; -{ - /* When we already have some bits in our internal buffer concatenate - both inputs first. */ - if (ctx->buflen != 0) - { - size_t left_over = ctx->buflen; - size_t add = 128 - left_over > len ? len : 128 - left_over; - - memcpy (&ctx->buffer[left_over], buffer, add); - ctx->buflen += add; - - if (ctx->buflen > 64) - { - sha256_process_block (ctx->buffer, ctx->buflen & ~63, ctx); - - ctx->buflen &= 63; - /* The regions in the following copy operation cannot overlap. */ - memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], - ctx->buflen); - } - - buffer = (const char *) buffer + add; - len -= add; - } - - /* Process available complete blocks. */ - if (len >= 64) - { -#if !_STRING_ARCH_unaligned -/* To check alignment gcc has an appropriate operator. Other - compilers don't. */ -# if __GNUC__ >= 2 -# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint32_t) != 0) -# else -# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint32_t) != 0) -# endif - if (UNALIGNED_P (buffer)) - while (len > 64) - { - sha256_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx); - buffer = (const char *) buffer + 64; - len -= 64; - } - else -#endif - { - sha256_process_block (buffer, len & ~63, ctx); - buffer = (const char *) buffer + (len & ~63); - len &= 63; - } - } - - /* Move remaining bytes into internal buffer. */ - if (len > 0) - { - size_t left_over = ctx->buflen; - - memcpy (&ctx->buffer[left_over], buffer, len); - left_over += len; - if (left_over >= 64) - { - sha256_process_block (ctx->buffer, 64, ctx); - left_over -= 64; - memcpy (ctx->buffer, &ctx->buffer[64], left_over); - } - ctx->buflen = left_over; - } -} diff --git a/bin/glibc-2.7/crypt/sha256.h b/bin/glibc-2.7/crypt/sha256.h deleted file mode 100644 index be8b0772..00000000 --- a/bin/glibc-2.7/crypt/sha256.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Declaration of functions and data types used for SHA256 sum computing - library functions. - Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SHA256_H -#define _SHA256_H 1 - -#include -#include -#include - - -/* Structure to save state of computation between the single steps. */ -struct sha256_ctx -{ - uint32_t H[8]; - - uint32_t total[2]; - uint32_t buflen; - char buffer[128] __attribute__ ((__aligned__ (__alignof__ (uint32_t)))); -}; - -/* Initialize structure containing state of computation. - (FIPS 180-2: 5.3.2) */ -extern void __sha256_init_ctx (struct sha256_ctx *ctx) __THROW; - -/* Starting with the result of former calls of this function (or the - initialization function update the context for the next LEN bytes - starting at BUFFER. - It is NOT required that LEN is a multiple of 64. */ -extern void __sha256_process_bytes (const void *buffer, size_t len, - struct sha256_ctx *ctx) __THROW; - -/* Process the remaining bytes in the buffer and put result from CTX - in first 32 bytes following RESBUF. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -extern void *__sha256_finish_ctx (struct sha256_ctx *ctx, void *resbuf) - __THROW; - -#endif /* sha256.h */ diff --git a/bin/glibc-2.7/crypt/sha256c-test.c b/bin/glibc-2.7/crypt/sha256c-test.c deleted file mode 100644 index 58aec07d..00000000 --- a/bin/glibc-2.7/crypt/sha256c-test.c +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include - -static const struct -{ - const char *salt; - const char *input; - const char *expected; -} tests[] = -{ - { "$5$saltstring", "Hello world!", - "$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5" }, - { "$5$rounds=10000$saltstringsaltstring", "Hello world!", - "$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2." - "opqey6IcA" }, - { "$5$rounds=5000$toolongsaltstring", "This is just a test", - "$5$rounds=5000$toolongsaltstrin$Un/5jzAHMgOGZ5.mWJpuVolil07guHPvOW8" - "mGRcvxa5" }, - { "$5$rounds=1400$anotherlongsaltstring", - "a very much longer text to encrypt. This one even stretches over more" - "than one line.", - "$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12" - "oP84Bnq1" }, - { "$5$rounds=77777$short", - "we have a short salt string but not a short password", - "$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/" }, - { "$5$rounds=123456$asaltof16chars..", "a short string", - "$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/" - "cZKmF/wJvD" }, - { "$5$rounds=10$roundstoolow", "the minimum number is still observed", - "$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/gL97" - "2bIC" }, -}; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - - -static int -do_test (void) -{ - int result = 0; - int i; - - for (i = 0; i < ntests; ++i) - { - char *cp = crypt (tests[i].input, tests[i].salt); - - if (strcmp (cp, tests[i].expected) != 0) - { - printf ("test %d: expected \"%s\", got \"%s\"\n", - i, tests[i].expected, cp); - result = 1; - } - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/crypt/sha256test.c b/bin/glibc-2.7/crypt/sha256test.c deleted file mode 100644 index b13a3c51..00000000 --- a/bin/glibc-2.7/crypt/sha256test.c +++ /dev/null @@ -1,92 +0,0 @@ -#include -#include "sha256.h" - -static const struct -{ - const char *input; - const char result[32]; -} tests[] = - { - /* Test vectors from FIPS 180-2: appendix B.1. */ - { "abc", - "\xba\x78\x16\xbf\x8f\x01\xcf\xea\x41\x41\x40\xde\x5d\xae\x22\x23" - "\xb0\x03\x61\xa3\x96\x17\x7a\x9c\xb4\x10\xff\x61\xf2\x00\x15\xad" }, - /* Test vectors from FIPS 180-2: appendix B.2. */ - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39" - "\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1" }, - /* Test vectors from the NESSIE project. */ - { "", - "\xe3\xb0\xc4\x42\x98\xfc\x1c\x14\x9a\xfb\xf4\xc8\x99\x6f\xb9\x24" - "\x27\xae\x41\xe4\x64\x9b\x93\x4c\xa4\x95\x99\x1b\x78\x52\xb8\x55" }, - { "a", - "\xca\x97\x81\x12\xca\x1b\xbd\xca\xfa\xc2\x31\xb3\x9a\x23\xdc\x4d" - "\xa7\x86\xef\xf8\x14\x7c\x4e\x72\xb9\x80\x77\x85\xaf\xee\x48\xbb" }, - { "message digest", - "\xf7\x84\x6f\x55\xcf\x23\xe1\x4e\xeb\xea\xb5\xb4\xe1\x55\x0c\xad" - "\x5b\x50\x9e\x33\x48\xfb\xc4\xef\xa3\xa1\x41\x3d\x39\x3c\xb6\x50" }, - { "abcdefghijklmnopqrstuvwxyz", - "\x71\xc4\x80\xdf\x93\xd6\xae\x2f\x1e\xfa\xd1\x44\x7c\x66\xc9\x52" - "\x5e\x31\x62\x18\xcf\x51\xfc\x8d\x9e\xd8\x32\xf2\xda\xf1\x8b\x73" }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39" - "\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1" }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "\xdb\x4b\xfc\xbd\x4d\xa0\xcd\x85\xa6\x0c\x3c\x37\xd3\xfb\xd8\x80" - "\x5c\x77\xf1\x5f\xc6\xb1\xfd\xfe\x61\x4e\xe0\xa7\xc8\xfd\xb4\xc0" }, - { "123456789012345678901234567890123456789012345678901234567890" - "12345678901234567890", - "\xf3\x71\xbc\x4a\x31\x1f\x2b\x00\x9e\xef\x95\x2d\xd8\x3c\xa8\x0e" - "\x2b\x60\x02\x6c\x8e\x93\x55\x92\xd0\xf9\xc3\x08\x45\x3c\x81\x3e" } - }; - - -int -main (void) -{ - struct sha256_ctx ctx; - char sum[32]; - int result = 0; - int cnt; - - for (cnt = 0; cnt < (int) (sizeof (tests) / sizeof (tests[0])); ++cnt) - { - __sha256_init_ctx (&ctx); - __sha256_process_bytes (tests[cnt].input, strlen (tests[cnt].input), - &ctx); - __sha256_finish_ctx (&ctx, sum); - if (memcmp (tests[cnt].result, sum, 32) != 0) - { - printf ("test %d run %d failed\n", cnt, 1); - result = 1; - } - - __sha256_init_ctx (&ctx); - for (int i = 0; tests[cnt].input[i] != '\0'; ++i) - __sha256_process_bytes (&tests[cnt].input[i], 1, &ctx); - __sha256_finish_ctx (&ctx, sum); - if (memcmp (tests[cnt].result, sum, 32) != 0) - { - printf ("test %d run %d failed\n", cnt, 2); - result = 1; - } - } - - /* Test vector from FIPS 180-2: appendix B.3. */ - char buf[1000]; - memset (buf, 'a', sizeof (buf)); - __sha256_init_ctx (&ctx); - for (int i = 0; i < 1000; ++i) - __sha256_process_bytes (buf, sizeof (buf), &ctx); - __sha256_finish_ctx (&ctx, sum); - static const char expected[32] = - "\xcd\xc7\x6e\x5c\x99\x14\xfb\x92\x81\xa1\xc7\xe2\x84\xd7\x3e\x67" - "\xf1\x80\x9a\x48\xa4\x97\x20\x0e\x04\x6d\x39\xcc\xc7\x11\x2c\xd0"; - if (memcmp (expected, sum, 32) != 0) - { - printf ("test %d failed\n", cnt); - result = 1; - } - - return result; -} diff --git a/bin/glibc-2.7/crypt/sha512-crypt.c b/bin/glibc-2.7/crypt/sha512-crypt.c deleted file mode 100644 index 4b8949f5..00000000 --- a/bin/glibc-2.7/crypt/sha512-crypt.c +++ /dev/null @@ -1,357 +0,0 @@ -/* One way encryption based on SHA512 sum. - Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2007. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include - -#include "sha512.h" - - -/* Define our magic string to mark salt for SHA512 "encryption" - replacement. */ -static const char sha512_salt_prefix[] = "$6$"; - -/* Prefix for optional rounds specification. */ -static const char sha512_rounds_prefix[] = "rounds="; - -/* Maximum salt string length. */ -#define SALT_LEN_MAX 16 -/* Default number of rounds if not explicitly specified. */ -#define ROUNDS_DEFAULT 5000 -/* Minimum number of rounds. */ -#define ROUNDS_MIN 1000 -/* Maximum number of rounds. */ -#define ROUNDS_MAX 999999999 - -/* Table with characters for base64 transformation. */ -static const char b64t[64] = -"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - - -/* Prototypes for local functions. */ -extern char *__sha512_crypt_r (const char *key, const char *salt, - char *buffer, int buflen); -extern char *__sha512_crypt (const char *key, const char *salt); - - -char * -__sha512_crypt_r (key, salt, buffer, buflen) - const char *key; - const char *salt; - char *buffer; - int buflen; -{ - unsigned char alt_result[64] - __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); - unsigned char temp_result[64] - __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); - struct sha512_ctx ctx; - struct sha512_ctx alt_ctx; - size_t salt_len; - size_t key_len; - size_t cnt; - char *cp; - char *copied_key = NULL; - char *copied_salt = NULL; - char *p_bytes; - char *s_bytes; - /* Default number of rounds. */ - size_t rounds = ROUNDS_DEFAULT; - bool rounds_custom = false; - - /* Find beginning of salt string. The prefix should normally always - be present. Just in case it is not. */ - if (strncmp (sha512_salt_prefix, salt, sizeof (sha512_salt_prefix) - 1) == 0) - /* Skip salt prefix. */ - salt += sizeof (sha512_salt_prefix) - 1; - - if (strncmp (salt, sha512_rounds_prefix, sizeof (sha512_rounds_prefix) - 1) - == 0) - { - const char *num = salt + sizeof (sha512_rounds_prefix) - 1; - char *endp; - unsigned long int srounds = strtoul (num, &endp, 10); - if (*endp == '$') - { - salt = endp + 1; - rounds = MAX (ROUNDS_MIN, MIN (srounds, ROUNDS_MAX)); - rounds_custom = true; - } - } - - salt_len = MIN (strcspn (salt, "$"), SALT_LEN_MAX); - key_len = strlen (key); - - if ((key - (char *) 0) % __alignof__ (uint64_t) != 0) - { - char *tmp = (char *) alloca (key_len + __alignof__ (uint64_t)); - key = copied_key = - memcpy (tmp + __alignof__ (uint64_t) - - (tmp - (char *) 0) % __alignof__ (uint64_t), - key, key_len); - assert ((key - (char *) 0) % __alignof__ (uint64_t) == 0); - } - - if ((salt - (char *) 0) % __alignof__ (uint64_t) != 0) - { - char *tmp = (char *) alloca (salt_len + __alignof__ (uint64_t)); - salt = copied_salt = - memcpy (tmp + __alignof__ (uint64_t) - - (tmp - (char *) 0) % __alignof__ (uint64_t), - salt, salt_len); - assert ((salt - (char *) 0) % __alignof__ (uint64_t) == 0); - } - - /* Prepare for the real work. */ - __sha512_init_ctx (&ctx); - - /* Add the key string. */ - __sha512_process_bytes (key, key_len, &ctx); - - /* The last part is the salt string. This must be at most 8 - characters and it ends at the first `$' character (for - compatibility with existing implementations). */ - __sha512_process_bytes (salt, salt_len, &ctx); - - - /* Compute alternate SHA512 sum with input KEY, SALT, and KEY. The - final result will be added to the first context. */ - __sha512_init_ctx (&alt_ctx); - - /* Add key. */ - __sha512_process_bytes (key, key_len, &alt_ctx); - - /* Add salt. */ - __sha512_process_bytes (salt, salt_len, &alt_ctx); - - /* Add key again. */ - __sha512_process_bytes (key, key_len, &alt_ctx); - - /* Now get result of this (64 bytes) and add it to the other - context. */ - __sha512_finish_ctx (&alt_ctx, alt_result); - - /* Add for any character in the key one byte of the alternate sum. */ - for (cnt = key_len; cnt > 64; cnt -= 64) - __sha512_process_bytes (alt_result, 64, &ctx); - __sha512_process_bytes (alt_result, cnt, &ctx); - - /* Take the binary representation of the length of the key and for every - 1 add the alternate sum, for every 0 the key. */ - for (cnt = key_len; cnt > 0; cnt >>= 1) - if ((cnt & 1) != 0) - __sha512_process_bytes (alt_result, 64, &ctx); - else - __sha512_process_bytes (key, key_len, &ctx); - - /* Create intermediate result. */ - __sha512_finish_ctx (&ctx, alt_result); - - /* Start computation of P byte sequence. */ - __sha512_init_ctx (&alt_ctx); - - /* For every character in the password add the entire password. */ - for (cnt = 0; cnt < key_len; ++cnt) - __sha512_process_bytes (key, key_len, &alt_ctx); - - /* Finish the digest. */ - __sha512_finish_ctx (&alt_ctx, temp_result); - - /* Create byte sequence P. */ - cp = p_bytes = alloca (key_len); - for (cnt = key_len; cnt >= 64; cnt -= 64) - cp = mempcpy (cp, temp_result, 64); - memcpy (cp, temp_result, cnt); - - /* Start computation of S byte sequence. */ - __sha512_init_ctx (&alt_ctx); - - /* For every character in the password add the entire password. */ - for (cnt = 0; cnt < 16 + alt_result[0]; ++cnt) - __sha512_process_bytes (salt, salt_len, &alt_ctx); - - /* Finish the digest. */ - __sha512_finish_ctx (&alt_ctx, temp_result); - - /* Create byte sequence S. */ - cp = s_bytes = alloca (salt_len); - for (cnt = salt_len; cnt >= 64; cnt -= 64) - cp = mempcpy (cp, temp_result, 64); - memcpy (cp, temp_result, cnt); - - /* Repeatedly run the collected hash value through SHA512 to burn - CPU cycles. */ - for (cnt = 0; cnt < rounds; ++cnt) - { - /* New context. */ - __sha512_init_ctx (&ctx); - - /* Add key or last result. */ - if ((cnt & 1) != 0) - __sha512_process_bytes (p_bytes, key_len, &ctx); - else - __sha512_process_bytes (alt_result, 64, &ctx); - - /* Add salt for numbers not divisible by 3. */ - if (cnt % 3 != 0) - __sha512_process_bytes (s_bytes, salt_len, &ctx); - - /* Add key for numbers not divisible by 7. */ - if (cnt % 7 != 0) - __sha512_process_bytes (p_bytes, key_len, &ctx); - - /* Add key or last result. */ - if ((cnt & 1) != 0) - __sha512_process_bytes (alt_result, 64, &ctx); - else - __sha512_process_bytes (p_bytes, key_len, &ctx); - - /* Create intermediate result. */ - __sha512_finish_ctx (&ctx, alt_result); - } - - /* Now we can construct the result string. It consists of three - parts. */ - cp = __stpncpy (buffer, sha512_salt_prefix, MAX (0, buflen)); - buflen -= sizeof (sha512_salt_prefix) - 1; - - if (rounds_custom) - { - int n = snprintf (cp, MAX (0, buflen), "%s%zu$", - sha512_rounds_prefix, rounds); - cp += n; - buflen -= n; - } - - cp = __stpncpy (cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); - buflen -= MIN ((size_t) MAX (0, buflen), salt_len); - - if (buflen > 0) - { - *cp++ = '$'; - --buflen; - } - -#define b64_from_24bit(B2, B1, B0, N) \ - do { \ - unsigned int w = ((B2) << 16) | ((B1) << 8) | (B0); \ - int n = (N); \ - while (n-- > 0 && buflen > 0) \ - { \ - *cp++ = b64t[w & 0x3f]; \ - --buflen; \ - w >>= 6; \ - } \ - } while (0) - - b64_from_24bit (alt_result[0], alt_result[21], alt_result[42], 4); - b64_from_24bit (alt_result[22], alt_result[43], alt_result[1], 4); - b64_from_24bit (alt_result[44], alt_result[2], alt_result[23], 4); - b64_from_24bit (alt_result[3], alt_result[24], alt_result[45], 4); - b64_from_24bit (alt_result[25], alt_result[46], alt_result[4], 4); - b64_from_24bit (alt_result[47], alt_result[5], alt_result[26], 4); - b64_from_24bit (alt_result[6], alt_result[27], alt_result[48], 4); - b64_from_24bit (alt_result[28], alt_result[49], alt_result[7], 4); - b64_from_24bit (alt_result[50], alt_result[8], alt_result[29], 4); - b64_from_24bit (alt_result[9], alt_result[30], alt_result[51], 4); - b64_from_24bit (alt_result[31], alt_result[52], alt_result[10], 4); - b64_from_24bit (alt_result[53], alt_result[11], alt_result[32], 4); - b64_from_24bit (alt_result[12], alt_result[33], alt_result[54], 4); - b64_from_24bit (alt_result[34], alt_result[55], alt_result[13], 4); - b64_from_24bit (alt_result[56], alt_result[14], alt_result[35], 4); - b64_from_24bit (alt_result[15], alt_result[36], alt_result[57], 4); - b64_from_24bit (alt_result[37], alt_result[58], alt_result[16], 4); - b64_from_24bit (alt_result[59], alt_result[17], alt_result[38], 4); - b64_from_24bit (alt_result[18], alt_result[39], alt_result[60], 4); - b64_from_24bit (alt_result[40], alt_result[61], alt_result[19], 4); - b64_from_24bit (alt_result[62], alt_result[20], alt_result[41], 4); - b64_from_24bit (0, 0, alt_result[63], 2); - - if (buflen <= 0) - { - __set_errno (ERANGE); - buffer = NULL; - } - else - *cp = '\0'; /* Terminate the string. */ - - /* Clear the buffer for the intermediate result so that people - attaching to processes or reading core dumps cannot get any - information. We do it in this way to clear correct_words[] - inside the SHA512 implementation as well. */ - __sha512_init_ctx (&ctx); - __sha512_finish_ctx (&ctx, alt_result); - memset (temp_result, '\0', sizeof (temp_result)); - memset (p_bytes, '\0', key_len); - memset (s_bytes, '\0', salt_len); - memset (&ctx, '\0', sizeof (ctx)); - memset (&alt_ctx, '\0', sizeof (alt_ctx)); - if (copied_key != NULL) - memset (copied_key, '\0', key_len); - if (copied_salt != NULL) - memset (copied_salt, '\0', salt_len); - - return buffer; -} - -#ifndef _LIBC -# define libc_freeres_ptr(decl) decl -#endif -libc_freeres_ptr (static char *buffer); - -/* This entry point is equivalent to the `crypt' function in Unix - libcs. */ -char * -__sha512_crypt (const char *key, const char *salt) -{ - /* We don't want to have an arbitrary limit in the size of the - password. We can compute an upper bound for the size of the - result in advance and so we can prepare the buffer we pass to - `sha512_crypt_r'. */ - static int buflen; - int needed = (sizeof (sha512_salt_prefix) - 1 - + sizeof (sha512_rounds_prefix) + 9 + 1 - + strlen (salt) + 1 + 86 + 1); - - if (buflen < needed) - { - char *new_buffer = (char *) realloc (buffer, needed); - if (new_buffer == NULL) - return NULL; - - buffer = new_buffer; - buflen = needed; - } - - return __sha512_crypt_r (key, salt, buffer, buflen); -} - -#ifndef _LIBC -static void -__attribute__ ((__destructor__)) -free_mem (void) -{ - free (buffer); -} -#endif diff --git a/bin/glibc-2.7/crypt/sha512.c b/bin/glibc-2.7/crypt/sha512.c deleted file mode 100644 index 02127476..00000000 --- a/bin/glibc-2.7/crypt/sha512.c +++ /dev/null @@ -1,336 +0,0 @@ -/* Functions to compute SHA512 message digest of files or memory blocks. - according to the definition of SHA512 in FIPS 180-2. - Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Written by Ulrich Drepper , 2007. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include - -#include "sha512.h" - -#if __BYTE_ORDER == __LITTLE_ENDIAN -# ifdef _LIBC -# include -# define SWAP(n) bswap_64 (n) -# else -# define SWAP(n) \ - (((n) << 56) \ - | (((n) & 0xff00) << 40) \ - | (((n) & 0xff0000) << 24) \ - | (((n) & 0xff000000) << 8) \ - | (((n) >> 8) & 0xff000000) \ - | (((n) >> 24) & 0xff0000) \ - | (((n) >> 40) & 0xff00) \ - | ((n) >> 56)) -# endif -#else -# define SWAP(n) (n) -#endif - - -/* This array contains the bytes used to pad the buffer to the next - 64-byte boundary. (FIPS 180-2:5.1.2) */ -static const unsigned char fillbuf[128] = { 0x80, 0 /* , 0, 0, ... */ }; - - -/* Constants for SHA512 from FIPS 180-2:4.2.3. */ -static const uint64_t K[80] = - { - UINT64_C (0x428a2f98d728ae22), UINT64_C (0x7137449123ef65cd), - UINT64_C (0xb5c0fbcfec4d3b2f), UINT64_C (0xe9b5dba58189dbbc), - UINT64_C (0x3956c25bf348b538), UINT64_C (0x59f111f1b605d019), - UINT64_C (0x923f82a4af194f9b), UINT64_C (0xab1c5ed5da6d8118), - UINT64_C (0xd807aa98a3030242), UINT64_C (0x12835b0145706fbe), - UINT64_C (0x243185be4ee4b28c), UINT64_C (0x550c7dc3d5ffb4e2), - UINT64_C (0x72be5d74f27b896f), UINT64_C (0x80deb1fe3b1696b1), - UINT64_C (0x9bdc06a725c71235), UINT64_C (0xc19bf174cf692694), - UINT64_C (0xe49b69c19ef14ad2), UINT64_C (0xefbe4786384f25e3), - UINT64_C (0x0fc19dc68b8cd5b5), UINT64_C (0x240ca1cc77ac9c65), - UINT64_C (0x2de92c6f592b0275), UINT64_C (0x4a7484aa6ea6e483), - UINT64_C (0x5cb0a9dcbd41fbd4), UINT64_C (0x76f988da831153b5), - UINT64_C (0x983e5152ee66dfab), UINT64_C (0xa831c66d2db43210), - UINT64_C (0xb00327c898fb213f), UINT64_C (0xbf597fc7beef0ee4), - UINT64_C (0xc6e00bf33da88fc2), UINT64_C (0xd5a79147930aa725), - UINT64_C (0x06ca6351e003826f), UINT64_C (0x142929670a0e6e70), - UINT64_C (0x27b70a8546d22ffc), UINT64_C (0x2e1b21385c26c926), - UINT64_C (0x4d2c6dfc5ac42aed), UINT64_C (0x53380d139d95b3df), - UINT64_C (0x650a73548baf63de), UINT64_C (0x766a0abb3c77b2a8), - UINT64_C (0x81c2c92e47edaee6), UINT64_C (0x92722c851482353b), - UINT64_C (0xa2bfe8a14cf10364), UINT64_C (0xa81a664bbc423001), - UINT64_C (0xc24b8b70d0f89791), UINT64_C (0xc76c51a30654be30), - UINT64_C (0xd192e819d6ef5218), UINT64_C (0xd69906245565a910), - UINT64_C (0xf40e35855771202a), UINT64_C (0x106aa07032bbd1b8), - UINT64_C (0x19a4c116b8d2d0c8), UINT64_C (0x1e376c085141ab53), - UINT64_C (0x2748774cdf8eeb99), UINT64_C (0x34b0bcb5e19b48a8), - UINT64_C (0x391c0cb3c5c95a63), UINT64_C (0x4ed8aa4ae3418acb), - UINT64_C (0x5b9cca4f7763e373), UINT64_C (0x682e6ff3d6b2b8a3), - UINT64_C (0x748f82ee5defb2fc), UINT64_C (0x78a5636f43172f60), - UINT64_C (0x84c87814a1f0ab72), UINT64_C (0x8cc702081a6439ec), - UINT64_C (0x90befffa23631e28), UINT64_C (0xa4506cebde82bde9), - UINT64_C (0xbef9a3f7b2c67915), UINT64_C (0xc67178f2e372532b), - UINT64_C (0xca273eceea26619c), UINT64_C (0xd186b8c721c0c207), - UINT64_C (0xeada7dd6cde0eb1e), UINT64_C (0xf57d4f7fee6ed178), - UINT64_C (0x06f067aa72176fba), UINT64_C (0x0a637dc5a2c898a6), - UINT64_C (0x113f9804bef90dae), UINT64_C (0x1b710b35131c471b), - UINT64_C (0x28db77f523047d84), UINT64_C (0x32caab7b40c72493), - UINT64_C (0x3c9ebe0a15c9bebc), UINT64_C (0x431d67c49c100d4c), - UINT64_C (0x4cc5d4becb3e42b6), UINT64_C (0x597f299cfc657e2a), - UINT64_C (0x5fcb6fab3ad6faec), UINT64_C (0x6c44198c4a475817) - }; - - -/* Process LEN bytes of BUFFER, accumulating context into CTX. - It is assumed that LEN % 128 == 0. */ -static void -sha512_process_block (const void *buffer, size_t len, struct sha512_ctx *ctx) -{ - const uint64_t *words = buffer; - size_t nwords = len / sizeof (uint64_t); - uint64_t a = ctx->H[0]; - uint64_t b = ctx->H[1]; - uint64_t c = ctx->H[2]; - uint64_t d = ctx->H[3]; - uint64_t e = ctx->H[4]; - uint64_t f = ctx->H[5]; - uint64_t g = ctx->H[6]; - uint64_t h = ctx->H[7]; - - /* First increment the byte count. FIPS 180-2 specifies the possible - length of the file up to 2^128 bits. Here we only compute the - number of bytes. Do a double word increment. */ - ctx->total[0] += len; - if (ctx->total[0] < len) - ++ctx->total[1]; - - /* Process all bytes in the buffer with 128 bytes in each round of - the loop. */ - while (nwords > 0) - { - uint64_t W[80]; - uint64_t a_save = a; - uint64_t b_save = b; - uint64_t c_save = c; - uint64_t d_save = d; - uint64_t e_save = e; - uint64_t f_save = f; - uint64_t g_save = g; - uint64_t h_save = h; - - /* Operators defined in FIPS 180-2:4.1.2. */ -#define Ch(x, y, z) ((x & y) ^ (~x & z)) -#define Maj(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) -#define S0(x) (CYCLIC (x, 28) ^ CYCLIC (x, 34) ^ CYCLIC (x, 39)) -#define S1(x) (CYCLIC (x, 14) ^ CYCLIC (x, 18) ^ CYCLIC (x, 41)) -#define R0(x) (CYCLIC (x, 1) ^ CYCLIC (x, 8) ^ (x >> 7)) -#define R1(x) (CYCLIC (x, 19) ^ CYCLIC (x, 61) ^ (x >> 6)) - - /* It is unfortunate that C does not provide an operator for - cyclic rotation. Hope the C compiler is smart enough. */ -#define CYCLIC(w, s) ((w >> s) | (w << (64 - s))) - - /* Compute the message schedule according to FIPS 180-2:6.3.2 step 2. */ - for (unsigned int t = 0; t < 16; ++t) - { - W[t] = SWAP (*words); - ++words; - } - for (unsigned int t = 16; t < 80; ++t) - W[t] = R1 (W[t - 2]) + W[t - 7] + R0 (W[t - 15]) + W[t - 16]; - - /* The actual computation according to FIPS 180-2:6.3.2 step 3. */ - for (unsigned int t = 0; t < 80; ++t) - { - uint64_t T1 = h + S1 (e) + Ch (e, f, g) + K[t] + W[t]; - uint64_t T2 = S0 (a) + Maj (a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - } - - /* Add the starting values of the context according to FIPS 180-2:6.3.2 - step 4. */ - a += a_save; - b += b_save; - c += c_save; - d += d_save; - e += e_save; - f += f_save; - g += g_save; - h += h_save; - - /* Prepare for the next round. */ - nwords -= 16; - } - - /* Put checksum in context given as argument. */ - ctx->H[0] = a; - ctx->H[1] = b; - ctx->H[2] = c; - ctx->H[3] = d; - ctx->H[4] = e; - ctx->H[5] = f; - ctx->H[6] = g; - ctx->H[7] = h; -} - - -/* Initialize structure containing state of computation. - (FIPS 180-2:5.3.3) */ -void -__sha512_init_ctx (ctx) - struct sha512_ctx *ctx; -{ - ctx->H[0] = UINT64_C (0x6a09e667f3bcc908); - ctx->H[1] = UINT64_C (0xbb67ae8584caa73b); - ctx->H[2] = UINT64_C (0x3c6ef372fe94f82b); - ctx->H[3] = UINT64_C (0xa54ff53a5f1d36f1); - ctx->H[4] = UINT64_C (0x510e527fade682d1); - ctx->H[5] = UINT64_C (0x9b05688c2b3e6c1f); - ctx->H[6] = UINT64_C (0x1f83d9abfb41bd6b); - ctx->H[7] = UINT64_C (0x5be0cd19137e2179); - - ctx->total[0] = ctx->total[1] = 0; - ctx->buflen = 0; -} - - -/* Process the remaining bytes in the internal buffer and the usual - prolog according to the standard and write the result to RESBUF. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 32 bits value. */ -void * -__sha512_finish_ctx (ctx, resbuf) - struct sha512_ctx *ctx; - void *resbuf; -{ - /* Take yet unprocessed bytes into account. */ - uint64_t bytes = ctx->buflen; - size_t pad; - - /* Now count remaining bytes. */ - ctx->total[0] += bytes; - if (ctx->total[0] < bytes) - ++ctx->total[1]; - - pad = bytes >= 112 ? 128 + 112 - bytes : 112 - bytes; - memcpy (&ctx->buffer[bytes], fillbuf, pad); - - /* Put the 128-bit file length in *bits* at the end of the buffer. */ - *(uint64_t *) &ctx->buffer[bytes + pad + 8] = SWAP (ctx->total[0] << 3); - *(uint64_t *) &ctx->buffer[bytes + pad] = SWAP ((ctx->total[1] << 3) | - (ctx->total[0] >> 61)); - - /* Process last bytes. */ - sha512_process_block (ctx->buffer, bytes + pad + 16, ctx); - - /* Put result from CTX in first 64 bytes following RESBUF. */ - for (unsigned int i = 0; i < 8; ++i) - ((uint64_t *) resbuf)[i] = SWAP (ctx->H[i]); - - return resbuf; -} - - -void -__sha512_process_bytes (buffer, len, ctx) - const void *buffer; - size_t len; - struct sha512_ctx *ctx; -{ - /* When we already have some bits in our internal buffer concatenate - both inputs first. */ - if (ctx->buflen != 0) - { - size_t left_over = ctx->buflen; - size_t add = 256 - left_over > len ? len : 256 - left_over; - - memcpy (&ctx->buffer[left_over], buffer, add); - ctx->buflen += add; - - if (ctx->buflen > 128) - { - sha512_process_block (ctx->buffer, ctx->buflen & ~127, ctx); - - ctx->buflen &= 127; - /* The regions in the following copy operation cannot overlap. */ - memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~127], - ctx->buflen); - } - - buffer = (const char *) buffer + add; - len -= add; - } - - /* Process available complete blocks. */ - if (len >= 128) - { -#if !_STRING_ARCH_unaligned -/* To check alignment gcc has an appropriate operator. Other - compilers don't. */ -# if __GNUC__ >= 2 -# define UNALIGNED_P(p) (((uintptr_t) p) % __alignof__ (uint64_t) != 0) -# else -# define UNALIGNED_P(p) (((uintptr_t) p) % sizeof (uint64_t) != 0) -# endif - if (UNALIGNED_P (buffer)) - while (len > 128) - { - sha512_process_block (memcpy (ctx->buffer, buffer, 128), 128, - ctx); - buffer = (const char *) buffer + 128; - len -= 128; - } - else -#endif - { - sha512_process_block (buffer, len & ~127, ctx); - buffer = (const char *) buffer + (len & ~127); - len &= 127; - } - } - - /* Move remaining bytes into internal buffer. */ - if (len > 0) - { - size_t left_over = ctx->buflen; - - memcpy (&ctx->buffer[left_over], buffer, len); - left_over += len; - if (left_over >= 128) - { - sha512_process_block (ctx->buffer, 128, ctx); - left_over -= 128; - memcpy (ctx->buffer, &ctx->buffer[128], left_over); - } - ctx->buflen = left_over; - } -} diff --git a/bin/glibc-2.7/crypt/sha512.h b/bin/glibc-2.7/crypt/sha512.h deleted file mode 100644 index 9952c5f8..00000000 --- a/bin/glibc-2.7/crypt/sha512.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Declaration of functions and data types used for SHA512 sum computing - library functions. - Copyright (C) 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SHA512_H -#define _SHA512_H 1 - -#include -#include -#include - - -/* Structure to save state of computation between the single steps. */ -struct sha512_ctx -{ - uint64_t H[8]; - - uint64_t total[2]; - uint64_t buflen; - char buffer[256] __attribute__ ((__aligned__ (__alignof__ (uint64_t)))); -}; - -/* Initialize structure containing state of computation. - (FIPS 180-2: 5.3.3) */ -extern void __sha512_init_ctx (struct sha512_ctx *ctx) __THROW; - -/* Starting with the result of former calls of this function (or the - initialization function update the context for the next LEN bytes - starting at BUFFER. - It is NOT required that LEN is a multiple of 128. */ -extern void __sha512_process_bytes (const void *buffer, size_t len, - struct sha512_ctx *ctx) __THROW; - -/* Process the remaining bytes in the buffer and put result from CTX - in first 64 bytes following RESBUF. - - IMPORTANT: On some systems it is required that RESBUF is correctly - aligned for a 64 bits value. */ -extern void *__sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf) - __THROW; - -#endif /* sha512.h */ diff --git a/bin/glibc-2.7/crypt/sha512c-test.c b/bin/glibc-2.7/crypt/sha512c-test.c deleted file mode 100644 index 4c888feb..00000000 --- a/bin/glibc-2.7/crypt/sha512c-test.c +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include - -static const struct -{ - const char *salt; - const char *input; - const char *expected; -} tests[] = -{ - { "$6$saltstring", "Hello world!", - "$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJu" - "esI68u4OTLiBFdcbYEdFCoEOfaS35inz1" }, - { "$6$rounds=10000$saltstringsaltstring", "Hello world!", - "$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sb" - "HbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v." }, - { "$6$rounds=5000$toolongsaltstring", "This is just a test", - "$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQ" - "zQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0" }, - { "$6$rounds=1400$anotherlongsaltstring", - "a very much longer text to encrypt. This one even stretches over more" - "than one line.", - "$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wP" - "vMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1" }, - { "$6$rounds=77777$short", - "we have a short salt string but not a short password", - "$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0g" - "ge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0" }, - { "$6$rounds=123456$asaltof16chars..", "a short string", - "$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwc" - "elCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1" }, - { "$6$rounds=10$roundstoolow", "the minimum number is still observed", - "$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1x" - "hLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX." }, -}; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -static int -do_test (void) -{ - int result = 0; - int i; - - for (i = 0; i < ntests; ++i) - { - char *cp = crypt (tests[i].input, tests[i].salt); - - if (strcmp (cp, tests[i].expected) != 0) - { - printf ("test %d: expected \"%s\", got \"%s\"\n", - i, tests[i].expected, cp); - result = 1; - } - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/crypt/sha512test.c b/bin/glibc-2.7/crypt/sha512test.c deleted file mode 100644 index 792e9a75..00000000 --- a/bin/glibc-2.7/crypt/sha512test.c +++ /dev/null @@ -1,113 +0,0 @@ -#include -#include "sha512.h" - -static const struct -{ - const char *input; - const char result[64]; -} tests[] = - { - /* Test vectors from FIPS 180-2: appendix C.1. */ - { "abc", - "\xdd\xaf\x35\xa1\x93\x61\x7a\xba\xcc\x41\x73\x49\xae\x20\x41\x31" - "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a" - "\x21\x92\x99\x2a\x27\x4f\xc1\xa8\x36\xba\x3c\x23\xa3\xfe\xeb\xbd" - "\x45\x4d\x44\x23\x64\x3c\xe8\x0e\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f" }, - /* Test vectors from FIPS 180-2: appendix C.2. */ - { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" - "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", - "\x8e\x95\x9b\x75\xda\xe3\x13\xda\x8c\xf4\xf7\x28\x14\xfc\x14\x3f" - "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1\x72\x99\xae\xad\xb6\x88\x90\x18" - "\x50\x1d\x28\x9e\x49\x00\xf7\xe4\x33\x1b\x99\xde\xc4\xb5\x43\x3a" - "\xc7\xd3\x29\xee\xb6\xdd\x26\x54\x5e\x96\xe5\x5b\x87\x4b\xe9\x09" }, - /* Test vectors from the NESSIE project. */ - { "", - "\xcf\x83\xe1\x35\x7e\xef\xb8\xbd\xf1\x54\x28\x50\xd6\x6d\x80\x07" - "\xd6\x20\xe4\x05\x0b\x57\x15\xdc\x83\xf4\xa9\x21\xd3\x6c\xe9\xce" - "\x47\xd0\xd1\x3c\x5d\x85\xf2\xb0\xff\x83\x18\xd2\x87\x7e\xec\x2f" - "\x63\xb9\x31\xbd\x47\x41\x7a\x81\xa5\x38\x32\x7a\xf9\x27\xda\x3e" }, - { "a", - "\x1f\x40\xfc\x92\xda\x24\x16\x94\x75\x09\x79\xee\x6c\xf5\x82\xf2" - "\xd5\xd7\xd2\x8e\x18\x33\x5d\xe0\x5a\xbc\x54\xd0\x56\x0e\x0f\x53" - "\x02\x86\x0c\x65\x2b\xf0\x8d\x56\x02\x52\xaa\x5e\x74\x21\x05\x46" - "\xf3\x69\xfb\xbb\xce\x8c\x12\xcf\xc7\x95\x7b\x26\x52\xfe\x9a\x75" }, - { "message digest", - "\x10\x7d\xbf\x38\x9d\x9e\x9f\x71\xa3\xa9\x5f\x6c\x05\x5b\x92\x51" - "\xbc\x52\x68\xc2\xbe\x16\xd6\xc1\x34\x92\xea\x45\xb0\x19\x9f\x33" - "\x09\xe1\x64\x55\xab\x1e\x96\x11\x8e\x8a\x90\x5d\x55\x97\xb7\x20" - "\x38\xdd\xb3\x72\xa8\x98\x26\x04\x6d\xe6\x66\x87\xbb\x42\x0e\x7c" }, - { "abcdefghijklmnopqrstuvwxyz", - "\x4d\xbf\xf8\x6c\xc2\xca\x1b\xae\x1e\x16\x46\x8a\x05\xcb\x98\x81" - "\xc9\x7f\x17\x53\xbc\xe3\x61\x90\x34\x89\x8f\xaa\x1a\xab\xe4\x29" - "\x95\x5a\x1b\xf8\xec\x48\x3d\x74\x21\xfe\x3c\x16\x46\x61\x3a\x59" - "\xed\x54\x41\xfb\x0f\x32\x13\x89\xf7\x7f\x48\xa8\x79\xc7\xb1\xf1" }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a\x0c\xed\x7b\xeb\x8e\x08\xa4\x16" - "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8\x27\x9b\xe3\x31\xa7\x03\xc3\x35" - "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9\xaa\x1d\x3b\xea\x57\x78\x9c\xa0" - "\x31\xad\x85\xc7\xa7\x1d\xd7\x03\x54\xec\x63\x12\x38\xca\x34\x45" }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "\x1e\x07\xbe\x23\xc2\x6a\x86\xea\x37\xea\x81\x0c\x8e\xc7\x80\x93" - "\x52\x51\x5a\x97\x0e\x92\x53\xc2\x6f\x53\x6c\xfc\x7a\x99\x96\xc4" - "\x5c\x83\x70\x58\x3e\x0a\x78\xfa\x4a\x90\x04\x1d\x71\xa4\xce\xab" - "\x74\x23\xf1\x9c\x71\xb9\xd5\xa3\xe0\x12\x49\xf0\xbe\xbd\x58\x94" }, - { "123456789012345678901234567890123456789012345678901234567890" - "12345678901234567890", - "\x72\xec\x1e\xf1\x12\x4a\x45\xb0\x47\xe8\xb7\xc7\x5a\x93\x21\x95" - "\x13\x5b\xb6\x1d\xe2\x4e\xc0\xd1\x91\x40\x42\x24\x6e\x0a\xec\x3a" - "\x23\x54\xe0\x93\xd7\x6f\x30\x48\xb4\x56\x76\x43\x46\x90\x0c\xb1" - "\x30\xd2\xa4\xfd\x5d\xd1\x6a\xbb\x5e\x30\xbc\xb8\x50\xde\xe8\x43" } - }; - - -int -main (void) -{ - struct sha512_ctx ctx; - char sum[64]; - int result = 0; - int cnt; - - for (cnt = 0; cnt < (int) (sizeof (tests) / sizeof (tests[0])); ++cnt) - { - __sha512_init_ctx (&ctx); - __sha512_process_bytes (tests[cnt].input, strlen (tests[cnt].input), - &ctx); - __sha512_finish_ctx (&ctx, sum); - if (memcmp (tests[cnt].result, sum, 64) != 0) - { - printf ("test %d run %d failed\n", cnt, 1); - result = 1; - } - - __sha512_init_ctx (&ctx); - for (int i = 0; tests[cnt].input[i] != '\0'; ++i) - __sha512_process_bytes (&tests[cnt].input[i], 1, &ctx); - __sha512_finish_ctx (&ctx, sum); - if (memcmp (tests[cnt].result, sum, 64) != 0) - { - printf ("test %d run %d failed\n", cnt, 2); - result = 1; - } - } - - /* Test vector from FIPS 180-2: appendix C.3. */ - char buf[1000]; - memset (buf, 'a', sizeof (buf)); - __sha512_init_ctx (&ctx); - for (int i = 0; i < 1000; ++i) - __sha512_process_bytes (buf, sizeof (buf), &ctx); - __sha512_finish_ctx (&ctx, sum); - static const char expected[64] = - "\xe7\x18\x48\x3d\x0c\xe7\x69\x64\x4e\x2e\x42\xc7\xbc\x15\xb4\x63" - "\x8e\x1f\x98\xb1\x3b\x20\x44\x28\x56\x32\xa8\x03\xaf\xa9\x73\xeb" - "\xde\x0f\xf2\x44\x87\x7e\xa6\x0a\x4c\xb0\x43\x2c\xe5\x77\xc3\x1b" - "\xeb\x00\x9c\x5c\x2c\x49\xaa\x2e\x4e\xad\xb2\x17\xad\x8c\xc0\x9b"; - if (memcmp (expected, sum, 64) != 0) - { - printf ("test %d failed\n", cnt); - result = 1; - } - - return result; -} diff --git a/bin/glibc-2.7/crypt/speeds.c b/bin/glibc-2.7/crypt/speeds.c deleted file mode 100644 index 73623918..00000000 --- a/bin/glibc-2.7/crypt/speeds.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * This fcrypt/crypt speed testing program - * is derived from one floating around in - * the net. It's distributed along with - * UFC-crypt but is not covered by any - * licence. - * - * @(#)speeds.c 1.11 20 Aug 1996 - */ - -#include -#include - -#ifndef SIGVTALRM -/* - * patch from chip@chinacat.unicom.com (Chip Rosenthal): - * you may enable it if your system does not include - * a setitimer() function. You'll have to ensure the - * existence a environment variable: HZ giving how many - * ticks goes per second. - * If not existing in your default environment 50, 60 - * or even 100 may be the right value. Perhaps you should - * then use 'time ./ufc 10000' instead of guessing. - */ -#define NO_ITIMER -#endif - -#ifdef NO_ITIMER -#include -#include -#else -#include -#endif - -static int cnt; -#ifdef NO_ITIMER -char *hz; -struct tms tstart, tfinish; -#endif -#define ITIME 10 /* Number of seconds to run test. */ - -char *crypt(), *fcrypt(); - -void -Stop () -{ - double elapsed; -#ifdef NO_ITIMER - (void) times(&tfinish); - elapsed = ((tfinish.tms_utime + tfinish.tms_stime) - - (tstart.tms_utime + tstart.tms_stime)) / atoi(hz); - printf("elapsed time = %d sec, CPU time = %f sec\n", ITIME, elapsed); -#else - elapsed = ITIME; -#endif - printf ("Did %f %s()s per second.\n", ((float) cnt) / elapsed, -#if defined(FCRYPT) - "fcrypt" -#else - "crypt" -#endif - ); - exit (0); -} - -/* - * Silly rewrite of 'bzero'. I do so - * because some machines don't have - * bzero and some don't have memset. - */ - -static void clearmem(start, cnt) - char *start; - int cnt; - { while(cnt--) - *start++ = '\0'; - } - -main () -{ - char *s; -#ifdef NO_ITIMER - extern char *getenv(); -#else - struct itimerval itv; -#endif - -#ifdef NO_ITIMER - if ((hz = getenv("HZ")) == NULL) { - fprintf(stderr, "HZ environment parameter undefined\n"); - exit(1); - } -#endif - -#ifdef FCRYPT - printf("\n"); - printf("Warning: this version of the speed program may run slower when\n"); - printf("benchmarking UFC-crypt than previous versions. This is because it\n"); - printf("stresses the CPU hardware cache in order to get benchmark figures\n"); - printf("that corresponds closer to the performance that can be expected in\n"); - printf("a password cracker.\n\n"); -#endif - - printf ("Running %s for %d seconds of virtual time ...\n", -#ifdef FCRYPT - "UFC-crypt", -#else - "crypt(libc)", -#endif - ITIME); - -#ifdef FCRYPT - init_des (); -#endif - -#ifdef NO_ITIMER - signal(SIGALRM, Stop); - switch (fork()) { - case -1: - perror("fork failed"); - exit(1); - case 0: - sleep(10); - kill(getppid(), SIGALRM); - exit(0); - default: - (void) times(&tstart); - } -#else - clearmem ((char*)&itv, (int)sizeof (itv)); - signal (SIGVTALRM, Stop); - itv.it_value.tv_sec = ITIME; - itv.it_value.tv_usec = 0; - setitimer (ITIMER_VIRTUAL, &itv, NULL); -#endif - - - s = "fredred"; - for (cnt = 0;; cnt++) - { -#ifdef FCRYPT - s = fcrypt (s, "eek"); -#else - s = crypt (s, "eek"); -#endif - } -} - - - - - - diff --git a/bin/glibc-2.7/crypt/ufc-crypt.h b/bin/glibc-2.7/crypt/ufc-crypt.h deleted file mode 100644 index 1e7ed4a9..00000000 --- a/bin/glibc-2.7/crypt/ufc-crypt.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Types for UFC-crypt. - Copyright (C) 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -typedef uint_fast32_t ufc_long; -typedef uint64_t long64; -typedef uint32_t long32; -#if UINT_FAST32_MAX == UINT_FAST64_MAX -# define _UFC_64_ -#else -# define _UFC_32_ -#endif diff --git a/bin/glibc-2.7/crypt/ufc.c b/bin/glibc-2.7/crypt/ufc.c deleted file mode 100644 index 6d0e790d..00000000 --- a/bin/glibc-2.7/crypt/ufc.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * UFC-crypt: ultra fast crypt(3) implementation - * - * Copyright (C) 1991, 1992, 1993, 1996 Free Software Foundation, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the GNU C Library; see the file COPYING.LIB. If not, - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * @(#)ufc.c 2.7 9/10/96 - * - * Stub main program for debugging - * and benchmarking. - * - */ - -#include - -char *crypt(); - -main(argc, argv) - int argc; - char **argv; - { char *s; - unsigned long i,iterations; - - if(argc != 2) { - fprintf(stderr, "usage: ufc iterations\n"); - exit(1); - } - argv++; - iterations = atoi(*argv); - printf("ufc: running %d iterations\n", iterations); - - for(i=0; i $@ - -MIGFLAGS = -DMACH_IPC_COMPAT=0 -DSTANDALONE -DTypeCheck=0 \ - $(+includes) $(migdefines) -subrprefix __ -# Putting CC in the enivronment makes the mig wrapper script -# use the same compiler setup we are using to run cpp. -MIG := CC='${CC}' CPP='${CPP} -x c' $(MIG) - -.SUFFIXES: .defs # Just to set specified_rule_matched. - -define nl # This is needed by *.ir. - - -endef -ifdef user-interfaces -*.ir := $(addprefix $(objpfx),$(foreach if,$(user-interfaces),$(if).ir)) -ifndef no_deps -ifndef inhibit_interface_rules --include $(*.ir) -endif -endif -ifneq "$(*.ir)" "$(wildcard $(*.ir))" -# If any .ir file is missing, we will be unable to make all the deps. -no_deps=t -endif -generated += $(*.ir:$(objpfx)%=%) -endif - - -# %.ir defines a variable `%-calls', which lists the RPCs defined by -# %.defs, and a rule to build $(%-calls:%=RPC_$(%-userprefix)%.c) from -# %.defs, where $(%-userprefix) is the user prefix given in %.defs. We use -# the kludgificacious method of defining a pattern rule to build files -# matching patterns we are pretty damn sure will only match the particular -# files we have in mind. To be so damn sure, we use the silly names -# RPC_*.c and the pattern R%C_*.c because using __*.c and _%*.c (or any -# other useful pattern) causes the rule for `host_info' to also match -# `xxx_host_info', and analogous lossage. -# -# Depend on %.h just so they will be built from %.uh in the -# makefile-rebuilding run which builds %.ir; otherwise, %.uh is built as an -# intermediate in order to make %.ir and then removed before re-exec, when -# %.uh is built all over again to build %.h. -$(objpfx)%.ir: $(objpfx)%.uh $(objpfx)%.h - ($(AWK) "NF == 4 && (\$$2 == \"Routine\" || \$$2 == \"SimpleRoutine\")\ - { printf \"$*-calls += %s\\n\", \$$3 }" $< ;\ - echo '$$($*-calls:%=$$(objpfx)R\%C_%.c): $$(objpfx)$*.ustamp ;';\ - ) > $@-new - mv -f $@-new $@ -vpath Machrules ../mach # Find ourselves. - -ifndef transform-user-stub-output -transform-user-stub-output = tmp -define transform-user-stub -echo "weak_alias (__$$call, $$call)" >> $(objpfx)tmp_$${call}.c; -endef -endif - - -# Generate `#include ', taking $* for NAME. -# If $(NAME.defs) is defined use its value in place of `NAME.defs'. -define include-%.defs -echo '#include <$(firstword $($*.defs) $*.defs)>' -endef - -ifndef no_deps -# Not an implicit rule so the stamps are never removed as intermediates! -$(patsubst %,$(objpfx)%.ustamp,$(user-interfaces)): $(objpfx)%.ustamp: - rm -f $@ - $(include-%.defs) | \ - $(MIG) - /dev/null -prefix __ \ - $(MIGFLAGS) $(user-MIGFLAGS) $(MIGFLAGS-$*) \ - -i $(objpfx)tmp_ \ - -server /dev/null -user /dev/null -header /dev/null - for call in $($*-calls); do \ - $(transform-user-stub) \ - $(move-if-change) $(objpfx)$(transform-user-stub-output)_$${call}.c \ - $(objpfx)RPC_$${call}.c; \ - done - touch $@ --include $(patsubst %,$(objpfx)%.udeps,$(user-interfaces)) -$(patsubst %,$(objpfx)%.udeps,$(user-interfaces)): - $(objpfx)%.udeps: $(..)mach/Machrules - $(make-target-directory) -# We must use $(CFLAGS) to get -O flags that affect #if's in header files. - $(include-%.defs) | \ - $(CC) $(CFLAGS) $(CPPFLAGS) -M -x c - | \ - sed -e 's,- *:,$(.udeps-targets):,' \ - $(sed-remove-objpfx) > $@.new - mv -f $@.new $@ -.udeps-targets = $@ $(@:.udeps=.ustamp) $(@:.udeps=.uh) $(@:.udeps=.__h) \ - $(@:.udeps=_server.c) $(@:.udeps=_server.h) -endif - -# Look for the server stub files where they will be written. -vpath %_server.c $(addprefix $(objpfx),$(sort $(dir $(server-interfaces)))) - -# Build the server stubs in $(objdir). -$(objpfx)%_server.c $(objpfx)%_server.h: - $(make-target-directory) - $(include-%.defs) | \ - $(MIG) - /dev/null -prefix _S_ \ - $(MIGFLAGS) $(server-MIGFLAGS) $(MIGFLAGS-$*) \ - -user /dev/null -header /dev/null \ - -server $(@:.h=.c) -sheader $(@:.c=.h) - -# To get header files that declare both the straight and __ functions, -# we generate two files and paste them together. -$(patsubst %,$(objpfx)%.uh,$(user-interfaces)): $(objpfx)%.uh:; $(mig.uh) -define mig.uh -$(make-target-directory) -$(include-%.defs) | \ -$(MIG) - /dev/null $(MIGFLAGS) $(MIGFLAGS-$*) \ - -header $@ -server /dev/null -user /dev/null -endef -$(patsubst %,$(objpfx)%.__h,$(user-interfaces)): $(objpfx)%.__h:; $(mig.__h) -define mig.__h -$(make-target-directory) -$(include-%.defs) | \ -$(MIG) - /dev/null $(MIGFLAGS) $(MIGFLAGS-$*) -prefix __ \ - -header $@ -server /dev/null -user /dev/null -endef - -$(patsubst %,$(objpfx)%.h,$(user-interfaces)): $(objpfx)%.h: $(objpfx)%.__h \ - $(objpfx)%.uh -# The last line of foo.__h is "#endif _foo_user_". -# The first two lines of foo.uh are "#ifndef _foo_user_"/"#define _foo_user_". - (sed -e '$$d' $<; sed -e '1,2d' $(word 2,$^)) > $@-new - mv -f $@-new $@ - -interface-routines := $(foreach if,$(user-interfaces), \ - $(addprefix RPC_,$($(if)-calls))) \ - $(server-interfaces:%=%_server) -interface-headers := $(user-interfaces:%=%.h) \ - $(server-interfaces:%=%_server.h) - -# Remove the generated user stub source and header files, -# and don't distribute them. -mach-generated = $(interface-routines:%=%.c) $(interface-headers) \ - $(foreach h,$(user-interfaces),$h.uh $h.__h) -generated += $(mach-generated) - -# These are needed to generate the dependencies. -before-compile += $(interface-headers:%=$(objpfx)%) - -# Don't let these be intermediate files and get removed. -$(foreach h,$(interface-headers:%.h=$(objpfx)%),$h.h $h.__h $h.uh) : -$(interface-routines:%=$(objpfx)%.c) : - -# Convenient target to generate all the headers. -.PHONY: interface-headers -interface-headers: $(interface-headers) - -# Don't automatically generate dependencies for the sources we generate. -# There are likely to be a whole lot of them, and we know their -# dependencies ahead of time anyway because they're boilerplate. -omit-deps += $(interface-routines) - -# Choose any single module generated by MiG. We will compute this module's -# dependencies and then assume all other MiG-generated modules depend on the -# same headers. -some-if-rtn := $(firstword $(interface-routines)) -ifdef some-if-rtn -$(foreach o,$(object-suffixes),$(interfaces-routines:%=%$o)): $(some-if-rtn).d -generated += $(some-if-rtn).d -endif - -# If defined, $(interface-library) is `libNAME'. It is to be a library -# containing all the MiG-generated functions for the specified interfaces. - -ifdef interface-library - -$(interface-library)-routines = $(interface-routines) -extra-libs += $(interface-library) -extra-libs-others += $(interface-library) - -ifeq (yes,$(build-shared)) -interface.so = $(interface-library:=.so) - -# Depend on libc.so so a DT_NEEDED is generated in the shared objects. -$(objpfx)$(interface.so): $(common-objpfx)libc.so -endif - -endif diff --git a/bin/glibc-2.7/mach/Makefile b/bin/glibc-2.7/mach/Makefile deleted file mode 100644 index 314f2efc..00000000 --- a/bin/glibc-2.7/mach/Makefile +++ /dev/null @@ -1,180 +0,0 @@ -# Copyright (C) 1991,92,93,94,95,96,97,98,2001,02 -# Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA. - -subdir := mach - -all: - -# Some things below (but before including Rules) use configuration variables. -include ../Makeconfig - - -headers = mach_init.h mach.h mach_error.h mach-shortcuts.h mach/mach_traps.h \ - $(interface-headers) mach/mach.h mach/mig_support.h mach/error.h \ - $(lock-headers) machine-sp.h -distribute = thread_state.h -lock = spin-solid spin-lock mutex-init mutex-solid -lock-headers = lock-intern.h machine-lock.h spin-lock.h -routines = $(mach-syscalls) $(mach-shortcuts) \ - mach_init mig_strncpy msg \ - mig-alloc mig-dealloc mig-reply \ - msg-destroy msgserver \ - mach_error errstring error_compat errsystems \ - devstream setup-thread $(lock) - -# The RPC interfaces go in a separate library. -interface-library := libmachuser - -# We produce mach_interface.h from mach.defs because there is already a -# that is not the interface header (thanks CMU). -mach-interface-list := $(patsubst mach,mach_interface,$(mach-interface-list)) -mach/mach_interface.defs = mach/mach.defs - -# Similarly for memory_object_user vs. memory_object -mach-interface-list := $(patsubst memory_object,memory_object_user,\ - $(mach-interface-list)) -mach/memory_object_user.defs = mach/memory_object.defs - -user-interfaces := $(addprefix mach/,$(mach-interface-list) \ - mach_port mach_host exc \ - )\ - $(addprefix device/,device device_request) - -server-interfaces := mach/exc - -# It is important that we do not use the wildcard function to expand -# `err_*.sub'. Leaving the wildcard allows Make-dist to find all matching -# files in all sysdep directories. -distribute += Machrules syscalls.awk shortcut.awk \ - errorlib.h err_*.sub errsystems.awk - -# Clear any environment value. -generated = - -# Translate GNU names for CPUs into the names used in Mach header files. -mach-machine = $(patsubst powerpc,ppc,$(base-machine)) - -# Define mach-syscalls and sysno-*. -ifndef inhibit_mach_syscalls --include $(objpfx)mach-syscalls.mk -endif -$(objpfx)mach-syscalls.mk: syscalls.awk Makefile -# Go kludges!!! - $(make-target-directory) -# We must use $(CFLAGS) to get -O flags that affect #if's in header files. - echo '#include ' | \ - $(CC) $(CFLAGS) $(CPPFLAGS) -E -MD -MP -MF $@-dep -MT $@ \ - -x c-header - \ - -D_MACH_`echo $(mach-machine) | tr a-z A-Z`_SYSCALL_SW_H_=1 | \ - sed -n -e 's/^kernel_trap(\(.*\),\([-0-9]*\),\([0-9]*\))$$/\1 \2 \3/p'\ - | $(AWK) -f $< > $@-new -ifneq (,$(objpfx)) - sed $(sed-remove-objpfx) $@-dep >> $@-new -else - cat $@-dep >> $@-new -endif - rm -f $@-dep - mv -f $@-new $@ -generated += mach-syscalls.mk - -ifndef mach-syscalls -# We cannot make the deps properly until we know how to make the system -# call functions, and for that we must know what they all are. -no_deps=t -else -$(mach-syscalls:%=$(objpfx)%.S): $(objpfx)%.S: $(objpfx)mach-syscalls.mk - (echo '#include '; \ - echo 'kernel_trap (__$*,$(sysno-$*),$(nargs-$*))'; \ - echo 'weak_alias (__$*, $*)') > $@-new - mv -f $@-new $@ -generated += $(mach-syscalls:=.S) -endif # mach-syscalls - -# These syscalls that look like RPCs actually have no RPC equivalents. -mach-shortcuts := $(filter-out device_writev_request \ - device_read_overwrite_request \ - device_read_overwrite \ - vm_read_overwrite \ - thread_switch \ - ,\ - $(patsubst syscall_%,%,$(filter syscall_%,$(mach-syscalls)))) - -ifndef mach-shortcuts -# Forget about mach_interface.defs for this run. On the next run, -# $(mach-shortcuts) will be set, and that will change how -# mach_interface.defs is processed: it will get the -D flags below. -user-interfaces := $(filter-out $(mach-interface-list:%=mach/%) \ - mach/mach_port mach/mach_host mach/mach4 \ - device/device_request,\ - $(user-interfaces)) -endif - -# For some reason, the calls in this file are `protected' by an ifdef. -MIGFLAGS-mach/mach4=-DMACH_PCSAMPLE - -# Make the MiG stubs for $(mach-shortcuts) be CALL_rpc. -migdefines += $(foreach call,$(mach-shortcuts),-D$(call)=$(call)_rpc) -$(mach-interface-list:%=mach/%.uh) \ - mach/mach_host.uh mach/mach_port.uh: $(objpfx)mach-syscalls.mk - -ifdef mach-shortcuts -$(mach-shortcuts:%=$(objpfx)%.c): $(objpfx)%.c: shortcut.awk \ - $(objpfx)RPC_%_rpc.c - $(AWK) -v alias=$* -v call=__$* -v rpc=__$*_rpc \ - -v syscall=__syscall_$* -f $^ > $@-new - mv -f $@-new $@ -generated += $(mach-shortcuts:%=%.c) -endif # mach-shortcuts - -# Generate mach-shortcuts.h, which will contain the prototypes for the -# shortcutted kernel RPC functions. -$(objpfx)mach-shortcuts.h: $(mach-interface-list:%=$(objpfx)mach/%.h) \ - $(objpfx)mach/mach_host.h \ - $(objpfx)mach/mach_port.h -# The first line gets us one paragraph per line, with @s separating real lines. -# The second line selects paragraphs for the shortcutted functions. -# The third line removes `_rpc' from the names and reconstitutes the lines. - cat $^ | tr \\012 @ | sed s/@@/@%/g | tr % \\012 \ - | grep '^/\* Routine [a-z0-9_]*_rpc \*/' \ - | sed 's/_rpc//g' | tr @ \\012 > $@-new - mv -f $@-new $@ -generated += mach-shortcuts.h - -before-compile += $(objpfx)mach-shortcuts.h - -include Machrules -include ../Rules - - -# A gcc bug prevents the generated file from working properly, -# so we have one in the distribution for the time being. -generated += errsystems.c -$(objpfx)errsystems.c: errsystems.awk err_*.sub \ - $(wildcard $(addsuffix /err_*.sub,$(+sysdep_dirs))) - $(AWK) -v subsys='$(filter-out $<,$^)' -f $^ > $@.n - mv -f $@.n $@ - - -# Convenient target to update all the generated source files. -.PHONY: generated -generated: $(addprefix $(common-objpfx),$(common-generated)) \ - $(addprefix $(objpfx),$(generated)) - -.PHONY: mach-before-compile -mach-before-compile: $(mach-before-compile) diff --git a/bin/glibc-2.7/mach/Versions b/bin/glibc-2.7/mach/Versions deleted file mode 100644 index 18ec511d..00000000 --- a/bin/glibc-2.7/mach/Versions +++ /dev/null @@ -1,82 +0,0 @@ -%define SHARED -%include - -libc { - GLIBC_2.0 { -%if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) - # This symbol is here only for binary compatibility with the - # pre-versioning libc.so.0.2 ABI. When the soname changes, - # it can be removed. - __vm_allocate; -%endif - - # variables used in Mach-specific macros - __mach_task_self_; - __vm_page_size; - - # functions used in inline functions and macros - __mach_port_deallocate; __mach_thread_self; -%if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) - __mutex_init; __mutex_lock; __mutex_lock_solid; __mutex_trylock; - __mutex_unlock; __mutex_unlock_solid; - __spin_lock; __spin_lock_init; __spin_lock_solid; __spin_try_lock; - __spin_unlock; -%endif - - # functions used by RPC stubs - __mach_msg; __mach_msg_overwrite; - __mig_allocate; __mig_deallocate; __mig_dealloc_reply_port; - __mig_get_reply_port; __mig_put_reply_port; - __mig_strncpy; - - # variables in normal name space - vm_page_size; - - # functions in normal name space - - # e* - evc_wait; - - # m* - mach_error; mach_error_string; mach_error_type; - mach_host_self; - mach_msg; mach_msg_overwrite; - mach_msg_destroy; - mach_msg_send; mach_msg_receive; - mach_msg_server; mach_msg_server_timeout; - mach_open_devstream; - mach_port_allocate; mach_port_allocate_name; mach_port_deallocate; - mach_port_insert_right; mach_reply_port; - mach_setup_thread; - mach_task_self; - mach_thread_self; - mig_allocate; mig_dealloc_reply_port; mig_deallocate; - mig_get_reply_port; mig_init; mig_put_reply_port; - - # v* - vm_allocate; vm_deallocate; vm_map; - - # s* - swtch; swtch_pri; - - # t* - task_create; task_set_special_port; task_suspend; task_terminate; - thread_depress_abort; thread_switch; - } - GLIBC_2.2.5 { - # internal functions used by other libraries (e.g. librt) - __mach_msg_destroy; __mach_reply_port; - - # This was always there, but not exported as it should have been. - mig_strncpy; - } - -%if !SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) - HURD_CTHREADS_0.3 { - __mutex_init; __mutex_lock; __mutex_lock_solid; __mutex_trylock; - __mutex_unlock; __mutex_unlock_solid; - __spin_lock; __spin_lock_init; __spin_lock_solid; __spin_try_lock; - __spin_unlock; - } -%endif -} diff --git a/bin/glibc-2.7/mach/devstream.c b/bin/glibc-2.7/mach/devstream.c deleted file mode 100644 index 1c51695a..00000000 --- a/bin/glibc-2.7/mach/devstream.c +++ /dev/null @@ -1,152 +0,0 @@ -/* stdio on a Mach device port. - Translates \n to \r\n on output, echos and translates \r to \n on input. - Copyright (C) 1992,93,94,96,97,2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include - - -static ssize_t -devstream_write (void *cookie, const char *buffer, size_t n) -{ - const device_t dev = (device_t) cookie; - - int write_some (const char *p, size_t to_write) - { - kern_return_t err; - int wrote; - int thiswrite; - - while (to_write > 0) - { - thiswrite = to_write; - if (thiswrite > IO_INBAND_MAX) - thiswrite = IO_INBAND_MAX; - - if (err = device_write_inband (dev, 0, 0, p, thiswrite, &wrote)) - { - errno = err; - return 0; - } - p += wrote; - to_write -= wrote; - } - return 1; - } - int write_crlf (void) - { - static const char crlf[] = "\r\n"; - return write_some (crlf, 2); - } - - /* Search for newlines (LFs) in the buffer. */ - - const char *start = buffer, *p; - while ((p = memchr (start, '\n', n)) != NULL) - { - /* Found one. Write out through the preceding character, - and then write a CR/LF pair. */ - - if ((p > start && !write_some (start, p - start)) - || !write_crlf ()) - return (start - buffer) ?: -1; - - n -= p + 1 - start; - start = p + 1; - } - - /* Write the remainder of the buffer. */ - if (write_some (start, n)) - start += n; - return (start - buffer) ?: -1; -} - -static ssize_t -devstream_read (void *cookie, char *buffer, size_t to_read) -{ - const device_t dev = (device_t) cookie; - - kern_return_t err; - mach_msg_type_number_t nread = to_read; - - err = device_read_inband (dev, 0, 0, to_read, buffer, &nread); - if (err) - { - errno = err; - return -1; - } - - /* Translate CR to LF. */ - { - char *p; - for (p = memchr (buffer, '\r', nread); p; - p = memchr (p + 1, '\r', (buffer + nread) - (p + 1))) - *p = '\n'; - } - - /* Echo back what we read. */ - (void) devstream_write (cookie, buffer, nread); - - return nread; -} - -static int -dealloc_ref (void *cookie) -{ - if (mach_port_deallocate (mach_task_self (), (mach_port_t) cookie)) - { - errno = EINVAL; - return -1; - } - return 0; -} - -#ifndef USE_IN_LIBIO -#define cookie_io_functions_t __io_functions -#define write __write -#define read __read -#define close __close -#endif - -FILE * -mach_open_devstream (mach_port_t dev, const char *mode) -{ - FILE *stream; - - if (mach_port_mod_refs (mach_task_self (), dev, MACH_PORT_RIGHT_SEND, 1)) - { - errno = EINVAL; - return NULL; - } - - stream = fopencookie ((void *) dev, mode, - (cookie_io_functions_t) { write: devstream_write, - read: devstream_read, - close: dealloc_ref }); - if (stream == NULL) - { - mach_port_deallocate (mach_task_self (), dev); - return NULL; - } - - return stream; -} diff --git a/bin/glibc-2.7/mach/err_boot.sub b/bin/glibc-2.7/mach/err_boot.sub deleted file mode 100644 index 7d656f51..00000000 --- a/bin/glibc-2.7/mach/err_boot.sub +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1992 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * HISTORY - * $Log: err_boot.sub,v $ - * Revision 1.1 1992/10/06 18:29:52 roland - * entered into RCS - * - * Revision 2.2 92/04/01 19:37:59 rpd - * Created. - * [92/03/09 rpd] - * - */ -/* - * File: err_bootstrap.sub - * Author: Richard Draves, Carnegie Mellon University - * Date: March 9, 1992 - * - * Error string definitions for bootstrap - */ - -static char * err_codes_bootstrap_fs[] = { - /* 0 */ "(bootstrap/fs) not a directory", - /* 1 */ "(bootstrap/fs) name not found", - /* 2 */ "(bootstrap/fs) name too long", - /* 3 */ "(bootstrap/fs) symbolic link loop", - /* 4 */ "(bootstrap/fs) bad file system", - /* 5 */ "(bootstrap/fs) offset not in file", - /* 6 */ "(bootstrap/fs) invalid parameter", -}; - -/* err_bootstrap subsystems */ -static struct error_subsystem err_bootstrap_sub[] = { - /* bootstrap/0; */ - { - "(bootstrap/fs)", - errlib_count(err_codes_bootstrap_fs), - err_codes_bootstrap_fs, - }, -}; diff --git a/bin/glibc-2.7/mach/err_ipc.sub b/bin/glibc-2.7/mach/err_ipc.sub deleted file mode 100644 index d0c15d0b..00000000 --- a/bin/glibc-2.7/mach/err_ipc.sub +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * HISTORY - * $Log: err_ipc.sub,v $ - * Revision 1.1 1992/10/06 18:29:52 roland - * entered into RCS - * - * Revision 2.2 92/01/16 00:08:40 rpd - * Moved from user collection to mk collection. - * - * Revision 2.2 91/03/27 16:05:16 mrt - * First checkin - * - * - */ -/* - * File: err_ipc.sub - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar, 1988 - * - * Definitions of error strings for original IPC - */ - -static char * err_codes_send[] = { - "(ipc/send) unknown error", /* -100 */ - "(ipc/send) invalid memory", /* -101 */ - "(ipc/send) invalid port", /* -102 */ - "(ipc/send) timed out", /* -103 */ - "(ipc/send) unused error", /* -104 */ - "(ipc/send) will notify", /* -105 */ - "(ipc/send) notify in progress", /* -106 */ - "(ipc/send) kernel refused message", /* -107 */ - "(ipc/send) send interrupted", /* -108 */ - "(ipc/send) send message too large", /* -109 */ - "(ipc/send) send message too small", /* -110 */ - "(ipc/send) message size changed while being copied", /* -111 */ -}; - -static char * err_codes_rcv[] = { - "(ipc/rcv) unknown error", /* -200 */ - "(ipc/rcv) invalid memory", /* -201 */ - "(ipc/rcv) invalid port", /* -202 */ - "(ipc/rcv) receive timed out", /* -203 */ - "(ipc/rcv) message too large", /* -204 */ - "(ipc/rcv) no space for message data", /* -205 */ - "(ipc/rcv) only sender remaining", /* -206 */ - "(ipc/rcv) receive interrupted", /* -207 */ - "(ipc/rcv) port receiver changed or port became enabled", /* -208 */ -}; - -static char * err_codes_mig[] = { - "(ipc/mig) type check failure in message interface", /* 0 (-300) */ - "(ipc/mig) wrong return message ID", /* 1 */ - "(ipc/mig) server detected error", /* 2 */ - "(ipc/mig) bad message ID", /* 3 */ - "(ipc/mig) server found wrong arguments", /* 4 */ - "(ipc/mig) no reply should be sent", /* 5 */ - "(ipc/mig) server raised exception", /* 6 */ - "(ipc/mig) user specified array not large enough for return info", /* 7 */ -}; - -/* err_ipc subsystems */ -static struct error_subsystem err_ipc_sub[] = { - /* ipc/0; */ - { - "(ipc/send)", - errlib_count(err_codes_send), - err_codes_send, - }, - /* ipc/1; */ - { - "(ipc/rcv)", - errlib_count(err_codes_rcv), - err_codes_rcv, - - }, - /* ipc/2 */ - { - "(ipc/mig)", - errlib_count(err_codes_mig), - err_codes_mig, - }, - -}; - diff --git a/bin/glibc-2.7/mach/err_kern.sub b/bin/glibc-2.7/mach/err_kern.sub deleted file mode 100644 index ab00ae40..00000000 --- a/bin/glibc-2.7/mach/err_kern.sub +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.3 92/04/01 19:38:02 rpd - * Added err_codes_device. - * [92/03/09 rpd] - * - * Revision 2.2 92/01/16 00:08:50 rpd - * Moved from user collection to mk collection. - * - * Revision 2.3 91/08/29 15:51:22 rpd - * Updated err_codes_kern. - * [91/08/15 rpd] - * - * Revision 2.2 91/03/27 16:05:27 mrt - * First checkin - * - */ -/* - * File: err_kern.sub - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar, 1988 - * - * error codes for Mach and Unix kernels - */ - -static char * err_codes_kern[] = { - "(os/kern) successful", - "(os/kern) invalid address", - "(os/kern) protection failure", - "(os/kern) no space available", - "(os/kern) invalid argument", - "(os/kern) failure", - "(os/kern) resource shortage", - "(os/kern) not receiver", - "(os/kern) no access", - "(os/kern) memory failure", - "(os/kern) memory error", - "(os/kern) already in set", - "(os/kern) not in set", - "(os/kern) name exists", - "(os/kern) aborted", - "(os/kern) invalid name", - "(os/kern) invalid task", - "(os/kern) invalid right", - "(os/kern) invalid value", - "(os/kern) urefs overflow", - "(os/kern) invalid capability", - "(os/kern) right exists", - "(os/kern) invalid host", - "(os/kern) memory present", -}; - -static char * err_codes_device[] = { - "(os/device) hardware IO error", - "(os/device) operation would block", - "(os/device) no such device", - "(os/device) device already open", - "(os/device) device is shut down", - "(os/device) invalid operation", - "(os/device) invalid record number", - "(os/device) invalid IO size", - "(os/device) memory allocation failure", - "(os/device) read only", -}; - -static char * err_codes_unix[] = { - NO_SUCH_ERROR, - "(os/unix) no rights to object", - "(os/unix) file or directory does not exist", - "(os/unix) no such process", - "(os/unix) interrupted system call", - "(os/unix) i/o error", - "(os/unix) device does not exist", - "(os/unix) argument list is too long", - "(os/unix) invalid executable object format", - "(os/unix) bad file descriptor number", - "(os/unix) no child processes are present", - "(os/unix) no more processes are available", - "(os/unix) insufficient memory", - "(os/unix) access denied", - "(os/unix) memory access fault", - "(os/unix) block device required for operation", - "(os/unix) mount device busy", - "(os/unix) file already exists", - "(os/unix) cross device link", - "(os/unix) device does not exist", - "(os/unix) object is not a directory", - "(os/unix) object is a directory", - "(os/unix) invalid argument", - "(os/unix) internal file table overflow", - "(os/unix) maximum number of open files reached", - "(os/unix) object is not a tty-like device", - "(os/unix) executable object is in use", - "(os/unix) file is too large", - "(os/unix) no space is left on device", - "(os/unix) illegal seek attempt", - "(os/unix) read-only file system", - "(os/unix) too many links", - "(os/unix) broken pipe", - "(os/unix) argument is too large", - "(os/unix) result is out of range", - "(os/unix) operation on device would block", - "(os/unix) operation is now in progress", - "(os/unix) operation is already in progress", - "(os/unix) socket operation attempted on non-socket object", - "(os/unix) destination address is required", - "(os/unix) message is too long", - "(os/unix) protocol type is incorrect for socket", - "(os/unix) protocol type is not available", - "(os/unix) protocol type is not supported", - "(os/unix) socket type is not supported", - "(os/unix) operation is not supported on sockets", - "(os/unix) protocol family is not supported", - "(os/unix) address family is not supported by protocol family", - "(os/unix) address is already in use", - "(os/unix) can't assign requested address", - "(os/unix) network is down", - "(os/unix) network is unreachable", - "(os/unix) network dropped connection on reset", - "(os/unix) software aborted connection", - "(os/unix) connection reset by peer", - "(os/unix) no buffer space is available", - "(os/unix) socket is already connected", - "(os/unix) socket is not connected", - "(os/unix) can't send after socket shutdown", - "(os/unix) too many references; can't splice", - "(os/unix) connection timed out", - "(os/unix) connection was refused", - "(os/unix) too many levels of symbolic links", - "(os/unix) file name exceeds system maximum limit", - "(os/unix) host is down", - "(os/unix) there is no route to host", - "(os/unix) directory is not empty", - "(os/unix) quota on number of processes exceeded", - "(os/unix) quota on number of users exceeded", - "(os/unix) quota on available disk space exceeded", -}; - -static struct error_subsystem err_kern_sub[] = { - { - "(os/kern)", - errlib_count(err_codes_kern), - err_codes_kern, - }, - { - "(os/device)", - errlib_count(err_codes_device), - err_codes_device, - }, - { - "(os/?)", - 0, - }, - { - "(os/unix)", - errlib_count(err_codes_unix), - err_codes_unix, - }, -}; diff --git a/bin/glibc-2.7/mach/err_mach.sub b/bin/glibc-2.7/mach/err_mach.sub deleted file mode 100644 index 8faf9cdc..00000000 --- a/bin/glibc-2.7/mach/err_mach.sub +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * HISTORY - * $Log: err_mach.sub,v $ - * Revision 1.1 1992/10/06 18:29:52 roland - * entered into RCS - * - * Revision 2.3 92/04/01 19:38:05 rpd - * Added MIG_DESTROY_REQUEST. - * [92/03/09 rpd] - * - * Revision 2.2 92/01/16 00:09:05 rpd - * Moved from user collection to mk collection. - * - * Revision 2.3 91/08/29 15:51:30 rpd - * Added MIG_SERVER_DIED. - * [91/08/21 rpd] - * - * Revision 2.2 91/03/27 16:05:37 mrt - * First checkin - * - * Revision 2.2 91/03/18 17:39:03 rpd - * Created. - * [91/03/18 rpd] - * - */ -/* - * File: err_mach_ipc.sub - * Author: Richard Draves, Carnegie Mellon University - * Date: Jan, 1990 - * - * Error string definitions for the new Mach IPC - */ - -static char * err_codes_mach_send[] = { - /* 0 */ "(ipc/send) no error", - /* 1 */ "(ipc/send) send in progress", - /* 2 */ "(ipc/send) invalid data", - /* 3 */ "(ipc/send) invalid destination port", - /* 4 */ "(ipc/send) timed out", - /* 5 */ "(ipc/send) will notify", - /* 6 */ "(ipc/send) notify in progress", - /* 7 */ "(ipc/send) interrupted", - /* 8 */ "(ipc/send) msg too small", - /* 9 */ "(ipc/send) invalid reply port", - /* 10 */ "(ipc/send) invalid port right", - /* 11 */ "(ipc/send) invalid notify port", - /* 12 */ "(ipc/send) invalid memory", - /* 13 */ "(ipc/send) no msg buffer", - /* 14 */ "(ipc/send) no notify possible", - /* 15 */ "(ipc/send) invalid msg-type", - /* 16 */ "(ipc/send) invalid msg-header", -}; - -static char * err_codes_mach_rcv[] = { - /* 0 */ "(ipc/rcv) no error", - /* 1 */ "(ipc/rcv) receive in progress", - /* 2 */ "(ipc/rcv) invalid name", - /* 3 */ "(ipc/rcv) timed out", - /* 4 */ "(ipc/rcv) msg too large", - /* 5 */ "(ipc/rcv) interrupted", - /* 6 */ "(ipc/rcv) port changed", - /* 7 */ "(ipc/rcv) invalid notify port", - /* 8 */ "(ipc/rcv) invalid data", - /* 9 */ "(ipc/rcv) port died", - /* 10 */ "(ipc/rcv) port in set", - /* 11 */ "(ipc/rcv) header error", - /* 12 */ "(ipc/rcv) body error", -}; - -static char * err_codes_mach_mig[] = { - /* 0 */ "(ipc/mig) client type check failure", - /* 1 */ "(ipc/mig) wrong reply message ID", - /* 2 */ "(ipc/mig) server detected error", - /* 3 */ "(ipc/mig) bad request message ID", - /* 4 */ "(ipc/mig) server type check failure", - /* 5 */ "(ipc/mig) no reply should be sent", - /* 6 */ "(ipc/mig) server raised exception", - /* 7 */ "(ipc/mig) array not large enough", - /* 8 */ "(ipc/mig) server died", - /* 9 */ "(ipc/mig) destroy request with no reply", -}; - -/* err_mach_ipc subsystems */ -static struct error_subsystem err_mach_ipc_sub[] = { - /* ipc/0; */ - { - "(ipc/send)", - errlib_count(err_codes_mach_send), - err_codes_mach_send, - }, - /* ipc/1; */ - { - "(ipc/rcv)", - errlib_count(err_codes_mach_rcv), - err_codes_mach_rcv, - - }, - /* ipc/2 */ - { - "(ipc/mig)", - errlib_count(err_codes_mach_mig), - err_codes_mach_mig, - }, - -}; diff --git a/bin/glibc-2.7/mach/err_server.sub b/bin/glibc-2.7/mach/err_server.sub deleted file mode 100644 index a2f806aa..00000000 --- a/bin/glibc-2.7/mach/err_server.sub +++ /dev/null @@ -1,370 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * HISTORY - * - * Revision 2.2 92/01/16 00:10:29 rpd - * Moved from user collection to mk collection. - * - * Revision 2.3 91/08/29 15:51:39 rpd - * Fixed err_codes_netname. - * [91/08/22 rpd] - * - * Revision 2.2 91/03/27 16:05:51 mrt - * First checkin - * - * Revision 2.3 90/10/29 17:27:20 dpj - * Merged-up to U25 - * [90/09/02 20:00:25 dpj] - * - */ -/* - * File: err_server.sub - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar, 1988 - * - * Definitions of Servers error strings - */ - -static char * err_codes_netname[] = { /* 0 */ - "(server/netname) name is not yours", - "(server/netname) name not checked in", - "(server/netname) no such host", - "(server/netname) host not found", -}; -static char * err_codes_env_mgr[] = { /* 1 */ - NO_SUCH_ERROR, - "(server/env_mgr) variable not found", - "(server/env_mgr) wrong type of variable", - "(server/env_mgr) unknown port", - "(server/env_mgr) read only environment", - "(server/env_mgr) no more connections available", - "(server/env_mgr) port table full", - "(server/env_mgr) attempting to enter a null port ", -}; -static char * err_codes_execd[] = { /* 2 */ - NO_SUCH_ERROR, - "(server/execd) could not find file to run", - "(server/execd) userid or password incorrect", - "(server/execd) fork failed", -}; -static char * err_codes_netmemory[] = { /* 3 */ - "(server/netmemory) successful", - "(server/netmemory) invalid argument", - "(server/netmemory) resource shortage", -}; -static char * err_codes_ufs[] = { /* 4 */ - NO_SUCH_ERROR, -/* XXX "(server/ufs) invalid port", */ -}; - -static char * err_codes_task_master[] = { /* 5 */ - "(server/task_master) GENERIC ERROR", - "(server/task_master) invalid tm_task port", - "(server/task_master) invalid task id", - "(server/task_master) invalid kernel port", - "(server/task_master) invalid job group", - "(server/task_master) invalid action", -}; - -static char * err_codes_ns[] = { /* 6 */ - "(server/ns) GENERIC ERROR", - "(server/ns) invalid handle", - "(server/ns) name not found", - "(server/ns) name already exists", - "(server/ns) name too long", - "(server/ns) path too long", - "(server/ns) invalid name", - "(server/ns) not a directory", - "(server/ns) is a directory", - "(server/ns) directory not empty", - "(server/ns) infinite retry loop in resolver", - "(server/ns) infinite forwarding loop in resolver", - "(server/ns) invalid prefix", - "(server/ns) prefix table overflow", - "(server/ns) bad format for directory", - "(server/ns) unknown entry type", - "(server/ns) invalid generation", - "(server/ns) entry not reserved", -}; - -static char * err_codes_io[] = { /* 7 */ - "(server/io) GENERIC ERROR", - "(server/io) invalid offset", - "(server/io) invalid size", - "(server/io) invalid mode", - "(server/io) invalid strategy", - "(server/io) operation rejected under current I/O strategy", -}; - -static char * err_codes_auth[] = { /* 8 */ - "(server/auth) GENERIC ERROR", - "(server/auth) bad private port", - "(server/auth) bad name", - "(server/auth) not primary", - "(server/auth) bad pauthsword", - "(server/auth) bad group", - "(server/auth) duplicate id", - "(server/auth) duplicate name", - "(server/auth) not secondary", -}; - -static char * err_codes_us[] = { /* 9 */ - "(server/us) GENERIC ERROR", - "(server/us) unknown error", - "(server/us) object not found", - "(server/us) object exists", - "(server/us) object busy", - "(server/us) object not started", - "(server/us) object dead", - "(server/us) invalid args", - "(server/us) invalid access", - "(server/us) invalid format", - "(server/us) invalid buffer size", - "(server/us) access denied", - "(server/us) resource exhausted", - "(server/us) quota exceeded", - "(server/us) limit exceeded", - "(server/us) not implemented", - "(server/us) not supported", - "(server/us) hardware error", - "(server/us) retry required", - "(server/us) not authenticated", - "(server/us) exclusive access", - "(server/us) timeout", - "(server/us) bad reference count", - "(server/us) internal error", -}; - -static char * err_codes_sunrpc[] = { /* 10 */ - "(server/sunrpc) GENERIC ERROR", - "(server/sunrpc) cannot encode arguments", - "(server/sunrpc) cannot decode results", - "(server/sunrpc) failure in sending call", - "(server/sunrpc) failure in receiving result", - "(server/sunrpc) call timed out", - "(server/sunrpc) rpc versions not compatible", - "(server/sunrpc) authentication error", - "(server/sunrpc) program not available", - "(server/sunrpc) program version mismatched", - "(server/sunrpc) procedure unavailable", - "(server/sunrpc) decode arguments error", - "(server/sunrpc) generic other problem", - "(server/sunrpc) unknown host name", - "(server/sunrpc) portmapper failed", - "(server/sunrpc) remote program not registered", - "(server/sunrpc) unspecified error", - "(server/sunrpc) unknown protocol", -}; - -static char * err_codes_machobj[] = { /* 11 */ - "(server/object system) GENERIC ERROR", - "(server/object system) object not found", - "(server/object system) no such operation", - "(server/object system) undefined ipc method arguments", - "(server/object system) too many arguments to method", - "(server/object system) bad ipc message format", -}; - -static char * err_codes_loader[] = { /* 12 */ - "(server/loader) GENERIC ERROR", - "(server/loader) object file not relocated", - "(server/loader) unknown file type", - "(server/loader) symbol not found", - "(server/loader) symbol multiply defined", - "(server/loader) memory region overlap", -}; - - -static char * err_codes_exception[] = { /* 13 */ - "(server/exception) GENERIC ERROR", - "(server/exception) invalid access", - "(server/exception) invalid instruction", - "(server/exception) arithmetic exception", - "(server/exception) emulation exception", - "(server/exception) software exception", - "(server/exception) breakpoint exception", -}; - -static char * err_codes_ux_signal[] = { /* 14 */ - "(server/unix-signal) GENERIC ERROR", - "(server/unix-signal) hangup", - "(server/unix-signal) interrupt", - "(server/unix-signal) quit", - "(server/unix-signal) undefined", - "(server/unix-signal) undefined", - "(server/unix-signal) undefined", - "(server/unix-signal) undefined", - "(server/unix-signal) kill", - "(server/unix-signal) undefined", - "(server/unix-signal) undefined", - "(server/unix-signal) system error", - "(server/unix-signal) pipe signal", - "(server/unix-signal) alarm", - "(server/unix-signal) terminate", - "(server/unix-signal) urgent i/o", - "(server/unix-signal) stop", - "(server/unix-signal) terminal stop", - "(server/unix-signal) continue", - "(server/unix-signal) child death", - "(server/unix-signal) tty input", - "(server/unix-signal) tty output", - "(server/unix-signal) i/o signal", - "(server/unix-signal) cpu time limit exceeded", - "(server/unix-signal) file size exceeded", - "(server/unix-signal) virtual alarm", - "(server/unix-signal) profile signal", - "(server/unix-signal) window size change", - "(server/unix-signal) user-defined signal 1", - "(server/unix-signal) user-defined signal 2", -}; - -static char * err_codes_xkernel[] = { /* 15 */ - "(server/xkernel) GENERIC ERROR", - "(server/xkernel) map full", - "(server/xkernel) inconsistent bind", - "(server/xkernel) cannot resolve", - "(server/xkernel) cannot unbind", - "(server/xkernel) invalid type", - "(server/xkernel) invalid opcode", - "(server/xkernel) buffer too small", - "(server/xkernel) invalid ev code", - "(server/xkernel) event not registered", - "(server/xkernel) invalid open", - "(server/xkernel) already open", - "(server/xkernel) bad addr", -}; - - -/* err_server subsystems */ -static struct error_subsystem err_server_sub[] = { - /* server/0; */ - { - "(server/netname)", - errlib_count(err_codes_netname), - err_codes_netname, - }, - /* server/1; */ - { - "(server/env_mgr)", - errlib_count(err_codes_env_mgr), - err_codes_env_mgr, - }, - /* server/2; */ - { - "(server/execd)", - errlib_count(err_codes_execd), - err_codes_execd, - }, - /* server/3; */ - { - "(server/netmemory)", - errlib_count(err_codes_netmemory), - err_codes_netmemory, - }, - /* server/4; */ - { - "(server/ufs)", - errlib_count(err_codes_ufs), - err_codes_ufs, - }, - /* server/5; */ - { - "(server/task_master)", - errlib_count(err_codes_task_master), - err_codes_task_master, - }, - /* server/6; */ - { - "(server/ns)", - errlib_count(err_codes_ns), - err_codes_ns, - }, - - /* server/7; i/o subsystem */ - { - "(server/io)", - errlib_count(err_codes_io), - err_codes_io, - }, - - /* server/8; authentication server */ - { - "(server/auth)", - errlib_count(err_codes_auth), - err_codes_auth, - }, - - /* server/9; generic US system */ - { - "(server/us)", - errlib_count(err_codes_us), - err_codes_us, - }, - - /* server/10; SUN RPC package */ - { - "(server/sunrpc)", - errlib_count(err_codes_sunrpc), - err_codes_sunrpc, - }, - - /* server/11; MachObject system */ - { - "(server/object system)", - errlib_count(err_codes_machobj), - err_codes_machobj, - }, - - /* server/12; loader */ - { - "(server/loader)", - errlib_count(err_codes_loader), - err_codes_loader, - }, - - /* server/13; mach exception */ - { - "(server/exception)", - errlib_count(err_codes_exception), - err_codes_exception, - }, - - /* server/14; unix signal */ - { - "(server/unix-signal)", - errlib_count(err_codes_ux_signal), - err_codes_ux_signal, - }, - - /* server/15; xkernel */ - { - "(server/xkernel)", - errlib_count(err_codes_xkernel), - err_codes_xkernel, - }, - -}; diff --git a/bin/glibc-2.7/mach/err_us.sub b/bin/glibc-2.7/mach/err_us.sub deleted file mode 100644 index 184f11d3..00000000 --- a/bin/glibc-2.7/mach/err_us.sub +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * HISTORY - * - * Revision 2.2 92/01/16 00:10:45 rpd - * Moved from user collection to mk collection. - * - * Revision 2.2 91/03/27 16:06:06 mrt - * First checkin - * - */ -/* - * File: err_us.sub - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar, 1988 - * - * A place to define User errors - */ - - -/* err_us subsystems */ -static struct error_subsystem err_us_sub[] = { - {0,0,0} -}; diff --git a/bin/glibc-2.7/mach/error_compat.c b/bin/glibc-2.7/mach/error_compat.c deleted file mode 100644 index 8f7bd87c..00000000 --- a/bin/glibc-2.7/mach/error_compat.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ - -/* This file was broken out from: - - Revision 2.3 92/04/01 19:38:18 rpd - - The static do_compat function is renamed to be globally accessible. - */ - -#include -#include -#include - - -void -__mach_error_map_compat(mach_error_t *org_err) -{ - mach_error_t err = *org_err; - - /* - * map old error numbers to - * to new error sys & subsystem - */ - - if ((-200 < err) && (err <= -100)) - err = -(err + 100) | IPC_SEND_MOD; - else if ((-300 < err) && (err <= -200)) - err = -(err + 200) | IPC_RCV_MOD; - else if ((-400 < err) && (err <= -300)) - err = -(err + 300) | MACH_IPC_MIG_MOD; - else if ((1000 <= err) && (err < 1100)) - err = (err - 1000) | SERV_NETNAME_MOD; - else if ((1600 <= err) && (err < 1700)) - err = (err - 1600) | SERV_ENV_MOD; - else if ((27600 <= err) && (err < 27700)) - err = (err - 27600) | SERV_EXECD_MOD; - else if ((2500 <= err) && (err < 2600)) - err = (err - 2500) | KERN_DEVICE_MOD; - else if ((5000 <= err) && (err < 5100)) - err = (err - 5000) | BOOTSTRAP_FS_MOD; - - *org_err = err; -} diff --git a/bin/glibc-2.7/mach/errorlib.h b/bin/glibc-2.7/mach/errorlib.h deleted file mode 100644 index ff0c55eb..00000000 --- a/bin/glibc-2.7/mach/errorlib.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.3 92/03/31 15:18:52 rpd - * Added KERN_DEVICE_MOD for device errors. - * [92/03/09 rpd] - * - * Revision 2.2 92/01/16 00:21:17 rpd - * Moved from user collection to mk collection. - * - * Revision 2.2 91/03/27 15:37:37 mrt - * First checkin - * - */ -/* - * File: errorlib.h - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar. 1988 - * - * Error bases for subsytems errors. - */ - -#include - -#define KERN_DEVICE_MOD (err_kern|err_sub(1)) - -#define BOOTSTRAP_FS_MOD (err_bootstrap|err_sub(0)) - -#define MACH_IPC_SEND_MOD (err_mach_ipc|err_sub(0)) -#define MACH_IPC_RCV_MOD (err_mach_ipc|err_sub(1)) -#define MACH_IPC_MIG_MOD (err_mach_ipc|err_sub(2)) - -#define IPC_SEND_MOD (err_ipc|err_sub(0)) -#define IPC_RCV_MOD (err_ipc|err_sub(1)) -#define IPC_MIG_MOD (err_ipc|err_sub(2)) - -#define SERV_NETNAME_MOD (err_server|err_sub(0)) -#define SERV_ENV_MOD (err_server|err_sub(1)) -#define SERV_EXECD_MOD (err_server|err_sub(2)) - - -#define NO_SUCH_ERROR "unknown error code" - -struct error_subsystem { - const char * subsys_name; - int max_code; - const char * const * codes; -}; - -struct error_system { - int max_sub; - const char * bad_sub; - const struct error_subsystem * subsystem; -}; - -#define errors __mach_error_systems -extern const struct error_system errors[err_max_system+1]; - -#define errlib_count(s) (sizeof(s)/sizeof(s[0])) diff --git a/bin/glibc-2.7/mach/errstring.c b/bin/glibc-2.7/mach/errstring.c deleted file mode 100644 index 52cf1eb4..00000000 --- a/bin/glibc-2.7/mach/errstring.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.3 92/04/01 19:38:18 rpd - * Updated do_compat for kernel device errors, - * bootstrap file-system errors. - * [92/03/09 rpd] - * - * Revision 2.2 92/02/20 15:58:08 elf - * Created from mach_error.c. - * [92/02/11 rpd] - * - */ - -#define EXPORT_BOOLEAN -#include -#include -#include -#include - -extern void __mach_error_map_compat (mach_error_t *); - -const char * -mach_error_type( err ) - mach_error_t err; -{ - int sub, system; - - __mach_error_map_compat( &err ); - - sub = err_get_sub(err); - system = err_get_system(err); - - if (system > err_max_system - || sub >= errors[system].max_sub ) return( "(?/?)" ); - return( errors[system].subsystem[sub].subsys_name ); -} - -boolean_t mach_error_full_diag = FALSE; - -const char * -mach_error_string_int(mach_error_t err, - boolean_t * diag) -{ - int sub, system, code; - - __mach_error_map_compat( &err ); - - sub = err_get_sub(err); - system = err_get_system(err); - code = err_get_code(err); - - *diag = TRUE; - - if (system > err_max_system) return( "(?/?) unknown error system" ); - if (sub >= errors[system].max_sub) return( errors[system].bad_sub ); - if (code >= errors[system].subsystem[sub].max_code) return ( NO_SUCH_ERROR ); - - *diag = mach_error_full_diag; - return( errors[system].subsystem[sub].codes[code] ); -} - -const char * -mach_error_string( err ) - mach_error_t err; -{ - boolean_t diag; - - return mach_error_string_int( err, &diag ); - -} diff --git a/bin/glibc-2.7/mach/errsystems.awk b/bin/glibc-2.7/mach/errsystems.awk deleted file mode 100644 index a5e93604..00000000 --- a/bin/glibc-2.7/mach/errsystems.awk +++ /dev/null @@ -1,23 +0,0 @@ -BEGIN { - print "#include "; - print "#include "; - print "#include "; - print "#define static static const"; - nsubs = split(subsys, subs); - while (nsubs > 0) printf "#include \"%s\"\n", subs[nsubs--]; - print "\n\n\ -const struct error_system __mach_error_systems[err_max_system + 1] ="; - print " {"; -} -/^static.*err_[a-z0-9A-Z_]+_sub *\[/ { - s = $0; sub(/^.*err_/, "", s); sub(/_sub.*$/, "", s); - printf " [err_get_system (err_%s)] = { errlib_count (err_%s_sub),", - s, s; - printf "\"(system %s) error with unknown subsystem\", err_%s_sub },\n", - s, s; -} -END { - print " };"; - print "\n\ -const int __mach_error_system_count = errlib_count (__mach_error_systems);"; -} diff --git a/bin/glibc-2.7/mach/lock-intern.h b/bin/glibc-2.7/mach/lock-intern.h deleted file mode 100644 index 4aaaedc1..00000000 --- a/bin/glibc-2.7/mach/lock-intern.h +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 1994, 1996, 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _LOCK_INTERN_H -#define _LOCK_INTERN_H - -#include -#include - -#ifndef _EXTERN_INLINE -#define _EXTERN_INLINE __extern_inline -#endif - - -/* Initialize LOCK. */ - -_EXTERN_INLINE void -__spin_lock_init (__spin_lock_t *__lock) -{ - *__lock = __SPIN_LOCK_INITIALIZER; -} - - -/* Lock LOCK, blocking if we can't get it. */ -extern void __spin_lock_solid (__spin_lock_t *__lock); - -/* Lock the spin lock LOCK. */ - -_EXTERN_INLINE void -__spin_lock (__spin_lock_t *__lock) -{ - if (! __spin_try_lock (__lock)) - __spin_lock_solid (__lock); -} - -/* Name space-clean internal interface to mutex locks. - - Code internal to the C library uses these functions to lock and unlock - mutex locks. These locks are of type `struct mutex', defined in - . The functions here are name space-clean. If the program - is linked with the cthreads library, `__mutex_lock_solid' and - `__mutex_unlock_solid' will invoke the corresponding cthreads functions - to implement real mutex locks. If not, simple stub versions just use - spin locks. */ - - -/* Initialize the newly allocated mutex lock LOCK for further use. */ -extern void __mutex_init (void *__lock); - -/* Lock LOCK, blocking if we can't get it. */ -extern void __mutex_lock_solid (void *__lock); - -/* Finish unlocking LOCK, after the spin lock LOCK->held has already been - unlocked. This function will wake up any thread waiting on LOCK. */ -extern void __mutex_unlock_solid (void *__lock); - -/* Lock the mutex lock LOCK. */ - -_EXTERN_INLINE void -__mutex_lock (void *__lock) -{ - if (! __spin_try_lock ((__spin_lock_t *) __lock)) - __mutex_lock_solid (__lock); -} - -/* Unlock the mutex lock LOCK. */ - -_EXTERN_INLINE void -__mutex_unlock (void *__lock) -{ - __spin_unlock ((__spin_lock_t *) __lock); - __mutex_unlock_solid (__lock); -} - - -_EXTERN_INLINE int -__mutex_trylock (void *__lock) -{ - return __spin_try_lock ((__spin_lock_t *) __lock); -} - -#endif /* lock-intern.h */ diff --git a/bin/glibc-2.7/mach/mach.h b/bin/glibc-2.7/mach/mach.h deleted file mode 100644 index f8fd44bb..00000000 --- a/bin/glibc-2.7/mach/mach.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Standard header for all Mach programs. - Copyright (C) 1993,94,96,97,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _MACH_H - -#define _MACH_H 1 - -/* We must include this before using __need_FILE with below. */ -#include - - -/* Get the basic types used by Mach. */ -#include - -/* This declares the basic variables and macros everything needs. */ -#include - -/* This declares all the real system call functions. */ -#include - -/* These are MiG-generated headers for the kernel interfaces commonly used. */ -#include /* From . */ -#include -#include - -/* For the kernel RPCs which have system call shortcut versions, - the MiG-generated header in fact declares `CALL_rpc' rather than `CALL'. - This file declares the simple `CALL' functions. */ -#include - - -/* Receive RPC request messages on RCV_NAME and pass them to DEMUX, which - decodes them and produces reply messages. MAX_SIZE is the maximum size - (in bytes) of the request and reply buffers. */ -extern mach_msg_return_t -__mach_msg_server (boolean_t (*__demux) (mach_msg_header_t *__request, - mach_msg_header_t *__reply), - mach_msg_size_t __max_size, - mach_port_t __rcv_name), -mach_msg_server (boolean_t (*__demux) (mach_msg_header_t *__request, - mach_msg_header_t *__reply), - mach_msg_size_t __max_size, - mach_port_t __rcv_name); - -/* Just like `mach_msg_server', but the OPTION and TIMEOUT parameters are - passed on to `mach_msg'. */ -extern mach_msg_return_t -__mach_msg_server_timeout (boolean_t (*__demux) (mach_msg_header_t *__request, - mach_msg_header_t *__reply), - mach_msg_size_t __max_size, - mach_port_t __rcv_name, - mach_msg_option_t __option, - mach_msg_timeout_t __timeout), -mach_msg_server_timeout (boolean_t (*__demux) (mach_msg_header_t *__request, - mach_msg_header_t *__reply), - mach_msg_size_t __max_size, - mach_port_t __rcv_name, - mach_msg_option_t __option, - mach_msg_timeout_t __timeout); - - -/* Deallocate all port rights and out-of-line memory in MSG. */ -extern void -__mach_msg_destroy (mach_msg_header_t *msg), -mach_msg_destroy (mach_msg_header_t *msg); - - -#define __need_FILE -#include - -/* Open a stream on a Mach device. */ -extern FILE *mach_open_devstream (mach_port_t device_port, const char *mode); - -/* Give THREAD a stack and set it to run at PC when resumed. - If *STACK_SIZE is nonzero, that size of stack is allocated. - If *STACK_BASE is nonzero, that stack location is used. - If STACK_BASE is not null it is filled in with the chosen stack base. - If STACK_SIZE is not null it is filled in with the chosen stack size. - Regardless, an extra page of red zone is allocated off the end; this - is not included in *STACK_SIZE. */ -kern_return_t __mach_setup_thread (task_t task, thread_t thread, void *pc, - vm_address_t *stack_base, - vm_size_t *stack_size); -kern_return_t mach_setup_thread (task_t task, thread_t thread, void *pc, - vm_address_t *stack_base, - vm_size_t *stack_size); - - -#endif /* mach.h */ diff --git a/bin/glibc-2.7/mach/mach/error.h b/bin/glibc-2.7/mach/mach/error.h deleted file mode 100644 index 084d8afd..00000000 --- a/bin/glibc-2.7/mach/mach/error.h +++ /dev/null @@ -1,137 +0,0 @@ -/* err_hurd added by roland@gnu.ai.mit.edu for GNU Hurd. - * - * Mach Operating System - * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.6 93/01/14 17:41:31 danner - * Standardized include symbol name. - * [92/06/10 pds] - * - * Revision 2.5 92/03/31 15:18:11 rpd - * Added err_bootstrap for bootstrap errors. - * [92/03/09 rpd] - * - * Revision 2.4 91/05/14 16:51:24 mrt - * Correcting copyright - * - * Revision 2.3 91/02/05 17:31:48 mrt - * Changed to new Mach copyright - * [91/02/01 17:16:50 mrt] - * - * Revision 2.2 90/06/02 14:57:47 rpd - * Added err_mach_ipc for new IPC. - * [90/03/26 22:28:42 rpd] - * - * Revision 2.1 89/08/03 16:02:07 rwd - * Created. - * - * Revision 2.4 89/02/25 18:13:18 gm0w - * Changes for cleanup. - * - * Revision 2.3 89/02/07 00:51:57 mwyoung - * Relocated from sys/error.h - * - * Revision 2.2 88/10/18 00:37:31 mwyoung - * Added {system,sub and code}_emask - * [88/10/17 17:06:58 mrt] - * - * Added {system,sub and code}_emask - * - * 12-May-88 Mary Thompson (mrt) at Carnegie Mellon - * Changed mach_error_t from unsigned int to kern_return_t - * which is a 32 bit integer regardless of machine type. - * unsigned int was incompatible with old usages of mach_error. - * - * 10-May-88 Douglas Orr (dorr) at Carnegie-Mellon University - * Missing endif replaced - * - * 5-May-88 Mary Thompson (mrt) at Carnegie Mellon - * Changed typedef of mach_error_t from long to unsigned int - * to keep our Camelot users happy. Also moved the nonkernel - * function declarations from here to mach_error.h. - * - * 10-Feb-88 Douglas Orr (dorr) at Carnegie-Mellon University - * Created. - * - */ -/* - * File: mach/error.h - * Purpose: - * error module definitions - * - */ - -#ifndef _MACH_ERROR_H_ -#define _MACH_ERROR_H_ -#include - -/* - * error number layout as follows: - * - * hi lo - * | system(6) | subsystem(12) | code(14) | - */ - - -#define err_none (mach_error_t)0 -#define ERR_SUCCESS (mach_error_t)0 -#define ERR_ROUTINE_NIL (mach_error_fn_t)0 - - -#define err_system(x) (((x)&0x3f)<<26) -#define err_sub(x) (((x)&0xfff)<<14) - -#define err_get_system(err) (((err)>>26)&0x3f) -#define err_get_sub(err) (((err)>>14)&0xfff) -#define err_get_code(err) ((err)&0x3fff) - -#define system_emask (err_system(0x3f)) -#define sub_emask (err_sub(0xfff)) -#define code_emask (0x3fff) - - -/* major error systems */ -#define err_kern err_system(0x0) /* kernel */ -#define err_us err_system(0x1) /* user space library */ -#define err_server err_system(0x2) /* user space servers */ -#define err_ipc err_system(0x3) /* old ipc errors */ -#define err_mach_ipc err_system(0x4) /* mach-ipc errors */ -#define err_bootstrap err_system(0x5) /* bootstrap errors */ -#define err_hurd err_system(0x10) /* GNU Hurd server errors */ -#define err_local err_system(0x3e) /* user defined errors */ -#define err_ipc_compat err_system(0x3f) /* (compatibility) mach-ipc errors */ - -#define err_max_system 0x3f - - -/* unix errors get lumped into one subsystem */ -#define unix_err(errno) (err_kern|err_sub(3)|errno) - -typedef kern_return_t mach_error_t; -/* typedef mach_error_t (* mach_error_fn_t)(); */ - -#endif /* _MACH_ERROR_H_ */ diff --git a/bin/glibc-2.7/mach/mach/mach.h b/bin/glibc-2.7/mach/mach/mach.h deleted file mode 100644 index 826e7172..00000000 --- a/bin/glibc-2.7/mach/mach/mach.h +++ /dev/null @@ -1,3 +0,0 @@ -/* Some old programs may expect to find in . */ - -#include diff --git a/bin/glibc-2.7/mach/mach/mach_traps.h b/bin/glibc-2.7/mach/mach/mach_traps.h deleted file mode 100644 index 2d97baa8..00000000 --- a/bin/glibc-2.7/mach/mach/mach_traps.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 1994,96,97,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Declare the few Mach system calls (except mach_msg, in ). - This does not include the kernel RPC shortcut calls (in ). - - This file omits the MACH_IPC_COMPAT functions. */ - -#ifndef _MACH_MACH_TRAPS_H - -#define _MACH_MACH_TRAPS_H_ 1 - -#include -#include /* mach_msg_timeout_t */ -#include - -/* Create and return a new receive right. */ -extern mach_port_t mach_reply_port (void); -extern mach_port_t __mach_reply_port (void); - -/* Return the thread control port for the calling thread. */ -extern mach_port_t mach_thread_self (void); -extern mach_port_t __mach_thread_self (void); - -/* Return the task control port for the calling task. - The parens are needed to protect against the macro in . */ -extern mach_port_t (mach_task_self) (void); -extern mach_port_t (__mach_task_self) (void); - -/* Return the host information port for the host of the calling task. */ -extern mach_port_t mach_host_self (void); -extern mach_port_t __mach_host_self (void); - -/* Attempt to context switch the current thread off the processor. Returns - true if there are other threads that can be run and false if not. */ -extern boolean_t swtch (void); -extern boolean_t __swtch (void); - -/* Attempt to context switch the current thread off the processor. Lower - the thread's priority as much as possible. The thread's priority will - be restored when it runs again. PRIORITY is currently unused. Return - true if there are other threads that can be run and false if not. */ -extern boolean_t swtch_pri (int priority); -extern boolean_t __swtch_pri (int priority); - -/* Attempt to context switch the current thread of the processor. Try - to run NEW_THREAD next, ignoring normal scheduling policies. The - OPTION value comes from . If OPTION is - SWITCH_OPTION_WAIT, then block the current thread for TIME - milliseconds. If OPTION is SWITCH_OPTION_DEPRESS, then block for - TIME milliseconds and depress the thread's priority as done by - swtch_pri. If OPTION is SWITCH_OPTION_NONE, ignore TIME. */ -kern_return_t thread_switch (mach_port_t new_thread, - int option, mach_msg_timeout_t option_time); -kern_return_t __thread_switch (mach_port_t new_thread, - int option, mach_msg_timeout_t option_time); - -/* Block the current thread until the kernel (or device) event - identified by EVENT occurs. */ -kern_return_t evc_wait (unsigned int event); -kern_return_t __evc_wait (unsigned int event); - - -#endif /* mach/mach_traps.h */ diff --git a/bin/glibc-2.7/mach/mach/mig_support.h b/bin/glibc-2.7/mach/mach/mig_support.h deleted file mode 100644 index f02e8d4f..00000000 --- a/bin/glibc-2.7/mach/mach/mig_support.h +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (C) 1993,94,97,99,2001,2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Useful declarations and support functions for MiG-generated stubs. */ - -#ifndef _MACH_MIG_SUPPORT_H - -#define _MACH_MIG_SUPPORT_H 1 - -#include -#include -#include -#include - -#ifndef __USE_GNU -/* The only problem that has come up so far is __stpncpy being undeclared - below because doesn't declare it without __USE_GNU. We could - work around that problem by just adding the declaration there, or by - eliding the inline functions in the absence of __USE_GNU. But either of - these would result in unoptimized calls (because no inline version of - __stpncpy will have been defined), and there may be other niggling - problems lurking. Instead we simply insist on _GNU_SOURCE for - compiling mig output; anyway, that better reflects the fact that mig - output requires nonstandard special support code not found elsewhere. */ -# error mig stubs must be compiled with -D_GNU_SOURCE -#endif - -/* MiG initialization. */ -extern void __mig_init (void *__first); -extern void mig_init (void *__first); - -/* Shorthand functions for vm_allocate and vm_deallocate on - mach_task_self () (and with ANYWHERE=1). */ -extern void __mig_allocate (vm_address_t *__addr_p, vm_size_t __size); -extern void mig_allocate (vm_address_t *__addr_p, vm_size_t __size); -extern void __mig_deallocate (vm_address_t __addr, vm_size_t __size); -extern void mig_deallocate (vm_address_t __addr, vm_size_t __size); - -/* Reply-port management support functions. */ -extern void __mig_dealloc_reply_port (mach_port_t); -extern void mig_dealloc_reply_port (mach_port_t); -extern mach_port_t __mig_get_reply_port (void); -extern mach_port_t mig_get_reply_port (void); -extern void __mig_put_reply_port (mach_port_t); -extern void mig_put_reply_port (mach_port_t); - -extern void __mig_reply_setup (const mach_msg_header_t *__request, - mach_msg_header_t *__reply); -extern void mig_reply_setup (const mach_msg_header_t *__request, - mach_msg_header_t *__reply); - -/* Idiocy support function. */ -extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len); -extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t); -__extern_inline vm_size_t -__mig_strncpy (char *__dst, const char *__src, vm_size_t __len) -{ - return __stpncpy (__dst, __src, __len) - __dst; -} -__extern_inline vm_size_t -mig_strncpy (char *__dst, const char *__src, vm_size_t __len) -{ - return __mig_strncpy (__dst, __src, __len); -} - - - -#endif /* mach/mig_support.h */ diff --git a/bin/glibc-2.7/mach/mach_error.c b/bin/glibc-2.7/mach/mach_error.c deleted file mode 100644 index 8bbb2ec7..00000000 --- a/bin/glibc-2.7/mach/mach_error.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.4 92/02/19 15:10:52 elf - * Moved mach_error_string and mach_error_type to mach_error_string.c. - * [92/02/11 rpd] - * - * Revision 2.3 92/01/23 15:22:06 rpd - * Changed to . - * [92/01/16 rpd] - * - * Revision 2.2 92/01/16 00:08:03 rpd - * Moved from user collection to mk collection. - * - * Revision 2.3 91/08/29 15:51:50 rpd - * Changed IPC_MIG_MOD to MACH_IPC_MIG_MOD, to get the new error strings. - * [91/08/22 rpd] - * - * Revision 2.2 91/03/27 16:06:29 mrt - * Changed include of "errorlib.h" to - * Added new copyright - * [91/03/20 mrt] - * - */ -/* - * File: mach_error.c - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar 1988 - * - * interprets structured mach error codes and prints - * or returns a descriptive string. - */ - -#include -#include -#include - -extern char * mach_error_string_int(mach_error_t, boolean_t *); - -void -mach_error( str, err ) - char *str; - mach_error_t err; -{ - char * err_str; - char buf[1024]; - boolean_t diag; - - err_str=mach_error_string_int(err, &diag); - - if ( diag ) { - sprintf( buf, "%s %s (%x)", mach_error_type(err), err_str, err ); - err_str = buf; - } - - fprintf(stderr, "%s %s\n", str, err_str); -} diff --git a/bin/glibc-2.7/mach/mach_error.h b/bin/glibc-2.7/mach/mach_error.h deleted file mode 100644 index fc4a3fed..00000000 --- a/bin/glibc-2.7/mach/mach_error.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie the - * rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.2 92/01/16 00:08:10 rpd - * Moved from user collection to mk collection. - * - * Revision 2.2 91/03/27 15:39:13 mrt - * First checkin - * - */ -/* - * File: mach_error.h - * Author: Douglas Orr, Carnegie Mellon University - * Date: Mar. 1988 - * - * Definitions of routines in mach_error.c - */ - -#ifndef _MACH_ERROR_ -#define _MACH_ERROR_ 1 - -#include - -const char *mach_error_string( -/* - * Returns a string appropriate to the error argument given - */ - mach_error_t error_value - ); - -void mach_error( -/* - * Prints an appropriate message on the standard error stream - */ - char *str, - mach_error_t error_value - ); - -const char *mach_error_type( -/* - * Returns a string with the error system, subsystem and code -*/ - mach_error_t error_value - ); - -#endif /* _MACH_ERROR_ */ diff --git a/bin/glibc-2.7/mach/mach_init.c b/bin/glibc-2.7/mach/mach_init.c deleted file mode 100644 index 552d2685..00000000 --- a/bin/glibc-2.7/mach/mach_init.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (C) 1992,93,95,97,2001,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -mach_port_t __mach_task_self_; -vm_size_t __vm_page_size = 0; /* Must be data not bss for weak alias. */ -weak_alias (__vm_page_size, vm_page_size) - -#ifdef NDR_DEF_HEADER -/* This defines NDR_record, which the MiG-generated stubs use. XXX namespace */ -# include NDR_DEF_HEADER -#endif - -void -__mach_init (void) -{ - kern_return_t err; - - __mach_task_self_ = (__mach_task_self) (); - __mig_init (0); - -#if HAVE_HOST_PAGE_SIZE - if (err = __host_page_size (__mach_host_self (), &__vm_page_size)) - _exit (err); -#else - { - vm_statistics_data_t stats; - if (err = __vm_statistics (__mach_task_self (), &stats)) - _exit (err); - __vm_page_size = stats.pagesize; - } -#endif -} -weak_alias (__mach_init, mach_init) diff --git a/bin/glibc-2.7/mach/mach_init.h b/bin/glibc-2.7/mach/mach_init.h deleted file mode 100644 index 38823d41..00000000 --- a/bin/glibc-2.7/mach/mach_init.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Declarations and macros for the basic Mach things set at startup. - Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _MACH_INIT_H - -#define _MACH_INIT_H 1 - -#include - -/* Return the current task's task port. */ -extern mach_port_t __mach_task_self (void); -extern mach_port_t mach_task_self (void); - -/* This cache is initialized at startup. */ -extern mach_port_t __mach_task_self_; -#define __mach_task_self() (__mach_task_self_ + 0) /* Not an lvalue. */ -#define mach_task_self() (__mach_task_self ()) - -/* Kernel page size. */ -extern vm_size_t __vm_page_size; -extern vm_size_t vm_page_size; - -/* Round the address X up to a page boundary. */ -#define round_page(x) \ - ((((vm_offset_t) (x) + __vm_page_size - 1) / __vm_page_size) * \ - __vm_page_size) - -/* Truncate the address X down to a page boundary. */ -#define trunc_page(x) \ - ((((vm_offset_t) (x)) / __vm_page_size) * __vm_page_size) - -#endif /* mach_init.h */ diff --git a/bin/glibc-2.7/mach/mig-alloc.c b/bin/glibc-2.7/mach/mig-alloc.c deleted file mode 100644 index 7324c659..00000000 --- a/bin/glibc-2.7/mach/mig-alloc.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* Called by MiG to allocate space. */ -void -__mig_allocate (vm_address_t *addr, - vm_size_t size) -{ - if (__vm_allocate (__mach_task_self (), addr, size, 1) != KERN_SUCCESS) - *addr = 0; -} - -weak_alias (__mig_allocate, mig_allocate) diff --git a/bin/glibc-2.7/mach/mig-dealloc.c b/bin/glibc-2.7/mach/mig-dealloc.c deleted file mode 100644 index 99c99063..00000000 --- a/bin/glibc-2.7/mach/mig-dealloc.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* Called by MiG to deallocate space. */ -void -__mig_deallocate (vm_address_t addr, - vm_size_t size) -{ - (void) __vm_deallocate (__mach_task_self (), addr, size); -} -weak_alias (__mig_deallocate, mig_deallocate) diff --git a/bin/glibc-2.7/mach/mig-reply.c b/bin/glibc-2.7/mach/mig-reply.c deleted file mode 100644 index 3b020288..00000000 --- a/bin/glibc-2.7/mach/mig-reply.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 1992, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* These functions are called by MiG-generated code. */ - -static mach_port_t reply_port; - -/* Called by MiG to get a reply port. */ -mach_port_t -__mig_get_reply_port (void) -{ - if (reply_port == MACH_PORT_NULL) - reply_port = __mach_reply_port (); - - return reply_port; -} - -/* Called by MiG to deallocate the reply port. */ -void -__mig_dealloc_reply_port (void) -{ - mach_port_t port = reply_port; - reply_port = MACH_PORT_NULL; /* So the mod_refs RPC won't use it. */ - __mach_port_mod_refs (__mach_task_self (), port, - MACH_PORT_RIGHT_RECEIVE, -1); -} - - -/* Called at startup with CPROC == NULL. cthreads has a different version - of this function that is sometimes called with a `cproc_t' pointer. */ -void -__mig_init (void *cproc) -{ - if (cproc == 0) - reply_port = MACH_PORT_NULL; -} diff --git a/bin/glibc-2.7/mach/mig_strncpy.c b/bin/glibc-2.7/mach/mig_strncpy.c deleted file mode 100644 index b0c001d7..00000000 --- a/bin/glibc-2.7/mach/mig_strncpy.c +++ /dev/null @@ -1,11 +0,0 @@ -/* Silly pointless function MiG needs. */ - -#include -#include - -vm_size_t -__mig_strncpy (char *dst, const char *src, vm_size_t len) -{ - return __stpncpy (dst, src, len) - dst; -} -weak_alias (__mig_strncpy, mig_strncpy) diff --git a/bin/glibc-2.7/mach/msg-destroy.c b/bin/glibc-2.7/mach/msg-destroy.c deleted file mode 100644 index 19f96d4e..00000000 --- a/bin/glibc-2.7/mach/msg-destroy.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.4 91/05/14 17:53:15 mrt - * Correcting copyright - * - * Revision 2.3 91/02/14 14:17:43 mrt - * Added new Mach copyright - * [91/02/13 12:44:15 mrt] - * - * Revision 2.2 90/08/06 17:24:22 rpd - * Created. - * - */ - -#if 1 -#include -#else -/* This is what CMU did, but that fails to declare some used functions. */ -#include -#include -#include -#endif - -static void mach_msg_destroy_port(mach_port_t, mach_msg_type_name_t); -static void mach_msg_destroy_memory(vm_offset_t, vm_size_t); - -/* - * Routine: mach_msg_destroy - * Purpose: - * Deallocates all port rights and out-of-line memory - * found in a received message. - */ - -void -__mach_msg_destroy(msg) - mach_msg_header_t *msg; -{ - mach_msg_bits_t mbits = msg->msgh_bits; - - /* - * The msgh_local_port field doesn't hold a port right. - * The receive operation consumes the destination port right. - */ - - mach_msg_destroy_port(msg->msgh_remote_port, MACH_MSGH_BITS_REMOTE(mbits)); - - if (mbits & MACH_MSGH_BITS_COMPLEX) { -#ifdef MACH_MSG_PORT_DESCRIPTOR - mach_msg_body_t *body; - mach_msg_descriptor_t *saddr, *eaddr; - - body = (mach_msg_body_t *) (msg + 1); - saddr = (mach_msg_descriptor_t *) - ((mach_msg_base_t *) msg + 1); - eaddr = saddr + body->msgh_descriptor_count; - - for ( ; saddr < eaddr; saddr++) { - switch (saddr->type.type) { - - case MACH_MSG_PORT_DESCRIPTOR: { - mach_msg_port_descriptor_t *dsc; - - /* - * Destroy port rights carried in the message - */ - dsc = &saddr->port; - mach_msg_destroy_port(dsc->name, dsc->disposition); - break; - } - - case MACH_MSG_OOL_DESCRIPTOR : { - mach_msg_ool_descriptor_t *dsc; - - /* - * Destroy memory carried in the message - */ - dsc = &saddr->out_of_line; - if (dsc->deallocate) { - mach_msg_destroy_memory((vm_offset_t)dsc->address, - dsc->size); - } - break; - } - - case MACH_MSG_OOL_PORTS_DESCRIPTOR : { - mach_port_t *ports; - mach_msg_ool_ports_descriptor_t *dsc; - mach_msg_type_number_t j; - - /* - * Destroy port rights carried in the message - */ - dsc = &saddr->ool_ports; - ports = (mach_port_t *) dsc->address; - for (j = 0; j < dsc->count; j++, ports++) { - mach_msg_destroy_port(*ports, dsc->disposition); - } - - /* - * Destroy memory carried in the message - */ - if (dsc->deallocate) { - mach_msg_destroy_memory((vm_offset_t)dsc->address, - dsc->count * sizeof(mach_port_t)); - } - break; - } - } - } -#else - vm_offset_t saddr; - vm_offset_t eaddr; - - saddr = (vm_offset_t) (msg + 1); - eaddr = (vm_offset_t) msg + msg->msgh_size; - - while (saddr < eaddr) { - mach_msg_type_long_t *type; - mach_msg_type_name_t name; - mach_msg_type_size_t size; - mach_msg_type_number_t number; - boolean_t is_inline; - vm_size_t length; - vm_offset_t addr; - - type = (mach_msg_type_long_t *) saddr; - is_inline = type->msgtl_header.msgt_inline; - if (type->msgtl_header.msgt_longform) { - name = type->msgtl_name; - size = type->msgtl_size; - number = type->msgtl_number; - saddr += sizeof(mach_msg_type_long_t); - } else { - name = type->msgtl_header.msgt_name; - size = type->msgtl_header.msgt_size; - number = type->msgtl_header.msgt_number; - saddr += sizeof(mach_msg_type_t); - } - - /* calculate length of data in bytes, rounding up */ - length = (((((number * size) + 7) >> 3) + sizeof (int) - 1) - &~ (sizeof (int) - 1)); - - addr = is_inline ? saddr : * (vm_offset_t *) saddr; - - if (MACH_MSG_TYPE_PORT_ANY(name)) { - mach_port_t *ports = (mach_port_t *) addr; - mach_msg_type_number_t i; - - for (i = 0; i < number; i++) - mach_msg_destroy_port(*ports++, name); - } - - if (is_inline) { - /* inline data sizes round up to int boundaries */ - saddr += length; - } else { - mach_msg_destroy_memory(addr, length); - saddr += sizeof(vm_offset_t); - } - } -#endif - } -} - -weak_alias (__mach_msg_destroy, mach_msg_destroy) - -static void -mach_msg_destroy_port(port, type) - mach_port_t port; - mach_msg_type_name_t type; -{ - if (MACH_PORT_VALID(port)) switch (type) { - case MACH_MSG_TYPE_MOVE_SEND: - case MACH_MSG_TYPE_MOVE_SEND_ONCE: - /* destroy the send/send-once right */ - (void) __mach_port_deallocate(mach_task_self(), port); - break; - - case MACH_MSG_TYPE_MOVE_RECEIVE: - /* destroy the receive right */ - (void) __mach_port_mod_refs(mach_task_self(), port, - MACH_PORT_RIGHT_RECEIVE, -1); - break; - - case MACH_MSG_TYPE_MAKE_SEND: - /* create a send right and then destroy it */ - (void) __mach_port_insert_right(mach_task_self(), port, - port, MACH_MSG_TYPE_MAKE_SEND); - (void) __mach_port_deallocate(mach_task_self(), port); - break; - - case MACH_MSG_TYPE_MAKE_SEND_ONCE: - /* create a send-once right and then destroy it */ - (void) __mach_port_extract_right(mach_task_self(), port, - MACH_MSG_TYPE_MAKE_SEND_ONCE, - &port, &type); - (void) __mach_port_deallocate(mach_task_self(), port); - break; - } -} - -static void -mach_msg_destroy_memory(addr, size) - vm_offset_t addr; - vm_size_t size; -{ - if (size > 0) - (void) __vm_deallocate(__mach_task_self(), addr, size); -} diff --git a/bin/glibc-2.7/mach/msg.c b/bin/glibc-2.7/mach/msg.c deleted file mode 100644 index bccad7fd..00000000 --- a/bin/glibc-2.7/mach/msg.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989, 1995 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -#include -#include - -#ifdef MACH_MSG_OVERWRITE -/* In variants with this feature, the actual system call is - __mach_msg_overwrite_trap. */ -mach_msg_return_t -__mach_msg_trap (mach_msg_header_t *msg, - mach_msg_option_t option, - mach_msg_size_t send_size, - mach_msg_size_t rcv_size, - mach_port_t rcv_name, - mach_msg_timeout_t timeout, - mach_port_t notify) -{ - return __mach_msg_overwrite_trap (msg, option, send_size, - rcv_size, rcv_name, timeout, notify, - MACH_MSG_NULL, 0); -} -weak_alias (__mach_msg_trap, mach_msg_trap) - -/* See comments below in __mach_msg. */ -mach_msg_return_t -__mach_msg_overwrite (mach_msg_header_t *msg, - mach_msg_option_t option, - mach_msg_size_t send_size, - mach_msg_size_t rcv_size, - mach_port_t rcv_name, - mach_msg_timeout_t timeout, - mach_port_t notify, - mach_msg_header_t *rcv_msg, - mach_msg_size_t rcv_msg_size) - -{ - mach_msg_return_t ret; - - /* Consider the following cases: - 1. Errors in pseudo-receive (eg, MACH_SEND_INTERRUPTED - plus special bits). - 2. Use of MACH_SEND_INTERRUPT/MACH_RCV_INTERRUPT options. - 3. RPC calls with interruptions in one/both halves. - */ - - ret = __mach_msg_overwrite_trap (msg, option, send_size, - rcv_size, rcv_name, timeout, notify, - rcv_msg, rcv_msg_size); - if (ret == MACH_MSG_SUCCESS) - return MACH_MSG_SUCCESS; - - if (!(option & MACH_SEND_INTERRUPT)) - while (ret == MACH_SEND_INTERRUPTED) - ret = __mach_msg_overwrite_trap (msg, option, send_size, - rcv_size, rcv_name, timeout, notify, - rcv_msg, rcv_msg_size); - - if (!(option & MACH_RCV_INTERRUPT)) - while (ret == MACH_RCV_INTERRUPTED) - ret = __mach_msg_overwrite_trap (msg, option & ~MACH_SEND_MSG, - 0, rcv_size, rcv_name, timeout, notify, - rcv_msg, rcv_msg_size); - - return ret; -} -weak_alias (__mach_msg_overwrite, mach_msg_overwrite) -#endif - -mach_msg_return_t -__mach_msg (mach_msg_header_t *msg, - mach_msg_option_t option, - mach_msg_size_t send_size, - mach_msg_size_t rcv_size, - mach_port_t rcv_name, - mach_msg_timeout_t timeout, - mach_port_t notify) -{ - mach_msg_return_t ret; - - /* Consider the following cases: - 1. Errors in pseudo-receive (eg, MACH_SEND_INTERRUPTED - plus special bits). - 2. Use of MACH_SEND_INTERRUPT/MACH_RCV_INTERRUPT options. - 3. RPC calls with interruptions in one/both halves. - */ - - ret = __mach_msg_trap (msg, option, send_size, - rcv_size, rcv_name, timeout, notify); - if (ret == MACH_MSG_SUCCESS) - return MACH_MSG_SUCCESS; - - if (!(option & MACH_SEND_INTERRUPT)) - while (ret == MACH_SEND_INTERRUPTED) - ret = __mach_msg_trap (msg, option, send_size, - rcv_size, rcv_name, timeout, notify); - - if (!(option & MACH_RCV_INTERRUPT)) - while (ret == MACH_RCV_INTERRUPTED) - ret = __mach_msg_trap (msg, option & ~MACH_SEND_MSG, - 0, rcv_size, rcv_name, timeout, notify); - - return ret; -} -weak_alias (__mach_msg, mach_msg) - -mach_msg_return_t -__mach_msg_send (mach_msg_header_t *msg) -{ - return __mach_msg (msg, MACH_SEND_MSG, - msg->msgh_size, 0, MACH_PORT_NULL, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); -} -weak_alias (__mach_msg_send, mach_msg_send) - -mach_msg_return_t -__mach_msg_receive (mach_msg_header_t *msg) -{ - return __mach_msg (msg, MACH_RCV_MSG, - 0, msg->msgh_size, msg->msgh_local_port, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); -} -weak_alias (__mach_msg_receive, mach_msg_receive) diff --git a/bin/glibc-2.7/mach/msgserver.c b/bin/glibc-2.7/mach/msgserver.c deleted file mode 100644 index 9478ae19..00000000 --- a/bin/glibc-2.7/mach/msgserver.c +++ /dev/null @@ -1,200 +0,0 @@ -/* Copyright (C) 1993,94,95,96,2001,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Based on CMU's mach_msg_server.c revision 2.4 of 91/05/14, and thus - under the following copyright. Rewritten by Roland McGrath (FSF) - 93/12/06 to use stack space instead of malloc, and to handle - large messages with MACH_RCV_LARGE. */ - -/* - * Mach Operating System - * Copyright (c) 1991,1990 Carnegie Mellon University - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * (pre-GNU) HISTORY - * - * Revision 2.4 91/05/14 17:53:22 mrt - * Correcting copyright - * - * Revision 2.3 91/02/14 14:17:47 mrt - * Added new Mach copyright - * [91/02/13 12:44:20 mrt] - * - * Revision 2.2 90/08/06 17:23:58 rpd - * Created. - * - */ - - -#include -#include -#include /* For malloc and free. */ -#include - -#ifdef NDR_CHAR_ASCII /* OSF Mach flavors have different names. */ -# define mig_reply_header_t mig_reply_error_t -#endif - -mach_msg_return_t -__mach_msg_server_timeout (boolean_t (*demux) (mach_msg_header_t *request, - mach_msg_header_t *reply), - mach_msg_size_t max_size, - mach_port_t rcv_name, - mach_msg_option_t option, - mach_msg_timeout_t timeout) -{ - register mig_reply_header_t *request, *reply; - register mach_msg_return_t mr; - - if (max_size == 0) - { -#ifdef MACH_RCV_LARGE - option |= MACH_RCV_LARGE; - max_size = 2 * __vm_page_size; /* Generic. Good? XXX */ -#else - max_size = 4 * __vm_page_size; /* XXX */ -#endif - } - - request = __alloca (max_size); - reply = __alloca (max_size); - - while (1) - { - get_request: - mr = __mach_msg (&request->Head, MACH_RCV_MSG|option, - 0, max_size, rcv_name, - timeout, MACH_PORT_NULL); - while (mr == MACH_MSG_SUCCESS) - { - /* We have a request message. - Pass it to DEMUX for processing. */ - - (void) (*demux) (&request->Head, &reply->Head); - assert (reply->Head.msgh_size <= max_size); - - switch (reply->RetCode) - { - case KERN_SUCCESS: - /* Hunky dory. */ - break; - - case MIG_NO_REPLY: - /* The server function wanted no reply sent. - Loop for another request. */ - goto get_request; - - default: - /* Some error; destroy the request message to release any - port rights or VM it holds. Don't destroy the reply port - right, so we can send an error message. */ - request->Head.msgh_remote_port = MACH_PORT_NULL; - __mach_msg_destroy (&request->Head); - break; - } - - if (reply->Head.msgh_remote_port == MACH_PORT_NULL) - { - /* No reply port, so destroy the reply. */ - if (reply->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) - __mach_msg_destroy (&reply->Head); - goto get_request; - } - - /* Send the reply and the get next request. */ - - { - /* Swap the request and reply buffers. mach_msg will read the - reply message from the buffer we pass and write the new - request message to the same buffer. */ - void *tmp = request; - request = reply; - reply = tmp; - } - - mr = __mach_msg (&request->Head, - MACH_SEND_MSG|MACH_RCV_MSG|option, - request->Head.msgh_size, max_size, rcv_name, - timeout, MACH_PORT_NULL); - } - - /* A message error occurred. */ - - switch (mr) - { - case MACH_RCV_TOO_LARGE: -#ifdef MACH_RCV_LARGE - /* The request message is larger than MAX_SIZE, and has not - been dequeued. The message header has the actual size of - the message. We recurse here in hopes that the compiler - will optimize the tail-call and allocate some more stack - space instead of way too much. */ - return __mach_msg_server_timeout (demux, request->Head.msgh_size, - rcv_name, option, timeout); -#else - /* XXX the kernel has destroyed the msg */ - break; -#endif - - case MACH_SEND_INVALID_DEST: - /* The reply can't be delivered, so destroy it. This error - indicates only that the requester went away, so we - continue and get the next request. */ - __mach_msg_destroy (&request->Head); - break; - - default: - /* Some other form of lossage; return to caller. */ - return mr; - } - } -} -weak_alias (__mach_msg_server_timeout, mach_msg_server_timeout) - -mach_msg_return_t -__mach_msg_server (demux, max_size, rcv_name) - boolean_t (*demux) (mach_msg_header_t *in, mach_msg_header_t *out); - mach_msg_size_t max_size; - mach_port_t rcv_name; -{ - return __mach_msg_server_timeout (demux, max_size, rcv_name, - MACH_MSG_OPTION_NONE, - MACH_MSG_TIMEOUT_NONE); -} -weak_alias (__mach_msg_server, mach_msg_server) diff --git a/bin/glibc-2.7/mach/mutex-init.c b/bin/glibc-2.7/mach/mutex-init.c deleted file mode 100644 index 94b03324..00000000 --- a/bin/glibc-2.7/mach/mutex-init.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Initialize a cthreads mutex structure. - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -void -__mutex_init (void *lock) -{ - /* This happens to be name space-safe because it is a macro. - It invokes only spin_lock_init, which is a macro for __spin_lock_init; - and cthread_queue_init, which is a macro for some simple code. */ - mutex_init ((struct mutex *) lock); -} diff --git a/bin/glibc-2.7/mach/mutex-solid.c b/bin/glibc-2.7/mach/mutex-solid.c deleted file mode 100644 index 13f911fd..00000000 --- a/bin/glibc-2.7/mach/mutex-solid.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Stub versions of mutex_lock_solid/mutex_unlock_solid for no -lthreads. - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* If cthreads is linked in, it will define these functions itself to do - real cthreads mutex locks. This file will only be linked in when - cthreads is not used, and `mutexes' are in fact just spin locks (and - some unused storage). */ - -void -__mutex_lock_solid (void *lock) -{ - __spin_lock_solid (lock); -} - -void -__mutex_unlock_solid (void *lock) -{ -} diff --git a/bin/glibc-2.7/mach/setup-thread.c b/bin/glibc-2.7/mach/setup-thread.c deleted file mode 100644 index fecffd9f..00000000 --- a/bin/glibc-2.7/mach/setup-thread.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 1991,94,1995,1997,2002,2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include "sysdep.h" /* Defines stack direction. */ - -#define STACK_SIZE (16 * 1024 * 1024) /* 16MB, arbitrary. */ - -/* Give THREAD a stack and set it to run at PC when resumed. - If *STACK_SIZE is nonzero, that size of stack is allocated. - If *STACK_BASE is nonzero, that stack location is used. - If STACK_BASE is not null it is filled in with the chosen stack base. - If STACK_SIZE is not null it is filled in with the chosen stack size. - Regardless, an extra page of red zone is allocated off the end; this - is not included in *STACK_SIZE. */ - -kern_return_t -__mach_setup_thread (task_t task, thread_t thread, void *pc, - vm_address_t *stack_base, vm_size_t *stack_size) -{ - kern_return_t error; - struct machine_thread_state ts; - mach_msg_type_number_t tssize = MACHINE_THREAD_STATE_COUNT; - vm_address_t stack; - vm_size_t size; - int anywhere; - - size = stack_size ? *stack_size ? : STACK_SIZE : STACK_SIZE; - stack = stack_base ? *stack_base ? : 0 : 0; - anywhere = !stack_base || !*stack_base; - - error = __vm_allocate (task, &stack, size + __vm_page_size, anywhere); - if (error) - return error; - - if (stack_size) - *stack_size = size; - - memset (&ts, 0, sizeof (ts)); - MACHINE_THREAD_STATE_SET_PC (&ts, pc); -#ifdef STACK_GROWTH_DOWN - if (stack_base) - *stack_base = stack + __vm_page_size; - ts.SP = stack + __vm_page_size + size; -#elif defined (STACK_GROWTH_UP) - if (stack_base) - *stack_base = stack; - ts.SP = stack; - stack += size; -#else - #error stack direction unknown -#endif - - /* Create the red zone. */ - if (error = __vm_protect (task, stack, __vm_page_size, 0, VM_PROT_NONE)) - return error; - - return __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR, - (natural_t *) &ts, tssize); -} - -weak_alias (__mach_setup_thread, mach_setup_thread) diff --git a/bin/glibc-2.7/mach/shortcut.awk b/bin/glibc-2.7/mach/shortcut.awk deleted file mode 100644 index ea283d49..00000000 --- a/bin/glibc-2.7/mach/shortcut.awk +++ /dev/null @@ -1,50 +0,0 @@ -# Icky intimate knowledge of MiG output. - -BEGIN { print "/* This file is generated by shortcut.awk. */"; - echo=1; - inproto=0; proto=""; arglist=""; - } - -$1 == "LINTLIBRARY" { print "#include "; next } - -$1 == "weak_alias" { next } - -# Copy the first line of the definition, but -# replace the function name (RPC) with CALL. -$NF == rpc \ - { - for (i = 1; i < NF; ++i) printf "%s ", $i; - print call; - next; - } - -# Collect the lines of the prototype in PROTO, and extract the parameter -# names into ARGLIST. -NF == 1 && $1 == ")" { inproto=0 } -inproto { proto = proto $0; - arg = $NF; - gsub(/[^a-zA-Z0-9_,]/, "", arg); - arglist = arglist arg; - } -NF == 1 && $1 == "(" { inproto=1 } - -/^{$/ { echo=0; } - -echo == 1 { print $0; } - -/^}$/ && proto != "" \ - { - print "{"; - print " kern_return_t err;"; - print " extern kern_return_t " syscall " (" proto ");"; - print " extern kern_return_t " rpc " (" proto ");"; - print " err = " syscall " (" arglist ");"; - print " if (err == MACH_SEND_INTERRUPTED)"; - print " err = " rpc " (" arglist ");"; - print " return err;" - print "}"; - print "weak_alias (" call ", " alias ")"; - # Declare RPC so the weak_alias that follows will work. - print "extern __typeof (" call ") " rpc ";"; - echo = 1; - } diff --git a/bin/glibc-2.7/mach/spin-lock.c b/bin/glibc-2.7/mach/spin-lock.c deleted file mode 100644 index aaebc55c..00000000 --- a/bin/glibc-2.7/mach/spin-lock.c +++ /dev/null @@ -1,8 +0,0 @@ -#define _EXTERN_INLINE /* Empty to define the real functions. */ -#include "spin-lock.h" - -weak_alias (__spin_lock_init, spin_lock_init); -weak_alias (__spin_lock_locked, spin_lock_locked); -weak_alias (__spin_lock, spin_lock); -weak_alias (__spin_unlock, spin_unlock); -weak_alias (__spin_try_lock, spin_try_lock); diff --git a/bin/glibc-2.7/mach/spin-lock.h b/bin/glibc-2.7/mach/spin-lock.h deleted file mode 100644 index 1e9acf2c..00000000 --- a/bin/glibc-2.7/mach/spin-lock.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Definitions of user-visible names for spin locks. - Copyright (C) 1994, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SPIN_LOCK_H -#define _SPIN_LOCK_H - -#include /* This does all the work. */ - -typedef __spin_lock_t spin_lock_t; -#define SPIN_LOCK_INITIALIZER __SPIN_LOCK_INITIALIZER - -#define spin_lock_init(lock) __spin_lock_init (lock) -#define spin_lock(lock) __spin_lock (lock) -#define spin_try_lock(lock) __spin_try_lock (lock) -#define spin_unlock(lock) __spin_unlock (lock) -#define spin_lock_locked(lock) __spin_lock_locked (lock) - -#endif /* spin-lock.h */ diff --git a/bin/glibc-2.7/mach/spin-solid.c b/bin/glibc-2.7/mach/spin-solid.c deleted file mode 100644 index 3e3fbd4d..00000000 --- a/bin/glibc-2.7/mach/spin-solid.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -void -__spin_lock_solid (spin_lock_t *lock) -{ - while (__spin_lock_locked (lock) || ! __spin_try_lock (lock)) - /* Yield to another thread (system call). */ - __swtch_pri (0); -} -weak_alias (__spin_lock_solid, spin_lock_solid); diff --git a/bin/glibc-2.7/mach/syscalls.awk b/bin/glibc-2.7/mach/syscalls.awk deleted file mode 100644 index dec8a3b5..00000000 --- a/bin/glibc-2.7/mach/syscalls.awk +++ /dev/null @@ -1,9 +0,0 @@ -BEGIN { calls="" } - -{ - calls = calls " " $1; - print "sysno-" $1 " = " $2; - print "nargs-" $1 " = " $3; -} - -END { print "mach-syscalls := " calls } diff --git a/bin/glibc-2.7/signal/.cvsignore b/bin/glibc-2.7/signal/.cvsignore deleted file mode 100644 index 3fc9f4cd..00000000 --- a/bin/glibc-2.7/signal/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps -*.gz *.Z *.tar *.tgz -=* -TODO COPYING* AUTHORS copyr-* copying.* -glibc-* -distinfo diff --git a/bin/glibc-2.7/signal/Makefile b/bin/glibc-2.7/signal/Makefile deleted file mode 100644 index fa8d098d..00000000 --- a/bin/glibc-2.7/signal/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (C) 1991-1998,2003,2006 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA. - -# -# Makefile for signal routines. -# -subdir := signal - -headers := signal.h sys/signal.h bits/signum.h bits/sigcontext.h \ - bits/sigaction.h bits/sigset.h bits/siginfo.h bits/sigstack.h \ - bits/sigthread.h - -routines := signal raise killpg \ - sigaction sigprocmask kill \ - sigpending sigsuspend sigwait \ - sigblock sigsetmask sigpause sigvec \ - sigstack sigaltstack sigintr \ - sigsetops sigempty sigfillset sigaddset sigdelset sigismem \ - sigreturn \ - siggetmask sysv_signal \ - sigisempty sigandset sigorset \ - allocrtsig sigtimedwait sigwaitinfo sigqueue \ - sighold sigrelse sigignore sigset - -tests := tst-signal tst-sigset tst-sigsimple tst-raise tst-sigset2 - -distribute := sigsetops.h testrtsig.h sigset-cvt-mask.h - - -include ../Rules - -CFLAGS-sigpause.c = -fexceptions -CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables -CFLAGS-sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables diff --git a/bin/glibc-2.7/signal/Versions b/bin/glibc-2.7/signal/Versions deleted file mode 100644 index 0217a408..00000000 --- a/bin/glibc-2.7/signal/Versions +++ /dev/null @@ -1,52 +0,0 @@ -libc { - GLIBC_2.0 { - # functions with special/multiple interfaces - __sigaddset; __sigdelset; __sigismember; __sysv_signal; - - # functions used in inline functions or macros - __sigpause; - - # functions used in other libraries - __sigaction; - - # b* - bsd_signal; - - # g* - gsignal; - - # k* - kill; killpg; - - # p* - psignal; - - # r* - raise; - - # s* - sigaction; sigaddset; sigaltstack; sigandset; sigblock; sigdelset; - sigemptyset; sigfillset; siggetmask; siginterrupt; sigisemptyset; - sigismember; siglongjmp; signal; sigorset; sigpause; sigpending; - sigprocmask; sigreturn; sigsetmask; sigstack; sigsuspend; sigvec; - sigwait; ssignal; - } - GLIBC_2.1 { - # helper functions - __libc_current_sigrtmin; __libc_current_sigrtmax; __libc_allocate_rtsig; - - # s* - sighold; sigrelse; sigignore; sigset; sysv_signal; - - # New RT signal functions. - sigqueue; sigtimedwait; sigwaitinfo; - } - GLIBC_2.1.3 { - # LinuxThreads needs this entry point. - __sigsuspend; - } - GLIBC_2.2 { - # Needed to provide a pointer to the XPG sigpause function. - __xpg_sigpause; - } -} diff --git a/bin/glibc-2.7/signal/allocrtsig.c b/bin/glibc-2.7/signal/allocrtsig.c deleted file mode 100644 index ac8d2b6b..00000000 --- a/bin/glibc-2.7/signal/allocrtsig.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Handle real-time signal allocation. - Copyright (C) 1997,98,99,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* In these variables we keep track of the used variables. If the - platform does not support any real-time signals we will define the - values to some unreasonable value which will signal failing of all - the functions below. */ -#ifndef __SIGRTMIN -static int current_rtmin = -1; -static int current_rtmax = -1; -#else -static int current_rtmin; -static int current_rtmax; - -static int initialized; - -#include - -static void -init (void) -{ - if (!kernel_has_rtsig ()) - { - current_rtmin = -1; - current_rtmax = -1; - } - else - { - current_rtmin = __SIGRTMIN; - current_rtmax = __SIGRTMAX; - } - initialized = 1; -} -#endif - -/* Return number of available real-time signal with highest priority. */ -int -__libc_current_sigrtmin (void) -{ -#ifdef __SIGRTMIN - if (!initialized) - init (); -#endif - return current_rtmin; -} -libc_hidden_def (__libc_current_sigrtmin) - -/* Return number of available real-time signal with lowest priority. */ -int -__libc_current_sigrtmax (void) -{ -#ifdef __SIGRTMIN - if (!initialized) - init (); -#endif - return current_rtmax; -} -libc_hidden_def (__libc_current_sigrtmax) - -/* Allocate real-time signal with highest/lowest available - priority. Please note that we don't use a lock since we assume - this function to be called at program start. */ -int -__libc_allocate_rtsig (int high) -{ -#ifndef __SIGRTMIN - return -1; -#else - if (!initialized) - init (); - if (current_rtmin == -1 || current_rtmin > current_rtmax) - /* We don't have anymore signal available. */ - return -1; - - return high ? current_rtmin++ : current_rtmax--; -#endif -} diff --git a/bin/glibc-2.7/signal/kill.c b/bin/glibc-2.7/signal/kill.c deleted file mode 100644 index 1d81e45d..00000000 --- a/bin/glibc-2.7/signal/kill.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* Send signal SIG to process number PID. If PID is zero, - send SIG to all processes in the current process's process group. - If PID is < -1, send SIG to all processes in process group - PID. */ -int -__kill (pid, sig) - int pid; - int sig; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (kill) - -weak_alias (__kill, kill) -#include diff --git a/bin/glibc-2.7/signal/killpg.c b/bin/glibc-2.7/signal/killpg.c deleted file mode 100644 index ad9258df..00000000 --- a/bin/glibc-2.7/signal/killpg.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991, 1993, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* Send SIG to all processes in process group PGRP. - If PGRP is zero, send SIG to all processes in - the current process's process group. */ -int -killpg (pgrp, sig) - __pid_t pgrp; - int sig; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (killpg) -#include diff --git a/bin/glibc-2.7/signal/raise.c b/bin/glibc-2.7/signal/raise.c deleted file mode 100644 index c5a449f7..00000000 --- a/bin/glibc-2.7/signal/raise.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1991,95,96,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Raise the signal SIG. */ -int -raise (sig) - int sig; -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (raise, gsignal) - -stub_warning (raise) -stub_warning (gsignal) -#include diff --git a/bin/glibc-2.7/signal/sigaction.c b/bin/glibc-2.7/signal/sigaction.c deleted file mode 100644 index bf0a15ba..00000000 --- a/bin/glibc-2.7/signal/sigaction.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* If ACT is not NULL, change the action for SIG to *ACT. - If OACT is not NULL, put the old action for SIG in *OACT. */ -int -__sigaction (sig, act, oact) - int sig; - const struct sigaction *act; - struct sigaction *oact; -{ - if (sig <= 0 || sig >= NSIG) - { - __set_errno (EINVAL); - return -1; - } - - __set_errno (ENOSYS); - return -1; -} -libc_hidden_def (__sigaction) -stub_warning (sigaction) - -weak_alias (__sigaction, sigaction) -#include diff --git a/bin/glibc-2.7/signal/sigaddset.c b/bin/glibc-2.7/signal/sigaddset.c deleted file mode 100644 index d8344f9b..00000000 --- a/bin/glibc-2.7/signal/sigaddset.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1991, 1996, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "sigsetops.h" - -/* Add SIGNO to SET. */ -int -sigaddset (set, signo) - sigset_t *set; - int signo; -{ - if (set == NULL || signo <= 0 || signo >= NSIG) - { - __set_errno (EINVAL); - return -1; - } - - return __sigaddset (set, signo); -} -libc_hidden_def (sigaddset) diff --git a/bin/glibc-2.7/signal/sigaltstack.c b/bin/glibc-2.7/signal/sigaltstack.c deleted file mode 100644 index 17c7e06b..00000000 --- a/bin/glibc-2.7/signal/sigaltstack.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Run signals handlers on the stack specified by SS (if not NULL). - If OSS is not NULL, it is filled in with the old signal stack status. */ -int -sigaltstack (ss, oss) - const struct sigaltstack *ss; - struct sigaltstack *oss; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (sigaltstack) -#include diff --git a/bin/glibc-2.7/signal/sigandset.c b/bin/glibc-2.7/signal/sigandset.c deleted file mode 100644 index a25225ba..00000000 --- a/bin/glibc-2.7/signal/sigandset.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#define __need_NULL -#include - -/* Combine sets LEFT and RIGHT by logical AND and place result in DEST. */ -int -sigandset (dest, left, right) - sigset_t *dest; - const sigset_t *left; - const sigset_t *right; -{ - if (dest == NULL || left == NULL || right == NULL) - { - __set_errno (EINVAL); - return -1; - } - - return __sigandset (dest, left, right); -} diff --git a/bin/glibc-2.7/signal/sigblock.c b/bin/glibc-2.7/signal/sigblock.c deleted file mode 100644 index 81a4ff14..00000000 --- a/bin/glibc-2.7/signal/sigblock.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Block signals in MASK, returning the old mask. */ -int -__sigblock (mask) - int mask; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sigblock) - -weak_alias (__sigblock, sigblock) -#include diff --git a/bin/glibc-2.7/signal/sigdelset.c b/bin/glibc-2.7/signal/sigdelset.c deleted file mode 100644 index 177e9ee4..00000000 --- a/bin/glibc-2.7/signal/sigdelset.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1991, 1996, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "sigsetops.h" - -/* Add SIGNO to SET. */ -int -sigdelset (set, signo) - sigset_t *set; - int signo; -{ - if (set == NULL || signo <= 0 || signo >= NSIG) - { - __set_errno (EINVAL); - return -1; - } - - return __sigdelset (set, signo); -} -libc_hidden_def (sigdelset) diff --git a/bin/glibc-2.7/signal/sigempty.c b/bin/glibc-2.7/signal/sigempty.c deleted file mode 100644 index dda035d1..00000000 --- a/bin/glibc-2.7/signal/sigempty.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991,96,97,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Clear all signals from SET. */ -int -sigemptyset (set) - sigset_t *set; -{ - if (set == NULL) - { - __set_errno (EINVAL); - return -1; - } - - memset (set, 0, sizeof (sigset_t)); - - return 0; -} -libc_hidden_def (sigemptyset) diff --git a/bin/glibc-2.7/signal/sigfillset.c b/bin/glibc-2.7/signal/sigfillset.c deleted file mode 100644 index 95d52cf0..00000000 --- a/bin/glibc-2.7/signal/sigfillset.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 1991,96,97,2002,2003,2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Set all signals in SET. */ -int -sigfillset (set) - sigset_t *set; -{ - if (set == NULL) - { - __set_errno (EINVAL); - return -1; - } - - memset (set, 0xff, sizeof (sigset_t)); - - /* If the implementation uses a cancellation signal don't set the bit. */ -#ifdef SIGCANCEL - __sigdelset (set, SIGCANCEL); -#endif - /* Likewise for the signal to implement setxid. */ -#ifdef SIGSETXID - __sigdelset (set, SIGSETXID); -#endif - - return 0; -} -libc_hidden_def (sigfillset) diff --git a/bin/glibc-2.7/signal/siggetmask.c b/bin/glibc-2.7/signal/siggetmask.c deleted file mode 100644 index c80cd55b..00000000 --- a/bin/glibc-2.7/signal/siggetmask.c +++ /dev/null @@ -1,29 +0,0 @@ -/* siggetmask -- useless alias for `sigblock (0)' for old Linux compatibility. - Copyright (C) 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -int -siggetmask (void) -{ - return __sigblock (0); -} - -link_warning (siggetmask, - "warning: `siggetmask' is obsolete; `sigprocmask' is best") diff --git a/bin/glibc-2.7/signal/sighold.c b/bin/glibc-2.7/signal/sighold.c deleted file mode 100644 index 687b7fc5..00000000 --- a/bin/glibc-2.7/signal/sighold.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Add SIG to the calling process' signal mask. - Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#define __need_NULL -#include -#include - -int -sighold (sig) - int sig; -{ - sigset_t set; - - /* Retrieve current signal set. */ - if (__sigprocmask (SIG_SETMASK, NULL, &set) < 0) - return -1; - - /* Add the specified signal. */ - if (sigaddset (&set, sig) < 0) - return -1; - - /* Set the new mask. */ - return __sigprocmask (SIG_SETMASK, &set, NULL); -} diff --git a/bin/glibc-2.7/signal/sigignore.c b/bin/glibc-2.7/signal/sigignore.c deleted file mode 100644 index 734422dd..00000000 --- a/bin/glibc-2.7/signal/sigignore.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* Set the disposition for SIG to SIG_IGN. */ -int -sigignore (sig) - int sig; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (sigignore) -#include diff --git a/bin/glibc-2.7/signal/sigintr.c b/bin/glibc-2.7/signal/sigintr.c deleted file mode 100644 index 9d4c2c8f..00000000 --- a/bin/glibc-2.7/signal/sigintr.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* If INTERRUPT is nonzero, make signal SIG interrupt system calls - (causing them to fail with EINTR); if INTERRUPT is zero, make system - calls be restarted after signal SIG. */ -int -siginterrupt (sig, interrupt) - int sig; - int interrupt; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (siginterrupt) -#include diff --git a/bin/glibc-2.7/signal/sigisempty.c b/bin/glibc-2.7/signal/sigisempty.c deleted file mode 100644 index 22baa003..00000000 --- a/bin/glibc-2.7/signal/sigisempty.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#define __need_NULL -#include - -/* Test whether SET is empty. */ -int -sigisemptyset (set) - const sigset_t *set; -{ - if (set == NULL) - { - __set_errno (EINVAL); - return -1; - } - - return __sigisemptyset (set); -} diff --git a/bin/glibc-2.7/signal/sigismem.c b/bin/glibc-2.7/signal/sigismem.c deleted file mode 100644 index e18a3b14..00000000 --- a/bin/glibc-2.7/signal/sigismem.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1991,96,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "sigsetops.h" - -/* Return 1 if SIGNO is in SET, 0 if not. */ -int -sigismember (set, signo) - const sigset_t *set; - int signo; -{ - if (set == NULL || signo <= 0 || signo >= NSIG) - { - __set_errno (EINVAL); - return -1; - } - - return __sigismember (set, signo); -} -libc_hidden_def (sigismember) diff --git a/bin/glibc-2.7/signal/signal.c b/bin/glibc-2.7/signal/signal.c deleted file mode 100644 index 6c1808bb..00000000 --- a/bin/glibc-2.7/signal/signal.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* Set the handler for the signal SIG to HANDLER, - returning the old handler, or SIG_ERR on error. */ -__sighandler_t -signal (sig, handler) - int sig; - __sighandler_t handler; -{ - __set_errno (ENOSYS); - return SIG_ERR; -} - -weak_alias (signal, ssignal) - -stub_warning (signal) -stub_warning (ssignal) -#include diff --git a/bin/glibc-2.7/signal/signal.h b/bin/glibc-2.7/signal/signal.h deleted file mode 100644 index aa210374..00000000 --- a/bin/glibc-2.7/signal/signal.h +++ /dev/null @@ -1,404 +0,0 @@ -/* Copyright (C) 1991-2003, 2004, 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* - * ISO C99 Standard: 7.14 Signal handling - */ - -#ifndef _SIGNAL_H - -#if !defined __need_sig_atomic_t && !defined __need_sigset_t -# define _SIGNAL_H -#endif - -#include - -__BEGIN_DECLS - -#include /* __sigset_t, __sig_atomic_t. */ - -/* An integral type that can be modified atomically, without the - possibility of a signal arriving in the middle of the operation. */ -#if defined __need_sig_atomic_t || defined _SIGNAL_H -# ifndef __sig_atomic_t_defined -# define __sig_atomic_t_defined -__BEGIN_NAMESPACE_STD -typedef __sig_atomic_t sig_atomic_t; -__END_NAMESPACE_STD -# endif -# undef __need_sig_atomic_t -#endif - -#if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX) -# ifndef __sigset_t_defined -# define __sigset_t_defined -typedef __sigset_t sigset_t; -# endif -# undef __need_sigset_t -#endif - -#ifdef _SIGNAL_H - -#include -#include - -#if defined __USE_XOPEN || defined __USE_XOPEN2K -# ifndef __pid_t_defined -typedef __pid_t pid_t; -# define __pid_t_defined -#endif -#ifdef __USE_XOPEN -# endif -# ifndef __uid_t_defined -typedef __uid_t uid_t; -# define __uid_t_defined -# endif -#endif /* Unix98 */ - - -/* Type of a signal handler. */ -typedef void (*__sighandler_t) (int); - -/* The X/Open definition of `signal' specifies the SVID semantic. Use - the additional function `sysv_signal' when X/Open compatibility is - requested. */ -extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) - __THROW; -#ifdef __USE_GNU -extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) - __THROW; -#endif - -/* Set the handler for the signal SIG to HANDLER, returning the old - handler, or SIG_ERR on error. - By default `signal' has the BSD semantic. */ -__BEGIN_NAMESPACE_STD -#ifdef __USE_BSD -extern __sighandler_t signal (int __sig, __sighandler_t __handler) - __THROW; -#else -/* Make sure the used `signal' implementation is the SVID version. */ -# ifdef __REDIRECT_NTH -extern __sighandler_t __REDIRECT_NTH (signal, - (int __sig, __sighandler_t __handler), - __sysv_signal); -# else -# define signal __sysv_signal -# endif -#endif -__END_NAMESPACE_STD - -#ifdef __USE_XOPEN -/* The X/Open definition of `signal' conflicts with the BSD version. - So they defined another function `bsd_signal'. */ -extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) - __THROW; -#endif - -/* Send signal SIG to process number PID. If PID is zero, - send SIG to all processes in the current process's process group. - If PID is < -1, send SIG to all processes in process group - PID. */ -#ifdef __USE_POSIX -extern int kill (__pid_t __pid, int __sig) __THROW; -#endif /* Use POSIX. */ - -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED -/* Send SIG to all processes in process group PGRP. - If PGRP is zero, send SIG to all processes in - the current process's process group. */ -extern int killpg (__pid_t __pgrp, int __sig) __THROW; -#endif /* Use BSD || X/Open Unix. */ - -__BEGIN_NAMESPACE_STD -/* Raise signal SIG, i.e., send SIG to yourself. */ -extern int raise (int __sig) __THROW; -__END_NAMESPACE_STD - -#ifdef __USE_SVID -/* SVID names for the same things. */ -extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) - __THROW; -extern int gsignal (int __sig) __THROW; -#endif /* Use SVID. */ - -#ifdef __USE_MISC -/* Print a message describing the meaning of the given signal number. */ -extern void psignal (int __sig, __const char *__s); -#endif /* Use misc. */ - - -/* The `sigpause' function has two different interfaces. The original - BSD definition defines the argument as a mask of the signal, while - the more modern interface in X/Open defines it as the signal - number. We go with the BSD version unless the user explicitly - selects the X/Open version. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int __sigpause (int __sig_or_mask, int __is_sig); - -#ifdef __FAVOR_BSD -/* Set the mask of blocked signals to MASK, - wait for a signal to arrive, and then restore the mask. */ -extern int sigpause (int __mask) __THROW __attribute_deprecated__; -#else -# ifdef __USE_XOPEN -# ifdef __GNUC__ -extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); -# else -/* Remove a signal from the signal mask and suspend the process. */ -# define sigpause(sig) __sigpause ((sig), 1) -# endif -# endif -#endif - - -#ifdef __USE_BSD -/* None of the following functions should be used anymore. They are here - only for compatibility. A single word (`int') is not guaranteed to be - enough to hold a complete signal mask and therefore these functions - simply do not work in many situations. Use `sigprocmask' instead. */ - -/* Compute mask for signal SIG. */ -# define sigmask(sig) __sigmask(sig) - -/* Block signals in MASK, returning the old mask. */ -extern int sigblock (int __mask) __THROW __attribute_deprecated__; - -/* Set the mask of blocked signals to MASK, returning the old mask. */ -extern int sigsetmask (int __mask) __THROW __attribute_deprecated__; - -/* Return currently selected signal mask. */ -extern int siggetmask (void) __THROW __attribute_deprecated__; -#endif /* Use BSD. */ - - -#ifdef __USE_MISC -# define NSIG _NSIG -#endif - -#ifdef __USE_GNU -typedef __sighandler_t sighandler_t; -#endif - -/* 4.4 BSD uses the name `sig_t' for this. */ -#ifdef __USE_BSD -typedef __sighandler_t sig_t; -#endif - -#ifdef __USE_POSIX - -# ifdef __USE_POSIX199309 -/* We need `struct timespec' later on. */ -# define __need_timespec -# include - -/* Get the `siginfo_t' type plus the needed symbols. */ -# include -# endif - -/* Clear all signals from SET. */ -extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1)); - -/* Set all signals in SET. */ -extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1)); - -/* Add SIGNO to SET. */ -extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1)); - -/* Remove SIGNO from SET. */ -extern int sigdelset (sigset_t *__set, int __signo) __THROW __nonnull ((1)); - -/* Return 1 if SIGNO is in SET, 0 if not. */ -extern int sigismember (__const sigset_t *__set, int __signo) - __THROW __nonnull ((1)); - -# ifdef __USE_GNU -/* Return non-empty value is SET is not empty. */ -extern int sigisemptyset (__const sigset_t *__set) __THROW __nonnull ((1)); - -/* Build new signal set by combining the two inputs set using logical AND. */ -extern int sigandset (sigset_t *__set, __const sigset_t *__left, - __const sigset_t *__right) __THROW __nonnull ((1, 2, 3)); - -/* Build new signal set by combining the two inputs set using logical OR. */ -extern int sigorset (sigset_t *__set, __const sigset_t *__left, - __const sigset_t *__right) __THROW __nonnull ((1, 2, 3)); -# endif /* GNU */ - -/* Get the system-specific definitions of `struct sigaction' - and the `SA_*' and `SIG_*'. constants. */ -# include - -/* Get and/or change the set of blocked signals. */ -extern int sigprocmask (int __how, __const sigset_t *__restrict __set, - sigset_t *__restrict __oset) __THROW; - -/* Change the set of blocked signals to SET, - wait until a signal arrives, and restore the set of blocked signals. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int sigsuspend (__const sigset_t *__set) __nonnull ((1)); - -/* Get and/or set the action for signal SIG. */ -extern int sigaction (int __sig, __const struct sigaction *__restrict __act, - struct sigaction *__restrict __oact) __THROW; - -/* Put in SET all signals that are blocked and waiting to be delivered. */ -extern int sigpending (sigset_t *__set) __THROW __nonnull ((1)); - - -/* Select any of pending signals from SET or wait for any to arrive. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) - __nonnull ((1, 2)); - -# ifdef __USE_POSIX199309 -/* Select any of pending signals from SET and place information in INFO. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int sigwaitinfo (__const sigset_t *__restrict __set, - siginfo_t *__restrict __info) __nonnull ((1)); - -/* Select any of pending signals from SET and place information in INFO. - Wait the time specified by TIMEOUT if no signal is pending. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int sigtimedwait (__const sigset_t *__restrict __set, - siginfo_t *__restrict __info, - __const struct timespec *__restrict __timeout) - __nonnull ((1)); - -/* Send signal SIG to the process PID. Associate data in VAL with the - signal. */ -extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) - __THROW; -# endif /* Use POSIX 199306. */ - -#endif /* Use POSIX. */ - -#ifdef __USE_BSD - -/* Names of the signals. This variable exists only for compatibility. - Use `strsignal' instead (see ). */ -extern __const char *__const _sys_siglist[_NSIG]; -extern __const char *__const sys_siglist[_NSIG]; - -/* Structure passed to `sigvec'. */ -struct sigvec - { - __sighandler_t sv_handler; /* Signal handler. */ - int sv_mask; /* Mask of signals to be blocked. */ - - int sv_flags; /* Flags (see below). */ -# define sv_onstack sv_flags /* 4.2 BSD compatibility. */ - }; - -/* Bits in `sv_flags'. */ -# define SV_ONSTACK (1 << 0)/* Take the signal on the signal stack. */ -# define SV_INTERRUPT (1 << 1)/* Do not restart system calls. */ -# define SV_RESETHAND (1 << 2)/* Reset handler to SIG_DFL on receipt. */ - - -/* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member - of VEC. The signals in `sv_mask' will be blocked while the handler runs. - If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be - reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL, - it is filled in with the old information for SIG. */ -extern int sigvec (int __sig, __const struct sigvec *__vec, - struct sigvec *__ovec) __THROW; - - -/* Get machine-dependent `struct sigcontext' and signal subcodes. */ -# include - -/* Restore the state saved in SCP. */ -extern int sigreturn (struct sigcontext *__scp) __THROW; - -#endif /* use BSD. */ - - -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED -# define __need_size_t -# include - -/* If INTERRUPT is nonzero, make signal SIG interrupt system calls - (causing them to fail with EINTR); if INTERRUPT is zero, make system - calls be restarted after signal SIG. */ -extern int siginterrupt (int __sig, int __interrupt) __THROW; - -# include -# ifdef __USE_XOPEN -/* This will define `ucontext_t' and `mcontext_t'. */ -# include -# endif - -/* Run signals handlers on the stack specified by SS (if not NULL). - If OSS is not NULL, it is filled in with the old signal stack status. - This interface is obsolete and on many platform not implemented. */ -extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) - __THROW __attribute_deprecated__; - -/* Alternate signal handler stack interface. - This interface should always be preferred over `sigstack'. */ -extern int sigaltstack (__const struct sigaltstack *__restrict __ss, - struct sigaltstack *__restrict __oss) __THROW; - -#endif /* use BSD or X/Open Unix. */ - -#ifdef __USE_XOPEN_EXTENDED -/* Simplified interface for signal management. */ - -/* Add SIG to the calling process' signal mask. */ -extern int sighold (int __sig) __THROW; - -/* Remove SIG from the calling process' signal mask. */ -extern int sigrelse (int __sig) __THROW; - -/* Set the disposition of SIG to SIG_IGN. */ -extern int sigignore (int __sig) __THROW; - -/* Set the disposition of SIG. */ -extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW; -#endif - -#if defined __USE_POSIX199506 || defined __USE_UNIX98 -/* Some of the functions for handling signals in threaded programs must - be defined here. */ -# include -# include -#endif /* use Unix98 */ - -/* The following functions are used internally in the C library and in - other code which need deep insights. */ - -/* Return number of available real-time signal with highest priority. */ -extern int __libc_current_sigrtmin (void) __THROW; -/* Return number of available real-time signal with lowest priority. */ -extern int __libc_current_sigrtmax (void) __THROW; - -#endif /* signal.h */ - -__END_DECLS - -#endif /* not signal.h */ diff --git a/bin/glibc-2.7/signal/sigorset.c b/bin/glibc-2.7/signal/sigorset.c deleted file mode 100644 index 7d7bf863..00000000 --- a/bin/glibc-2.7/signal/sigorset.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#define __need_NULL -#include - -/* Combine sets LEFT and RIGHT by logical OR and place result in DEST. */ -int -sigorset (dest, left, right) - sigset_t *dest; - const sigset_t *left; - const sigset_t *right; -{ - if (dest == NULL || left == NULL || right == NULL) - { - __set_errno (EINVAL); - return -1; - } - - return __sigorset (dest, left, right); -} diff --git a/bin/glibc-2.7/signal/sigpause.c b/bin/glibc-2.7/signal/sigpause.c deleted file mode 100644 index bc598d07..00000000 --- a/bin/glibc-2.7/signal/sigpause.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 1991,95,96,2000,02,2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#define sigpause __rename_sigpause -#include -#include -#undef sigpause - -int -__sigpause (sig_or_mask, is_sig) - int sig_or_mask; - int is_sig; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (__sigpause) -libc_hidden_def (__sigpause) - -int -__attribute__ ((weak)) -__default_sigpause (int mask) -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__default_sigpause, sigpause) -stub_warning (sigpause) -#include - - -int -__attribute ((weak)) -__xpg___sigpause (int sig) -{ - __set_errno (ENOSYS); - return -1; -} diff --git a/bin/glibc-2.7/signal/sigpending.c b/bin/glibc-2.7/signal/sigpending.c deleted file mode 100644 index 80e16e58..00000000 --- a/bin/glibc-2.7/signal/sigpending.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - - -/* Store in SET all signals that are blocked and pending. */ -int -sigpending (set) - sigset_t *set; -{ - if (set == NULL) - { - __set_errno (EINVAL); - return -1; - } - - __set_errno (ENOSYS); - return -1; -} - -stub_warning (sigpending) -#include diff --git a/bin/glibc-2.7/signal/sigprocmask.c b/bin/glibc-2.7/signal/sigprocmask.c deleted file mode 100644 index 472b3a4f..00000000 --- a/bin/glibc-2.7/signal/sigprocmask.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* If SET is not NULL, modify the current set of blocked signals - according to HOW, which may be SIG_BLOCK, SIG_UNBLOCK or SIG_SETMASK. - If OSET is not NULL, store the old set of blocked signals in *OSET. */ -int -__sigprocmask (how, set, oset) - int how; - const sigset_t *set; - sigset_t *oset; -{ - switch (how) - { - case SIG_BLOCK: - case SIG_UNBLOCK: - case SIG_SETMASK: - break; - default: - __set_errno (EINVAL); - return -1; - } - - __set_errno (ENOSYS); - return -1; -} - -/* No stub warning because abort calls __sigprocmask, - and we don't want warnings for every use of abort on - a system without safe signals. */ - -weak_alias (__sigprocmask, sigprocmask) diff --git a/bin/glibc-2.7/signal/sigqueue.c b/bin/glibc-2.7/signal/sigqueue.c deleted file mode 100644 index c6e77c0a..00000000 --- a/bin/glibc-2.7/signal/sigqueue.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Implementation of sigqueue function from POSIX.1b. - Copyright (C) 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -int -__sigqueue (pid_t pid, int sig, const union sigval val) -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__sigqueue, sigqueue) - -stub_warning (sigqueue) -#include diff --git a/bin/glibc-2.7/signal/sigrelse.c b/bin/glibc-2.7/signal/sigrelse.c deleted file mode 100644 index ada72727..00000000 --- a/bin/glibc-2.7/signal/sigrelse.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Remove SIG from the calling process' signal mask. - Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#define __need_NULL -#include -#include - -int -sigrelse (sig) - int sig; -{ - sigset_t set; - - /* Retrieve current signal set. */ - if (__sigprocmask (SIG_SETMASK, NULL, &set) < 0) - return -1; - - /* Remove the specified signal. */ - if (sigdelset (&set, sig) < 0) - return -1; - - /* Set the new mask. */ - return __sigprocmask (SIG_SETMASK, &set, NULL); -} diff --git a/bin/glibc-2.7/signal/sigreturn.c b/bin/glibc-2.7/signal/sigreturn.c deleted file mode 100644 index 0239b0a9..00000000 --- a/bin/glibc-2.7/signal/sigreturn.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 1992, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -int -__sigreturn (context) - struct sigcontext *context; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sigreturn) - -weak_alias (__sigreturn, sigreturn) -#include diff --git a/bin/glibc-2.7/signal/sigset.c b/bin/glibc-2.7/signal/sigset.c deleted file mode 100644 index 191a9091..00000000 --- a/bin/glibc-2.7/signal/sigset.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* Set the disposition for SIG. */ -__sighandler_t -sigset (sig, disp) - int sig; - __sighandler_t disp; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (sigset) -#include diff --git a/bin/glibc-2.7/signal/sigsetmask.c b/bin/glibc-2.7/signal/sigsetmask.c deleted file mode 100644 index 602c0add..00000000 --- a/bin/glibc-2.7/signal/sigsetmask.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -int -__sigsetmask (mask) - int mask; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sigsetmask) - -weak_alias (__sigsetmask, sigsetmask) -#include diff --git a/bin/glibc-2.7/signal/sigsetops.c b/bin/glibc-2.7/signal/sigsetops.c deleted file mode 100644 index 0317662a..00000000 --- a/bin/glibc-2.7/signal/sigsetops.c +++ /dev/null @@ -1,11 +0,0 @@ -/* Define the real-function versions of all inline functions - defined in signal.h (or bits/sigset.h). */ - -#include - -#define _EXTERN_INLINE -#ifndef __USE_EXTERN_INLINES -# define __USE_EXTERN_INLINES 1 -#endif - -#include "signal.h" diff --git a/bin/glibc-2.7/signal/sigsetops.h b/bin/glibc-2.7/signal/sigsetops.h deleted file mode 100644 index 52081c2b..00000000 --- a/bin/glibc-2.7/signal/sigsetops.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Definitions relevant to functions that operate on `sigset_t's. */ - -#include -#include -#include - -#define BITS (_NSIG - 1) -#define ELT(signo) (((signo) - 1) / BITS) -#define MASK(signo) (1 << (((signo) - 1) % BITS)) - -#undef sigemptyset -#undef sigfillset -#undef sigaddset -#undef sigdelset -#undef sigismember diff --git a/bin/glibc-2.7/signal/sigstack.c b/bin/glibc-2.7/signal/sigstack.c deleted file mode 100644 index ca9c8018..00000000 --- a/bin/glibc-2.7/signal/sigstack.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Run signals handlers on the stack specified by SS (if not NULL). - If OSS is not NULL, it is filled in with the old signal stack status. */ -int -sigstack (ss, oss) - struct sigstack *ss; - struct sigstack *oss; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (sigstack) -#include diff --git a/bin/glibc-2.7/signal/sigsuspend.c b/bin/glibc-2.7/signal/sigsuspend.c deleted file mode 100644 index 58452e33..00000000 --- a/bin/glibc-2.7/signal/sigsuspend.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -/* Change the set of blocked signals to SET, - wait until a signal arrives, and restore the set of blocked signals. */ -int -__sigsuspend (set) - const sigset_t *set; -{ - __set_errno (ENOSYS); - return -1; -} -libc_hidden_def (__sigsuspend) -weak_alias (__sigsuspend, sigsuspend) - -stub_warning (sigsuspend) -stub_warning (__sigsuspend) -#include diff --git a/bin/glibc-2.7/signal/sigtimedwait.c b/bin/glibc-2.7/signal/sigtimedwait.c deleted file mode 100644 index 7b114a31..00000000 --- a/bin/glibc-2.7/signal/sigtimedwait.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Implementation of sigtimedwait function from POSIX.1b. - Copyright (C) 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -int -__sigtimedwait (const sigset_t *set, siginfo_t *info, - const struct timespec *timeout) -{ - __set_errno (ENOSYS); - return -1; -} -libc_hidden_def (__sigtimedwait) -weak_alias (__sigtimedwait, sigtimedwait) - -stub_warning (sigtimedwait) -#include diff --git a/bin/glibc-2.7/signal/sigvec.c b/bin/glibc-2.7/signal/sigvec.c deleted file mode 100644 index 148e9a0d..00000000 --- a/bin/glibc-2.7/signal/sigvec.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member - of VEC. The signals in `sv_mask' will be blocked while the handler runs. - If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be - reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL, - it is filled in with the old information for SIG. */ -int -__sigvec (sig, vec, ovec) - int sig; - const struct sigvec *vec; - struct sigvec *ovec; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (sigvec) - -weak_alias (__sigvec, sigvec) -#include diff --git a/bin/glibc-2.7/signal/sigwait.c b/bin/glibc-2.7/signal/sigwait.c deleted file mode 100644 index 01676855..00000000 --- a/bin/glibc-2.7/signal/sigwait.c +++ /dev/null @@ -1,32 +0,0 @@ -/* sigwait - implementation of sigwait function from POSIX.1c. - Copyright (C) 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -int -__sigwait (const sigset_t *set, int *sig) -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__sigwait, sigwait) - -stub_warning (sigwait) -#include diff --git a/bin/glibc-2.7/signal/sigwaitinfo.c b/bin/glibc-2.7/signal/sigwaitinfo.c deleted file mode 100644 index e0659b02..00000000 --- a/bin/glibc-2.7/signal/sigwaitinfo.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Implementation of sigwaitinfo function from POSIX.1b. - Copyright (C) 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -int -__sigwaitinfo (const sigset_t *set, siginfo_t *info) -{ - __set_errno (ENOSYS); - return -1; -} -libc_hidden_def (__sigwaitinfo) -weak_alias (__sigwaitinfo, sigwaitinfo) - -stub_warning (sigwaitinfo) -#include diff --git a/bin/glibc-2.7/signal/sys/signal.h b/bin/glibc-2.7/signal/sys/signal.h deleted file mode 100644 index 2e602dad..00000000 --- a/bin/glibc-2.7/signal/sys/signal.h +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/bin/glibc-2.7/signal/sysv_signal.c b/bin/glibc-2.7/signal/sysv_signal.c deleted file mode 100644 index 86dbb1d0..00000000 --- a/bin/glibc-2.7/signal/sysv_signal.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Set the handler for the signal SIG to HANDLER, - returning the old handler, or SIG_ERR on error. */ -__sighandler_t -__sysv_signal (sig, handler) - int sig; - __sighandler_t handler; -{ - /* Check signal extents to protect __sigismember. */ - if (handler == SIG_ERR || sig < 1 || sig >= NSIG) - { - __set_errno (EINVAL); - return SIG_ERR; - } - - __set_errno (ENOSYS); - - return SIG_ERR; -} -weak_alias (__sysv_signal, sysv_signal) - -stub_warning (sysv_signal) -#include diff --git a/bin/glibc-2.7/signal/tst-raise.c b/bin/glibc-2.7/signal/tst-raise.c deleted file mode 100644 index 5ea9886a..00000000 --- a/bin/glibc-2.7/signal/tst-raise.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include - -volatile int count; - -void -sh (int sig) -{ - ++count; -} - -int -main (void) -{ - struct sigaction sa; - sa.sa_handler = sh; - sigemptyset (&sa.sa_mask); - sa.sa_flags = 0; - if (sigaction (SIGUSR1, &sa, NULL) < 0) - { - printf ("sigaction failed: %m\n"); - exit (1); - } - if (raise (SIGUSR1) < 0) - { - printf ("first raise failed: %m\n"); - exit (1); - } - if (raise (SIGUSR1) < 0) - { - printf ("second raise failed: %m\n"); - exit (1); - } - if (count != 2) - { - printf ("signal handler not called 2 times\n"); - exit (1); - } - exit (0); -} diff --git a/bin/glibc-2.7/signal/tst-signal.c b/bin/glibc-2.7/signal/tst-signal.c deleted file mode 100644 index 6d317879..00000000 --- a/bin/glibc-2.7/signal/tst-signal.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include -#include - -int win = 0; - -static void -handler (int sig) -{ - printf ("Received signal %d (%s).\n", sig, strsignal(sig)); - win = 1; -} - -int -main (void) -{ - if (signal (SIGTERM, handler) == SIG_ERR) - { - perror ("signal: SIGTERM"); - exit (EXIT_FAILURE); - } - - puts ("Set handler."); - - printf ("Sending myself signal %d.\n", SIGTERM); - fflush (stdout); - - if (raise (SIGTERM) < 0) - { - perror ("raise: SIGTERM"); - exit (EXIT_FAILURE); - } - - if (!win) - { - puts ("Didn't get any signal. Test FAILED!"); - exit (EXIT_FAILURE); - } - - puts ("Got a signal. Test succeeded."); - - return EXIT_SUCCESS; -} diff --git a/bin/glibc-2.7/signal/tst-sigset.c b/bin/glibc-2.7/signal/tst-sigset.c deleted file mode 100644 index d47adcc0..00000000 --- a/bin/glibc-2.7/signal/tst-sigset.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Test sig*set functions. */ - -#include -#include - -#define TEST_FUNCTION do_test () -static int -do_test (void) -{ - int result = 0; - int sig = -1; - -#define TRY(call) \ - if (call) \ - { \ - printf ("%s (sig = %d): %m\n", #call, sig); \ - result = 1; \ - } \ - else - - - sigset_t set; - TRY (sigemptyset (&set) != 0); - -#ifdef SIGRTMAX - int max_sig = SIGRTMAX; -#else - int max_sig = NSIG - 1; -#endif - - for (sig = 1; sig <= max_sig; ++sig) - { - TRY (sigismember (&set, sig) != 0); - TRY (sigaddset (&set, sig) != 0); - TRY (sigismember (&set, sig) == 0); - TRY (sigdelset (&set, sig) != 0); - TRY (sigismember (&set, sig) != 0); - } - - return result; -} - -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/signal/tst-sigset2.c b/bin/glibc-2.7/signal/tst-sigset2.c deleted file mode 100644 index f6533233..00000000 --- a/bin/glibc-2.7/signal/tst-sigset2.c +++ /dev/null @@ -1,184 +0,0 @@ -/* sigset_SIG_HOLD_bug.c [BZ #1951] */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define TEST_SIG SIGINT - - -/* Print mask of blocked signals for this process */ -static void -printSigMask (const char *msg) -{ - sigset_t currMask; - int sig; - int cnt; - - if (msg != NULL) - printf ("%s", msg); - - if (sigprocmask (SIG_BLOCK, NULL, &currMask) == -1) - error (1, errno, "sigaction"); - - cnt = 0; - for (sig = 1; sig < NSIG; sig++) - { - if (sigismember (&currMask, sig)) - { - cnt++; - printf ("\t\t%d (%s)\n", sig, strsignal (sig)); - } - } - - if (cnt == 0) - printf ("\t\t\n"); -} /* printSigMask */ - -static void -handler (int sig) -{ - printf ("Caught signal %d\n", sig); - printSigMask ("Signal mask in handler\n"); - printf ("Handler returning\n"); - _exit (1); -} /* handler */ - -static void -printDisposition (sighandler_t disp) -{ - if (disp == SIG_HOLD) - printf ("SIG_HOLD"); - else if (disp == SIG_DFL) - printf ("SIG_DFL"); - else if (disp == SIG_IGN) - printf ("SIG_IGN"); - else - printf ("handled at %" PRIxPTR, (uintptr_t) disp); -} /* printDisposition */ - -static int -returnTest1 (void) -{ - sighandler_t prev; - - printf ("===== TEST 1 =====\n"); - printf ("Blocking signal with sighold()\n"); - if (sighold (TEST_SIG) == -1) - error (1, errno, "sighold"); - printSigMask ("Signal mask after sighold()\n"); - - printf ("About to use sigset() to establish handler\n"); - prev = sigset (TEST_SIG, handler); - if (prev == SIG_ERR) - error(1, errno, "sigset"); - - printf ("Previous disposition: "); - printDisposition (prev); - printf (" (should be SIG_HOLD)\n"); - if (prev != SIG_HOLD) - { - printf("TEST FAILED!!!\n"); - return 1; - } - return 0; -} /* returnTest1 */ - -static int -returnTest2 (void) -{ - sighandler_t prev; - - printf ("\n===== TEST 2 =====\n"); - - printf ("About to use sigset() to set SIG_HOLD\n"); - prev = sigset (TEST_SIG, SIG_HOLD); - if (prev == SIG_ERR) - error (1, errno, "sigset"); - - printf ("Previous disposition: "); - printDisposition (prev); - printf (" (should be SIG_DFL)\n"); - if (prev != SIG_DFL) - { - printf("TEST FAILED!!!\n"); - return 1; - } - return 0; -} /* returnTest2 */ - -static int -returnTest3 (void) -{ - sighandler_t prev; - - printf ("\n===== TEST 3 =====\n"); - - printf ("About to use sigset() to set SIG_HOLD\n"); - prev = sigset (TEST_SIG, SIG_HOLD); - if (prev == SIG_ERR) - error (1, errno, "sigset"); - - printf ("About to use sigset() to set SIG_HOLD (again)\n"); - prev = sigset (TEST_SIG, SIG_HOLD); - if (prev == SIG_ERR) - error (1, errno, "sigset"); - - printf ("Previous disposition: "); - printDisposition (prev); - printf (" (should be SIG_HOLD)\n"); - if (prev != SIG_HOLD) - { - printf("TEST FAILED!!!\n"); - return 1; - } - return 0; -} /* returnTest3 */ - -int -main (int argc, char *argv[]) -{ - pid_t childPid; - - childPid = fork(); - if (childPid == -1) - error (1, errno, "fork"); - - if (childPid == 0) - exit (returnTest1 ()); - - int status; - if (TEMP_FAILURE_RETRY (waitpid (childPid, &status, 0)) != childPid) - error (1, errno, "waitpid"); - int result = !WIFEXITED (status) || WEXITSTATUS (status) != 0; - - childPid = fork(); - if (childPid == -1) - error (1, errno, "fork"); - - if (childPid == 0) - exit (returnTest2 ()); - - if (TEMP_FAILURE_RETRY (waitpid (childPid, &status, 0)) != childPid) - error (1, errno, "waitpid"); - result |= !WIFEXITED (status) || WEXITSTATUS (status) != 0; - - childPid = fork(); - if (childPid == -1) - error (1, errno, "fork"); - - if (childPid == 0) - exit (returnTest3 ()); - - if (TEMP_FAILURE_RETRY (waitpid (childPid, &status, 0)) != childPid) - error (1, errno, "waitpid"); - result |= !WIFEXITED (status) || WEXITSTATUS (status) != 0; - - return result; -} /* main */ diff --git a/bin/glibc-2.7/signal/tst-sigsimple.c b/bin/glibc-2.7/signal/tst-sigsimple.c deleted file mode 100644 index 22bb85cb..00000000 --- a/bin/glibc-2.7/signal/tst-sigsimple.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2003. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - int e; - -#define RUN(test) \ - errno = 0; \ - e = test; \ - if (e != -1) \ - { \ - printf ("%s returned %d\n", #test, e); \ - result = 1; \ - } \ - else if (errno != EINVAL) \ - { \ - printf ("%s didn't set errno to EINVAL (%s instead)\n", \ - #test, strerror (errno)); \ - result = 1; \ - } - - RUN (sighold (-1)); - RUN (sighold (_NSIG + 100)); - - RUN (sigrelse (-1)); - RUN (sigrelse (_NSIG + 100)); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/socket/.cvsignore b/bin/glibc-2.7/socket/.cvsignore deleted file mode 100644 index 3fc9f4cd..00000000 --- a/bin/glibc-2.7/socket/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps -*.gz *.Z *.tar *.tgz -=* -TODO COPYING* AUTHORS copyr-* copying.* -glibc-* -distinfo diff --git a/bin/glibc-2.7/socket/Makefile b/bin/glibc-2.7/socket/Makefile deleted file mode 100644 index aa0776e5..00000000 --- a/bin/glibc-2.7/socket/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (C) 1991,1995-2001,2005 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA. - -# -# Sub-makefile for socket portion of the library. -# -subdir := socket - -headers := sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \ - bits/socket2.h sys/socketvar.h net/if.h - -routines := accept bind connect getpeername getsockname getsockopt \ - listen recv recvfrom recvmsg send sendmsg sendto \ - setsockopt shutdown socket socketpair isfdtype opensock \ - sockatmark - -distribute := ifreq.h - -include ../Rules diff --git a/bin/glibc-2.7/socket/Versions b/bin/glibc-2.7/socket/Versions deleted file mode 100644 index d282eff7..00000000 --- a/bin/glibc-2.7/socket/Versions +++ /dev/null @@ -1,34 +0,0 @@ -libc { - GLIBC_2.0 { - # functions used in other libraries - __connect; __send; - - # a* - accept; - - # b* - bind; - - # c* - connect; - - # g* - getpeername; getsockname; getsockopt; - - # i* - isfdtype; - - # l* - listen; - - # r* - recv; recvfrom; recvmsg; - - # s* - send; sendmsg; sendto; setsockopt; shutdown; socket; socketpair; - } - GLIBC_2.2.4 { - # Addition from P1003.1-200x - sockatmark; - } -} diff --git a/bin/glibc-2.7/socket/accept.c b/bin/glibc-2.7/socket/accept.c deleted file mode 100644 index dad34ced..00000000 --- a/bin/glibc-2.7/socket/accept.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Await a connection on socket FD. - When a connection arrives, open a new socket to communicate with it, - set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting - peer and *ADDR_LEN to the address's actual length, and return the - new socket's descriptor, or -1 for errors. */ -int -accept (fd, addr, addr_len) - int fd; - __SOCKADDR_ARG addr; - socklen_t *addr_len; -{ - __set_errno (ENOSYS); - return -1; -} -libc_hidden_def (accept) - - -stub_warning (accept) -#include diff --git a/bin/glibc-2.7/socket/bind.c b/bin/glibc-2.7/socket/bind.c deleted file mode 100644 index 382e29db..00000000 --- a/bin/glibc-2.7/socket/bind.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Give the socket FD the local address ADDR (which is LEN bytes long). */ -int -__bind (fd, addr, len) - int fd; - __CONST_SOCKADDR_ARG addr; - socklen_t len; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__bind, bind) - -stub_warning (bind) -#include diff --git a/bin/glibc-2.7/socket/bits/socket2.h b/bin/glibc-2.7/socket/bits/socket2.h deleted file mode 100644 index 5c4cb47a..00000000 --- a/bin/glibc-2.7/socket/bits/socket2.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Checking macros for socket functions. - Copyright (C) 2005, 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SYS_SOCKET_H -# error "Never include directly; use instead." -#endif - -extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen, - int __flags); -extern ssize_t __REDIRECT (__recv_alias, (int __fd, void *__buf, size_t __n, - int __flags), recv); -extern ssize_t __REDIRECT (__recv_chk_warn, - (int __fd, void *__buf, size_t __n, size_t __buflen, - int __flags), __recv_chk) - __warnattr ("recv called with bigger length than size of destination " - "buffer"); - -__extern_always_inline ssize_t -recv (int __fd, void *__buf, size_t __n, int __flags) -{ - if (__bos0 (__buf) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags); - - if (__n > __bos0 (__buf)) - return __recv_chk_warn (__fd, __buf, __n, __bos0 (__buf), __flags); - } - return __recv_alias (__fd, __buf, __n, __flags); -} - -extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, - size_t __buflen, int __flags, - __SOCKADDR_ARG __addr, - socklen_t *__restrict __addr_len); -extern ssize_t __REDIRECT (__recvfrom_alias, - (int __fd, void *__restrict __buf, size_t __n, - int __flags, __SOCKADDR_ARG __addr, - socklen_t *__restrict __addr_len), recvfrom); -extern ssize_t __REDIRECT (__recvfrom_chk_warn, - (int __fd, void *__restrict __buf, size_t __n, - size_t __buflen, int __flags, - __SOCKADDR_ARG __addr, - socklen_t *__restrict __addr_len), __recvfrom_chk) - __warnattr ("recvfrom called with bigger length than size of " - "destination buffer"); - -__extern_always_inline ssize_t -recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, - __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) -{ - if (__bos0 (__buf) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags, - __addr, __addr_len); - if (__n > __bos0 (__buf)) - return __recvfrom_chk_warn (__fd, __buf, __n, __bos0 (__buf), __flags, - __addr, __addr_len); - } - return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); -} diff --git a/bin/glibc-2.7/socket/connect.c b/bin/glibc-2.7/socket/connect.c deleted file mode 100644 index 55093313..00000000 --- a/bin/glibc-2.7/socket/connect.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). - For connectionless socket types, just set the default address to send to - and the only address from which to accept transmissions. - Return 0 on success, -1 for errors. */ -int -__connect (fd, addr, len) - int fd; - __CONST_SOCKADDR_ARG addr; - socklen_t len; -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__connect, connect) - -stub_warning (connect) -#include diff --git a/bin/glibc-2.7/socket/getpeername.c b/bin/glibc-2.7/socket/getpeername.c deleted file mode 100644 index 6507387b..00000000 --- a/bin/glibc-2.7/socket/getpeername.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Put the address of the peer connected to socket FD into *ADDR - (which is *LEN bytes long), and its actual length into *LEN. */ -int -getpeername (fd, addr, len) - int fd; - __SOCKADDR_ARG addr; - socklen_t *len; -{ - __set_errno (ENOSYS); - return -1; -} - - -stub_warning (getpeername) -#include diff --git a/bin/glibc-2.7/socket/getsockname.c b/bin/glibc-2.7/socket/getsockname.c deleted file mode 100644 index b698bdbb..00000000 --- a/bin/glibc-2.7/socket/getsockname.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Put the local address of FD into *ADDR and its length in *LEN. */ -int -__getsockname (fd, addr, len) - int fd; - __SOCKADDR_ARG addr; - socklen_t *len; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__getsockname, getsockname) - -stub_warning (getsockname) -#include diff --git a/bin/glibc-2.7/socket/getsockopt.c b/bin/glibc-2.7/socket/getsockopt.c deleted file mode 100644 index 8f4fa895..00000000 --- a/bin/glibc-2.7/socket/getsockopt.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL - into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's - actual length. Returns 0 on success, -1 for errors. */ -int -getsockopt (fd, level, optname, optval, optlen) - int fd; - int level; - int optname; - void *optval; - socklen_t *optlen; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (getsockopt) -#include diff --git a/bin/glibc-2.7/socket/isfdtype.c b/bin/glibc-2.7/socket/isfdtype.c deleted file mode 100644 index ba10912c..00000000 --- a/bin/glibc-2.7/socket/isfdtype.c +++ /dev/null @@ -1,31 +0,0 @@ -/* isfdtype - Determine whether descriptor has given property. Stub version. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -int -isfdtype (int fildes, int fdtype) -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (isfdtype) -#include diff --git a/bin/glibc-2.7/socket/listen.c b/bin/glibc-2.7/socket/listen.c deleted file mode 100644 index cbdd8b9d..00000000 --- a/bin/glibc-2.7/socket/listen.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Prepare to accept connections on socket FD. - N connection requests will be queued before further requests are refused. - Returns 0 on success, -1 for errors. */ -int -__listen (fd, n) - int fd; - int n; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__listen, listen) - -stub_warning (listen) -#include diff --git a/bin/glibc-2.7/socket/opensock.c b/bin/glibc-2.7/socket/opensock.c deleted file mode 100644 index 4a4d5dd3..00000000 --- a/bin/glibc-2.7/socket/opensock.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Return a socket of any type. The socket can be used in subsequent - ioctl calls to talk to the kernel. */ -int internal_function -__opensock (void) -{ - /* Cache the last AF that worked, to avoid many redundant calls to - socket(). */ - static int sock_af = -1; - int fd = -1; - __libc_lock_define_initialized (static, lock); - - if (sock_af != -1) - { - fd = __socket (sock_af, SOCK_DGRAM, 0); - if (fd != -1) - return fd; - } - - __libc_lock_lock (lock); - - if (sock_af != -1) - fd = __socket (sock_af, SOCK_DGRAM, 0); - - if (fd == -1) - { -#ifdef AF_INET - fd = __socket (sock_af = AF_INET, SOCK_DGRAM, 0); -#endif -#ifdef AF_INET6 - if (fd < 0) - fd = __socket (sock_af = AF_INET6, SOCK_DGRAM, 0); -#endif -#ifdef AF_IPX - if (fd < 0) - fd = __socket (sock_af = AF_IPX, SOCK_DGRAM, 0); -#endif -#ifdef AF_AX25 - if (fd < 0) - fd = __socket (sock_af = AF_AX25, SOCK_DGRAM, 0); -#endif -#ifdef AF_APPLETALK - if (fd < 0) - fd = __socket (sock_af = AF_APPLETALK, SOCK_DGRAM, 0); -#endif - } - - __libc_lock_unlock (lock); - return fd; -} diff --git a/bin/glibc-2.7/socket/recv.c b/bin/glibc-2.7/socket/recv.c deleted file mode 100644 index 62af8fed..00000000 --- a/bin/glibc-2.7/socket/recv.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Read N bytes into BUF from socket FD. - Returns the number read or -1 for errors. */ -ssize_t -__recv (fd, buf, n, flags) - int fd; - void *buf; - size_t n; - int flags; -{ - __set_errno (ENOSYS); - return -1; -} -weak_alias (__recv, recv) - -stub_warning (recv) -#include diff --git a/bin/glibc-2.7/socket/recvfrom.c b/bin/glibc-2.7/socket/recvfrom.c deleted file mode 100644 index 4f6a0450..00000000 --- a/bin/glibc-2.7/socket/recvfrom.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Read N bytes into BUF through socket FD from peer - at address ADDR (which is ADDR_LEN bytes long). - Returns the number read or -1 for errors. */ -ssize_t -__recvfrom (fd, buf, n, flags, addr, addr_len) - int fd; - void *buf; - size_t n; - int flags; - __SOCKADDR_ARG addr; - socklen_t *addr_len; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__recvfrom, recvfrom) - -stub_warning (recvfrom) -#include diff --git a/bin/glibc-2.7/socket/recvmsg.c b/bin/glibc-2.7/socket/recvmsg.c deleted file mode 100644 index 419415cd..00000000 --- a/bin/glibc-2.7/socket/recvmsg.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Receive a message as described by MESSAGE from socket FD. - Returns the number of bytes read or -1 for errors. */ -ssize_t -__recvmsg (fd, message, flags) - int fd; - struct msghdr *message; - int flags; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__recvmsg, recvmsg) - -stub_warning (recvmsg) -#include diff --git a/bin/glibc-2.7/socket/send.c b/bin/glibc-2.7/socket/send.c deleted file mode 100644 index 7f94fbb0..00000000 --- a/bin/glibc-2.7/socket/send.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Send N bytes of BUF to socket FD. Returns the number sent or -1. */ -ssize_t -__send (fd, buf, n, flags) - int fd; - __const __ptr_t buf; - size_t n; - int flags; -{ - __set_errno (ENOSYS); - return -1; -} -libc_hidden_def (__send) -weak_alias (__send, send) - -stub_warning (send) -#include diff --git a/bin/glibc-2.7/socket/sendmsg.c b/bin/glibc-2.7/socket/sendmsg.c deleted file mode 100644 index a4a3cea9..00000000 --- a/bin/glibc-2.7/socket/sendmsg.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Send a message described MESSAGE on socket FD. - Returns the number of bytes sent, or -1 for errors. */ -ssize_t -__sendmsg (fd, message, flags) - int fd; - const struct msghdr *message; - int flags; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__sendmsg, sendmsg) - -stub_warning (sendmsg) -#include diff --git a/bin/glibc-2.7/socket/sendto.c b/bin/glibc-2.7/socket/sendto.c deleted file mode 100644 index 823c9dd1..00000000 --- a/bin/glibc-2.7/socket/sendto.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,2001,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Send N bytes of BUF on socket FD to peer at address ADDR (which is - ADDR_LEN bytes long). Returns the number sent, or -1 for errors. */ -ssize_t -__sendto (fd, buf, n, flags, addr, addr_len) - int fd; - __const __ptr_t buf; - size_t n; - int flags; - __CONST_SOCKADDR_ARG addr; - socklen_t addr_len; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__sendto, sendto) - -stub_warning (sendto) -#include diff --git a/bin/glibc-2.7/socket/setsockopt.c b/bin/glibc-2.7/socket/setsockopt.c deleted file mode 100644 index aca73623..00000000 --- a/bin/glibc-2.7/socket/setsockopt.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Set socket FD's option OPTNAME at protocol level LEVEL - to *OPTVAL (which is OPTLEN bytes long). - Returns 0 on success, -1 for errors. */ -int -__setsockopt (fd, level, optname, optval, optlen) - int fd; - int level; - int optname; - const __ptr_t optval; - socklen_t optlen; -{ - __set_errno (ENOSYS); - return -1; -} - -weak_alias (__setsockopt, setsockopt) - -stub_warning (setsockopt) -#include diff --git a/bin/glibc-2.7/socket/shutdown.c b/bin/glibc-2.7/socket/shutdown.c deleted file mode 100644 index 6fb25a4b..00000000 --- a/bin/glibc-2.7/socket/shutdown.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Shut down all or part of the connection open on socket FD. - HOW determines what to shut down: - 0 = No more receptions; - 1 = No more transmissions; - 2 = No more receptions or transmissions. - Returns 0 on success, -1 for errors. */ -int -shutdown (fd, how) - int fd; - int how; -{ - __set_errno (ENOSYS); - return -1; -} - - -stub_warning (shutdown) -#include diff --git a/bin/glibc-2.7/socket/sockatmark.c b/bin/glibc-2.7/socket/sockatmark.c deleted file mode 100644 index 402ef9b4..00000000 --- a/bin/glibc-2.7/socket/sockatmark.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Determine wheter socket is at a out-of-band mark. */ -int -sockatmark (fd) - int fd; -{ - __set_errno (ENOSYS); - return -1; -} - - -stub_warning (sockatmark) -#include diff --git a/bin/glibc-2.7/socket/socket.c b/bin/glibc-2.7/socket/socket.c deleted file mode 100644 index 94e70bc4..00000000 --- a/bin/glibc-2.7/socket/socket.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Create a new socket of type TYPE in domain DOMAIN, using - protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically. - Returns a file descriptor for the new socket, or -1 for errors. */ -int -__socket (domain, type, protocol) - int domain; - int type; - int protocol; -{ - __set_errno (ENOSYS); - return -1; -} - - -weak_alias (__socket, socket) -stub_warning (socket) -#include diff --git a/bin/glibc-2.7/socket/socketpair.c b/bin/glibc-2.7/socket/socketpair.c deleted file mode 100644 index ad277c00..00000000 --- a/bin/glibc-2.7/socket/socketpair.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Create two new sockets, of type TYPE in domain DOMAIN and using - protocol PROTOCOL, which are connected to each other, and put file - descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero, - one will be chosen automatically. Returns 0 on success, -1 for errors. */ -int -socketpair (domain, type, protocol, fds) - int domain; - int type; - int protocol; - int fds[2]; -{ - __set_errno (ENOSYS); - return -1; -} - - -stub_warning (socketpair) -#include diff --git a/bin/glibc-2.7/socket/sys/socket.h b/bin/glibc-2.7/socket/sys/socket.h deleted file mode 100644 index 6d9eab7f..00000000 --- a/bin/glibc-2.7/socket/sys/socket.h +++ /dev/null @@ -1,243 +0,0 @@ -/* Declarations of socket constants, types, and functions. - Copyright (C) 1991,92,1994-2001,2003,2005,2007 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SYS_SOCKET_H -#define _SYS_SOCKET_H 1 - -#include - -__BEGIN_DECLS - -#include -#define __need_size_t -#include - - -/* This operating system-specific header file defines the SOCK_*, PF_*, - AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr', - `struct msghdr', and `struct linger' types. */ -#include - -#ifdef __USE_BSD -/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire - format in the grotty old 4.3 `talk' protocol. */ -struct osockaddr - { - unsigned short int sa_family; - unsigned char sa_data[14]; - }; -#endif - -/* The following constants should be used for the second parameter of - `shutdown'. */ -enum -{ - SHUT_RD = 0, /* No more receptions. */ -#define SHUT_RD SHUT_RD - SHUT_WR, /* No more transmissions. */ -#define SHUT_WR SHUT_WR - SHUT_RDWR /* No more receptions or transmissions. */ -#define SHUT_RDWR SHUT_RDWR -}; - -/* This is the type we use for generic socket address arguments. - - With GCC 2.7 and later, the funky union causes redeclarations or - uses with any of the listed types to be allowed without complaint. - G++ 2.7 does not support transparent unions so there we want the - old-style declaration, too. */ -#if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU -# define __SOCKADDR_ARG struct sockaddr *__restrict -# define __CONST_SOCKADDR_ARG __const struct sockaddr * -#else -/* Add more `struct sockaddr_AF' types here as necessary. - These are all the ones I found on NetBSD and Linux. */ -# define __SOCKADDR_ALLTYPES \ - __SOCKADDR_ONETYPE (sockaddr) \ - __SOCKADDR_ONETYPE (sockaddr_at) \ - __SOCKADDR_ONETYPE (sockaddr_ax25) \ - __SOCKADDR_ONETYPE (sockaddr_dl) \ - __SOCKADDR_ONETYPE (sockaddr_eon) \ - __SOCKADDR_ONETYPE (sockaddr_in) \ - __SOCKADDR_ONETYPE (sockaddr_in6) \ - __SOCKADDR_ONETYPE (sockaddr_inarp) \ - __SOCKADDR_ONETYPE (sockaddr_ipx) \ - __SOCKADDR_ONETYPE (sockaddr_iso) \ - __SOCKADDR_ONETYPE (sockaddr_ns) \ - __SOCKADDR_ONETYPE (sockaddr_un) \ - __SOCKADDR_ONETYPE (sockaddr_x25) - -# define __SOCKADDR_ONETYPE(type) struct type *__restrict __##type##__; -typedef union { __SOCKADDR_ALLTYPES - } __SOCKADDR_ARG __attribute__ ((__transparent_union__)); -# undef __SOCKADDR_ONETYPE -# define __SOCKADDR_ONETYPE(type) __const struct type *__restrict __##type##__; -typedef union { __SOCKADDR_ALLTYPES - } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__)); -# undef __SOCKADDR_ONETYPE -#endif - - -/* Create a new socket of type TYPE in domain DOMAIN, using - protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically. - Returns a file descriptor for the new socket, or -1 for errors. */ -extern int socket (int __domain, int __type, int __protocol) __THROW; - -/* Create two new sockets, of type TYPE in domain DOMAIN and using - protocol PROTOCOL, which are connected to each other, and put file - descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero, - one will be chosen automatically. Returns 0 on success, -1 for errors. */ -extern int socketpair (int __domain, int __type, int __protocol, - int __fds[2]) __THROW; - -/* Give the socket FD the local address ADDR (which is LEN bytes long). */ -extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) - __THROW; - -/* Put the local address of FD into *ADDR and its length in *LEN. */ -extern int getsockname (int __fd, __SOCKADDR_ARG __addr, - socklen_t *__restrict __len) __THROW; - -/* Open a connection on socket FD to peer at ADDR (which LEN bytes long). - For connectionless socket types, just set the default address to send to - and the only address from which to accept transmissions. - Return 0 on success, -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); - -/* Put the address of the peer connected to socket FD into *ADDR - (which is *LEN bytes long), and its actual length into *LEN. */ -extern int getpeername (int __fd, __SOCKADDR_ARG __addr, - socklen_t *__restrict __len) __THROW; - - -/* Send N bytes of BUF to socket FD. Returns the number sent or -1. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags); - -/* Read N bytes into BUF from socket FD. - Returns the number read or -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); - -/* Send N bytes of BUF on socket FD to peer at address ADDR (which is - ADDR_LEN bytes long). Returns the number sent, or -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, - int __flags, __CONST_SOCKADDR_ARG __addr, - socklen_t __addr_len); - -/* Read N bytes into BUF through socket FD. - If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of - the sender, and store the actual size of the address in *ADDR_LEN. - Returns the number of bytes read or -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, - int __flags, __SOCKADDR_ARG __addr, - socklen_t *__restrict __addr_len); - - -/* Send a message described MESSAGE on socket FD. - Returns the number of bytes sent, or -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, - int __flags); - -/* Receive a message as described by MESSAGE from socket FD. - Returns the number of bytes read or -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); - - -/* Put the current value for socket FD's option OPTNAME at protocol level LEVEL - into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's - actual length. Returns 0 on success, -1 for errors. */ -extern int getsockopt (int __fd, int __level, int __optname, - void *__restrict __optval, - socklen_t *__restrict __optlen) __THROW; - -/* Set socket FD's option OPTNAME at protocol level LEVEL - to *OPTVAL (which is OPTLEN bytes long). - Returns 0 on success, -1 for errors. */ -extern int setsockopt (int __fd, int __level, int __optname, - __const void *__optval, socklen_t __optlen) __THROW; - - -/* Prepare to accept connections on socket FD. - N connection requests will be queued before further requests are refused. - Returns 0 on success, -1 for errors. */ -extern int listen (int __fd, int __n) __THROW; - -/* Await a connection on socket FD. - When a connection arrives, open a new socket to communicate with it, - set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting - peer and *ADDR_LEN to the address's actual length, and return the - new socket's descriptor, or -1 for errors. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int accept (int __fd, __SOCKADDR_ARG __addr, - socklen_t *__restrict __addr_len); - -/* Shut down all or part of the connection open on socket FD. - HOW determines what to shut down: - SHUT_RD = No more receptions; - SHUT_WR = No more transmissions; - SHUT_RDWR = No more receptions or transmissions. - Returns 0 on success, -1 for errors. */ -extern int shutdown (int __fd, int __how) __THROW; - - -#ifdef __USE_XOPEN2K -/* Determine wheter socket is at a out-of-band mark. */ -extern int sockatmark (int __fd) __THROW; -#endif - - -#ifdef __USE_MISC -/* FDTYPE is S_IFSOCK or another S_IF* macro defined in ; - returns 1 if FD is open on an object of the indicated type, 0 if not, - or -1 for errors (setting errno). */ -extern int isfdtype (int __fd, int __fdtype) __THROW; -#endif - - -/* Define some macros helping to catch buffer overflows. */ -#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline -# include -#endif - -__END_DECLS - -#endif /* sys/socket.h */ diff --git a/bin/glibc-2.7/socket/sys/un.h b/bin/glibc-2.7/socket/sys/un.h deleted file mode 100644 index 1fa10e4f..00000000 --- a/bin/glibc-2.7/socket/sys/un.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SYS_UN_H -#define _SYS_UN_H 1 - -#include - -/* Get the definition of the macro to define the common sockaddr members. */ -#include - -__BEGIN_DECLS - -/* Structure describing the address of an AF_LOCAL (aka AF_UNIX) socket. */ -struct sockaddr_un - { - __SOCKADDR_COMMON (sun_); - char sun_path[108]; /* Path name. */ - }; - - -#ifdef __USE_MISC -# include /* For prototype of `strlen'. */ - -/* Evaluate to actual length of the `sockaddr_un' structure. */ -# define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \ - + strlen ((ptr)->sun_path)) -#endif - -__END_DECLS - -#endif /* sys/un.h */ diff --git a/bin/glibc-2.7/time/.cvsignore b/bin/glibc-2.7/time/.cvsignore deleted file mode 100644 index 3fc9f4cd..00000000 --- a/bin/glibc-2.7/time/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.d *.o *.so *.po *.go stamp.* *.stamp *.ustamp *.udeps -*.gz *.Z *.tar *.tgz -=* -TODO COPYING* AUTHORS copyr-* copying.* -glibc-* -distinfo diff --git a/bin/glibc-2.7/time/Depend b/bin/glibc-2.7/time/Depend deleted file mode 100644 index 79b24690..00000000 --- a/bin/glibc-2.7/time/Depend +++ /dev/null @@ -1 +0,0 @@ -timezone diff --git a/bin/glibc-2.7/time/Makefile b/bin/glibc-2.7/time/Makefile deleted file mode 100644 index 8ce34e45..00000000 --- a/bin/glibc-2.7/time/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (C) 1991-2003, 2004, 2005, 2007 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA. - -# -# Makefile for time routines -# -subdir := time - -headers := time.h sys/time.h sys/timeb.h bits/time.h - -routines := offtime asctime clock ctime ctime_r difftime \ - gmtime localtime mktime time \ - gettimeofday settimeofday adjtime tzset \ - tzfile getitimer setitimer \ - stime dysize timegm ftime \ - getdate strptime strptime_l \ - strftime wcsftime strftime_l wcsftime_l -aux := era alt_digit lc-time-cleanup -distribute := datemsk - -tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ - tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \ - tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \ - tst-strptime3 - -include ../Rules - -tz-cflags = -DTZDIR='"$(zonedir)"' \ - -DTZDEFAULT='"$(localtime-file)"' \ - -DTZDEFRULES='"$(posixrules-file)"' - -CFLAGS-tzfile.c = $(tz-cflags) -CFLAGS-tzset.c = $(tz-cflags) -CFLAGS-getdate.c = -fexceptions - -# Don't warn about Y2k problem in strftime format string. -CFLAGS-test_time.c = -Wno-format - -tst-getdate-ENV= DATEMSK=datemsk TZDIR=${common-objpfx}timezone/testdata -test_time-ARGS= EST5EDT CST - -tst-strptime-ENV = LOCPATH=${common-objpfx}localedata -tst-ftime_l-ENV = LOCPATH=${common-objpfx}localedata diff --git a/bin/glibc-2.7/time/Versions b/bin/glibc-2.7/time/Versions deleted file mode 100644 index 273956d5..00000000 --- a/bin/glibc-2.7/time/Versions +++ /dev/null @@ -1,65 +0,0 @@ -libc { - GLIBC_2.0 { - # global variables - __timezone; __daylight; __tzname; - - # functions with special/multiple interfaces - __adjtimex; - - # functions used in other libraries - __gmtime_r; __gettimeofday; - - # variables in normal name space - daylight; timezone; tzname; - - # a* - adjtime; adjtimex; asctime; asctime_r; - - # c* - clock; ctime; ctime_r; - - # d* - difftime; dysize; - - # f* - ftime; - - # g* - getitimer; gettimeofday; gmtime; gmtime_r; - - # l* - localtime; localtime_r; - - # m* - mktime; - - # s* - setitimer; settimeofday; stime; strftime; strptime; - - # t* - time; timegm; timelocal; tzset; - } - GLIBC_2.1 { - # variables in normal name space - getdate_err; - - # g* - getdate; getdate_r; - } - GLIBC_2.2 { - # w* - wcsftime; - } - GLIBC_2.3 { - # s* - strftime_l; - # w* - wcsftime_l; - - # these internal names are used by libstdc++ - __strftime_l; __wcsftime_l; - } - GLIBC_2.3.2 { - strptime_l; - } -} diff --git a/bin/glibc-2.7/time/adjtime.c b/bin/glibc-2.7/time/adjtime.c deleted file mode 100644 index 86456521..00000000 --- a/bin/glibc-2.7/time/adjtime.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Adjust the current time of day by the amount in DELTA. - If OLDDELTA is not NULL, it is filled in with the amount - of time adjustment remaining to be done from the last `__adjtime' call. - This call is restricted to the super-user. */ -int -__adjtime (delta, olddelta) - const struct timeval *delta; - struct timeval *olddelta; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (adjtime) - -weak_alias (__adjtime, adjtime) -#include diff --git a/bin/glibc-2.7/time/alt_digit.c b/bin/glibc-2.7/time/alt_digit.c deleted file mode 100644 index 1a81ba12..00000000 --- a/bin/glibc-2.7/time/alt_digit.c +++ /dev/null @@ -1,193 +0,0 @@ -/* Helper functions used by strftime/strptime to handle alternate digits. - Copyright (C) 1995-2001,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "../locale/localeinfo.h" -#include -#include -#include -#include - -/* Some of the functions here must not be used while setlocale is called. */ -__libc_lock_define (extern, __libc_setlocale_lock attribute_hidden) - -#define CURRENT(item) (current->values[_NL_ITEM_INDEX (item)].string) -#define CURRENT_WSTR(item) \ - ((wchar_t *) current->values[_NL_ITEM_INDEX (item)].wstr) - -static void -_nl_init_alt_digit (struct locale_data *current) -{ - struct lc_time_data *data; - - if (current->private.time == NULL) - { - current->private.time = malloc (sizeof *current->private.time); - if (current->private.time == NULL) - return; - memset (current->private.time, 0, sizeof *current->private.time); - current->private.cleanup = &_nl_cleanup_time; - } - data = current->private.time; - - if (! data->alt_digits_initialized) - { - const char *ptr = CURRENT (ALT_DIGITS); - size_t cnt; - - data->alt_digits_initialized = 1; - - if (ptr != NULL) - { - data->alt_digits = malloc (100 * sizeof (const char *)); - if (data->alt_digits != NULL) - for (cnt = 0; cnt < 100; ++cnt) - { - data->alt_digits[cnt] = ptr; - - /* Skip digit format. */ - ptr = strchr (ptr, '\0') + 1; - } - } - } - -} - -const char * -internal_function -_nl_get_alt_digit (unsigned int number, struct locale_data *current) -{ - const char *result; - - if (number >= 100 || CURRENT (ALT_DIGITS)[0] == '\0') - return NULL; - - __libc_lock_lock (__libc_setlocale_lock); - - if (current->private.time == NULL - || ! current->private.time->alt_digits_initialized) - _nl_init_alt_digit (current); - - result = ((current->private.time != NULL - && current->private.time->alt_digits != NULL) - ? current->private.time->alt_digits[number] - : NULL); - - __libc_lock_unlock (__libc_setlocale_lock); - - return result; -} - - -const wchar_t * -internal_function -_nl_get_walt_digit (unsigned int number, struct locale_data *current) -{ - const wchar_t *result = NULL; - struct lc_time_data *data; - - if (number >= 100 || CURRENT_WSTR (_NL_WALT_DIGITS)[0] == L'\0') - return NULL; - - __libc_lock_lock (__libc_setlocale_lock); - - if (current->private.time == NULL) - { - current->private.time = malloc (sizeof *current->private.time); - if (current->private.time == NULL) - goto out; - memset (current->private.time, 0, sizeof *current->private.time); - current->private.cleanup = &_nl_cleanup_time; - } - data = current->private.time; - - if (! data->walt_digits_initialized) - { - const wchar_t *ptr = CURRENT_WSTR (_NL_WALT_DIGITS); - size_t cnt; - - data->walt_digits_initialized = 1; - - if (ptr != NULL) - { - data->walt_digits = malloc (100 * sizeof (const uint32_t *)); - if (data->walt_digits != NULL) - for (cnt = 0; cnt < 100; ++cnt) - { - data->walt_digits[cnt] = ptr; - - /* Skip digit format. */ - ptr = wcschr (ptr, L'\0') + 1; - } - } - } - - if (data->walt_digits != NULL) - result = data->walt_digits[number]; - - out: - __libc_lock_unlock (__libc_setlocale_lock); - - return (wchar_t *) result; -} - - -int -internal_function -_nl_parse_alt_digit (const char **strp, struct locale_data *current) -{ - const char *str = *strp; - int result = -1; - size_t cnt; - size_t maxlen = 0; - - if (CURRENT_WSTR (_NL_WALT_DIGITS)[0] == L'\0') - return result; - - __libc_lock_lock (__libc_setlocale_lock); - - if (current->private.time == NULL - || ! current->private.time->alt_digits_initialized) - _nl_init_alt_digit (current); - - if (current->private.time != NULL && - current->private.time->alt_digits != NULL) - /* Matching is not unambiguous. The alternative digits could be like - I, II, III, ... and the first one is a substring of the second - and third. Therefore we must keep on searching until we found - the longest possible match. Note that this is not specified in - the standard. */ - for (cnt = 0; cnt < 100; ++cnt) - { - const char *const dig = current->private.time->alt_digits[cnt]; - size_t len = strlen (dig); - - if (len > maxlen && strncmp (dig, str, len) == 0) - { - maxlen = len; - result = (int) cnt; - } - } - - __libc_lock_unlock (__libc_setlocale_lock); - - if (result != -1) - *strp += maxlen; - - return result; -} diff --git a/bin/glibc-2.7/time/asctime.c b/bin/glibc-2.7/time/asctime.c deleted file mode 100644 index dc4fd54f..00000000 --- a/bin/glibc-2.7/time/asctime.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (C) 1991,1993,1995-1997,2000,2002,2005 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "../locale/localeinfo.h" -#include -#include -#include -#include - -/* This is defined in locale/C-time.c in the GNU libc. */ -extern const struct locale_data _nl_C_LC_TIME attribute_hidden; -#define ab_day_name(DAY) (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABDAY_1)+(DAY)].string) -#define ab_month_name(MON) (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABMON_1)+(MON)].string) - -static const char format[] = "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n"; -static char result[ 3+1+ 3+1+20+1+20+1+20+1+20+1+20+1 + 1]; - - -static char * -asctime_internal (const struct tm *tp, char *buf, size_t buflen) -{ - if (tp == NULL) - { - __set_errno (EINVAL); - return NULL; - } - - /* We limit the size of the year which can be printed. Using the %d - format specifier used the addition of 1900 would overflow the - number and a negative vaue is printed. For some architectures we - could in theory use %ld or an evern larger integer format but - this would mean the output needs more space. This would not be a - problem if the 'asctime_r' interface would be defined sanely and - a buffer size would be passed. */ - if (__builtin_expect (tp->tm_year > INT_MAX - 1900, 0)) - { - eoverflow: - __set_errno (EOVERFLOW); - return NULL; - } - - int n = __snprintf (buf, buflen, format, - (tp->tm_wday < 0 || tp->tm_wday >= 7 ? - "???" : ab_day_name (tp->tm_wday)), - (tp->tm_mon < 0 || tp->tm_mon >= 12 ? - "???" : ab_month_name (tp->tm_mon)), - tp->tm_mday, tp->tm_hour, tp->tm_min, - tp->tm_sec, 1900 + tp->tm_year); - if (n < 0) - return NULL; - if (n >= buflen) - goto eoverflow; - - return buf; -} - - -/* Like asctime, but write result to the user supplied buffer. The - buffer is only guaranteed to be 26 bytes in length. */ -char * -__asctime_r (const struct tm *tp, char *buf) -{ - return asctime_internal (tp, buf, 26); -} -weak_alias (__asctime_r, asctime_r) - - -/* Returns a string of the form "Day Mon dd hh:mm:ss yyyy\n" - which is the representation of TP in that form. */ -char * -asctime (const struct tm *tp) -{ - return asctime_internal (tp, result, sizeof (result)); -} -libc_hidden_def (asctime) diff --git a/bin/glibc-2.7/time/bug-asctime.c b/bin/glibc-2.7/time/bug-asctime.c deleted file mode 100644 index 0b04b475..00000000 --- a/bin/glibc-2.7/time/bug-asctime.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - time_t t = time (NULL); - struct tm *tp = localtime (&t); - tp->tm_year = INT_MAX; - errno = 0; - char *s = asctime (tp); - if (s != NULL || errno != EOVERFLOW) - { - puts ("asctime did not fail correctly"); - result = 1; - } - char buf[1000]; - errno = 0; - s = asctime_r (tp, buf); - if (s != NULL || errno != EOVERFLOW) - { - puts ("asctime_r did not fail correctly"); - result = 1; - } - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/time/bug-asctime_r.c b/bin/glibc-2.7/time/bug-asctime_r.c deleted file mode 100644 index 86651ef1..00000000 --- a/bin/glibc-2.7/time/bug-asctime_r.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include -#include -#include - - -static int -do_test (void) -{ - int result = 0; - time_t t = time (NULL); - struct tm *tp = localtime (&t); - tp->tm_year = 10000 - 1900; - char buf[1000]; - errno = 0; - buf[26] = '\xff'; - char *s = asctime_r (tp, buf); - if (s != NULL || errno != EOVERFLOW) - { - puts ("asctime_r did not fail correctly"); - result = 1; - } - if (buf[26] != '\xff') - { - puts ("asctime_r overwrote 27th byte in buffer"); - result = 1; - } - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/time/bug-mktime1.c b/bin/glibc-2.7/time/bug-mktime1.c deleted file mode 100644 index e071273f..00000000 --- a/bin/glibc-2.7/time/bug-mktime1.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - - -static int -do_test (void) -{ - struct tm t2 = { 0, 0, 0, 1, 1, 2050 - 1900, 1, 1, 1 }; - time_t tt2 = mktime (&t2); - printf ("%ld\n", (long int) tt2); - if (sizeof (time_t) == 4 && tt2 != -1) - return 1; - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/time/clock.c b/bin/glibc-2.7/time/clock.c deleted file mode 100644 index 99dc5f47..00000000 --- a/bin/glibc-2.7/time/clock.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Return the time used by the program so far (user time + system time). */ -clock_t -clock () -{ - __set_errno (ENOSYS); - return (clock_t) -1; -} - -stub_warning (clock) -#include diff --git a/bin/glibc-2.7/time/clocktest.c b/bin/glibc-2.7/time/clocktest.c deleted file mode 100644 index f2b3ea73..00000000 --- a/bin/glibc-2.7/time/clocktest.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include -#include -#include - -volatile int gotit = 0; - -static void -alarm_handler (int signal) -{ - gotit = 1; -} - - -int -main (int argc, char ** argv) -{ - clock_t start, stop; - - if (signal(SIGALRM, alarm_handler) == SIG_ERR) - { - perror ("signal"); - exit (1); - } - alarm(1); - start = clock (); - while (!gotit); - stop = clock (); - - printf ("%ld clock ticks per second (start=%ld,stop=%ld)\n", - stop - start, start, stop); - printf ("CLOCKS_PER_SEC=%ld, sysconf(_SC_CLK_TCK)=%ld\n", - CLOCKS_PER_SEC, sysconf(_SC_CLK_TCK)); - return 0; -} diff --git a/bin/glibc-2.7/time/ctime.c b/bin/glibc-2.7/time/ctime.c deleted file mode 100644 index 774a50f6..00000000 --- a/bin/glibc-2.7/time/ctime.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright (C) 1991, 1996 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#undef __OPTIMIZE__ /* Avoid inline `ctime' function. */ -#include - -#undef ctime - - -/* Return a string as returned by asctime which - is the representation of *T in that form. */ -char * -ctime (const time_t *t) -{ - /* The C Standard says ctime (t) is equivalent to asctime (localtime (t)). - In particular, ctime and asctime must yield the same pointer. */ - return asctime (localtime (t)); -} diff --git a/bin/glibc-2.7/time/ctime_r.c b/bin/glibc-2.7/time/ctime_r.c deleted file mode 100644 index 886a0b91..00000000 --- a/bin/glibc-2.7/time/ctime_r.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Return in BUF representation of time T in form of asctime - Copyright (C) 1996, 1998 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* Return a string as returned by asctime which is the representation - of *T in that form. Reentrant version. */ -char * -ctime_r (const time_t *t, char *buf) -{ - struct tm tm; - return __asctime_r (__localtime_r (t, &tm), buf); -} diff --git a/bin/glibc-2.7/time/datemsk b/bin/glibc-2.7/time/datemsk deleted file mode 100644 index 3dc4d417..00000000 --- a/bin/glibc-2.7/time/datemsk +++ /dev/null @@ -1,2 +0,0 @@ -%H:%M:%S %F -%d-%m-%Y %T diff --git a/bin/glibc-2.7/time/difftime.c b/bin/glibc-2.7/time/difftime.c deleted file mode 100644 index ad896e20..00000000 --- a/bin/glibc-2.7/time/difftime.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright (C) 1991, 1994, 1996, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Written by Paul Eggert . */ - -#include - -#include -#include -#include - -#define TYPE_BITS(type) (sizeof (type) * CHAR_BIT) -#define TYPE_FLOATING(type) ((type) 0.5 == 0.5) -#define TYPE_SIGNED(type) ((type) -1 < 0) - -/* Return the difference between TIME1 and TIME0, where TIME0 <= TIME1. - time_t is known to be an integer type. */ - -static double -subtract (time_t time1, time_t time0) -{ - if (! TYPE_SIGNED (time_t)) - return time1 - time0; - else - { - /* Optimize the common special cases where time_t - can be converted to uintmax_t without losing information. */ - uintmax_t dt = (uintmax_t) time1 - (uintmax_t) time0; - double delta = dt; - - if (UINTMAX_MAX / 2 < INTMAX_MAX) - { - /* This is a rare host where uintmax_t has padding bits, and possibly - information was lost when converting time_t to uintmax_t. - Check for overflow by comparing dt/2 to (time1/2 - time0/2). - Overflow occurred if they differ by more than a small slop. - Thanks to Clive D.W. Feather for detailed technical advice about - hosts with padding bits. - - In the following code the "h" prefix means half. By range - analysis, we have: - - -0.5 <= ht1 - 0.5*time1 <= 0.5 - -0.5 <= ht0 - 0.5*time0 <= 0.5 - -1.0 <= dht - 0.5*(time1 - time0) <= 1.0 - - If overflow has not occurred, we also have: - - -0.5 <= hdt - 0.5*(time1 - time0) <= 0 - -1.0 <= dht - hdt <= 1.5 - - and since dht - hdt is an integer, we also have: - - -1 <= dht - hdt <= 1 - - or equivalently: - - 0 <= dht - hdt + 1 <= 2 - - In the above analysis, all the operators have their exact - mathematical semantics, not C semantics. However, dht - hdt + - 1 is unsigned in C, so it need not be compared to zero. */ - - uintmax_t hdt = dt / 2; - time_t ht1 = time1 / 2; - time_t ht0 = time0 / 2; - time_t dht = ht1 - ht0; - - if (2 < dht - hdt + 1) - { - /* Repair delta overflow. - - The following expression contains a second rounding, - so the result may not be the closest to the true answer. - This problem occurs only with very large differences. - It's too painful to fix this portably. */ - - delta = dt + 2.0L * (UINTMAX_MAX - UINTMAX_MAX / 2); - } - } - - return delta; - } -} - -/* Return the difference between TIME1 and TIME0. */ -double -__difftime (time_t time1, time_t time0) -{ - /* Convert to double and then subtract if no double-rounding error could - result. */ - - if (TYPE_BITS (time_t) <= DBL_MANT_DIG - || (TYPE_FLOATING (time_t) && sizeof (time_t) < sizeof (long double))) - return (double) time1 - (double) time0; - - /* Likewise for long double. */ - - if (TYPE_BITS (time_t) <= LDBL_MANT_DIG || TYPE_FLOATING (time_t)) - return (long double) time1 - (long double) time0; - - /* Subtract the smaller integer from the larger, convert the difference to - double, and then negate if needed. */ - - return time1 < time0 ? - subtract (time0, time1) : subtract (time1, time0); -} -strong_alias (__difftime, difftime) diff --git a/bin/glibc-2.7/time/dysize.c b/bin/glibc-2.7/time/dysize.c deleted file mode 100644 index 358407d8..00000000 --- a/bin/glibc-2.7/time/dysize.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1994, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -int -dysize (year) - int year; -{ - return __isleap (year) ? 366 : 365; -} diff --git a/bin/glibc-2.7/time/era.c b/bin/glibc-2.7/time/era.c deleted file mode 100644 index a8d22373..00000000 --- a/bin/glibc-2.7/time/era.c +++ /dev/null @@ -1,177 +0,0 @@ -/* Helper functions used by strftime/strptime to handle locale-specific "eras". - Copyright (C) 1995-2001,02 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "../locale/localeinfo.h" -#include -#include -#include -#include - -/* Some of the functions here must not be used while setlocale is called. */ -__libc_lock_define (extern, __libc_setlocale_lock attribute_hidden) - -#define CURRENT(item) (current->values[_NL_ITEM_INDEX (item)].string) -#define CURRENT_WORD(item) (current->values[_NL_ITEM_INDEX (item)].word) - -#define ERA_DATE_CMP(a, b) \ - (a[0] < b[0] || (a[0] == b[0] && (a[1] < b[1] \ - || (a[1] == b[1] && a[2] <= b[2])))) - -/* Look up the era information in CURRENT's locale strings and - cache it in CURRENT->private. */ -static void internal_function -_nl_init_era_entries (struct locale_data *current) -{ - size_t cnt; - struct lc_time_data *data; - - /* Avoid touching CURRENT if there is no data at all, for _nl_C_LC_TIME. */ - if (CURRENT_WORD (_NL_TIME_ERA_NUM_ENTRIES) == 0) - return; - - __libc_lock_lock (__libc_setlocale_lock); - - if (current->private.time == NULL) - { - current->private.time = malloc (sizeof *current->private.time); - if (current->private.time == NULL) - goto out; - memset (current->private.time, 0, sizeof *current->private.time); - current->private.cleanup = &_nl_cleanup_time; - } - data = current->private.time; - - if (! data->era_initialized) - { - size_t new_num_eras = CURRENT_WORD (_NL_TIME_ERA_NUM_ENTRIES); - if (new_num_eras == 0) - { - if (data->eras != NULL) - { - free (data->eras); - data->eras = NULL; - } - } - else - { - struct era_entry *new_eras = data->eras; - - if (data->num_eras != new_num_eras) - new_eras = - (struct era_entry *) realloc (data->eras, - new_num_eras - * sizeof (struct era_entry)); - if (new_eras == NULL) - { - free (data->eras); - data->num_eras = 0; - data->eras = NULL; - } - else - { - const char *ptr = CURRENT (_NL_TIME_ERA_ENTRIES); - data->num_eras = new_num_eras; - data->eras = new_eras; - - for (cnt = 0; cnt < new_num_eras; ++cnt) - { - const char *base_ptr = ptr; - memcpy ((void *) (new_eras + cnt), (const void *) ptr, - sizeof (uint32_t) * 8); - - if (ERA_DATE_CMP(new_eras[cnt].start_date, - new_eras[cnt].stop_date)) - if (new_eras[cnt].direction == (uint32_t) '+') - new_eras[cnt].absolute_direction = 1; - else - new_eras[cnt].absolute_direction = -1; - else - if (new_eras[cnt].direction == (uint32_t) '+') - new_eras[cnt].absolute_direction = -1; - else - new_eras[cnt].absolute_direction = 1; - - /* Skip numeric values. */ - ptr += sizeof (uint32_t) * 8; - - /* Set and skip era name. */ - new_eras[cnt].era_name = ptr; - ptr = strchr (ptr, '\0') + 1; - - /* Set and skip era format. */ - new_eras[cnt].era_format = ptr; - ptr = strchr (ptr, '\0') + 1; - - ptr += 3 - (((ptr - (const char *) base_ptr) + 3) & 3); - - /* Set and skip wide era name. */ - new_eras[cnt].era_wname = (wchar_t *) ptr; - ptr = (char *) (wcschr ((wchar_t *) ptr, L'\0') + 1); - - /* Set and skip wide era format. */ - new_eras[cnt].era_wformat = (wchar_t *) ptr; - ptr = (char *) (wcschr ((wchar_t *) ptr, L'\0') + 1); - } - } - } - - data->era_initialized = 1; - } - - out: - __libc_lock_unlock (__libc_setlocale_lock); -} - -struct era_entry * -internal_function -_nl_get_era_entry (const struct tm *tp, struct locale_data *current) -{ - if (current->private.time == NULL || !current->private.time->era_initialized) - _nl_init_era_entries (current); - - if (current->private.time != NULL) - { - /* Now compare date with the available eras. */ - const int32_t tdate[3] = { tp->tm_year, tp->tm_mon, tp->tm_mday }; - size_t cnt; - for (cnt = 0; cnt < current->private.time->num_eras; ++cnt) - if ((ERA_DATE_CMP (current->private.time->eras[cnt].start_date, tdate) - && ERA_DATE_CMP (tdate, - current->private.time->eras[cnt].stop_date)) - || (ERA_DATE_CMP (current->private.time->eras[cnt].stop_date, - tdate) - && ERA_DATE_CMP (tdate, - current->private.time->eras[cnt].start_date))) - return ¤t->private.time->eras[cnt]; - } - - return NULL; -} - - -struct era_entry * -internal_function -_nl_select_era_entry (int cnt, struct locale_data *current) -{ - if (current->private.time == NULL || !current->private.time->era_initialized) - _nl_init_era_entries (current); - - return (current->private.time == NULL - ? NULL : ¤t->private.time->eras[cnt]); -} diff --git a/bin/glibc-2.7/time/ftime.c b/bin/glibc-2.7/time/ftime.c deleted file mode 100644 index 94dfbcc9..00000000 --- a/bin/glibc-2.7/time/ftime.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright (C) 1994, 1996, 1997, 2001 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -int -ftime (timebuf) - struct timeb *timebuf; -{ - int save = errno; - struct tm tp; - - __set_errno (0); - if (time (&timebuf->time) == (time_t) -1 && errno != 0) - return -1; - timebuf->millitm = 0; - - if (__localtime_r (&timebuf->time, &tp) == NULL) - return -1; - - timebuf->timezone = tp.tm_gmtoff / 60; - timebuf->dstflag = tp.tm_isdst; - - __set_errno (save); - return 0; -} diff --git a/bin/glibc-2.7/time/getdate.c b/bin/glibc-2.7/time/getdate.c deleted file mode 100644 index 851efacf..00000000 --- a/bin/glibc-2.7/time/getdate.c +++ /dev/null @@ -1,267 +0,0 @@ -/* Convert a string representation of time to a time value. - Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Mark Kettenis , 1997. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#define TM_YEAR_BASE 1900 - - -/* Prototypes for local functions. */ -static int first_wday (int year, int mon, int wday); -static int check_mday (int year, int mon, int mday); - - -/* Set to one of the following values to indicate an error. - 1 the DATEMSK environment variable is null or undefined, - 2 the template file cannot be opened for reading, - 3 failed to get file status information, - 4 the template file is not a regular file, - 5 an error is encountered while reading the template file, - 6 memory allication failed (not enough memory available), - 7 there is no line in the template that matches the input, - 8 invalid input specification Example: February 31 or a time is - specified that can not be represented in a time_t (representing - the time in seconds since 00:00:00 UTC, January 1, 1970) */ -int getdate_err; - - -/* Returns the first weekday WDAY of month MON in the year YEAR. */ -static int -first_wday (int year, int mon, int wday) -{ - struct tm tm; - - if (wday == INT_MIN) - return 1; - - memset (&tm, 0, sizeof (struct tm)); - tm.tm_year = year; - tm.tm_mon = mon; - tm.tm_mday = 1; - mktime (&tm); - - return (1 + (wday - tm.tm_wday + 7) % 7); -} - - -/* Returns 1 if MDAY is a valid day of the month in month MON of year - YEAR, and 0 if it is not. */ -static int -check_mday (int year, int mon, int mday) -{ - switch (mon) - { - case 0: - case 2: - case 4: - case 6: - case 7: - case 9: - case 11: - if (mday >= 1 && mday <= 31) - return 1; - break; - case 3: - case 5: - case 8: - case 10: - if (mday >= 1 && mday <= 30) - return 1; - break; - case 1: - if (mday >= 1 && mday <= (__isleap (year) ? 29 : 28)) - return 1; - break; - } - - return 0; -} - - -int -__getdate_r (const char *string, struct tm *tp) -{ - FILE *fp; - char *line; - size_t len; - char *datemsk; - char *result = NULL; - time_t timer; - struct tm tm; - struct stat64 st; - int mday_ok = 0; - - datemsk = getenv ("DATEMSK"); - if (datemsk == NULL || *datemsk == '\0') - return 1; - - if (stat64 (datemsk, &st) < 0) - return 3; - - if (!S_ISREG (st.st_mode)) - return 4; - - if (__access (datemsk, R_OK) < 0) - return 2; - - /* Open the template file. */ - fp = fopen (datemsk, "rc"); - if (fp == NULL) - return 2; - - /* No threads reading this stream. */ - __fsetlocking (fp, FSETLOCKING_BYCALLER); - - line = NULL; - len = 0; - do - { - ssize_t n; - - n = __getline (&line, &len, fp); - if (n < 0) - break; - if (line[n - 1] == '\n') - line[n - 1] = '\0'; - - /* Do the conversion. */ - tp->tm_year = tp->tm_mon = tp->tm_mday = tp->tm_wday = INT_MIN; - tp->tm_hour = tp->tm_sec = tp->tm_min = INT_MIN; - tp->tm_isdst = -1; - tp->tm_gmtoff = 0; - tp->tm_zone = NULL; - result = strptime (string, line, tp); - if (result && *result == '\0') - break; - } - while (!feof_unlocked (fp)); - - /* Free the buffer. */ - free (line); - - /* Check for errors. */ - if (ferror_unlocked (fp)) - { - fclose (fp); - return 5; - } - - /* Close template file. */ - fclose (fp); - - if (result == NULL || *result != '\0') - return 7; - - /* Get current time. */ - time (&timer); - __localtime_r (&timer, &tm); - - /* If only the weekday is given, today is assumed if the given day - is equal to the current day and next week if it is less. */ - if (tp->tm_wday >= 0 && tp->tm_wday <= 6 && tp->tm_year == INT_MIN - && tp->tm_mon == INT_MIN && tp->tm_mday == INT_MIN) - { - tp->tm_year = tm.tm_year; - tp->tm_mon = tm.tm_mon; - tp->tm_mday = tm.tm_mday + (tp->tm_wday - tm.tm_wday + 7) % 7; - mday_ok = 1; - } - - /* If only the month is given, the current month is assumed if the - given month is equal to the current month and next year if it is - less and no year is given (the first day of month is assumed if - no day is given. */ - if (tp->tm_mon >= 0 && tp->tm_mon <= 11 && tp->tm_mday == INT_MIN) - { - if (tp->tm_year == INT_MIN) - tp->tm_year = tm.tm_year + (((tp->tm_mon - tm.tm_mon) < 0) ? 1 : 0); - tp->tm_mday = first_wday (tp->tm_year, tp->tm_mon, tp->tm_wday); - mday_ok = 1; - } - - /* If no hour, minute and second are given the current hour, minute - and second are assumed. */ - if (tp->tm_hour == INT_MIN && tp->tm_min == INT_MIN && tp->tm_sec == INT_MIN) - { - tp->tm_hour = tm.tm_hour; - tp->tm_min = tm.tm_min; - tp->tm_sec = tm.tm_sec; - } - - /* If no date is given, today is assumed if the given hour is - greater than the current hour and tomorrow is assumed if - it is less. */ - if (tp->tm_hour >= 0 && tp->tm_hour <= 23 - && tp->tm_year == INT_MIN && tp->tm_mon == INT_MIN - && tp->tm_mday == INT_MIN && tp->tm_wday == INT_MIN) - { - tp->tm_year = tm.tm_year; - tp->tm_mon = tm.tm_mon; - tp->tm_mday = tm.tm_mday + ((tp->tm_hour - tm.tm_hour) < 0 ? 1 : 0); - mday_ok = 1; - } - - /* Fill in the gaps. */ - if (tp->tm_year == INT_MIN) - tp->tm_year = tm.tm_year; - if (tp->tm_hour == INT_MIN) - tp->tm_hour = 0; - if (tp->tm_min == INT_MIN) - tp->tm_min = 0; - if (tp->tm_sec == INT_MIN) - tp->tm_sec = 0; - - /* Check if the day of month is within range, and if the time can be - represented in a time_t. We make use of the fact that the mktime - call normalizes the struct tm. */ - if ((!mday_ok && !check_mday (TM_YEAR_BASE + tp->tm_year, tp->tm_mon, - tp->tm_mday)) - || mktime (tp) == (time_t) -1) - return 8; - - return 0; -} -#ifdef weak_alias -weak_alias (__getdate_r, getdate_r) -#endif - - -struct tm * -getdate (const char *string) -{ - /* Buffer returned by getdate. */ - static struct tm tmbuf; - int errval = __getdate_r (string, &tmbuf); - - if (errval != 0) - { - getdate_err = errval; - return NULL; - } - - return &tmbuf; -} diff --git a/bin/glibc-2.7/time/getitimer.c b/bin/glibc-2.7/time/getitimer.c deleted file mode 100644 index d9f3063e..00000000 --- a/bin/glibc-2.7/time/getitimer.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Set *VALUE to the current setting of timer WHICH. - Return 0 on success, -1 on errors. */ -int -__getitimer (which, value) - enum __itimer_which which; - struct itimerval *value; -{ - if (value == NULL) - { - __set_errno (EINVAL); - return -1; - } - - __set_errno (ENOSYS); - return -1; -} -stub_warning (getitimer) - -weak_alias (__getitimer, getitimer) -#include diff --git a/bin/glibc-2.7/time/gettimeofday.c b/bin/glibc-2.7/time/gettimeofday.c deleted file mode 100644 index f4a170c9..00000000 --- a/bin/glibc-2.7/time/gettimeofday.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -#undef __gettimeofday - -/* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. */ -int -__gettimeofday (tv, tz) - struct timeval *tv; - struct timezone *tz; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (gettimeofday) - -INTDEF(__gettimeofday) -weak_alias (__gettimeofday, gettimeofday) -#include diff --git a/bin/glibc-2.7/time/gmtime.c b/bin/glibc-2.7/time/gmtime.c deleted file mode 100644 index 0f11a412..00000000 --- a/bin/glibc-2.7/time/gmtime.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Convert `time_t' to `struct tm' in UTC. - Copyright (C) 1991, 93, 95, 96, 97, 98, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* Return the `struct tm' representation of *T in UTC, - using *TP to store the result. */ -struct tm * -__gmtime_r (t, tp) - const time_t *t; - struct tm *tp; -{ - return __tz_convert (t, 0, tp); -} -libc_hidden_def (__gmtime_r) -weak_alias (__gmtime_r, gmtime_r) - - -/* Return the `struct tm' representation of *T in UTC. */ -struct tm * -gmtime (t) - const time_t *t; -{ - return __tz_convert (t, 0, &_tmbuf); -} diff --git a/bin/glibc-2.7/time/lc-time-cleanup.c b/bin/glibc-2.7/time/lc-time-cleanup.c deleted file mode 100644 index 79727006..00000000 --- a/bin/glibc-2.7/time/lc-time-cleanup.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Cleanup code for data structures kept by strftime/strptime helper functions. - Copyright (C) 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "../locale/localeinfo.h" -#include - -void internal_function -_nl_cleanup_time (struct locale_data *locale) -{ - struct lc_time_data *const data = locale->private.time; - if (data != NULL) - { - locale->private.time = NULL; - locale->private.cleanup = NULL; - - if (data->eras != NULL) - free (data->eras); - if (data->alt_digits != NULL) - free (data->alt_digits); - if (data->walt_digits != NULL) - free (data->walt_digits); - - free (data); - } -} diff --git a/bin/glibc-2.7/time/localtime.c b/bin/glibc-2.7/time/localtime.c deleted file mode 100644 index 069b12f3..00000000 --- a/bin/glibc-2.7/time/localtime.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Convert `time_t' to `struct tm' in local time zone. - Copyright (C) 1991,92,93,95,96,97,98,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include - -/* The C Standard says that localtime and gmtime return the same pointer. */ -struct tm _tmbuf; - - -/* Return the `struct tm' representation of *T in local time, - using *TP to store the result. */ -struct tm * -__localtime_r (t, tp) - const time_t *t; - struct tm *tp; -{ - return __tz_convert (t, 1, tp); -} -weak_alias (__localtime_r, localtime_r) - - -/* Return the `struct tm' representation of *T in local time. */ -struct tm * -localtime (t) - const time_t *t; -{ - return __tz_convert (t, 1, &_tmbuf); -} -libc_hidden_def (localtime) diff --git a/bin/glibc-2.7/time/mktime.c b/bin/glibc-2.7/time/mktime.c deleted file mode 100644 index 8f00c72e..00000000 --- a/bin/glibc-2.7/time/mktime.c +++ /dev/null @@ -1,666 +0,0 @@ -/* Convert a `struct tm' to a time_t value. - Copyright (C) 1993-1999, 2002-2005, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Paul Eggert . - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* Define this to have a standalone program to test this implementation of - mktime. */ -/* #define DEBUG 1 */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -/* Assume that leap seconds are possible, unless told otherwise. - If the host has a `zic' command with a `-L leapsecondfilename' option, - then it supports leap seconds; otherwise it probably doesn't. */ -#ifndef LEAP_SECONDS_POSSIBLE -# define LEAP_SECONDS_POSSIBLE 1 -#endif - -#include /* Some systems define `time_t' here. */ -#include - -#include - -#include /* For the real memcpy prototype. */ - -#if DEBUG -# include -# include -/* Make it work even if the system's libc has its own mktime routine. */ -# define mktime my_mktime -#endif /* DEBUG */ - -/* Shift A right by B bits portably, by dividing A by 2**B and - truncating towards minus infinity. A and B should be free of side - effects, and B should be in the range 0 <= B <= INT_BITS - 2, where - INT_BITS is the number of useful bits in an int. GNU code can - assume that INT_BITS is at least 32. - - ISO C99 says that A >> B is implementation-defined if A < 0. Some - implementations (e.g., UNICOS 9.0 on a Cray Y-MP EL) don't shift - right in the usual way when A < 0, so SHR falls back on division if - ordinary A >> B doesn't seem to be the usual signed shift. */ -#define SHR(a, b) \ - (-1 >> 1 == -1 \ - ? (a) >> (b) \ - : (a) / (1 << (b)) - ((a) % (1 << (b)) < 0)) - -/* The extra casts in the following macros work around compiler bugs, - e.g., in Cray C 5.0.3.0. */ - -/* True if the arithmetic type T is an integer type. bool counts as - an integer. */ -#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) - -/* True if negative values of the signed integer type T use two's - complement, ones' complement, or signed magnitude representation, - respectively. Much GNU code assumes two's complement, but some - people like to be portable to all possible C hosts. */ -#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1) -#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0) -#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1) - -/* True if the arithmetic type T is signed. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) - -/* The maximum and minimum values for the integer type T. These - macros have undefined behavior if T is signed and has padding bits. - If this is a problem for you, please let us know how to fix it for - your host. */ -#define TYPE_MINIMUM(t) \ - ((t) (! TYPE_SIGNED (t) \ - ? (t) 0 \ - : TYPE_SIGNED_MAGNITUDE (t) \ - ? ~ (t) 0 \ - : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))) -#define TYPE_MAXIMUM(t) \ - ((t) (! TYPE_SIGNED (t) \ - ? (t) -1 \ - : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) - -#ifndef TIME_T_MIN -# define TIME_T_MIN TYPE_MINIMUM (time_t) -#endif -#ifndef TIME_T_MAX -# define TIME_T_MAX TYPE_MAXIMUM (time_t) -#endif -#define TIME_T_MIDPOINT (SHR (TIME_T_MIN + TIME_T_MAX, 1) + 1) - -/* Verify a requirement at compile-time (unlike assert, which is runtime). */ -#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } - -verify (time_t_is_integer, TYPE_IS_INTEGER (time_t)); -verify (twos_complement_arithmetic, TYPE_TWOS_COMPLEMENT (int)); -/* The code also assumes that signed integer overflow silently wraps - around, but this assumption can't be stated without causing a - diagnostic on some hosts. */ - -#define EPOCH_YEAR 1970 -#define TM_YEAR_BASE 1900 -verify (base_year_is_a_multiple_of_100, TM_YEAR_BASE % 100 == 0); - -/* Return 1 if YEAR + TM_YEAR_BASE is a leap year. */ -static inline int -leapyear (long int year) -{ - /* Don't add YEAR to TM_YEAR_BASE, as that might overflow. - Also, work even if YEAR is negative. */ - return - ((year & 3) == 0 - && (year % 100 != 0 - || ((year / 100) & 3) == (- (TM_YEAR_BASE / 100) & 3))); -} - -/* How many days come before each month (0-12). */ -#ifndef _LIBC -static -#endif -const unsigned short int __mon_yday[2][13] = - { - /* Normal years. */ - { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, - /* Leap years. */ - { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } - }; - - -#ifndef _LIBC -/* Portable standalone applications should supply a "time_r.h" that - declares a POSIX-compliant localtime_r, for the benefit of older - implementations that lack localtime_r or have a nonstandard one. - See the gnulib time_r module for one way to implement this. */ -# include "time_r.h" -# undef __localtime_r -# define __localtime_r localtime_r -# define __mktime_internal mktime_internal -#endif - -/* Return an integer value measuring (YEAR1-YDAY1 HOUR1:MIN1:SEC1) - - (YEAR0-YDAY0 HOUR0:MIN0:SEC0) in seconds, assuming that the clocks - were not adjusted between the time stamps. - - The YEAR values uses the same numbering as TP->tm_year. Values - need not be in the usual range. However, YEAR1 must not be less - than 2 * INT_MIN or greater than 2 * INT_MAX. - - The result may overflow. It is the caller's responsibility to - detect overflow. */ - -static inline time_t -ydhms_diff (long int year1, long int yday1, int hour1, int min1, int sec1, - int year0, int yday0, int hour0, int min0, int sec0) -{ - verify (C99_integer_division, -1 / 2 == 0); - verify (long_int_year_and_yday_are_wide_enough, - INT_MAX <= LONG_MAX / 2 || TIME_T_MAX <= UINT_MAX); - - /* Compute intervening leap days correctly even if year is negative. - Take care to avoid integer overflow here. */ - int a4 = SHR (year1, 2) + SHR (TM_YEAR_BASE, 2) - ! (year1 & 3); - int b4 = SHR (year0, 2) + SHR (TM_YEAR_BASE, 2) - ! (year0 & 3); - int a100 = a4 / 25 - (a4 % 25 < 0); - int b100 = b4 / 25 - (b4 % 25 < 0); - int a400 = SHR (a100, 2); - int b400 = SHR (b100, 2); - int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); - - /* Compute the desired time in time_t precision. Overflow might - occur here. */ - time_t tyear1 = year1; - time_t years = tyear1 - year0; - time_t days = 365 * years + yday1 - yday0 + intervening_leap_days; - time_t hours = 24 * days + hour1 - hour0; - time_t minutes = 60 * hours + min1 - min0; - time_t seconds = 60 * minutes + sec1 - sec0; - return seconds; -} - - -/* Return a time_t value corresponding to (YEAR-YDAY HOUR:MIN:SEC), - assuming that *T corresponds to *TP and that no clock adjustments - occurred between *TP and the desired time. - If TP is null, return a value not equal to *T; this avoids false matches. - If overflow occurs, yield the minimal or maximal value, except do not - yield a value equal to *T. */ -static time_t -guess_time_tm (long int year, long int yday, int hour, int min, int sec, - const time_t *t, const struct tm *tp) -{ - if (tp) - { - time_t d = ydhms_diff (year, yday, hour, min, sec, - tp->tm_year, tp->tm_yday, - tp->tm_hour, tp->tm_min, tp->tm_sec); - time_t t1 = *t + d; - if ((t1 < *t) == (TYPE_SIGNED (time_t) ? d < 0 : TIME_T_MAX / 2 < d)) - return t1; - } - - /* Overflow occurred one way or another. Return the nearest result - that is actually in range, except don't report a zero difference - if the actual difference is nonzero, as that would cause a false - match; and don't oscillate between two values, as that would - confuse the spring-forward gap detector. */ - return (*t < TIME_T_MIDPOINT - ? (*t <= TIME_T_MIN + 1 ? *t + 1 : TIME_T_MIN) - : (TIME_T_MAX - 1 <= *t ? *t - 1 : TIME_T_MAX)); -} - -/* Use CONVERT to convert *T to a broken down time in *TP. - If *T is out of range for conversion, adjust it so that - it is the nearest in-range value and then convert that. */ -static struct tm * -ranged_convert (struct tm *(*convert) (const time_t *, struct tm *), - time_t *t, struct tm *tp) -{ - struct tm *r = convert (t, tp); - - if (!r && *t) - { - time_t bad = *t; - time_t ok = 0; - - /* BAD is a known unconvertible time_t, and OK is a known good one. - Use binary search to narrow the range between BAD and OK until - they differ by 1. */ - while (bad != ok + (bad < 0 ? -1 : 1)) - { - time_t mid = *t = (bad < 0 - ? bad + ((ok - bad) >> 1) - : ok + ((bad - ok) >> 1)); - r = convert (t, tp); - if (r) - ok = mid; - else - bad = mid; - } - - if (!r && ok) - { - /* The last conversion attempt failed; - revert to the most recent successful attempt. */ - *t = ok; - r = convert (t, tp); - } - } - - return r; -} - - -/* Convert *TP to a time_t value, inverting - the monotonic and mostly-unit-linear conversion function CONVERT. - Use *OFFSET to keep track of a guess at the offset of the result, - compared to what the result would be for UTC without leap seconds. - If *OFFSET's guess is correct, only one CONVERT call is needed. - This function is external because it is used also by timegm.c. */ -time_t -__mktime_internal (struct tm *tp, - struct tm *(*convert) (const time_t *, struct tm *), - time_t *offset) -{ - time_t t, gt, t0, t1, t2; - struct tm tm; - - /* The maximum number of probes (calls to CONVERT) should be enough - to handle any combinations of time zone rule changes, solar time, - leap seconds, and oscillations around a spring-forward gap. - POSIX.1 prohibits leap seconds, but some hosts have them anyway. */ - int remaining_probes = 6; - - /* Time requested. Copy it in case CONVERT modifies *TP; this can - occur if TP is localtime's returned value and CONVERT is localtime. */ - int sec = tp->tm_sec; - int min = tp->tm_min; - int hour = tp->tm_hour; - int mday = tp->tm_mday; - int mon = tp->tm_mon; - int year_requested = tp->tm_year; - int isdst = tp->tm_isdst; - - /* 1 if the previous probe was DST. */ - int dst2; - - /* Ensure that mon is in range, and set year accordingly. */ - int mon_remainder = mon % 12; - int negative_mon_remainder = mon_remainder < 0; - int mon_years = mon / 12 - negative_mon_remainder; - long int lyear_requested = year_requested; - long int year = lyear_requested + mon_years; - - /* The other values need not be in range: - the remaining code handles minor overflows correctly, - assuming int and time_t arithmetic wraps around. - Major overflows are caught at the end. */ - - /* Calculate day of year from year, month, and day of month. - The result need not be in range. */ - int mon_yday = ((__mon_yday[leapyear (year)] - [mon_remainder + 12 * negative_mon_remainder]) - - 1); - long int lmday = mday; - long int yday = mon_yday + lmday; - - time_t guessed_offset = *offset; - - int sec_requested = sec; - - if (LEAP_SECONDS_POSSIBLE) - { - /* Handle out-of-range seconds specially, - since ydhms_tm_diff assumes every minute has 60 seconds. */ - if (sec < 0) - sec = 0; - if (59 < sec) - sec = 59; - } - - /* Invert CONVERT by probing. First assume the same offset as last - time. */ - - t0 = ydhms_diff (year, yday, hour, min, sec, - EPOCH_YEAR - TM_YEAR_BASE, 0, 0, 0, - guessed_offset); - - if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3) - { - /* time_t isn't large enough to rule out overflows, so check - for major overflows. A gross check suffices, since if t0 - has overflowed, it is off by a multiple of TIME_T_MAX - - TIME_T_MIN + 1. So ignore any component of the difference - that is bounded by a small value. */ - - /* Approximate log base 2 of the number of time units per - biennium. A biennium is 2 years; use this unit instead of - years to avoid integer overflow. For example, 2 average - Gregorian years are 2 * 365.2425 * 24 * 60 * 60 seconds, - which is 63113904 seconds, and rint (log2 (63113904)) is - 26. */ - int ALOG2_SECONDS_PER_BIENNIUM = 26; - int ALOG2_MINUTES_PER_BIENNIUM = 20; - int ALOG2_HOURS_PER_BIENNIUM = 14; - int ALOG2_DAYS_PER_BIENNIUM = 10; - int LOG2_YEARS_PER_BIENNIUM = 1; - - int approx_requested_biennia = - (SHR (year_requested, LOG2_YEARS_PER_BIENNIUM) - - SHR (EPOCH_YEAR - TM_YEAR_BASE, LOG2_YEARS_PER_BIENNIUM) - + SHR (mday, ALOG2_DAYS_PER_BIENNIUM) - + SHR (hour, ALOG2_HOURS_PER_BIENNIUM) - + SHR (min, ALOG2_MINUTES_PER_BIENNIUM) - + (LEAP_SECONDS_POSSIBLE - ? 0 - : SHR (sec, ALOG2_SECONDS_PER_BIENNIUM))); - - int approx_biennia = SHR (t0, ALOG2_SECONDS_PER_BIENNIUM); - int diff = approx_biennia - approx_requested_biennia; - int abs_diff = diff < 0 ? - diff : diff; - - /* IRIX 4.0.5 cc miscaculates TIME_T_MIN / 3: it erroneously - gives a positive value of 715827882. Setting a variable - first then doing math on it seems to work. - (ghazi@caip.rutgers.edu) */ - time_t time_t_max = TIME_T_MAX; - time_t time_t_min = TIME_T_MIN; - time_t overflow_threshold = - (time_t_max / 3 - time_t_min / 3) >> ALOG2_SECONDS_PER_BIENNIUM; - - if (overflow_threshold < abs_diff) - { - /* Overflow occurred. Try repairing it; this might work if - the time zone offset is enough to undo the overflow. */ - time_t repaired_t0 = -1 - t0; - approx_biennia = SHR (repaired_t0, ALOG2_SECONDS_PER_BIENNIUM); - diff = approx_biennia - approx_requested_biennia; - abs_diff = diff < 0 ? - diff : diff; - if (overflow_threshold < abs_diff) - return -1; - guessed_offset += repaired_t0 - t0; - t0 = repaired_t0; - } - } - - /* Repeatedly use the error to improve the guess. */ - - for (t = t1 = t2 = t0, dst2 = 0; - (gt = guess_time_tm (year, yday, hour, min, sec, &t, - ranged_convert (convert, &t, &tm)), - t != gt); - t1 = t2, t2 = t, t = gt, dst2 = tm.tm_isdst != 0) - if (t == t1 && t != t2 - && (tm.tm_isdst < 0 - || (isdst < 0 - ? dst2 <= (tm.tm_isdst != 0) - : (isdst != 0) != (tm.tm_isdst != 0)))) - /* We can't possibly find a match, as we are oscillating - between two values. The requested time probably falls - within a spring-forward gap of size GT - T. Follow the common - practice in this case, which is to return a time that is GT - T - away from the requested time, preferring a time whose - tm_isdst differs from the requested value. (If no tm_isdst - was requested and only one of the two values has a nonzero - tm_isdst, prefer that value.) In practice, this is more - useful than returning -1. */ - goto offset_found; - else if (--remaining_probes == 0) - return -1; - - /* We have a match. Check whether tm.tm_isdst has the requested - value, if any. */ - if (isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst) - { - /* tm.tm_isdst has the wrong value. Look for a neighboring - time with the right value, and use its UTC offset. - - Heuristic: probe the adjacent timestamps in both directions, - looking for the desired isdst. This should work for all real - time zone histories in the tz database. */ - - /* Distance between probes when looking for a DST boundary. In - tzdata2003a, the shortest period of DST is 601200 seconds - (e.g., America/Recife starting 2000-10-08 01:00), and the - shortest period of non-DST surrounded by DST is 694800 - seconds (Africa/Tunis starting 1943-04-17 01:00). Use the - minimum of these two values, so we don't miss these short - periods when probing. */ - int stride = 601200; - - /* The longest period of DST in tzdata2003a is 536454000 seconds - (e.g., America/Jujuy starting 1946-10-01 01:00). The longest - period of non-DST is much longer, but it makes no real sense - to search for more than a year of non-DST, so use the DST - max. */ - int duration_max = 536454000; - - /* Search in both directions, so the maximum distance is half - the duration; add the stride to avoid off-by-1 problems. */ - int delta_bound = duration_max / 2 + stride; - - int delta, direction; - - for (delta = stride; delta < delta_bound; delta += stride) - for (direction = -1; direction <= 1; direction += 2) - { - time_t ot = t + delta * direction; - if ((ot < t) == (direction < 0)) - { - struct tm otm; - ranged_convert (convert, &ot, &otm); - if (otm.tm_isdst == isdst) - { - /* We found the desired tm_isdst. - Extrapolate back to the desired time. */ - t = guess_time_tm (year, yday, hour, min, sec, &ot, &otm); - ranged_convert (convert, &t, &tm); - goto offset_found; - } - } - } - } - - offset_found: - *offset = guessed_offset + t - t0; - - if (LEAP_SECONDS_POSSIBLE && sec_requested != tm.tm_sec) - { - /* Adjust time to reflect the tm_sec requested, not the normalized value. - Also, repair any damage from a false match due to a leap second. */ - int sec_adjustment = (sec == 0 && tm.tm_sec == 60) - sec; - t1 = t + sec_requested; - t2 = t1 + sec_adjustment; - if (((t1 < t) != (sec_requested < 0)) - | ((t2 < t1) != (sec_adjustment < 0)) - | ! convert (&t2, &tm)) - return -1; - t = t2; - } - - *tp = tm; - return t; -} - - -/* FIXME: This should use a signed type wide enough to hold any UTC - offset in seconds. 'int' should be good enough for GNU code. We - can't fix this unilaterally though, as other modules invoke - __mktime_internal. */ -static time_t localtime_offset; - -/* Convert *TP to a time_t value. */ -time_t -mktime (struct tm *tp) -{ -#ifdef _LIBC - /* POSIX.1 8.1.1 requires that whenever mktime() is called, the - time zone names contained in the external variable `tzname' shall - be set as if the tzset() function had been called. */ - __tzset (); -#endif - - return __mktime_internal (tp, __localtime_r, &localtime_offset); -} - -#ifdef weak_alias -weak_alias (mktime, timelocal) -#endif - -#ifdef _LIBC -libc_hidden_def (mktime) -libc_hidden_weak (timelocal) -#endif - -#if DEBUG - -static int -not_equal_tm (const struct tm *a, const struct tm *b) -{ - return ((a->tm_sec ^ b->tm_sec) - | (a->tm_min ^ b->tm_min) - | (a->tm_hour ^ b->tm_hour) - | (a->tm_mday ^ b->tm_mday) - | (a->tm_mon ^ b->tm_mon) - | (a->tm_year ^ b->tm_year) - | (a->tm_yday ^ b->tm_yday) - | (a->tm_isdst ^ b->tm_isdst)); -} - -static void -print_tm (const struct tm *tp) -{ - if (tp) - printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d", - tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday, - tp->tm_hour, tp->tm_min, tp->tm_sec, - tp->tm_yday, tp->tm_wday, tp->tm_isdst); - else - printf ("0"); -} - -static int -check_result (time_t tk, struct tm tmk, time_t tl, const struct tm *lt) -{ - if (tk != tl || !lt || not_equal_tm (&tmk, lt)) - { - printf ("mktime ("); - print_tm (lt); - printf (")\nyields ("); - print_tm (&tmk); - printf (") == %ld, should be %ld\n", (long int) tk, (long int) tl); - return 1; - } - - return 0; -} - -int -main (int argc, char **argv) -{ - int status = 0; - struct tm tm, tmk, tml; - struct tm *lt; - time_t tk, tl, tl1; - char trailer; - - if ((argc == 3 || argc == 4) - && (sscanf (argv[1], "%d-%d-%d%c", - &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer) - == 3) - && (sscanf (argv[2], "%d:%d:%d%c", - &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer) - == 3)) - { - tm.tm_year -= TM_YEAR_BASE; - tm.tm_mon--; - tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]); - tmk = tm; - tl = mktime (&tmk); - lt = localtime (&tl); - if (lt) - { - tml = *lt; - lt = &tml; - } - printf ("mktime returns %ld == ", (long int) tl); - print_tm (&tmk); - printf ("\n"); - status = check_result (tl, tmk, tl, lt); - } - else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0)) - { - time_t from = atol (argv[1]); - time_t by = atol (argv[2]); - time_t to = atol (argv[3]); - - if (argc == 4) - for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1) - { - lt = localtime (&tl); - if (lt) - { - tmk = tml = *lt; - tk = mktime (&tmk); - status |= check_result (tk, tmk, tl, &tml); - } - else - { - printf ("localtime (%ld) yields 0\n", (long int) tl); - status = 1; - } - tl1 = tl + by; - if ((tl1 < tl) != (by < 0)) - break; - } - else - for (tl = from; by < 0 ? to <= tl : tl <= to; tl = tl1) - { - /* Null benchmark. */ - lt = localtime (&tl); - if (lt) - { - tmk = tml = *lt; - tk = tl; - status |= check_result (tk, tmk, tl, &tml); - } - else - { - printf ("localtime (%ld) yields 0\n", (long int) tl); - status = 1; - } - tl1 = tl + by; - if ((tl1 < tl) != (by < 0)) - break; - } - } - else - printf ("Usage:\ -\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\ -\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\ -\t%s FROM BY TO - # Do not test those values (for benchmark).\n", - argv[0], argv[0], argv[0]); - - return status; -} - -#endif /* DEBUG */ - -/* -Local Variables: -compile-command: "gcc -DDEBUG -Wall -W -O -g mktime.c -o mktime" -End: -*/ diff --git a/bin/glibc-2.7/time/offtime.c b/bin/glibc-2.7/time/offtime.c deleted file mode 100644 index c0b1db59..00000000 --- a/bin/glibc-2.7/time/offtime.c +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright (C) 1991, 1993, 1997, 1998, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -#define SECS_PER_HOUR (60 * 60) -#define SECS_PER_DAY (SECS_PER_HOUR * 24) - -/* Compute the `struct tm' representation of *T, - offset OFFSET seconds east of UTC, - and store year, yday, mon, mday, wday, hour, min, sec into *TP. - Return nonzero if successful. */ -int -__offtime (t, offset, tp) - const time_t *t; - long int offset; - struct tm *tp; -{ - long int days, rem, y; - const unsigned short int *ip; - - days = *t / SECS_PER_DAY; - rem = *t % SECS_PER_DAY; - rem += offset; - while (rem < 0) - { - rem += SECS_PER_DAY; - --days; - } - while (rem >= SECS_PER_DAY) - { - rem -= SECS_PER_DAY; - ++days; - } - tp->tm_hour = rem / SECS_PER_HOUR; - rem %= SECS_PER_HOUR; - tp->tm_min = rem / 60; - tp->tm_sec = rem % 60; - /* January 1, 1970 was a Thursday. */ - tp->tm_wday = (4 + days) % 7; - if (tp->tm_wday < 0) - tp->tm_wday += 7; - y = 1970; - -#define DIV(a, b) ((a) / (b) - ((a) % (b) < 0)) -#define LEAPS_THRU_END_OF(y) (DIV (y, 4) - DIV (y, 100) + DIV (y, 400)) - - while (days < 0 || days >= (__isleap (y) ? 366 : 365)) - { - /* Guess a corrected year, assuming 365 days per year. */ - long int yg = y + days / 365 - (days % 365 < 0); - - /* Adjust DAYS and Y to match the guessed year. */ - days -= ((yg - y) * 365 - + LEAPS_THRU_END_OF (yg - 1) - - LEAPS_THRU_END_OF (y - 1)); - y = yg; - } - tp->tm_year = y - 1900; - if (tp->tm_year != y - 1900) - { - /* The year cannot be represented due to overflow. */ - __set_errno (EOVERFLOW); - return 0; - } - tp->tm_yday = days; - ip = __mon_yday[__isleap(y)]; - for (y = 11; days < (long int) ip[y]; --y) - continue; - days -= ip[y]; - tp->tm_mon = y; - tp->tm_mday = days + 1; - return 1; -} diff --git a/bin/glibc-2.7/time/setitimer.c b/bin/glibc-2.7/time/setitimer.c deleted file mode 100644 index 755fa06a..00000000 --- a/bin/glibc-2.7/time/setitimer.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Set the timer WHICH to *NEW. If OLD is not NULL, - set *OLD to the old value of timer WHICH. - Returns 0 on success, -1 on errors. */ -int -__setitimer (which, new, old) - enum __itimer_which which; - const struct itimerval *new; - struct itimerval *old; -{ - if (new == NULL) - { - __set_errno (EINVAL); - return -1; - } - - __set_errno (ENOSYS); - return -1; -} -stub_warning (setitimer) - -weak_alias (__setitimer, setitimer) -#include diff --git a/bin/glibc-2.7/time/settimeofday.c b/bin/glibc-2.7/time/settimeofday.c deleted file mode 100644 index abff6f92..00000000 --- a/bin/glibc-2.7/time/settimeofday.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Set the current time of day and timezone information. - This call is restricted to the super-user. */ -int -__settimeofday (tv, tz) - const struct timeval *tv; - const struct timezone *tz; -{ - __set_errno (ENOSYS); - return -1; -} -stub_warning (settimeofday) - -weak_alias (__settimeofday, settimeofday) -#include diff --git a/bin/glibc-2.7/time/stime.c b/bin/glibc-2.7/time/stime.c deleted file mode 100644 index 5ed1b040..00000000 --- a/bin/glibc-2.7/time/stime.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - -/* Set the system clock to *WHEN. */ - -int -stime (when) - const time_t *when; -{ - if (when == NULL) - { - __set_errno (EINVAL); - return -1; - } - - __set_errno (ENOSYS); - return -1; -} - -stub_warning (stime) -#include diff --git a/bin/glibc-2.7/time/strftime.c b/bin/glibc-2.7/time/strftime.c deleted file mode 100644 index 5a4917e3..00000000 --- a/bin/glibc-2.7/time/strftime.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 1991-1999, 2000, 2001, 2002, 2003, 2004 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -size_t -strftime (char *s, size_t maxsize, const char *format, const struct tm *tp) -{ - return __strftime_l (s, maxsize, format, tp, _NL_CURRENT_LOCALE); -} -libc_hidden_def (strftime) diff --git a/bin/glibc-2.7/time/strftime_l.c b/bin/glibc-2.7/time/strftime_l.c deleted file mode 100644 index 4a57b159..00000000 --- a/bin/glibc-2.7/time/strftime_l.c +++ /dev/null @@ -1,1444 +0,0 @@ -/* Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifdef _LIBC -# define USE_IN_EXTENDED_LOCALE_MODEL 1 -# define HAVE_LIMITS_H 1 -# define HAVE_MBLEN 1 -# define HAVE_MBRLEN 1 -# define HAVE_STRUCT_ERA_ENTRY 1 -# define HAVE_TM_GMTOFF 1 -# define HAVE_TM_ZONE 1 -# define HAVE_TZNAME 1 -# define HAVE_TZSET 1 -# define MULTIBYTE_IS_FORMAT_SAFE 1 -# define STDC_HEADERS 1 -# include "../locale/localeinfo.h" -#endif - -#if defined emacs && !defined HAVE_BCOPY -# define HAVE_MEMCPY 1 -#endif - -#include -#include /* Some systems define `time_t' here. */ - -#ifdef TIME_WITH_SYS_TIME -# include -# include -#else -# ifdef HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif -#if HAVE_TZNAME -extern char *tzname[]; -#endif - -/* Do multibyte processing if multibytes are supported, unless - multibyte sequences are safe in formats. Multibyte sequences are - safe if they cannot contain byte sequences that look like format - conversion specifications. The GNU C Library uses UTF8 multibyte - encoding, which is safe for formats, but strftime.c can be used - with other C libraries that use unsafe encodings. */ -#define DO_MULTIBYTE (HAVE_MBLEN && ! MULTIBYTE_IS_FORMAT_SAFE) - -#if DO_MULTIBYTE -# if HAVE_MBRLEN -# include -# else - /* Simulate mbrlen with mblen as best we can. */ -# define mbstate_t int -# define mbrlen(s, n, ps) mblen (s, n) -# define mbsinit(ps) (*(ps) == 0) -# endif - static const mbstate_t mbstate_zero; -#endif - -#if HAVE_LIMITS_H -# include -#endif - -#if STDC_HEADERS -# include -# include -# include -# include -#else -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef COMPILE_WIDE -# include -# define CHAR_T wchar_t -# define UCHAR_T unsigned int -# define L_(Str) L##Str -# define NLW(Sym) _NL_W##Sym - -# define MEMCPY(d, s, n) __wmemcpy (d, s, n) -# define STRLEN(s) __wcslen (s) - -#else -# define CHAR_T char -# define UCHAR_T unsigned char -# define L_(Str) Str -# define NLW(Sym) Sym - -# if !defined STDC_HEADERS && !defined HAVE_MEMCPY -# define MEMCPY(d, s, n) bcopy ((s), (d), (n)) -# else -# define MEMCPY(d, s, n) memcpy ((d), (s), (n)) -# endif -# define STRLEN(s) strlen (s) - -# ifdef _LIBC -# define MEMPCPY(d, s, n) __mempcpy (d, s, n) -# else -# ifndef HAVE_MEMPCPY -# define MEMPCPY(d, s, n) ((void *) ((char *) memcpy (d, s, n) + (n))) -# endif -# endif -#endif - -#ifndef PTR -# ifdef __STDC__ -# define PTR void * -# else -# define PTR char * -# endif -#endif - -#ifndef CHAR_BIT -# define CHAR_BIT 8 -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#define TYPE_SIGNED(t) ((t) -1 < 0) - -/* Bound on length of the string representing an integer value of type t. - Subtract one for the sign bit if t is signed; - 302 / 1000 is log10 (2) rounded up; - add one for integer division truncation; - add one more for a minus sign if t is signed. */ -#define INT_STRLEN_BOUND(t) \ - ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t)) - -#define TM_YEAR_BASE 1900 - -#ifndef __isleap -/* Nonzero if YEAR is a leap year (every 4 years, - except every 100th isn't, and every 400th is). */ -# define __isleap(year) \ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) -#endif - - -#ifdef _LIBC -# define tzname __tzname -# define tzset __tzset -#endif - -#if !HAVE_TM_GMTOFF -/* Portable standalone applications should supply a "time_r.h" that - declares a POSIX-compliant localtime_r, for the benefit of older - implementations that lack localtime_r or have a nonstandard one. - Similarly for gmtime_r. See the gnulib time_r module for one way - to implement this. */ -# include "time_r.h" -# undef __gmtime_r -# undef __localtime_r -# define __gmtime_r gmtime_r -# define __localtime_r localtime_r -#endif - - -#if !defined memset && !defined HAVE_MEMSET && !defined _LIBC -/* Some systems lack the `memset' function and we don't want to - introduce additional dependencies. */ -/* The SGI compiler reportedly barfs on the trailing null - if we use a string constant as the initializer. 28 June 1997, rms. */ -static const CHAR_T spaces[16] = /* " " */ -{ - L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '), - L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' ') -}; -static const CHAR_T zeroes[16] = /* "0000000000000000" */ -{ - L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'), - L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0') -}; - -# define memset_space(P, Len) \ - do { \ - int _len = (Len); \ - \ - do \ - { \ - int _this = _len > 16 ? 16 : _len; \ - (P) = MEMPCPY ((P), spaces, _this * sizeof (CHAR_T)); \ - _len -= _this; \ - } \ - while (_len > 0); \ - } while (0) - -# define memset_zero(P, Len) \ - do { \ - int _len = (Len); \ - \ - do \ - { \ - int _this = _len > 16 ? 16 : _len; \ - (P) = MEMPCPY ((P), zeroes, _this * sizeof (CHAR_T)); \ - _len -= _this; \ - } \ - while (_len > 0); \ - } while (0) -#else -# ifdef COMPILE_WIDE -# define memset_space(P, Len) (wmemset ((P), L' ', (Len)), (P) += (Len)) -# define memset_zero(P, Len) (wmemset ((P), L'0', (Len)), (P) += (Len)) -# else -# define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) -# define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len)) -# endif -#endif - -#define add(n, f) \ - do \ - { \ - int _n = (n); \ - int _delta = width - _n; \ - int _incr = _n + (_delta > 0 ? _delta : 0); \ - if ((size_t) _incr >= maxsize - i) \ - return 0; \ - if (p) \ - { \ - if (_delta > 0) \ - { \ - if (pad == L_('0')) \ - memset_zero (p, _delta); \ - else \ - memset_space (p, _delta); \ - } \ - f; \ - p += _n; \ - } \ - i += _incr; \ - } while (0) - -#define cpy(n, s) \ - add ((n), \ - if (to_lowcase) \ - memcpy_lowcase (p, (s), _n LOCALE_ARG); \ - else if (to_uppcase) \ - memcpy_uppcase (p, (s), _n LOCALE_ARG); \ - else \ - MEMCPY ((PTR) p, (const PTR) (s), _n)) - -#ifdef COMPILE_WIDE -# ifndef USE_IN_EXTENDED_LOCALE_MODEL -# undef __mbsrtowcs_l -# define __mbsrtowcs_l(d, s, l, st, loc) __mbsrtowcs (d, s, l, st) -# endif -# define widen(os, ws, l) \ - { \ - mbstate_t __st; \ - const char *__s = os; \ - memset (&__st, '\0', sizeof (__st)); \ - l = __mbsrtowcs_l (NULL, &__s, 0, &__st, loc); \ - ws = alloca ((l + 1) * sizeof (wchar_t)); \ - (void) __mbsrtowcs_l (ws, &__s, l, &__st, loc); \ - } -#endif - - -#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL -/* We use this code also for the extended locale handling where the - function gets as an additional argument the locale which has to be - used. To access the values we have to redefine the _NL_CURRENT - macro. */ -# define strftime __strftime_l -# define wcsftime __wcsftime_l -# undef _NL_CURRENT -# define _NL_CURRENT(category, item) \ - (current->values[_NL_ITEM_INDEX (item)].string) -# define LOCALE_PARAM , loc -# define LOCALE_ARG , loc -# define LOCALE_PARAM_DECL __locale_t loc; -# define LOCALE_PARAM_PROTO , __locale_t loc -# define HELPER_LOCALE_ARG , current -#else -# define LOCALE_PARAM -# define LOCALE_PARAM_PROTO -# define LOCALE_ARG -# define LOCALE_PARAM_DECL -# ifdef _LIBC -# define HELPER_LOCALE_ARG , _NL_CURRENT_DATA (LC_TIME) -# else -# define HELPER_LOCALE_ARG -# endif -#endif - -#ifdef COMPILE_WIDE -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define TOUPPER(Ch, L) __towupper_l (Ch, L) -# define TOLOWER(Ch, L) __towlower_l (Ch, L) -# else -# define TOUPPER(Ch, L) towupper (Ch) -# define TOLOWER(Ch, L) towlower (Ch) -# endif -#else -# ifdef _LIBC -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define TOUPPER(Ch, L) __toupper_l (Ch, L) -# define TOLOWER(Ch, L) __tolower_l (Ch, L) -# else -# define TOUPPER(Ch, L) toupper (Ch) -# define TOLOWER(Ch, L) tolower (Ch) -# endif -# else -# define TOUPPER(Ch, L) (islower (Ch) ? toupper (Ch) : (Ch)) -# define TOLOWER(Ch, L) (isupper (Ch) ? tolower (Ch) : (Ch)) -# endif -#endif -/* We don't use `isdigit' here since the locale dependent - interpretation is not what we want here. We only need to accept - the arabic digits in the ASCII range. One day there is perhaps a - more reliable way to accept other sets of digits. */ -#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9) - -static CHAR_T *memcpy_lowcase (CHAR_T *dest, const CHAR_T *src, - size_t len LOCALE_PARAM_PROTO) __THROW; - -static CHAR_T * -memcpy_lowcase (dest, src, len LOCALE_PARAM) - CHAR_T *dest; - const CHAR_T *src; - size_t len; - LOCALE_PARAM_DECL -{ - while (len-- > 0) - dest[len] = TOLOWER ((UCHAR_T) src[len], loc); - return dest; -} - -static CHAR_T *memcpy_uppcase (CHAR_T *dest, const CHAR_T *src, - size_t len LOCALE_PARAM_PROTO) __THROW; - -static CHAR_T * -memcpy_uppcase (dest, src, len LOCALE_PARAM) - CHAR_T *dest; - const CHAR_T *src; - size_t len; - LOCALE_PARAM_DECL -{ - while (len-- > 0) - dest[len] = TOUPPER ((UCHAR_T) src[len], loc); - return dest; -} - - -#if ! HAVE_TM_GMTOFF -/* Yield the difference between *A and *B, - measured in seconds, ignoring leap seconds. */ -# define tm_diff ftime_tm_diff -static int tm_diff (const struct tm *, const struct tm *) __THROW; -static int -tm_diff (a, b) - const struct tm *a; - const struct tm *b; -{ - /* Compute intervening leap days correctly even if year is negative. - Take care to avoid int overflow in leap day calculations, - but it's OK to assume that A and B are close to each other. */ - int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3); - int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3); - int a100 = a4 / 25 - (a4 % 25 < 0); - int b100 = b4 / 25 - (b4 % 25 < 0); - int a400 = a100 >> 2; - int b400 = b100 >> 2; - int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); - int years = a->tm_year - b->tm_year; - int days = (365 * years + intervening_leap_days - + (a->tm_yday - b->tm_yday)); - return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) - + (a->tm_min - b->tm_min)) - + (a->tm_sec - b->tm_sec)); -} -#endif /* ! HAVE_TM_GMTOFF */ - - - -/* The number of days from the first day of the first ISO week of this - year to the year day YDAY with week day WDAY. ISO weeks start on - Monday; the first ISO week has the year's first Thursday. YDAY may - be as small as YDAY_MINIMUM. */ -#define ISO_WEEK_START_WDAY 1 /* Monday */ -#define ISO_WEEK1_WDAY 4 /* Thursday */ -#define YDAY_MINIMUM (-366) -static int iso_week_days (int, int) __THROW; -#ifdef __GNUC__ -__inline__ -#endif -static int -iso_week_days (yday, wday) - int yday; - int wday; -{ - /* Add enough to the first operand of % to make it nonnegative. */ - int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7; - return (yday - - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7 - + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY); -} - - -#if !(defined _NL_CURRENT || HAVE_STRFTIME) -static CHAR_T const weekday_name[][10] = - { - L_("Sunday"), L_("Monday"), L_("Tuesday"), L_("Wednesday"), - L_("Thursday"), L_("Friday"), L_("Saturday") - }; -static CHAR_T const month_name[][10] = - { - L_("January"), L_("February"), L_("March"), L_("April"), L_("May"), - L_("June"), L_("July"), L_("August"), L_("September"), L_("October"), - L_("November"), L_("December") - }; -#endif - - -#ifdef emacs -# define my_strftime emacs_strftimeu -# define ut_argument , ut -# define ut_argument_spec int ut; -# define ut_argument_spec_iso , int ut -#else -# ifdef COMPILE_WIDE -# define my_strftime wcsftime -# define nl_get_alt_digit _nl_get_walt_digit -# else -# define my_strftime strftime -# define nl_get_alt_digit _nl_get_alt_digit -# endif -# define ut_argument -# define ut_argument_spec -# define ut_argument_spec_iso -/* We don't have this information in general. */ -# define ut 0 -#endif - -static size_t __strftime_internal (CHAR_T *, size_t, const CHAR_T *, - const struct tm *, bool ut_argument_spec_iso - LOCALE_PARAM_PROTO) __THROW; - -/* Write information from TP into S according to the format - string FORMAT, writing no more that MAXSIZE characters - (including the terminating '\0') and returning number of - characters written. If S is NULL, nothing will be written - anywhere, so to determine how many characters would be - written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */ - -size_t -my_strftime (s, maxsize, format, tp ut_argument LOCALE_PARAM) - CHAR_T *s; - size_t maxsize; - const CHAR_T *format; - const struct tm *tp; - ut_argument_spec - LOCALE_PARAM_DECL -{ -#if !defined _LIBC && HAVE_TZNAME && HAVE_TZSET - /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime. - Work around this bug by copying *tp before it might be munged. */ - struct tm tmcopy; - tmcopy = *tp; - tp = &tmcopy; -#endif - return __strftime_internal (s, maxsize, format, tp, false - ut_argument LOCALE_ARG); -} -#ifdef _LIBC -libc_hidden_def (my_strftime) -#endif - -static size_t -__strftime_internal (s, maxsize, format, tp, tzset_called ut_argument - LOCALE_PARAM) - CHAR_T *s; - size_t maxsize; - const CHAR_T *format; - const struct tm *tp; - bool tzset_called; - ut_argument_spec - LOCALE_PARAM_DECL -{ -#if defined _LIBC && defined USE_IN_EXTENDED_LOCALE_MODEL - struct locale_data *const current = loc->__locales[LC_TIME]; -#endif - - int hour12 = tp->tm_hour; -#ifdef _NL_CURRENT - /* We cannot make the following values variables since we must delay - the evaluation of these values until really needed since some - expressions might not be valid in every situation. The `struct tm' - might be generated by a strptime() call that initialized - only a few elements. Dereference the pointers only if the format - requires this. Then it is ok to fail if the pointers are invalid. */ -# define a_wkday \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday)) -# define f_wkday \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday)) -# define a_month \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon)) -# define f_month \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon)) -# define ampm \ - ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \ - ? NLW(PM_STR) : NLW(AM_STR))) - -# define aw_len STRLEN (a_wkday) -# define am_len STRLEN (a_month) -# define ap_len STRLEN (ampm) -#else -# if !HAVE_STRFTIME -# define f_wkday (weekday_name[tp->tm_wday]) -# define f_month (month_name[tp->tm_mon]) -# define a_wkday f_wkday -# define a_month f_month -# define ampm (L_("AMPM") + 2 * (tp->tm_hour > 11)) - - size_t aw_len = 3; - size_t am_len = 3; - size_t ap_len = 2; -# endif -#endif - const char *zone; - size_t i = 0; - CHAR_T *p = s; - const CHAR_T *f; -#if DO_MULTIBYTE && !defined COMPILE_WIDE - const char *format_end = NULL; -#endif - - zone = NULL; -#if HAVE_TM_ZONE - /* The POSIX test suite assumes that setting - the environment variable TZ to a new value before calling strftime() - will influence the result (the %Z format) even if the information in - TP is computed with a totally different time zone. - This is bogus: though POSIX allows bad behavior like this, - POSIX does not require it. Do the right thing instead. */ - zone = (const char *) tp->tm_zone; -#endif -#if HAVE_TZNAME - if (ut) - { - if (! (zone && *zone)) - zone = "GMT"; - } - else - { - /* POSIX.1 requires that local time zone information is used as - though strftime called tzset. */ -# if HAVE_TZSET - if (!tzset_called) - tzset (); - tzset_called = true; -# endif - } -#endif - - if (hour12 > 12) - hour12 -= 12; - else - if (hour12 == 0) - hour12 = 12; - - for (f = format; *f != '\0'; ++f) - { - int pad = 0; /* Padding for number ('-', '_', or 0). */ - int modifier; /* Field modifier ('E', 'O', or 0). */ - int digits; /* Max digits for numeric format. */ - int number_value; /* Numeric value to be printed. */ - int negative_number; /* 1 if the number is negative. */ - const CHAR_T *subfmt; - CHAR_T *bufp; - CHAR_T buf[1 + (sizeof (int) < sizeof (time_t) - ? INT_STRLEN_BOUND (time_t) - : INT_STRLEN_BOUND (int))]; - int width = -1; - int to_lowcase = 0; - int to_uppcase = 0; - int change_case = 0; - int format_char; - -#if DO_MULTIBYTE && !defined COMPILE_WIDE - switch (*f) - { - case L_('%'): - break; - - case L_('\b'): case L_('\t'): case L_('\n'): - case L_('\v'): case L_('\f'): case L_('\r'): - case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'): - case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'): - case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'): - case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'): - case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'): - case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'): - case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'): - case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'): - case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'): - case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'): - case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'): - case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'): - case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'): - case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'): - case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'): - case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'): - case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'): - case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'): - case L_('~'): - /* The C Standard requires these 98 characters (plus '%') to - be in the basic execution character set. None of these - characters can start a multibyte sequence, so they need - not be analyzed further. */ - add (1, *p = *f); - continue; - - default: - /* Copy this multibyte sequence until we reach its end, find - an error, or come back to the initial shift state. */ - { - mbstate_t mbstate = mbstate_zero; - size_t len = 0; - size_t fsize; - - if (! format_end) - format_end = f + strlen (f) + 1; - fsize = format_end - f; - - do - { - size_t bytes = mbrlen (f + len, fsize - len, &mbstate); - - if (bytes == 0) - break; - - if (bytes == (size_t) -2) - { - len += strlen (f + len); - break; - } - - if (bytes == (size_t) -1) - { - len++; - break; - } - - len += bytes; - } - while (! mbsinit (&mbstate)); - - cpy (len, f); - f += len - 1; - continue; - } - } - -#else /* ! DO_MULTIBYTE */ - - /* Either multibyte encodings are not supported, they are - safe for formats, so any non-'%' byte can be copied through, - or this is the wide character version. */ - if (*f != L_('%')) - { - add (1, *p = *f); - continue; - } - -#endif /* ! DO_MULTIBYTE */ - - /* Check for flags that can modify a format. */ - while (1) - { - switch (*++f) - { - /* This influences the number formats. */ - case L_('_'): - case L_('-'): - case L_('0'): - pad = *f; - continue; - - /* This changes textual output. */ - case L_('^'): - to_uppcase = 1; - continue; - case L_('#'): - change_case = 1; - continue; - - default: - break; - } - break; - } - - /* As a GNU extension we allow to specify the field width. */ - if (ISDIGIT (*f)) - { - width = 0; - do - { - if (width > INT_MAX / 10 - || (width == INT_MAX / 10 && *f - L_('0') > INT_MAX % 10)) - /* Avoid overflow. */ - width = INT_MAX; - else - { - width *= 10; - width += *f - L_('0'); - } - ++f; - } - while (ISDIGIT (*f)); - } - - /* Check for modifiers. */ - switch (*f) - { - case L_('E'): - case L_('O'): - modifier = *f++; - break; - - default: - modifier = 0; - break; - } - - /* Now do the specified format. */ - format_char = *f; - switch (format_char) - { -#define DO_NUMBER(d, v) \ - digits = d > width ? d : width; \ - number_value = v; goto do_number -#define DO_NUMBER_SPACEPAD(d, v) \ - digits = d > width ? d : width; \ - number_value = v; goto do_number_spacepad - - case L_('%'): - if (modifier != 0) - goto bad_format; - add (1, *p = *f); - break; - - case L_('a'): - if (modifier != 0) - goto bad_format; - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (aw_len, a_wkday); - break; -#else - goto underlying_strftime; -#endif - - case 'A': - if (modifier != 0) - goto bad_format; - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (STRLEN (f_wkday), f_wkday); - break; -#else - goto underlying_strftime; -#endif - - case L_('b'): - case L_('h'): - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } - if (modifier != 0) - goto bad_format; -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (am_len, a_month); - break; -#else - goto underlying_strftime; -#endif - - case L_('B'): - if (modifier != 0) - goto bad_format; - if (change_case) - { - to_uppcase = 1; - to_lowcase = 0; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (STRLEN (f_month), f_month); - break; -#else - goto underlying_strftime; -#endif - - case L_('c'): - if (modifier == L_('O')) - goto bad_format; -#ifdef _NL_CURRENT - if (! (modifier == 'E' - && (*(subfmt = - (const CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(ERA_D_T_FMT))) - != '\0'))) - subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT)); -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# else - subfmt = L_("%a %b %e %H:%M:%S %Y"); -# endif -#endif - - subformat: - { - CHAR_T *old_start = p; - size_t len = __strftime_internal (NULL, (size_t) -1, subfmt, - tp, tzset_called ut_argument - LOCALE_ARG); - add (len, __strftime_internal (p, maxsize - i, subfmt, - tp, tzset_called ut_argument - LOCALE_ARG)); - - if (to_uppcase) - while (old_start < p) - { - *old_start = TOUPPER ((UCHAR_T) *old_start, loc); - ++old_start; - } - } - break; - -#if HAVE_STRFTIME && ! (defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY) - underlying_strftime: - { - /* The relevant information is available only via the - underlying strftime implementation, so use that. */ - char ufmt[4]; - char *u = ufmt; - char ubuf[1024]; /* enough for any single format in practice */ - size_t len; - /* Make sure we're calling the actual underlying strftime. - In some cases, config.h contains something like - "#define strftime rpl_strftime". */ -# ifdef strftime -# undef strftime - size_t strftime (); -# endif - - *u++ = '%'; - if (modifier != 0) - *u++ = modifier; - *u++ = format_char; - *u = '\0'; - len = strftime (ubuf, sizeof ubuf, ufmt, tp); - if (len == 0 && ubuf[0] != '\0') - return 0; - cpy (len, ubuf); - } - break; -#endif - - case L_('C'): - if (modifier == L_('O')) - goto bad_format; - if (modifier == L_('E')) - { -#if HAVE_STRUCT_ERA_ENTRY - struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG); - if (era) - { -# ifdef COMPILE_WIDE - size_t len = __wcslen (era->era_wname); - cpy (len, era->era_wname); -# else - size_t len = strlen (era->era_name); - cpy (len, era->era_name); -# endif - break; - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - - { - int year = tp->tm_year + TM_YEAR_BASE; - DO_NUMBER (1, year / 100 - (year % 100 < 0)); - } - - case L_('x'): - if (modifier == L_('O')) - goto bad_format; -#ifdef _NL_CURRENT - if (! (modifier == L_('E') - && (*(subfmt = - (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT))) - != L_('\0')))) - subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT)); - goto subformat; -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# else - /* Fall through. */ -# endif -#endif - case L_('D'): - if (modifier != 0) - goto bad_format; - subfmt = L_("%m/%d/%y"); - goto subformat; - - case L_('d'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_mday); - - case L_('e'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER_SPACEPAD (2, tp->tm_mday); - - /* All numeric formats set DIGITS and NUMBER_VALUE and then - jump to one of these two labels. */ - - do_number_spacepad: - /* Force `_' flag unless overwritten by `0' or '-' flag. */ - if (pad != L_('0') && pad != L_('-')) - pad = L_('_'); - - do_number: - /* Format the number according to the MODIFIER flag. */ - - if (modifier == L_('O') && 0 <= number_value) - { -#ifdef _NL_CURRENT - /* Get the locale specific alternate representation of - the number NUMBER_VALUE. If none exist NULL is returned. */ - const CHAR_T *cp = nl_get_alt_digit (number_value - HELPER_LOCALE_ARG); - - if (cp != NULL) - { - size_t digitlen = STRLEN (cp); - if (digitlen != 0) - { - cpy (digitlen, cp); - break; - } - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - { - unsigned int u = number_value; - - bufp = buf + sizeof (buf) / sizeof (buf[0]); - negative_number = number_value < 0; - - if (negative_number) - u = -u; - - do - *--bufp = u % 10 + L_('0'); - while ((u /= 10) != 0); - } - - do_number_sign_and_padding: - if (negative_number) - *--bufp = L_('-'); - - if (pad != L_('-')) - { - int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0])) - - bufp); - - if (padding > 0) - { - if (pad == L_('_')) - { - if ((size_t) padding >= maxsize - i) - return 0; - - if (p) - memset_space (p, padding); - i += padding; - width = width > padding ? width - padding : 0; - } - else - { - if ((size_t) digits >= maxsize - i) - return 0; - - if (negative_number) - { - ++bufp; - - if (p) - *p++ = L_('-'); - ++i; - } - - if (p) - memset_zero (p, padding); - i += padding; - width = 0; - } - } - } - - cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp); - break; - - case L_('F'): - if (modifier != 0) - goto bad_format; - subfmt = L_("%Y-%m-%d"); - goto subformat; - - case L_('H'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_hour); - - case L_('I'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, hour12); - - case L_('k'): /* GNU extension. */ - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER_SPACEPAD (2, tp->tm_hour); - - case L_('l'): /* GNU extension. */ - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER_SPACEPAD (2, hour12); - - case L_('j'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (3, 1 + tp->tm_yday); - - case L_('M'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_min); - - case L_('m'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_mon + 1); - - case L_('n'): - add (1, *p = L_('\n')); - break; - - case L_('P'): - to_lowcase = 1; -#if !defined _NL_CURRENT && HAVE_STRFTIME - format_char = L_('p'); -#endif - /* FALLTHROUGH */ - - case L_('p'): - if (change_case) - { - to_uppcase = 0; - to_lowcase = 1; - } -#if defined _NL_CURRENT || !HAVE_STRFTIME - cpy (ap_len, ampm); - break; -#else - goto underlying_strftime; -#endif - - case L_('R'): - subfmt = L_("%H:%M"); - goto subformat; - - case L_('r'): -#if !defined _NL_CURRENT && HAVE_STRFTIME - goto underlying_strftime; -#else -# ifdef _NL_CURRENT - if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(T_FMT_AMPM))) - == L_('\0')) -# endif - subfmt = L_("%I:%M:%S %p"); - goto subformat; -#endif - - case L_('S'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, tp->tm_sec); - - case L_('s'): /* GNU extension. */ - { - struct tm ltm; - time_t t; - - ltm = *tp; - t = mktime (<m); - - /* Generate string value for T using time_t arithmetic; - this works even if sizeof (long) < sizeof (time_t). */ - - bufp = buf + sizeof (buf) / sizeof (buf[0]); - negative_number = t < 0; - - do - { - int d = t % 10; - t /= 10; - - if (negative_number) - { - d = -d; - - /* Adjust if division truncates to minus infinity. */ - if (0 < -1 % 10 && d < 0) - { - t++; - d += 10; - } - } - - *--bufp = d + L_('0'); - } - while (t != 0); - - digits = 1; - goto do_number_sign_and_padding; - } - - case L_('X'): - if (modifier == L_('O')) - goto bad_format; -#ifdef _NL_CURRENT - if (! (modifier == L_('E') - && (*(subfmt = - (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT))) - != L_('\0')))) - subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT)); - goto subformat; -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# else - /* Fall through. */ -# endif -#endif - case L_('T'): - subfmt = L_("%H:%M:%S"); - goto subformat; - - case L_('t'): - add (1, *p = L_('\t')); - break; - - case L_('u'): - DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1); - - case L_('U'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7); - - case L_('V'): - case L_('g'): - case L_('G'): - if (modifier == L_('E')) - goto bad_format; - { - int year = tp->tm_year + TM_YEAR_BASE; - int days = iso_week_days (tp->tm_yday, tp->tm_wday); - - if (days < 0) - { - /* This ISO week belongs to the previous year. */ - year--; - days = iso_week_days (tp->tm_yday + (365 + __isleap (year)), - tp->tm_wday); - } - else - { - int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)), - tp->tm_wday); - if (0 <= d) - { - /* This ISO week belongs to the next year. */ - year++; - days = d; - } - } - - switch (*f) - { - case L_('g'): - DO_NUMBER (2, (year % 100 + 100) % 100); - - case L_('G'): - DO_NUMBER (1, year); - - default: - DO_NUMBER (2, days / 7 + 1); - } - } - - case L_('W'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7); - - case L_('w'): - if (modifier == L_('E')) - goto bad_format; - - DO_NUMBER (1, tp->tm_wday); - - case L_('Y'): - if (modifier == 'E') - { -#if HAVE_STRUCT_ERA_ENTRY - struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG); - if (era) - { -# ifdef COMPILE_WIDE - subfmt = era->era_wformat; -# else - subfmt = era->era_format; -# endif - goto subformat; - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - if (modifier == L_('O')) - goto bad_format; - else - DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE); - - case L_('y'): - if (modifier == L_('E')) - { -#if HAVE_STRUCT_ERA_ENTRY - struct era_entry *era = _nl_get_era_entry (tp HELPER_LOCALE_ARG); - if (era) - { - int delta = tp->tm_year - era->start_date[0]; - DO_NUMBER (1, (era->offset - + delta * era->absolute_direction)); - } -#else -# if HAVE_STRFTIME - goto underlying_strftime; -# endif -#endif - } - DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100); - - case L_('Z'): - if (change_case) - { - to_uppcase = 0; - to_lowcase = 1; - } - -#if HAVE_TZNAME - /* The tzset() call might have changed the value. */ - if (!(zone && *zone) && tp->tm_isdst >= 0) - zone = tzname[tp->tm_isdst]; -#endif - if (! zone) - zone = ""; - -#ifdef COMPILE_WIDE - { - /* The zone string is always given in multibyte form. We have - to transform it first. */ - wchar_t *wczone; - size_t len; - widen (zone, wczone, len); - cpy (len, wczone); - } -#else - cpy (strlen (zone), zone); -#endif - break; - - case L_('z'): - if (tp->tm_isdst < 0) - break; - - { - int diff; -#if HAVE_TM_GMTOFF - diff = tp->tm_gmtoff; -#else - if (ut) - diff = 0; - else - { - struct tm gtm; - struct tm ltm; - time_t lt; - - ltm = *tp; - lt = mktime (<m); - - if (lt == (time_t) -1) - { - /* mktime returns -1 for errors, but -1 is also a - valid time_t value. Check whether an error really - occurred. */ - struct tm tm; - - if (! __localtime_r (<, &tm) - || ((ltm.tm_sec ^ tm.tm_sec) - | (ltm.tm_min ^ tm.tm_min) - | (ltm.tm_hour ^ tm.tm_hour) - | (ltm.tm_mday ^ tm.tm_mday) - | (ltm.tm_mon ^ tm.tm_mon) - | (ltm.tm_year ^ tm.tm_year))) - break; - } - - if (! __gmtime_r (<, >m)) - break; - - diff = tm_diff (<m, >m); - } -#endif - - if (diff < 0) - { - add (1, *p = L_('-')); - diff = -diff; - } - else - add (1, *p = L_('+')); - - diff /= 60; - DO_NUMBER (4, (diff / 60) * 100 + diff % 60); - } - - case L_('\0'): /* GNU extension: % at end of format. */ - --f; - /* Fall through. */ - default: - /* Unknown format; output the format, including the '%', - since this is most likely the right thing to do if a - multibyte string has been misparsed. */ - bad_format: - { - int flen; - for (flen = 1; f[1 - flen] != L_('%'); flen++) - continue; - cpy (flen, &f[1 - flen]); - } - break; - } - } - - if (p && maxsize != 0) - *p = L_('\0'); - return i; -} - - -#ifdef emacs -/* For Emacs we have a separate interface which corresponds to the normal - strftime function and does not have the extra information whether the - TP arguments comes from a `gmtime' call or not. */ -size_t -emacs_strftime (s, maxsize, format, tp) - char *s; - size_t maxsize; - const char *format; - const struct tm *tp; -{ - return my_strftime (s, maxsize, format, tp, 0); -} -#endif - -#if defined _LIBC && !defined COMPILE_WIDE -weak_alias (__strftime_l, strftime_l) -#endif diff --git a/bin/glibc-2.7/time/strptime.c b/bin/glibc-2.7/time/strptime.c deleted file mode 100644 index 18af49bb..00000000 --- a/bin/glibc-2.7/time/strptime.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Convert a string representation of time to a time value. - Copyright (C) 1996-2000, 2001, 2002, 2004, 2007 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* XXX This version of the implementation is not really complete. - Some of the fields cannot add information alone. But if seeing - some of them in the same format (such as year, week and weekday) - this is enough information for determining the date. */ - -#include -#include - - -char * -strptime (buf, format, tm) - const char *buf; - const char *format; - struct tm *tm; -{ - return __strptime_internal (buf, format, tm, NULL, _NL_CURRENT_LOCALE); -} -libc_hidden_def (strptime) diff --git a/bin/glibc-2.7/time/strptime_l.c b/bin/glibc-2.7/time/strptime_l.c deleted file mode 100644 index 59a557c2..00000000 --- a/bin/glibc-2.7/time/strptime_l.c +++ /dev/null @@ -1,1230 +0,0 @@ -/* Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#ifdef _LIBC -# include "../locale/localeinfo.h" -#endif - - -#ifndef __P -# if defined __GNUC__ || (defined __STDC__ && __STDC__) -# define __P(args) args -# else -# define __P(args) () -# endif /* GCC. */ -#endif /* Not __P. */ - - -#if ! HAVE_LOCALTIME_R && ! defined localtime_r -# ifdef _LIBC -# define localtime_r __localtime_r -# else -/* Approximate localtime_r as best we can in its absence. */ -# define localtime_r my_localtime_r -static struct tm *localtime_r __P ((const time_t *, struct tm *)); -static struct tm * -localtime_r (t, tp) - const time_t *t; - struct tm *tp; -{ - struct tm *l = localtime (t); - if (! l) - return 0; - *tp = *l; - return tp; -} -# endif /* ! _LIBC */ -#endif /* ! HAVE_LOCALTIME_R && ! defined (localtime_r) */ - - -#define match_char(ch1, ch2) if (ch1 != ch2) return NULL -#if defined __GNUC__ && __GNUC__ >= 2 -# define match_string(cs1, s2) \ - ({ size_t len = strlen (cs1); \ - int result = __strncasecmp_l ((cs1), (s2), len, locale) == 0; \ - if (result) (s2) += len; \ - result; }) -#else -/* Oh come on. Get a reasonable compiler. */ -# define match_string(cs1, s2) \ - (strncasecmp ((cs1), (s2), strlen (cs1)) ? 0 : ((s2) += strlen (cs1), 1)) -#endif -/* We intentionally do not use isdigit() for testing because this will - lead to problems with the wide character version. */ -#define get_number(from, to, n) \ - do { \ - int __n = n; \ - val = 0; \ - while (*rp == ' ') \ - ++rp; \ - if (*rp < '0' || *rp > '9') \ - return NULL; \ - do { \ - val *= 10; \ - val += *rp++ - '0'; \ - } while (--__n > 0 && val * 10 <= to && *rp >= '0' && *rp <= '9'); \ - if (val < from || val > to) \ - return NULL; \ - } while (0) -#ifdef _NL_CURRENT -# define get_alt_number(from, to, n) \ - ({ \ - __label__ do_normal; \ - \ - if (s.decided != raw) \ - { \ - val = _nl_parse_alt_digit (&rp HELPER_LOCALE_ARG); \ - if (val == -1 && s.decided != loc) \ - { \ - s.decided = loc; \ - goto do_normal; \ - } \ - if (val < from || val > to) \ - return NULL; \ - } \ - else \ - { \ - do_normal: \ - get_number (from, to, n); \ - } \ - 0; \ - }) -#else -# define get_alt_number(from, to, n) \ - /* We don't have the alternate representation. */ \ - get_number(from, to, n) -#endif -#define recursive(new_fmt) \ - (*(new_fmt) != '\0' \ - && (rp = __strptime_internal (rp, (new_fmt), tm, &s LOCALE_ARG)) != NULL) - - -#ifdef _LIBC -/* This is defined in locale/C-time.c in the GNU libc. */ -extern const struct locale_data _nl_C_LC_TIME attribute_hidden; - -# define weekday_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (DAY_1)].string) -# define ab_weekday_name \ - (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABDAY_1)].string) -# define month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (MON_1)].string) -# define ab_month_name (&_nl_C_LC_TIME.values[_NL_ITEM_INDEX (ABMON_1)].string) -# define HERE_D_T_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_T_FMT)].string) -# define HERE_D_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (D_FMT)].string) -# define HERE_AM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (AM_STR)].string) -# define HERE_PM_STR (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (PM_STR)].string) -# define HERE_T_FMT_AMPM \ - (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (T_FMT_AMPM)].string) -# define HERE_T_FMT (_nl_C_LC_TIME.values[_NL_ITEM_INDEX (T_FMT)].string) - -# define strncasecmp(s1, s2, n) __strncasecmp (s1, s2, n) -#else -static char const weekday_name[][10] = - { - "Sunday", "Monday", "Tuesday", "Wednesday", - "Thursday", "Friday", "Saturday" - }; -static char const ab_weekday_name[][4] = - { - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" - }; -static char const month_name[][10] = - { - "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December" - }; -static char const ab_month_name[][4] = - { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" - }; -# define HERE_D_T_FMT "%a %b %e %H:%M:%S %Y" -# define HERE_D_FMT "%m/%d/%y" -# define HERE_AM_STR "AM" -# define HERE_PM_STR "PM" -# define HERE_T_FMT_AMPM "%I:%M:%S %p" -# define HERE_T_FMT "%H:%M:%S" - -static const unsigned short int __mon_yday[2][13] = - { - /* Normal years. */ - { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, - /* Leap years. */ - { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } - }; -#endif - -#if defined _LIBC -/* We use this code also for the extended locale handling where the - function gets as an additional argument the locale which has to be - used. To access the values we have to redefine the _NL_CURRENT - macro. */ -# define strptime __strptime_l -# undef _NL_CURRENT -# define _NL_CURRENT(category, item) \ - (current->values[_NL_ITEM_INDEX (item)].string) -# undef _NL_CURRENT_WORD -# define _NL_CURRENT_WORD(category, item) \ - (current->values[_NL_ITEM_INDEX (item)].word) -# define LOCALE_PARAM , locale -# define LOCALE_ARG , locale -# define LOCALE_PARAM_PROTO , __locale_t locale -# define LOCALE_PARAM_DECL __locale_t locale; -# define HELPER_LOCALE_ARG , current -# define ISSPACE(Ch) __isspace_l (Ch, locale) -#else -# define LOCALE_PARAM -# define LOCALE_ARG -# define LOCALE_PARAM_DECL -# define LOCALE_PARAM_PROTO -# define HELPER_LOCALE_ARG -# define ISSPACE(Ch) isspace (Ch) -#endif - - - - -#ifndef __isleap -/* Nonzero if YEAR is a leap year (every 4 years, - except every 100th isn't, and every 400th is). */ -# define __isleap(year) \ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) -#endif - -/* Compute the day of the week. */ -static void -day_of_the_week (struct tm *tm) -{ - /* We know that January 1st 1970 was a Thursday (= 4). Compute the - the difference between this data in the one on TM and so determine - the weekday. */ - int corr_year = 1900 + tm->tm_year - (tm->tm_mon < 2); - int wday = (-473 - + (365 * (tm->tm_year - 70)) - + (corr_year / 4) - - ((corr_year / 4) / 25) + ((corr_year / 4) % 25 < 0) - + (((corr_year / 4) / 25) / 4) - + __mon_yday[0][tm->tm_mon] - + tm->tm_mday - 1); - tm->tm_wday = ((wday % 7) + 7) % 7; -} - -/* Compute the day of the year. */ -static void -day_of_the_year (struct tm *tm) -{ - tm->tm_yday = (__mon_yday[__isleap (1900 + tm->tm_year)][tm->tm_mon] - + (tm->tm_mday - 1)); -} - - -#ifdef _LIBC -char * -internal_function -#else -static char * -#endif -__strptime_internal (rp, fmt, tmp, statep LOCALE_PARAM) - const char *rp; - const char *fmt; - struct tm *tmp; - void *statep; - LOCALE_PARAM_DECL -{ -#ifdef _LIBC - struct locale_data *const current = locale->__locales[LC_TIME]; -#endif - - const char *rp_backup; - const char *rp_longest; - int cnt; - int cnt_longest; - size_t val; - size_t num_eras; - struct era_entry *era = NULL; - enum ptime_locale_status { not, loc, raw } decided_longest; - struct __strptime_state - { - unsigned int have_I : 1; - unsigned int have_wday : 1; - unsigned int have_yday : 1; - unsigned int have_mon : 1; - unsigned int have_mday : 1; - unsigned int have_uweek : 1; - unsigned int have_wweek : 1; - unsigned int is_pm : 1; - unsigned int want_century : 1; - unsigned int want_era : 1; - unsigned int want_xday : 1; - enum ptime_locale_status decided : 2; - signed char week_no; - signed char century; - int era_cnt; - } s; - struct tm tmb; - struct tm *tm; - - if (statep == NULL) - { - memset (&s, 0, sizeof (s)); - s.century = -1; - s.era_cnt = -1; -#ifdef _NL_CURRENT - s.decided = not; -#else - s.decided = raw; -#endif - tm = tmp; - } - else - { - s = *(struct __strptime_state *) statep; - tmb = *tmp; - tm = &tmb; - } - - while (*fmt != '\0') - { - /* A white space in the format string matches 0 more or white - space in the input string. */ - if (ISSPACE (*fmt)) - { - while (ISSPACE (*rp)) - ++rp; - ++fmt; - continue; - } - - /* Any character but `%' must be matched by the same character - in the iput string. */ - if (*fmt != '%') - { - match_char (*fmt++, *rp++); - continue; - } - - ++fmt; - if (statep != NULL) - { - /* In recursive calls silently discard strftime modifiers. */ - while (*fmt == '-' || *fmt == '_' || *fmt == '0' - || *fmt == '^' || *fmt == '#') - ++fmt; - - /* And field width. */ - while (*fmt >= '0' && *fmt <= '9') - ++fmt; - } - -#ifndef _NL_CURRENT - /* We need this for handling the `E' modifier. */ - start_over: -#endif - - /* Make back up of current processing pointer. */ - rp_backup = rp; - - switch (*fmt++) - { - case '%': - /* Match the `%' character itself. */ - match_char ('%', *rp++); - break; - case 'a': - case 'A': - /* Match day of week. */ - rp_longest = NULL; - decided_longest = s.decided; - cnt_longest = -1; - for (cnt = 0; cnt < 7; ++cnt) - { - const char *trp; -#ifdef _NL_CURRENT - if (s.decided !=raw) - { - trp = rp; - if (match_string (_NL_CURRENT (LC_TIME, DAY_1 + cnt), trp) - && trp > rp_longest) - { - rp_longest = trp; - cnt_longest = cnt; - if (s.decided == not - && strcmp (_NL_CURRENT (LC_TIME, DAY_1 + cnt), - weekday_name[cnt])) - decided_longest = loc; - } - trp = rp; - if (match_string (_NL_CURRENT (LC_TIME, ABDAY_1 + cnt), trp) - && trp > rp_longest) - { - rp_longest = trp; - cnt_longest = cnt; - if (s.decided == not - && strcmp (_NL_CURRENT (LC_TIME, ABDAY_1 + cnt), - ab_weekday_name[cnt])) - decided_longest = loc; - } - } -#endif - if (s.decided != loc - && (((trp = rp, match_string (weekday_name[cnt], trp)) - && trp > rp_longest) - || ((trp = rp, match_string (ab_weekday_name[cnt], rp)) - && trp > rp_longest))) - { - rp_longest = trp; - cnt_longest = cnt; - decided_longest = raw; - } - } - if (rp_longest == NULL) - /* Does not match a weekday name. */ - return NULL; - rp = rp_longest; - s.decided = decided_longest; - tm->tm_wday = cnt_longest; - s.have_wday = 1; - break; - case 'b': - case 'B': - case 'h': - /* Match month name. */ - rp_longest = NULL; - decided_longest = s.decided; - cnt_longest = -1; - for (cnt = 0; cnt < 12; ++cnt) - { - const char *trp; -#ifdef _NL_CURRENT - if (s.decided !=raw) - { - trp = rp; - if (match_string (_NL_CURRENT (LC_TIME, MON_1 + cnt), trp) - && trp > rp_longest) - { - rp_longest = trp; - cnt_longest = cnt; - if (s.decided == not - && strcmp (_NL_CURRENT (LC_TIME, MON_1 + cnt), - month_name[cnt])) - decided_longest = loc; - } - trp = rp; - if (match_string (_NL_CURRENT (LC_TIME, ABMON_1 + cnt), trp) - && trp > rp_longest) - { - rp_longest = trp; - cnt_longest = cnt; - if (s.decided == not - && strcmp (_NL_CURRENT (LC_TIME, ABMON_1 + cnt), - ab_month_name[cnt])) - decided_longest = loc; - } - } -#endif - if (s.decided != loc - && (((trp = rp, match_string (month_name[cnt], trp)) - && trp > rp_longest) - || ((trp = rp, match_string (ab_month_name[cnt], trp)) - && trp > rp_longest))) - { - rp_longest = trp; - cnt_longest = cnt; - decided_longest = raw; - } - } - if (rp_longest == NULL) - /* Does not match a month name. */ - return NULL; - rp = rp_longest; - s.decided = decided_longest; - tm->tm_mon = cnt_longest; - s.have_mon = 1; - s.want_xday = 1; - break; - case 'c': - /* Match locale's date and time format. */ -#ifdef _NL_CURRENT - if (s.decided != raw) - { - if (!recursive (_NL_CURRENT (LC_TIME, D_T_FMT))) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (s.decided == not && - strcmp (_NL_CURRENT (LC_TIME, D_T_FMT), HERE_D_T_FMT)) - s.decided = loc; - s.want_xday = 1; - break; - } - s.decided = raw; - } -#endif - if (!recursive (HERE_D_T_FMT)) - return NULL; - s.want_xday = 1; - break; - case 'C': - /* Match century number. */ - match_century: - get_number (0, 99, 2); - s.century = val; - s.want_xday = 1; - break; - case 'd': - case 'e': - /* Match day of month. */ - get_number (1, 31, 2); - tm->tm_mday = val; - s.have_mday = 1; - s.want_xday = 1; - break; - case 'F': - if (!recursive ("%Y-%m-%d")) - return NULL; - s.want_xday = 1; - break; - case 'x': -#ifdef _NL_CURRENT - if (s.decided != raw) - { - if (!recursive (_NL_CURRENT (LC_TIME, D_FMT))) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (s.decided == not - && strcmp (_NL_CURRENT (LC_TIME, D_FMT), HERE_D_FMT)) - s.decided = loc; - s.want_xday = 1; - break; - } - s.decided = raw; - } -#endif - /* Fall through. */ - case 'D': - /* Match standard day format. */ - if (!recursive (HERE_D_FMT)) - return NULL; - s.want_xday = 1; - break; - case 'k': - case 'H': - /* Match hour in 24-hour clock. */ - get_number (0, 23, 2); - tm->tm_hour = val; - s.have_I = 0; - break; - case 'l': - /* Match hour in 12-hour clock. GNU extension. */ - case 'I': - /* Match hour in 12-hour clock. */ - get_number (1, 12, 2); - tm->tm_hour = val % 12; - s.have_I = 1; - break; - case 'j': - /* Match day number of year. */ - get_number (1, 366, 3); - tm->tm_yday = val - 1; - s.have_yday = 1; - break; - case 'm': - /* Match number of month. */ - get_number (1, 12, 2); - tm->tm_mon = val - 1; - s.have_mon = 1; - s.want_xday = 1; - break; - case 'M': - /* Match minute. */ - get_number (0, 59, 2); - tm->tm_min = val; - break; - case 'n': - case 't': - /* Match any white space. */ - while (ISSPACE (*rp)) - ++rp; - break; - case 'p': - /* Match locale's equivalent of AM/PM. */ -#ifdef _NL_CURRENT - if (s.decided != raw) - { - if (match_string (_NL_CURRENT (LC_TIME, AM_STR), rp)) - { - if (strcmp (_NL_CURRENT (LC_TIME, AM_STR), HERE_AM_STR)) - s.decided = loc; - s.is_pm = 0; - break; - } - if (match_string (_NL_CURRENT (LC_TIME, PM_STR), rp)) - { - if (strcmp (_NL_CURRENT (LC_TIME, PM_STR), HERE_PM_STR)) - s.decided = loc; - s.is_pm = 1; - break; - } - s.decided = raw; - } -#endif - if (!match_string (HERE_AM_STR, rp)) - { - if (match_string (HERE_PM_STR, rp)) - s.is_pm = 1; - else - return NULL; - } - else - s.is_pm = 0; - break; - case 'r': -#ifdef _NL_CURRENT - if (s.decided != raw) - { - if (!recursive (_NL_CURRENT (LC_TIME, T_FMT_AMPM))) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (s.decided == not && - strcmp (_NL_CURRENT (LC_TIME, T_FMT_AMPM), - HERE_T_FMT_AMPM)) - s.decided = loc; - break; - } - s.decided = raw; - } -#endif - if (!recursive (HERE_T_FMT_AMPM)) - return NULL; - break; - case 'R': - if (!recursive ("%H:%M")) - return NULL; - break; - case 's': - { - /* The number of seconds may be very high so we cannot use - the `get_number' macro. Instead read the number - character for character and construct the result while - doing this. */ - time_t secs = 0; - if (*rp < '0' || *rp > '9') - /* We need at least one digit. */ - return NULL; - - do - { - secs *= 10; - secs += *rp++ - '0'; - } - while (*rp >= '0' && *rp <= '9'); - - if (localtime_r (&secs, tm) == NULL) - /* Error in function. */ - return NULL; - } - break; - case 'S': - get_number (0, 61, 2); - tm->tm_sec = val; - break; - case 'X': -#ifdef _NL_CURRENT - if (s.decided != raw) - { - if (!recursive (_NL_CURRENT (LC_TIME, T_FMT))) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (strcmp (_NL_CURRENT (LC_TIME, T_FMT), HERE_T_FMT)) - s.decided = loc; - break; - } - s.decided = raw; - } -#endif - /* Fall through. */ - case 'T': - if (!recursive (HERE_T_FMT)) - return NULL; - break; - case 'u': - get_number (1, 7, 1); - tm->tm_wday = val % 7; - s.have_wday = 1; - break; - case 'g': - get_number (0, 99, 2); - /* XXX This cannot determine any field in TM. */ - break; - case 'G': - if (*rp < '0' || *rp > '9') - return NULL; - /* XXX Ignore the number since we would need some more - information to compute a real date. */ - do - ++rp; - while (*rp >= '0' && *rp <= '9'); - break; - case 'U': - get_number (0, 53, 2); - s.week_no = val; - s.have_uweek = 1; - break; - case 'W': - get_number (0, 53, 2); - s.week_no = val; - s.have_wweek = 1; - break; - case 'V': - get_number (0, 53, 2); - /* XXX This cannot determine any field in TM without some - information. */ - break; - case 'w': - /* Match number of weekday. */ - get_number (0, 6, 1); - tm->tm_wday = val; - s.have_wday = 1; - break; - case 'y': - match_year_in_century: - /* Match year within century. */ - get_number (0, 99, 2); - /* The "Year 2000: The Millennium Rollover" paper suggests that - values in the range 69-99 refer to the twentieth century. */ - tm->tm_year = val >= 69 ? val : val + 100; - /* Indicate that we want to use the century, if specified. */ - s.want_century = 1; - s.want_xday = 1; - break; - case 'Y': - /* Match year including century number. */ - get_number (0, 9999, 4); - tm->tm_year = val - 1900; - s.want_century = 0; - s.want_xday = 1; - break; - case 'Z': - /* XXX How to handle this? */ - break; - case 'z': - /* We recognize two formats: if two digits are given, these - specify hours. If fours digits are used, minutes are - also specified. */ - { - val = 0; - while (*rp == ' ') - ++rp; - if (*rp != '+' && *rp != '-') - return NULL; - bool neg = *rp++ == '-'; - int n = 0; - while (n < 4 && *rp >= '0' && *rp <= '9') - { - val = val * 10 + *rp++ - '0'; - ++n; - } - if (n == 2) - val *= 100; - else if (n != 4) - /* Only two or four digits recognized. */ - return NULL; - else - { - /* We have to convert the minutes into decimal. */ - if (val % 100 >= 60) - return NULL; - val = (val / 100) * 100 + ((val % 100) * 50) / 30; - } - if (val > 1200) - return NULL; - tm->tm_gmtoff = (val * 3600) / 100; - if (neg) - tm->tm_gmtoff = -tm->tm_gmtoff; - } - break; - case 'E': -#ifdef _NL_CURRENT - switch (*fmt++) - { - case 'c': - /* Match locale's alternate date and time format. */ - if (s.decided != raw) - { - const char *fmt = _NL_CURRENT (LC_TIME, ERA_D_T_FMT); - - if (*fmt == '\0') - fmt = _NL_CURRENT (LC_TIME, D_T_FMT); - - if (!recursive (fmt)) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (strcmp (fmt, HERE_D_T_FMT)) - s.decided = loc; - s.want_xday = 1; - break; - } - s.decided = raw; - } - /* The C locale has no era information, so use the - normal representation. */ - if (!recursive (HERE_D_T_FMT)) - return NULL; - s.want_xday = 1; - break; - case 'C': - if (s.decided != raw) - { - if (s.era_cnt >= 0) - { - era = _nl_select_era_entry (s.era_cnt HELPER_LOCALE_ARG); - if (era != NULL && match_string (era->era_name, rp)) - { - s.decided = loc; - break; - } - else - return NULL; - } - - num_eras = _NL_CURRENT_WORD (LC_TIME, - _NL_TIME_ERA_NUM_ENTRIES); - for (s.era_cnt = 0; s.era_cnt < (int) num_eras; - ++s.era_cnt, rp = rp_backup) - { - era = _nl_select_era_entry (s.era_cnt - HELPER_LOCALE_ARG); - if (era != NULL && match_string (era->era_name, rp)) - { - s.decided = loc; - break; - } - } - if (s.era_cnt != (int) num_eras) - break; - - s.era_cnt = -1; - if (s.decided == loc) - return NULL; - - s.decided = raw; - } - /* The C locale has no era information, so use the - normal representation. */ - goto match_century; - case 'y': - if (s.decided != raw) - { - get_number(0, 9999, 4); - tm->tm_year = val; - s.want_era = 1; - s.want_xday = 1; - s.want_century = 1; - - if (s.era_cnt >= 0) - { - assert (s.decided == loc); - - era = _nl_select_era_entry (s.era_cnt HELPER_LOCALE_ARG); - bool match = false; - if (era != NULL) - { - int delta = ((tm->tm_year - era->offset) - * era->absolute_direction); - match = (delta >= 0 - && delta < (((int64_t) era->stop_date[0] - - (int64_t) era->start_date[0]) - * era->absolute_direction)); - } - if (! match) - return NULL; - - break; - } - - num_eras = _NL_CURRENT_WORD (LC_TIME, - _NL_TIME_ERA_NUM_ENTRIES); - for (s.era_cnt = 0; s.era_cnt < (int) num_eras; ++s.era_cnt) - { - era = _nl_select_era_entry (s.era_cnt - HELPER_LOCALE_ARG); - if (era != NULL) - { - int delta = ((tm->tm_year - era->offset) - * era->absolute_direction); - if (delta >= 0 - && delta < (((int64_t) era->stop_date[0] - - (int64_t) era->start_date[0]) - * era->absolute_direction)) - { - s.decided = loc; - break; - } - } - } - if (s.era_cnt != (int) num_eras) - break; - - s.era_cnt = -1; - if (s.decided == loc) - return NULL; - - s.decided = raw; - } - - goto match_year_in_century; - case 'Y': - if (s.decided != raw) - { - num_eras = _NL_CURRENT_WORD (LC_TIME, - _NL_TIME_ERA_NUM_ENTRIES); - for (s.era_cnt = 0; s.era_cnt < (int) num_eras; - ++s.era_cnt, rp = rp_backup) - { - era = _nl_select_era_entry (s.era_cnt HELPER_LOCALE_ARG); - if (era != NULL && recursive (era->era_format)) - break; - } - if (s.era_cnt == (int) num_eras) - { - s.era_cnt = -1; - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - s.decided = loc; - s.era_cnt = -1; - break; - } - - s.decided = raw; - } - get_number (0, 9999, 4); - tm->tm_year = val - 1900; - s.want_century = 0; - s.want_xday = 1; - break; - case 'x': - if (s.decided != raw) - { - const char *fmt = _NL_CURRENT (LC_TIME, ERA_D_FMT); - - if (*fmt == '\0') - fmt = _NL_CURRENT (LC_TIME, D_FMT); - - if (!recursive (fmt)) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (strcmp (fmt, HERE_D_FMT)) - s.decided = loc; - break; - } - s.decided = raw; - } - if (!recursive (HERE_D_FMT)) - return NULL; - break; - case 'X': - if (s.decided != raw) - { - const char *fmt = _NL_CURRENT (LC_TIME, ERA_T_FMT); - - if (*fmt == '\0') - fmt = _NL_CURRENT (LC_TIME, T_FMT); - - if (!recursive (fmt)) - { - if (s.decided == loc) - return NULL; - else - rp = rp_backup; - } - else - { - if (strcmp (fmt, HERE_T_FMT)) - s.decided = loc; - break; - } - s.decided = raw; - } - if (!recursive (HERE_T_FMT)) - return NULL; - break; - default: - return NULL; - } - break; -#else - /* We have no information about the era format. Just use - the normal format. */ - if (*fmt != 'c' && *fmt != 'C' && *fmt != 'y' && *fmt != 'Y' - && *fmt != 'x' && *fmt != 'X') - /* This is an illegal format. */ - return NULL; - - goto start_over; -#endif - case 'O': - switch (*fmt++) - { - case 'd': - case 'e': - /* Match day of month using alternate numeric symbols. */ - get_alt_number (1, 31, 2); - tm->tm_mday = val; - s.have_mday = 1; - s.want_xday = 1; - break; - case 'H': - /* Match hour in 24-hour clock using alternate numeric - symbols. */ - get_alt_number (0, 23, 2); - tm->tm_hour = val; - s.have_I = 0; - break; - case 'I': - /* Match hour in 12-hour clock using alternate numeric - symbols. */ - get_alt_number (1, 12, 2); - tm->tm_hour = val % 12; - s.have_I = 1; - break; - case 'm': - /* Match month using alternate numeric symbols. */ - get_alt_number (1, 12, 2); - tm->tm_mon = val - 1; - s.have_mon = 1; - s.want_xday = 1; - break; - case 'M': - /* Match minutes using alternate numeric symbols. */ - get_alt_number (0, 59, 2); - tm->tm_min = val; - break; - case 'S': - /* Match seconds using alternate numeric symbols. */ - get_alt_number (0, 61, 2); - tm->tm_sec = val; - break; - case 'U': - get_alt_number (0, 53, 2); - s.week_no = val; - s.have_uweek = 1; - break; - case 'W': - get_alt_number (0, 53, 2); - s.week_no = val; - s.have_wweek = 1; - break; - case 'V': - get_alt_number (0, 53, 2); - /* XXX This cannot determine any field in TM without - further information. */ - break; - case 'w': - /* Match number of weekday using alternate numeric symbols. */ - get_alt_number (0, 6, 1); - tm->tm_wday = val; - s.have_wday = 1; - break; - case 'y': - /* Match year within century using alternate numeric symbols. */ - get_alt_number (0, 99, 2); - tm->tm_year = val >= 69 ? val : val + 100; - s.want_xday = 1; - break; - default: - return NULL; - } - break; - default: - return NULL; - } - } - - if (statep != NULL) - { - /* Recursive invocation, returning success, so - update parent's struct tm and state. */ - *(struct __strptime_state *) statep = s; - *tmp = tmb; - return (char *) rp; - } - - if (s.have_I && s.is_pm) - tm->tm_hour += 12; - - if (s.century != -1) - { - if (s.want_century) - tm->tm_year = tm->tm_year % 100 + (s.century - 19) * 100; - else - /* Only the century, but not the year. Strange, but so be it. */ - tm->tm_year = (s.century - 19) * 100; - } - - if (s.era_cnt != -1) - { - era = _nl_select_era_entry (s.era_cnt HELPER_LOCALE_ARG); - if (era == NULL) - return NULL; - if (s.want_era) - tm->tm_year = (era->start_date[0] - + ((tm->tm_year - era->offset) - * era->absolute_direction)); - else - /* Era start year assumed. */ - tm->tm_year = era->start_date[0]; - } - else - if (s.want_era) - { - /* No era found but we have seen an E modifier. Rectify some - values. */ - if (s.want_century && s.century == -1 && tm->tm_year < 69) - tm->tm_year += 100; - } - - if (s.want_xday && !s.have_wday) - { - if ( !(s.have_mon && s.have_mday) && s.have_yday) - { - /* We don't have tm_mon and/or tm_mday, compute them. */ - int t_mon = 0; - while (__mon_yday[__isleap(1900 + tm->tm_year)][t_mon] <= tm->tm_yday) - t_mon++; - if (!s.have_mon) - tm->tm_mon = t_mon - 1; - if (!s.have_mday) - tm->tm_mday = - (tm->tm_yday - - __mon_yday[__isleap(1900 + tm->tm_year)][t_mon - 1] + 1); - s.have_mon = 1; - s.have_mday = 1; - } - /* Don't crash in day_of_the_week if tm_mon is uninitialized. */ - if (s.have_mon || (unsigned) tm->tm_mon <= 11) - day_of_the_week (tm); - } - - if (s.want_xday && !s.have_yday && (s.have_mon || (unsigned) tm->tm_mon <= 11)) - day_of_the_year (tm); - - if ((s.have_uweek || s.have_wweek) && s.have_wday) - { - int save_wday = tm->tm_wday; - int save_mday = tm->tm_mday; - int save_mon = tm->tm_mon; - int w_offset = s.have_uweek ? 0 : 1; - - tm->tm_mday = 1; - tm->tm_mon = 0; - day_of_the_week (tm); - if (s.have_mday) - tm->tm_mday = save_mday; - if (s.have_mon) - tm->tm_mon = save_mon; - - if (!s.have_yday) - tm->tm_yday = ((7 - (tm->tm_wday - w_offset)) % 7 - + (s.week_no - 1) *7 - + save_wday - w_offset); - - if (!s.have_mday || !s.have_mon) - { - int t_mon = 0; - while (__mon_yday[__isleap(1900 + tm->tm_year)][t_mon] - <= tm->tm_yday) - t_mon++; - if (!s.have_mon) - tm->tm_mon = t_mon - 1; - if (!s.have_mday) - tm->tm_mday = - (tm->tm_yday - - __mon_yday[__isleap(1900 + tm->tm_year)][t_mon - 1] + 1); - } - - tm->tm_wday = save_wday; - } - - return (char *) rp; -} - - -char * -strptime (buf, format, tm LOCALE_PARAM) - const char *buf; - const char *format; - struct tm *tm; - LOCALE_PARAM_DECL -{ - return __strptime_internal (buf, format, tm, NULL LOCALE_ARG); -} - -#ifdef _LIBC -weak_alias (__strptime_l, strptime_l) -#endif diff --git a/bin/glibc-2.7/time/sys/time.h b/bin/glibc-2.7/time/sys/time.h deleted file mode 100644 index 177696b0..00000000 --- a/bin/glibc-2.7/time/sys/time.h +++ /dev/null @@ -1,193 +0,0 @@ -/* Copyright (C) 1991-1994,1996-2002,2003,2005,2006 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SYS_TIME_H -#define _SYS_TIME_H 1 - -#include - -#include -#define __need_time_t -#include -#define __need_timeval -#include - -#include - -#ifndef __suseconds_t_defined -typedef __suseconds_t suseconds_t; -# define __suseconds_t_defined -#endif - - -__BEGIN_DECLS - -#ifdef __USE_GNU -/* Macros for converting between `struct timeval' and `struct timespec'. */ -# define TIMEVAL_TO_TIMESPEC(tv, ts) { \ - (ts)->tv_sec = (tv)->tv_sec; \ - (ts)->tv_nsec = (tv)->tv_usec * 1000; \ -} -# define TIMESPEC_TO_TIMEVAL(tv, ts) { \ - (tv)->tv_sec = (ts)->tv_sec; \ - (tv)->tv_usec = (ts)->tv_nsec / 1000; \ -} -#endif - - -#ifdef __USE_BSD -/* Structure crudely representing a timezone. - This is obsolete and should never be used. */ -struct timezone - { - int tz_minuteswest; /* Minutes west of GMT. */ - int tz_dsttime; /* Nonzero if DST is ever in effect. */ - }; - -typedef struct timezone *__restrict __timezone_ptr_t; -#else -typedef void *__restrict __timezone_ptr_t; -#endif - -/* Get the current time of day and timezone information, - putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. - Returns 0 on success, -1 on errors. - NOTE: This form of timezone information is obsolete. - Use the functions and variables declared in instead. */ -extern int gettimeofday (struct timeval *__restrict __tv, - __timezone_ptr_t __tz) __THROW __nonnull ((1)); - -#ifdef __USE_BSD -/* Set the current time of day and timezone information. - This call is restricted to the super-user. */ -extern int settimeofday (__const struct timeval *__tv, - __const struct timezone *__tz) - __THROW __nonnull ((1)); - -/* Adjust the current time of day by the amount in DELTA. - If OLDDELTA is not NULL, it is filled in with the amount - of time adjustment remaining to be done from the last `adjtime' call. - This call is restricted to the super-user. */ -extern int adjtime (__const struct timeval *__delta, - struct timeval *__olddelta) __THROW; -#endif - - -/* Values for the first argument to `getitimer' and `setitimer'. */ -enum __itimer_which - { - /* Timers run in real time. */ - ITIMER_REAL = 0, -#define ITIMER_REAL ITIMER_REAL - /* Timers run only when the process is executing. */ - ITIMER_VIRTUAL = 1, -#define ITIMER_VIRTUAL ITIMER_VIRTUAL - /* Timers run when the process is executing and when - the system is executing on behalf of the process. */ - ITIMER_PROF = 2 -#define ITIMER_PROF ITIMER_PROF - }; - -/* Type of the second argument to `getitimer' and - the second and third arguments `setitimer'. */ -struct itimerval - { - /* Value to put into `it_value' when the timer expires. */ - struct timeval it_interval; - /* Time to the next timer expiration. */ - struct timeval it_value; - }; - -#if defined __USE_GNU && !defined __cplusplus -/* Use the nicer parameter type only in GNU mode and not for C++ since the - strict C++ rules prevent the automatic promotion. */ -typedef enum __itimer_which __itimer_which_t; -#else -typedef int __itimer_which_t; -#endif - -/* Set *VALUE to the current setting of timer WHICH. - Return 0 on success, -1 on errors. */ -extern int getitimer (__itimer_which_t __which, - struct itimerval *__value) __THROW; - -/* Set the timer WHICH to *NEW. If OLD is not NULL, - set *OLD to the old value of timer WHICH. - Returns 0 on success, -1 on errors. */ -extern int setitimer (__itimer_which_t __which, - __const struct itimerval *__restrict __new, - struct itimerval *__restrict __old) __THROW; - -/* Change the access time of FILE to TVP[0] and the modification time of - FILE to TVP[1]. If TVP is a null pointer, use the current time instead. - Returns 0 on success, -1 on errors. */ -extern int utimes (__const char *__file, __const struct timeval __tvp[2]) - __THROW __nonnull ((1)); - -#ifdef __USE_BSD -/* Same as `utimes', but does not follow symbolic links. */ -extern int lutimes (__const char *__file, __const struct timeval __tvp[2]) - __THROW __nonnull ((1)); - -/* Same as `utimes', but takes an open file descriptor instead of a name. */ -extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW; -#endif - -#ifdef __USE_ATFILE -/* Change the access time of FILE relative to FD to TVP[0] and the - modification time of FILE to TVP[1]. If TVP is a null pointer, use - the current time instead. Returns 0 on success, -1 on errors. */ -extern int futimesat (int __fd, __const char *__file, - __const struct timeval __tvp[2]) __THROW; -#endif - - -#ifdef __USE_BSD -/* Convenience macros for operations on timevals. - NOTE: `timercmp' does not work for >= or <=. */ -# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) -# define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) -# define timercmp(a, b, CMP) \ - (((a)->tv_sec == (b)->tv_sec) ? \ - ((a)->tv_usec CMP (b)->tv_usec) : \ - ((a)->tv_sec CMP (b)->tv_sec)) -# define timeradd(a, b, result) \ - do { \ - (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ - (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ - if ((result)->tv_usec >= 1000000) \ - { \ - ++(result)->tv_sec; \ - (result)->tv_usec -= 1000000; \ - } \ - } while (0) -# define timersub(a, b, result) \ - do { \ - (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ - (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ - if ((result)->tv_usec < 0) { \ - --(result)->tv_sec; \ - (result)->tv_usec += 1000000; \ - } \ - } while (0) -#endif /* BSD */ - -__END_DECLS - -#endif /* sys/time.h */ diff --git a/bin/glibc-2.7/time/sys/timeb.h b/bin/glibc-2.7/time/sys/timeb.h deleted file mode 100644 index dbdbf45a..00000000 --- a/bin/glibc-2.7/time/sys/timeb.h +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 1994, 1995, 1996, 1999 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SYS_TIMEB_H -#define _SYS_TIMEB_H 1 - -#include - -#define __need_time_t -#include - - -__BEGIN_DECLS - -/* Structure returned by the `ftime' function. */ - -struct timeb - { - time_t time; /* Seconds since epoch, as from `time'. */ - unsigned short int millitm; /* Additional milliseconds. */ - short int timezone; /* Minutes west of GMT. */ - short int dstflag; /* Nonzero if Daylight Savings Time used. */ - }; - -/* Fill in TIMEBUF with information about the current time. */ - -extern int ftime (struct timeb *__timebuf); - -__END_DECLS - -#endif /* sys/timeb.h */ diff --git a/bin/glibc-2.7/time/test_time.c b/bin/glibc-2.7/time/test_time.c deleted file mode 100644 index 20216ed9..00000000 --- a/bin/glibc-2.7/time/test_time.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (C) 1991, 1992, 1994, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include - - -int -main (int argc, char **argv) -{ - time_t t; - register struct tm *tp; - struct tm tbuf; - int lose = 0; - - --argc; - ++argv; - - do - { - char buf[BUFSIZ]; - if (argc > 0) - { - static char buf[BUFSIZ]; - sprintf(buf, "TZ=%s", *argv); - if (putenv(buf)) - { - puts("putenv failed."); - lose = 1; - } - else - puts (buf); - } - tzset(); - tbuf.tm_year = 72; - tbuf.tm_mon = 0; - tbuf.tm_mday = 31; - tbuf.tm_hour = 6; - tbuf.tm_min = 14; - tbuf.tm_sec = 50; - tbuf.tm_isdst = -1; - doit:; - t = mktime(&tbuf); - if (t == (time_t) -1) - { - puts("mktime() failed?"); - lose = 1; - } - tp = localtime(&t); - if (tp == NULL) - { - puts("localtime() failed."); - lose = 1; - } - else if (strftime(buf, sizeof(buf), "%a %b %d %X %Z %Y", tp) == 0) - { - puts("strftime() failed."); - lose = 1; - } - else - puts(buf); - if (tbuf.tm_year == 101) - { - tbuf.tm_year = 97; - tbuf.tm_mon = 0; - goto doit; - } - ++argv; - } while (--argc > 0); - - { -#define SIZE 256 - char buffer[SIZE]; - time_t curtime; - struct tm *loctime; - - curtime = time (NULL); - - loctime = localtime (&curtime); - - fputs (asctime (loctime), stdout); - - strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime); - fputs (buffer, stdout); - strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime); - fputs (buffer, stdout); - - loctime->tm_year = 72; - loctime->tm_mon = 8; - loctime->tm_mday = 12; - loctime->tm_hour = 20; - loctime->tm_min = 49; - loctime->tm_sec = 05; - curtime = mktime (loctime); - strftime (buffer, SIZE, "%D %T was %w the %jth.\n", loctime); - fputs (buffer, stdout); - } - - return (lose ? EXIT_FAILURE : EXIT_SUCCESS); -} diff --git a/bin/glibc-2.7/time/time.c b/bin/glibc-2.7/time/time.c deleted file mode 100644 index ec66f119..00000000 --- a/bin/glibc-2.7/time/time.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991,96,97,2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -/* Return the time now, and store it in *TIMER if not NULL. */ -time_t -time (timer) - time_t *timer; -{ - __set_errno (ENOSYS); - - if (timer != NULL) - *timer = (time_t) -1; - return (time_t) -1; -} -libc_hidden_def (time) - -stub_warning (time) -#include diff --git a/bin/glibc-2.7/time/time.h b/bin/glibc-2.7/time/time.h deleted file mode 100644 index 6c8f79d4..00000000 --- a/bin/glibc-2.7/time/time.h +++ /dev/null @@ -1,420 +0,0 @@ -/* Copyright (C) 1991-1999,2000,2001,2002,2003,2006 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -/* - * ISO C99 Standard: 7.23 Date and time - */ - -#ifndef _TIME_H - -#if (! defined __need_time_t && !defined __need_clock_t && \ - ! defined __need_timespec) -# define _TIME_H 1 -# include - -__BEGIN_DECLS - -#endif - -#ifdef _TIME_H -/* Get size_t and NULL from . */ -# define __need_size_t -# define __need_NULL -# include - -/* This defines CLOCKS_PER_SEC, which is the number of processor clock - ticks per second. */ -# include - -/* This is the obsolete POSIX.1-1988 name for the same constant. */ -# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K -# ifndef CLK_TCK -# define CLK_TCK CLOCKS_PER_SEC -# endif -# endif - -#endif /* included. */ - -#if !defined __clock_t_defined && (defined _TIME_H || defined __need_clock_t) -# define __clock_t_defined 1 - -# include - -__BEGIN_NAMESPACE_STD -/* Returned by `clock'. */ -typedef __clock_t clock_t; -__END_NAMESPACE_STD -#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC -__USING_NAMESPACE_STD(clock_t) -#endif - -#endif /* clock_t not defined and or need clock_t. */ -#undef __need_clock_t - -#if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t) -# define __time_t_defined 1 - -# include - -__BEGIN_NAMESPACE_STD -/* Returned by `time'. */ -typedef __time_t time_t; -__END_NAMESPACE_STD -#if defined __USE_POSIX || defined __USE_MISC || defined __USE_SVID -__USING_NAMESPACE_STD(time_t) -#endif - -#endif /* time_t not defined and or need time_t. */ -#undef __need_time_t - -#if !defined __clockid_t_defined && \ - ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_clockid_t) -# define __clockid_t_defined 1 - -# include - -/* Clock ID used in clock and timer functions. */ -typedef __clockid_t clockid_t; - -#endif /* clockid_t not defined and or need clockid_t. */ -#undef __clockid_time_t - -#if !defined __timer_t_defined && \ - ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t) -# define __timer_t_defined 1 - -# include - -/* Timer ID returned by `timer_create'. */ -typedef __timer_t timer_t; - -#endif /* timer_t not defined and or need timer_t. */ -#undef __need_timer_t - - -#if !defined __timespec_defined && \ - ((defined _TIME_H && \ - (defined __USE_POSIX199309 || defined __USE_MISC)) || \ - defined __need_timespec) -# define __timespec_defined 1 - -# include /* This defines __time_t for us. */ - -/* POSIX.1b structure for a time value. This is like a `struct timeval' but - has nanoseconds instead of microseconds. */ -struct timespec - { - __time_t tv_sec; /* Seconds. */ - long int tv_nsec; /* Nanoseconds. */ - }; - -#endif /* timespec not defined and or need timespec. */ -#undef __need_timespec - - -#ifdef _TIME_H -__BEGIN_NAMESPACE_STD -/* Used by other time functions. */ -struct tm -{ - int tm_sec; /* Seconds. [0-60] (1 leap second) */ - int tm_min; /* Minutes. [0-59] */ - int tm_hour; /* Hours. [0-23] */ - int tm_mday; /* Day. [1-31] */ - int tm_mon; /* Month. [0-11] */ - int tm_year; /* Year - 1900. */ - int tm_wday; /* Day of week. [0-6] */ - int tm_yday; /* Days in year.[0-365] */ - int tm_isdst; /* DST. [-1/0/1]*/ - -#ifdef __USE_BSD - long int tm_gmtoff; /* Seconds east of UTC. */ - __const char *tm_zone; /* Timezone abbreviation. */ -#else - long int __tm_gmtoff; /* Seconds east of UTC. */ - __const char *__tm_zone; /* Timezone abbreviation. */ -#endif -}; -__END_NAMESPACE_STD -#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC -__USING_NAMESPACE_STD(tm) -#endif - - -#ifdef __USE_POSIX199309 -/* POSIX.1b structure for timer start values and intervals. */ -struct itimerspec - { - struct timespec it_interval; - struct timespec it_value; - }; - -/* We can use a simple forward declaration. */ -struct sigevent; - -#endif /* POSIX.1b */ - -#ifdef __USE_XOPEN2K -# ifndef __pid_t_defined -typedef __pid_t pid_t; -# define __pid_t_defined -# endif -#endif - - -__BEGIN_NAMESPACE_STD -/* Time used by the program so far (user time + system time). - The result / CLOCKS_PER_SECOND is program time in seconds. */ -extern clock_t clock (void) __THROW; - -/* Return the current time and put it in *TIMER if TIMER is not NULL. */ -extern time_t time (time_t *__timer) __THROW; - -/* Return the difference between TIME1 and TIME0. */ -extern double difftime (time_t __time1, time_t __time0) - __THROW __attribute__ ((__const__)); - -/* Return the `time_t' representation of TP and normalize TP. */ -extern time_t mktime (struct tm *__tp) __THROW; - - -/* Format TP into S according to FORMAT. - Write no more than MAXSIZE characters and return the number - of characters written, or 0 if it would exceed MAXSIZE. */ -extern size_t strftime (char *__restrict __s, size_t __maxsize, - __const char *__restrict __format, - __const struct tm *__restrict __tp) __THROW; -__END_NAMESPACE_STD - -# ifdef __USE_XOPEN -/* Parse S according to FORMAT and store binary time information in TP. - The return value is a pointer to the first unparsed character in S. */ -extern char *strptime (__const char *__restrict __s, - __const char *__restrict __fmt, struct tm *__tp) - __THROW; -# endif - -# ifdef __USE_GNU -/* Similar to the two functions above but take the information from - the provided locale and not the global locale. */ -# include - -extern size_t strftime_l (char *__restrict __s, size_t __maxsize, - __const char *__restrict __format, - __const struct tm *__restrict __tp, - __locale_t __loc) __THROW; - -extern char *strptime_l (__const char *__restrict __s, - __const char *__restrict __fmt, struct tm *__tp, - __locale_t __loc) __THROW; -# endif - - -__BEGIN_NAMESPACE_STD -/* Return the `struct tm' representation of *TIMER - in Universal Coordinated Time (aka Greenwich Mean Time). */ -extern struct tm *gmtime (__const time_t *__timer) __THROW; - -/* Return the `struct tm' representation - of *TIMER in the local timezone. */ -extern struct tm *localtime (__const time_t *__timer) __THROW; -__END_NAMESPACE_STD - -# if defined __USE_POSIX || defined __USE_MISC -/* Return the `struct tm' representation of *TIMER in UTC, - using *TP to store the result. */ -extern struct tm *gmtime_r (__const time_t *__restrict __timer, - struct tm *__restrict __tp) __THROW; - -/* Return the `struct tm' representation of *TIMER in local time, - using *TP to store the result. */ -extern struct tm *localtime_r (__const time_t *__restrict __timer, - struct tm *__restrict __tp) __THROW; -# endif /* POSIX or misc */ - -__BEGIN_NAMESPACE_STD -/* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" - that is the representation of TP in this format. */ -extern char *asctime (__const struct tm *__tp) __THROW; - -/* Equivalent to `asctime (localtime (timer))'. */ -extern char *ctime (__const time_t *__timer) __THROW; -__END_NAMESPACE_STD - -# if defined __USE_POSIX || defined __USE_MISC -/* Reentrant versions of the above functions. */ - -/* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" - that is the representation of TP in this format. */ -extern char *asctime_r (__const struct tm *__restrict __tp, - char *__restrict __buf) __THROW; - -/* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ -extern char *ctime_r (__const time_t *__restrict __timer, - char *__restrict __buf) __THROW; -# endif /* POSIX or misc */ - - -/* Defined in localtime.c. */ -extern char *__tzname[2]; /* Current timezone names. */ -extern int __daylight; /* If daylight-saving time is ever in use. */ -extern long int __timezone; /* Seconds west of UTC. */ - - -# ifdef __USE_POSIX -/* Same as above. */ -extern char *tzname[2]; - -/* Set time conversion information from the TZ environment variable. - If TZ is not defined, a locale-dependent default is used. */ -extern void tzset (void) __THROW; -# endif - -# if defined __USE_SVID || defined __USE_XOPEN -extern int daylight; -extern long int timezone; -# endif - -# ifdef __USE_SVID -/* Set the system time to *WHEN. - This call is restricted to the superuser. */ -extern int stime (__const time_t *__when) __THROW; -# endif - - -/* Nonzero if YEAR is a leap year (every 4 years, - except every 100th isn't, and every 400th is). */ -# define __isleap(year) \ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) - - -# ifdef __USE_MISC -/* Miscellaneous functions many Unices inherited from the public domain - localtime package. These are included only for compatibility. */ - -/* Like `mktime', but for TP represents Universal Time, not local time. */ -extern time_t timegm (struct tm *__tp) __THROW; - -/* Another name for `mktime'. */ -extern time_t timelocal (struct tm *__tp) __THROW; - -/* Return the number of days in YEAR. */ -extern int dysize (int __year) __THROW __attribute__ ((__const__)); -# endif - - -# ifdef __USE_POSIX199309 -/* Pause execution for a number of nanoseconds. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int nanosleep (__const struct timespec *__requested_time, - struct timespec *__remaining); - - -/* Get resolution of clock CLOCK_ID. */ -extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; - -/* Get current value of clock CLOCK_ID and store it in TP. */ -extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; - -/* Set clock CLOCK_ID to value TP. */ -extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) - __THROW; - -# ifdef __USE_XOPEN2K -/* High-resolution sleep with the specified clock. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int clock_nanosleep (clockid_t __clock_id, int __flags, - __const struct timespec *__req, - struct timespec *__rem); - -/* Return clock ID for CPU-time clock. */ -extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; -# endif - - -/* Create new per-process timer using CLOCK_ID. */ -extern int timer_create (clockid_t __clock_id, - struct sigevent *__restrict __evp, - timer_t *__restrict __timerid) __THROW; - -/* Delete timer TIMERID. */ -extern int timer_delete (timer_t __timerid) __THROW; - -/* Set timer TIMERID to VALUE, returning old value in OVLAUE. */ -extern int timer_settime (timer_t __timerid, int __flags, - __const struct itimerspec *__restrict __value, - struct itimerspec *__restrict __ovalue) __THROW; - -/* Get current value of timer TIMERID and store it in VLAUE. */ -extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) - __THROW; - -/* Get expiration overrun for timer TIMERID. */ -extern int timer_getoverrun (timer_t __timerid) __THROW; -# endif - - -# ifdef __USE_XOPEN_EXTENDED -/* Set to one of the following values to indicate an error. - 1 the DATEMSK environment variable is null or undefined, - 2 the template file cannot be opened for reading, - 3 failed to get file status information, - 4 the template file is not a regular file, - 5 an error is encountered while reading the template file, - 6 memory allication failed (not enough memory available), - 7 there is no line in the template that matches the input, - 8 invalid input specification Example: February 31 or a time is - specified that can not be represented in a time_t (representing - the time in seconds since 00:00:00 UTC, January 1, 1970) */ -extern int getdate_err; - -/* Parse the given string as a date specification and return a value - representing the value. The templates from the file identified by - the environment variable DATEMSK are used. In case of an error - `getdate_err' is set. - - This function is a possible cancellation points and therefore not - marked with __THROW. */ -extern struct tm *getdate (__const char *__string); -# endif - -# ifdef __USE_GNU -/* Since `getdate' is not reentrant because of the use of `getdate_err' - and the static buffer to return the result in, we provide a thread-safe - variant. The functionality is the same. The result is returned in - the buffer pointed to by RESBUFP and in case of an error the return - value is != 0 with the same values as given above for `getdate_err'. - - This function is not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation it is a cancellation point and - therefore not marked with __THROW. */ -extern int getdate_r (__const char *__restrict __string, - struct tm *__restrict __resbufp); -# endif - -__END_DECLS - -#endif /* included. */ - -#endif /* not already included. */ diff --git a/bin/glibc-2.7/time/timegm.c b/bin/glibc-2.7/time/timegm.c deleted file mode 100644 index bbc8c919..00000000 --- a/bin/glibc-2.7/time/timegm.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Convert UTC calendar time to simple time. Like mktime but assumes UTC. - - Copyright (C) 1994, 1997, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#ifdef _LIBC -# include -#else -# include "timegm.h" - -/* Portable standalone applications should supply a "time_r.h" that - declares a POSIX-compliant gmtime_r, for the benefit of older - implementations that lack gmtime_r or have a nonstandard one. - See the gnulib time_r module for one way to implement this. */ -# include -# undef __gmtime_r -# define __gmtime_r gmtime_r -time_t __mktime_internal (struct tm *, - struct tm * (*) (time_t const *, struct tm *), - time_t *); -#endif - -time_t -timegm (struct tm *tmp) -{ - static time_t gmtime_offset; - tmp->tm_isdst = 0; - return __mktime_internal (tmp, __gmtime_r, &gmtime_offset); -} diff --git a/bin/glibc-2.7/time/tst-ftime_l.c b/bin/glibc-2.7/time/tst-ftime_l.c deleted file mode 100644 index fc3d78d6..00000000 --- a/bin/glibc-2.7/time/tst-ftime_l.c +++ /dev/null @@ -1,126 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -int -main (void) -{ - locale_t l; - locale_t old; - struct tm tm; - char buf[1000]; - wchar_t wbuf[1000]; - int result = 0; - size_t n; - - l = newlocale (LC_ALL_MASK, "de_DE.ISO-8859-1", NULL); - if (l == NULL) - { - puts ("newlocale failed"); - exit (1); - } - - memset (&tm, '\0', sizeof (tm)); - - tm.tm_year = 102; - tm.tm_mon = 2; - tm.tm_mday = 1; - - if (strftime (buf, sizeof (buf), "%e %^B %Y", &tm) == 0) - { - puts ("initial strftime failed"); - exit (1); - } - if (strcmp (buf, " 1 MARCH 2002") != 0) - { - printf ("initial strftime: expected \"%s\", got \"%s\"\n", - " 1 MARCH 2002", buf); - result = 1; - } - else - printf ("got \"%s\"\n", buf); - - /* Now using the extended locale model. */ - if (strftime_l (buf, sizeof (buf), "%e %^B %Y", &tm, l) == 0) - { - puts ("strftime_l failed"); - result = 1; - } - else if (strcmp (buf, " 1 M\xc4RZ 2002") != 0) - { - printf ("strftime_l: expected \"%s\", got \"%s\"\n", - " 1 M\xc4RZ 2002", buf); - result = 1; - } - else - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - printf ("got \"%s\"\n", buf); - setlocale (LC_ALL, "C"); - } - - /* And the wide character version. */ - if (wcsftime_l (wbuf, sizeof (wbuf) / sizeof (wbuf[0]), L"%e %^B %Y", &tm, l) - == 0) - { - puts ("wcsftime_l failed"); - result = 1; - } - else if (wcscmp (wbuf, L" 1 M\x00c4RZ 2002") != 0) - { - printf ("wcsftime_l: expected \"%ls\", got \"%ls\"\n", - L" 1 M\x00c4RZ 2002", wbuf); - result = 1; - } - else - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - printf ("got \"%ls\"\n", wbuf); - setlocale (LC_ALL, "C"); - } - - old = uselocale (l); - - n = strftime (buf, sizeof (buf), "%e %^B %Y", &tm); - - /* Switch back. */ - (void) uselocale (old); - - if (n == 0) - { - puts ("strftime after first uselocale failed"); - result = 1; - } - else if (strcmp (buf, " 1 M\xc4RZ 2002") != 0) - { - printf ("strftime in non-C locale: expected \"%s\", got \"%s\"\n", - " 1 M\xc4RZ 2002", buf); - result = 1; - } - else - { - setlocale (LC_ALL, "de_DE.ISO-8859-1"); - printf ("got \"%s\"\n", buf); - setlocale (LC_ALL, "C"); - } - - if (strftime (buf, sizeof (buf), "%e %^B %Y", &tm) == 0) - { - puts ("strftime after second uselocale failed"); - result = 1; - } - else if (strcmp (buf, " 1 MARCH 2002") != 0) - { - printf ("initial strftime: expected \"%s\", got \"%s\"\n", - " 1 MARCH 2002", buf); - result = 1; - } - else - printf ("got \"%s\"\n", buf); - - return result; -} diff --git a/bin/glibc-2.7/time/tst-getdate.c b/bin/glibc-2.7/time/tst-getdate.c deleted file mode 100644 index 84223d0e..00000000 --- a/bin/glibc-2.7/time/tst-getdate.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Test for getdate. - Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 2000. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include - -static const struct -{ - const char *str; - const char *tz; - int err; - struct tm tm; -} tests [] = -{ - {"21:01:10 1999-1-31", "Universal", 0, {10, 1, 21, 31, 0, 99, 0, 0, 0}}, - {"21:01:10 1999-2-28", "Universal", 0, {10, 1, 21, 28, 1, 99, 0, 0, 0}}, - {"16:30:46 2000-2-29", "Universal", 0, {46, 30,16, 29, 1, 100, 0, 0, 0}}, - {"01-08-2000 05:06:07", "Europe/Berlin", 0, {7, 6, 5, 1, 7, 100, 0, 0, 0}} -}; - -static void -report_date_error (int err) -{ - switch(err) - { - case 1: - printf ("The environment variable DATEMSK is not defined or null.\n"); - break; - case 2: - printf ("The template file denoted by the DATEMSK environment variable cannot be opened.\n"); - break; - case 3: - printf ("Information about the template file cannot retrieved.\n"); - break; - case 4: - printf ("The template file is not a regular file.\n"); - break; - case 5: - printf ("An I/O error occurred while reading the template file.\n"); - break; - case 6: - printf ("Not enough memory available to execute the function.\n"); - break; - case 7: - printf ("The template file contains no matching template.\n"); - break; - case 8: - printf ("The input date is invalid, but would match a template otherwise.\n"); - break; - default: - printf("Unknown error code.\n"); - break; - } -} - - -int -main (void) -{ - int errors = 0; - size_t i; - struct tm *tm; - - - for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) - { - setenv ("TZ", tests[i].tz, 1); - - tm = getdate (tests[i].str); - - if (getdate_err != tests[i].err) - { - printf ("Failure for getdate (\"%s\"):\n", tests[i].str); - printf ("getdate_err should be %d but returned: %d which means:\n", - tests[i].err, getdate_err); - report_date_error (getdate_err); - ++errors; - } - else if (tests[i].tm.tm_mon != tm->tm_mon - || tests[i].tm.tm_year != tm->tm_year - || tests[i].tm.tm_mday != tm->tm_mday - || tests[i].tm.tm_hour != tm->tm_hour - || tests[i].tm.tm_min != tm->tm_min - || tests[i].tm.tm_sec != tm->tm_sec) - { - printf ("Failure for getdate (\"%s\"):\n", tests[i].str); - printf ("struct tm is: %d-%d-%d %d:%d:%d\n", - tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec); - printf ("but should be: %d-%d-%d %d:%d:%d\n", - tests[i].tm.tm_year + 1900, tests[i].tm.tm_mon + 1, - tests[i].tm.tm_mday, - tests[i].tm.tm_hour, tests[i].tm.tm_min, tests[i].tm.tm_sec); - ++errors; - } - } - - if (!errors) - printf ("No errors found.\n"); - return errors != 0; -} diff --git a/bin/glibc-2.7/time/tst-mktime.c b/bin/glibc-2.7/time/tst-mktime.c deleted file mode 100644 index 416a8561..00000000 --- a/bin/glibc-2.7/time/tst-mktime.c +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include -#include -#include - -int -main (void) -{ - struct tm time_str, *tm; - time_t t; - char daybuf[20]; - int result; - - time_str.tm_year = 2001 - 1900; - time_str.tm_mon = 7 - 1; - time_str.tm_mday = 4; - time_str.tm_hour = 0; - time_str.tm_min = 0; - time_str.tm_sec = 1; - time_str.tm_isdst = -1; - - if (mktime (&time_str) == -1) - { - (void) puts ("-unknown-"); - result = 1; - } - else - { - (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str); - (void) puts (daybuf); - result = strcmp (daybuf, "Wednesday") != 0; - } - - setenv ("TZ", "EST+5", 1); -#define EVENING69 1 * 60 * 60 + 2 * 60 + 29 - t = EVENING69; - tm = localtime (&t); - if (tm == NULL) - { - (void) puts ("localtime returned NULL"); - result = 1; - } - else - { - time_str = *tm; - t = mktime (&time_str); - if (t != EVENING69) - { - printf ("mktime returned %ld, expected %d\n", - (long) t, EVENING69); - result = 1; - } - else - (void) puts ("Dec 31 1969 EST test passed"); - - setenv ("TZ", "CET-1", 1); - t = mktime (&time_str); -#define EVENING69_CET (EVENING69 - (5 - -1) * 60 * 60) - if (t != EVENING69_CET) - { - printf ("mktime returned %ld, expected %ld\n", - (long) t, (long) EVENING69_CET); - result = 1; - } - else - (void) puts ("Dec 31 1969 CET test passed"); - } - - return result; -} diff --git a/bin/glibc-2.7/time/tst-mktime2.c b/bin/glibc-2.7/time/tst-mktime2.c deleted file mode 100644 index 0e4fd1e7..00000000 --- a/bin/glibc-2.7/time/tst-mktime2.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Test program from Paul Eggert and Tony Leneis. */ -#include -#include -#include - -static time_t time_t_max; -static time_t time_t_min; - -/* Values we'll use to set the TZ environment variable. */ -static const char *tz_strings[] = - { - (const char *) 0, "GMT0", "JST-9", - "EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" - }; -#define N_STRINGS ((int) (sizeof (tz_strings) / sizeof (tz_strings[0]))) - -/* Fail if mktime fails to convert a date in the spring-forward gap. - Based on a problem report from Andreas Jaeger. */ -static void -spring_forward_gap (void) -{ - /* glibc (up to about 1998-10-07) failed this test. */ - struct tm tm; - - /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" - instead of "TZ=America/Vancouver" in order to detect the bug even - on systems that don't support the Olson extension, or don't have the - full zoneinfo tables installed. */ - setenv ("TZ", "PST8PDT,M4.1.0,M10.5.0", 1); - - tm.tm_year = 98; - tm.tm_mon = 3; - tm.tm_mday = 5; - tm.tm_hour = 2; - tm.tm_min = 0; - tm.tm_sec = 0; - tm.tm_isdst = -1; - if (mktime (&tm) == (time_t)-1) - exit (1); -} - -static void -mktime_test1 (time_t now) -{ - struct tm *lt = localtime (&now); - if (lt && mktime (lt) != now) - exit (2); -} - -static void -mktime_test (time_t now) -{ - mktime_test1 (now); - mktime_test1 ((time_t) (time_t_max - now)); - mktime_test1 ((time_t) (time_t_min + now)); -} - -static void -irix_6_4_bug (void) -{ - /* Based on code from Ariel Faigon. */ - struct tm tm; - tm.tm_year = 96; - tm.tm_mon = 3; - tm.tm_mday = 0; - tm.tm_hour = 0; - tm.tm_min = 0; - tm.tm_sec = 0; - tm.tm_isdst = -1; - mktime (&tm); - if (tm.tm_mon != 2 || tm.tm_mday != 31) - exit (3); -} - -static void -bigtime_test (int j) -{ - struct tm tm; - time_t now; - tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; - tm.tm_isdst = -1; - now = mktime (&tm); - if (now != (time_t) -1) - { - struct tm *lt = localtime (&now); - if (! (lt - && lt->tm_year == tm.tm_year - && lt->tm_mon == tm.tm_mon - && lt->tm_mday == tm.tm_mday - && lt->tm_hour == tm.tm_hour - && lt->tm_min == tm.tm_min - && lt->tm_sec == tm.tm_sec - && lt->tm_yday == tm.tm_yday - && lt->tm_wday == tm.tm_wday - && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) - == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) - exit (4); - } -} - -static int -do_test (void) -{ - time_t t, delta; - int i; - unsigned int j; - - setenv ("TZ", "America/Sao_Paulo", 1); - /* This test makes some buggy mktime implementations loop. - Give up after 60 seconds; a mktime slower than that - isn't worth using anyway. */ - alarm (60); - - for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) - continue; - time_t_max--; - if ((time_t) -1 < 0) - for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2) - continue; - delta = time_t_max / 997; /* a suitable prime number */ - for (i = 0; i < N_STRINGS; i++) - { - if (tz_strings[i]) - setenv ("TZ", tz_strings[i], 1); - - for (t = 0; t <= time_t_max - delta; t += delta) - mktime_test (t); - mktime_test ((time_t) 1); - mktime_test ((time_t) (60 * 60)); - mktime_test ((time_t) (60 * 60 * 24)); - - for (j = 1; j <= INT_MAX; j *= 2) - bigtime_test (j); - bigtime_test (j - 1); - } - irix_6_4_bug (); - spring_forward_gap (); - return 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/time/tst-mktime3.c b/bin/glibc-2.7/time/tst-mktime3.c deleted file mode 100644 index 60d0e0b3..00000000 --- a/bin/glibc-2.7/time/tst-mktime3.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Test program for mktime bugs with out-of-range tm_sec values. */ - -#include -#include -#include - -struct tm tests[] = -{ - { .tm_sec = -1, .tm_mday = 1, .tm_year = 104 }, - { .tm_sec = 65, .tm_min = 59, .tm_hour = 23, .tm_mday = 31, - .tm_mon = 11, .tm_year = 101 } -}; -struct tm expected[] = -{ - { .tm_sec = 59, .tm_min = 59, .tm_hour = 23, .tm_mday = 31, - .tm_mon = 11, .tm_year = 103, .tm_wday = 3, .tm_yday = 364 }, - { .tm_sec = 5, .tm_mday = 1, .tm_year = 102, .tm_wday = 2 } -}; - -int -main (void) -{ - setenv ("TZ", "UTC", 1); - int i; - for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) - { - if (mktime (&tests[i]) < 0) - { - printf ("mktime %d failed\n", i); - return 1; - } -#define CHECK(name) \ - if (tests[i].name != expected[i].name) \ - { \ - printf ("test %d " #name " got %d expected %d\n", \ - i, tests[i].name, expected[i].name); \ - return 1; \ - } - CHECK (tm_sec) - CHECK (tm_min) - CHECK (tm_hour) - CHECK (tm_mday) - CHECK (tm_mon) - CHECK (tm_year) - CHECK (tm_wday) - CHECK (tm_yday) - CHECK (tm_isdst) - } - return 0; -} diff --git a/bin/glibc-2.7/time/tst-posixtz.c b/bin/glibc-2.7/time/tst-posixtz.c deleted file mode 100644 index ccba63e5..00000000 --- a/bin/glibc-2.7/time/tst-posixtz.c +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include -#include -#include - -struct -{ - time_t when; - const char *tz; - const char *result; -} tests[] = -{ - { 909312849L, "AEST-10AEDST-11,M10.5.0,M3.5.0", - "1998/10/25 21:54:09 dst=1 zone=AEDST" }, - { 924864849L, "AEST-10AEDST-11,M10.5.0,M3.5.0", - "1999/04/23 20:54:09 dst=0 zone=AEST" }, - { 919973892L, "AEST-10AEDST-11,M10.5.0,M3.5.0", - "1999/02/26 07:18:12 dst=1 zone=AEDST" }, - { 909312849L, "EST+5EDT,M4.1.0/2,M10.5.0/2", - "1998/10/25 05:54:09 dst=0 zone=EST" }, - { 924864849L, "EST+5EDT,M4.1.0/2,M10.5.0/2", - "1999/04/23 06:54:09 dst=1 zone=EDT" }, - { 919973892L, "EST+5EDT,M4.1.0/2,M10.5.0/2", - "1999/02/25 15:18:12 dst=0 zone=EST" }, -}; - -int -main (void) -{ - int result = 0; - size_t cnt; - - for (cnt = 0; cnt < sizeof (tests) / sizeof (tests[0]); ++cnt) - { - char buf[100]; - struct tm *tmp; - - printf ("TZ = \"%s\", time = %ld => ", tests[cnt].tz, tests[cnt].when); - fflush (stdout); - - setenv ("TZ", tests[cnt].tz, 1); - - tmp = localtime (&tests[cnt].when); - - snprintf (buf, sizeof (buf), - "%04d/%02d/%02d %02d:%02d:%02d dst=%d zone=%s", - tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, - tmp->tm_hour, tmp->tm_min, tmp->tm_sec, tmp->tm_isdst, - tzname[tmp->tm_isdst ? 1 : 0]); - - fputs (buf, stdout); - - if (strcmp (buf, tests[cnt].result) == 0) - puts (", OK"); - else - { - result = 1; - puts (", FAIL"); - } - } - - setenv ("TZ", "Universal", 1); - localtime (&tests[0].when); - printf ("TZ = \"Universal\" daylight %d tzname = { \"%s\", \"%s\" }", - daylight, tzname[0], tzname[1]); - if (! daylight) - puts (", OK"); - else - { - result = 1; - puts (", FAIL"); - } - - setenv ("TZ", "AEST-10AEDST-11,M10.5.0,M3.5.0", 1); - tzset (); - printf ("TZ = \"AEST-10AEDST-11,M10.5.0,M3.5.0\" daylight %d" - " tzname = { \"%s\", \"%s\" }", daylight, tzname[0], tzname[1]); - if (daylight - && strcmp (tzname[0], "AEST") == 0 && strcmp (tzname[1], "AEDST") == 0) - puts (", OK"); - else - { - result = 1; - puts (", FAIL"); - } - - return result; -} diff --git a/bin/glibc-2.7/time/tst-strftime.c b/bin/glibc-2.7/time/tst-strftime.c deleted file mode 100644 index 374fba42..00000000 --- a/bin/glibc-2.7/time/tst-strftime.c +++ /dev/null @@ -1,111 +0,0 @@ -#include -#include -#include -#include - - -static struct -{ - const char *fmt; - size_t min; - size_t max; -} tests[] = - { - { "%2000Y", 2000, 4000 }, - { "%02000Y", 2000, 4000 }, - { "%_2000Y", 2000, 4000 }, - { "%-2000Y", 2000, 4000 }, - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -static int -do_test (void) -{ - size_t cnt; - int result = 0; - - time_t tnow = time (NULL); - struct tm *now = localtime (&tnow); - - for (cnt = 0; cnt < ntests; ++cnt) - { - size_t size = 0; - int res; - char *buf = NULL; - - do - { - size += 500; - buf = (char *) realloc (buf, size); - if (buf == NULL) - { - puts ("out of memory"); - exit (1); - } - - res = strftime (buf, size, tests[cnt].fmt, now); - if (res != 0) - break; - } - while (size < tests[cnt].max); - - if (res == 0) - { - printf ("%Zu: %s: res == 0 despite size == %Zu\n", - cnt, tests[cnt].fmt, size); - result = 1; - } - else if (size < tests[cnt].min) - { - printf ("%Zu: %s: size == %Zu was enough\n", - cnt, tests[cnt].fmt, size); - result = 1; - } - else - printf ("%Zu: %s: size == %Zu: OK\n", cnt, tests[cnt].fmt, size); - - free (buf); - } - - struct tm ttm = - { - /* Initialize the fields which are needed in the tests. */ - .tm_mday = 1, - .tm_hour = 2 - }; - const struct - { - const char *fmt; - const char *exp; - size_t n; - } ftests[] = - { - { "%-e", "1", 1 }, - { "%-k", "2", 1 }, - { "%-l", "2", 1 }, - }; -#define nftests (sizeof (ftests) / sizeof (ftests[0])) - for (cnt = 0; cnt < nftests; ++cnt) - { - char buf[100]; - size_t r = strftime (buf, sizeof (buf), ftests[cnt].fmt, &ttm); - if (r != ftests[cnt].n) - { - printf ("strftime(\"%s\") returned %zu not %zu\n", - ftests[cnt].fmt, r, ftests[cnt].n); - result = 1; - } - if (strcmp (buf, ftests[cnt].exp) != 0) - { - printf ("strftime(\"%s\") produced \"%s\" not \"%s\"\n", - ftests[cnt].fmt, buf, ftests[cnt].exp); - result = 1; - } - } - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/bin/glibc-2.7/time/tst-strptime.c b/bin/glibc-2.7/time/tst-strptime.c deleted file mode 100644 index 6356aa0d..00000000 --- a/bin/glibc-2.7/time/tst-strptime.c +++ /dev/null @@ -1,193 +0,0 @@ -/* Test for strptime. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1998. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include - - -static const struct -{ - const char *locale; - const char *input; - const char *format; - int wday; - int yday; - int mon; - int mday; -} day_tests[] = -{ - { "C", "2000-01-01", "%Y-%m-%d", 6, 0, 0, 1 }, - { "C", "03/03/00", "%D", 5, 62, 2, 3 }, - { "C", "9/9/99", "%x", 4, 251, 8, 9 }, - { "C", "19990502123412", "%Y%m%d%H%M%S", 0, 121, 4, 2 }, - { "C", "2001 20 Mon", "%Y %U %a", 1, 140, 4, 21 }, - { "C", "2001 21 Mon", "%Y %W %a", 1, 140, 4, 21 }, - { "ja_JP.EUC-JP", "2000-01-01 08:12:21 AM", "%Y-%m-%d %I:%M:%S %p", - 6, 0, 0, 1 }, - { "en_US.ISO-8859-1", "2000-01-01 08:12:21 PM", "%Y-%m-%d %I:%M:%S %p", - 6, 0, 0, 1 }, - { "ja_JP.EUC-JP", "2001 20 \xb7\xee", "%Y %U %a", 1, 140, 4, 21 }, - { "ja_JP.EUC-JP", "2001 21 \xb7\xee", "%Y %W %a", 1, 140, 4, 21 }, -}; - - -static const struct -{ - const char *input; - const char *format; - const char *output; - int wday; - int yday; -} tm_tests [] = -{ - {"17410105012000", "%H%M%S%d%m%Y", "2000-01-05 17:41:01", 3, 4} -}; - - - -static int -test_tm (void) -{ - struct tm tm; - size_t i; - int result = 0; - char buf[100]; - - for (i = 0; i < sizeof (tm_tests) / sizeof (tm_tests[0]); ++i) - { - memset (&tm, '\0', sizeof (tm)); - - char *ret = strptime (tm_tests[i].input, tm_tests[i].format, &tm); - if (ret == NULL) - { - printf ("strptime returned NULL for `%s'\n", tm_tests[i].input); - result = 1; - continue; - } - else if (*ret != '\0') - { - printf ("not all of `%s' read\n", tm_tests[i].input); - result = 1; - } - strftime (buf, sizeof (buf), "%F %T", &tm); - printf ("strptime (\"%s\", \"%s\", ...)\n" - "\tshould be: %s, wday = %d, yday = %3d\n" - "\t is: %s, wday = %d, yday = %3d\n", - tm_tests[i].input, tm_tests[i].format, - tm_tests[i].output, - tm_tests[i].wday, tm_tests[i].yday, - buf, tm.tm_wday, tm.tm_yday); - - if (strcmp (buf, tm_tests[i].output) != 0) - { - printf ("Time and date are not correct.\n"); - result = 1; - } - if (tm.tm_wday != tm_tests[i].wday) - { - printf ("weekday for `%s' incorrect: %d instead of %d\n", - tm_tests[i].input, tm.tm_wday, tm_tests[i].wday); - result = 1; - } - if (tm.tm_yday != tm_tests[i].yday) - { - printf ("yearday for `%s' incorrect: %d instead of %d\n", - tm_tests[i].input, tm.tm_yday, tm_tests[i].yday); - result = 1; - } - } - - return result; -} - - -int -main (int argc, char *argv[]) -{ - struct tm tm; - size_t i; - int result = 0; - - for (i = 0; i < sizeof (day_tests) / sizeof (day_tests[0]); ++i) - { - memset (&tm, '\0', sizeof (tm)); - - if (setlocale (LC_ALL, day_tests[i].locale) == NULL) - { - printf ("cannot set locale %s: %m\n", day_tests[i].locale); - exit (EXIT_FAILURE); - } - - char *ret = strptime (day_tests[i].input, day_tests[i].format, &tm); - if (ret == NULL) - { - printf ("strptime returned NULL for `%s'\n", day_tests[i].input); - result = 1; - continue; - } - else if (*ret != '\0') - { - printf ("not all of `%s' read\n", day_tests[i].input); - result = 1; - } - - printf ("strptime (\"%s\", \"%s\", ...)\n" - "\tshould be: wday = %d, yday = %3d, mon = %2d, mday = %2d\n" - "\t is: wday = %d, yday = %3d, mon = %2d, mday = %2d\n", - day_tests[i].input, day_tests[i].format, - day_tests[i].wday, day_tests[i].yday, - day_tests[i].mon, day_tests[i].mday, - tm.tm_wday, tm.tm_yday, tm.tm_mon, tm.tm_mday); - - if (tm.tm_wday != day_tests[i].wday) - { - printf ("weekday for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_wday, day_tests[i].wday); - result = 1; - } - if (tm.tm_yday != day_tests[i].yday) - { - printf ("yearday for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_yday, day_tests[i].yday); - result = 1; - } - if (tm.tm_mon != day_tests[i].mon) - { - printf ("month for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_mon, day_tests[i].mon); - result = 1; - } - if (tm.tm_mday != day_tests[i].mday) - { - printf ("monthday for `%s' incorrect: %d instead of %d\n", - day_tests[i].input, tm.tm_mday, day_tests[i].mday); - result = 1; - } - } - - setlocale (LC_ALL, "C"); - - result |= test_tm (); - - return result; -} diff --git a/bin/glibc-2.7/time/tst-strptime2.c b/bin/glibc-2.7/time/tst-strptime2.c deleted file mode 100644 index 73552bb8..00000000 --- a/bin/glibc-2.7/time/tst-strptime2.c +++ /dev/null @@ -1,59 +0,0 @@ -#include -#include -#include - - -static const struct -{ - const char *fmt; - long int gmtoff; -} tests[] = - { - { "1113472456 +1000", 36000 }, - { "1113472456 -1000", -36000 }, - { "1113472456 +10", 36000 }, - { "1113472456 -10", -36000 }, - { "1113472456 +1030", 37800 }, - { "1113472456 -1030", -37800 }, - { "1113472456 +0030", 1800 }, - { "1113472456 -0030", -1800 }, - { "1113472456 -1330", LONG_MAX }, - { "1113472456 +1330", LONG_MAX }, - { "1113472456 -1060", LONG_MAX }, - { "1113472456 +1060", LONG_MAX }, - { "1113472456 1030", LONG_MAX }, - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -int -main (void) -{ - int result = 0; - - for (int i = 0; i < ntests; ++i) - { - struct tm tm; - - if (strptime (tests[i].fmt, "%s %z", &tm) == NULL) - { - if (tests[i].gmtoff != LONG_MAX) - { - printf ("round %d: strptime unexpectedly failed\n", i); - result = 1; - } - continue; - } - - if (tm.tm_gmtoff != tests[i].gmtoff) - { - printf ("round %d: tm_gmtoff is %ld\n", i, (long int) tm.tm_gmtoff); - result = 1; - } - } - - if (result == 0) - puts ("all OK"); - - return 0; -} diff --git a/bin/glibc-2.7/time/tst-strptime3.c b/bin/glibc-2.7/time/tst-strptime3.c deleted file mode 100644 index 9a8c6485..00000000 --- a/bin/glibc-2.7/time/tst-strptime3.c +++ /dev/null @@ -1,55 +0,0 @@ -#include -#include -#include -#include - - -int -main (void) -{ - int result = 0; - struct tm tm; - - memset (&tm, 0xaa, sizeof (tm)); - - /* Test we don't crash on uninitialized struct tm. - Some fields might contain bogus values until everything - needed is initialized, but we shouldn't crash. */ - if (strptime ("2007", "%Y", &tm) == NULL - || strptime ("12", "%d", &tm) == NULL - || strptime ("Feb", "%b", &tm) == NULL - || strptime ("13", "%M", &tm) == NULL - || strptime ("21", "%S", &tm) == NULL - || strptime ("16", "%H", &tm) == NULL) - { - puts ("strptimes failed"); - result = 1; - } - - if (tm.tm_sec != 21 || tm.tm_min != 13 || tm.tm_hour != 16 - || tm.tm_mday != 12 || tm.tm_mon != 1 || tm.tm_year != 107 - || tm.tm_wday != 1 || tm.tm_yday != 42) - { - puts ("unexpected tm content"); - result = 1; - } - - if (strptime ("8", "%d", &tm) == NULL) - { - puts ("strptime failed"); - result = 1; - } - - if (tm.tm_sec != 21 || tm.tm_min != 13 || tm.tm_hour != 16 - || tm.tm_mday != 8 || tm.tm_mon != 1 || tm.tm_year != 107 - || tm.tm_wday != 4 || tm.tm_yday != 38) - { - puts ("unexpected tm content"); - result = 1; - } - - if (result == 0) - puts ("all OK"); - - return 0; -} diff --git a/bin/glibc-2.7/time/tst_wcsftime.c b/bin/glibc-2.7/time/tst_wcsftime.c deleted file mode 100644 index 3f6f0d9f..00000000 --- a/bin/glibc-2.7/time/tst_wcsftime.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -int -main (int argc, char *argv[]) -{ - wchar_t buf[200]; - time_t t; - struct tm *tp; - int result = 0; - size_t n; - - time (&t); - tp = gmtime (&t); - - n = wcsftime (buf, sizeof (buf) / sizeof (buf[0]), - L"%H:%M:%S %Y-%m-%d\n", tp); - if (n != 21) - result = 1; - - wprintf (L"It is now %ls", buf); - - wcsftime (buf, sizeof (buf) / sizeof (buf[0]), L"%A\n", tp); - - wprintf (L"The weekday is %ls", buf); - - return result; -} diff --git a/bin/glibc-2.7/time/tzfile.c b/bin/glibc-2.7/time/tzfile.c deleted file mode 100644 index d19b7e9b..00000000 --- a/bin/glibc-2.7/time/tzfile.c +++ /dev/null @@ -1,809 +0,0 @@ -/* Copyright (C) 1991-1993,1995-2001,2003,2004,2006, 2007 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define NOID -#include - -int __use_tzfile; -static dev_t tzfile_dev; -static ino64_t tzfile_ino; -static time_t tzfile_mtime; - -struct ttinfo - { - long int offset; /* Seconds east of GMT. */ - unsigned char isdst; /* Used to set tm_isdst. */ - unsigned char idx; /* Index into `zone_names'. */ - unsigned char isstd; /* Transition times are in standard time. */ - unsigned char isgmt; /* Transition times are in GMT. */ - }; - -struct leap - { - time_t transition; /* Time the transition takes effect. */ - long int change; /* Seconds of correction to apply. */ - }; - -static void compute_tzname_max (size_t) internal_function; - -static size_t num_transitions; -libc_freeres_ptr (static time_t *transitions); -static unsigned char *type_idxs; -static size_t num_types; -static struct ttinfo *types; -static char *zone_names; -static long int rule_stdoff; -static long int rule_dstoff; -static size_t num_leaps; -static struct leap *leaps; -static char *tzspec; - -#include -#include - -/* Decode the four bytes at PTR as a signed integer in network byte order. */ -static inline int -__attribute ((always_inline)) -decode (const void *ptr) -{ - if (BYTE_ORDER == BIG_ENDIAN && sizeof (int) == 4) - return *(const int *) ptr; - if (sizeof (int) == 4) - return bswap_32 (*(const int *) ptr); - - const unsigned char *p = ptr; - int result = *p & (1 << (CHAR_BIT - 1)) ? ~0 : 0; - - result = (result << 8) | *p++; - result = (result << 8) | *p++; - result = (result << 8) | *p++; - result = (result << 8) | *p++; - - return result; -} - - -static inline int64_t -__attribute ((always_inline)) -decode64 (const void *ptr) -{ - if ((BYTE_ORDER == BIG_ENDIAN)) - return *(const int64_t *) ptr; - - return bswap_64 (*(const int64_t *) ptr); -} - - -void -__tzfile_read (const char *file, size_t extra, char **extrap) -{ - static const char default_tzdir[] = TZDIR; - size_t num_isstd, num_isgmt; - register FILE *f; - struct tzhead tzhead; - size_t chars; - register size_t i; - size_t total_size; - size_t types_idx; - size_t leaps_idx; - int was_using_tzfile = __use_tzfile; - int trans_width = 4; - size_t tzspec_len; - - if (sizeof (time_t) != 4 && sizeof (time_t) != 8) - abort (); - - __use_tzfile = 0; - - if (file == NULL) - /* No user specification; use the site-wide default. */ - file = TZDEFAULT; - else if (*file == '\0') - /* User specified the empty string; use UTC with no leap seconds. */ - goto ret_free_transitions; - else - { - /* We must not allow to read an arbitrary file in a setuid - program. So we fail for any file which is not in the - directory hierachy starting at TZDIR - and which is not the system wide default TZDEFAULT. */ - if (__libc_enable_secure - && ((*file == '/' - && memcmp (file, TZDEFAULT, sizeof TZDEFAULT) - && memcmp (file, default_tzdir, sizeof (default_tzdir) - 1)) - || strstr (file, "../") != NULL)) - /* This test is certainly a bit too restrictive but it should - catch all critical cases. */ - goto ret_free_transitions; - } - - if (*file != '/') - { - const char *tzdir; - unsigned int len, tzdir_len; - char *new, *tmp; - - tzdir = getenv ("TZDIR"); - if (tzdir == NULL || *tzdir == '\0') - { - tzdir = default_tzdir; - tzdir_len = sizeof (default_tzdir) - 1; - } - else - tzdir_len = strlen (tzdir); - len = strlen (file) + 1; - new = (char *) __alloca (tzdir_len + 1 + len); - tmp = __mempcpy (new, tzdir, tzdir_len); - *tmp++ = '/'; - memcpy (tmp, file, len); - file = new; - } - - /* If we were already using tzfile, check whether the file changed. */ - struct stat64 st; - if (was_using_tzfile - && stat64 (file, &st) == 0 - && tzfile_ino == st.st_ino && tzfile_dev == st.st_dev - && tzfile_mtime == st.st_mtime) - { - /* Nothing to do. */ - __use_tzfile = 1; - return; - } - - /* Note the file is opened with cancellation in the I/O functions - disabled. */ - f = fopen (file, "rc"); - if (f == NULL) - goto ret_free_transitions; - - /* Get information about the file we are actually using. */ - if (fstat64 (fileno (f), &st) != 0) - { - fclose (f); - goto ret_free_transitions; - } - - free ((void *) transitions); - transitions = NULL; - - /* Remember the inode and device number and modification time. */ - tzfile_dev = st.st_dev; - tzfile_ino = st.st_ino; - tzfile_mtime = st.st_mtime; - - /* No threads reading this stream. */ - __fsetlocking (f, FSETLOCKING_BYCALLER); - - read_again: - if (__builtin_expect (fread_unlocked ((void *) &tzhead, sizeof (tzhead), - 1, f) != 1, 0) - || memcmp (tzhead.tzh_magic, TZ_MAGIC, sizeof (tzhead.tzh_magic)) != 0) - goto lose; - - num_transitions = (size_t) decode (tzhead.tzh_timecnt); - num_types = (size_t) decode (tzhead.tzh_typecnt); - chars = (size_t) decode (tzhead.tzh_charcnt); - num_leaps = (size_t) decode (tzhead.tzh_leapcnt); - num_isstd = (size_t) decode (tzhead.tzh_ttisstdcnt); - num_isgmt = (size_t) decode (tzhead.tzh_ttisgmtcnt); - - /* For platforms with 64-bit time_t we use the new format if available. */ - if (sizeof (time_t) == 8 && trans_width == 4 - && tzhead.tzh_version[0] != '\0') - { - /* We use the 8-byte format. */ - trans_width = 8; - - /* Position the stream before the second header. */ - size_t to_skip = (num_transitions * (4 + 1) - + num_types * 6 - + chars - + num_leaps * 8 - + num_isstd - + num_isgmt); - if (fseek (f, to_skip, SEEK_CUR) != 0) - goto lose; - - goto read_again; - } - - total_size = num_transitions * (sizeof (time_t) + 1); - total_size = ((total_size + __alignof__ (struct ttinfo) - 1) - & ~(__alignof__ (struct ttinfo) - 1)); - types_idx = total_size; - total_size += num_types * sizeof (struct ttinfo) + chars; - total_size = ((total_size + __alignof__ (struct leap) - 1) - & ~(__alignof__ (struct leap) - 1)); - leaps_idx = total_size; - total_size += num_leaps * sizeof (struct leap); - tzspec_len = (sizeof (time_t) == 8 && trans_width == 8 - ? st.st_size - (ftello (f) - + num_transitions * (8 + 1) - + num_types * 6 - + chars - + num_leaps * 8 - + num_isstd - + num_isgmt) - 1 : 0); - - /* Allocate enough memory including the extra block requested by the - caller. */ - transitions = (time_t *) malloc (total_size + tzspec_len + extra); - if (transitions == NULL) - goto lose; - - type_idxs = (unsigned char *) transitions + (num_transitions - * sizeof (time_t)); - types = (struct ttinfo *) ((char *) transitions + types_idx); - zone_names = (char *) types + num_types * sizeof (struct ttinfo); - leaps = (struct leap *) ((char *) transitions + leaps_idx); - if (sizeof (time_t) == 8 && trans_width == 8) - tzspec = (char *) leaps + num_leaps * sizeof (struct leap) + extra; - else - tzspec = NULL; - if (extra > 0) - *extrap = (char *) &leaps[num_leaps]; - - if (sizeof (time_t) == 4 || __builtin_expect (trans_width == 8, 1)) - { - if (__builtin_expect (fread_unlocked (transitions, trans_width + 1, - num_transitions, f) - != num_transitions, 0)) - goto lose; - } - else - { - if (__builtin_expect (fread_unlocked (transitions, 4, num_transitions, f) - != num_transitions, 0) - || __builtin_expect (fread_unlocked (type_idxs, 1, num_transitions, - f) != num_transitions, 0)) - goto lose; - } - - /* Check for bogus indices in the data file, so we can hereafter - safely use type_idxs[T] as indices into `types' and never crash. */ - for (i = 0; i < num_transitions; ++i) - if (__builtin_expect (type_idxs[i] >= num_types, 0)) - goto lose; - - if ((BYTE_ORDER != BIG_ENDIAN && (sizeof (time_t) == 4 || trans_width == 4)) - || (BYTE_ORDER == BIG_ENDIAN && sizeof (time_t) == 8 - && trans_width == 4)) - { - /* Decode the transition times, stored as 4-byte integers in - network (big-endian) byte order. We work from the end of - the array so as not to clobber the next element to be - processed when sizeof (time_t) > 4. */ - i = num_transitions; - while (i-- > 0) - transitions[i] = decode ((char *) transitions + i * 4); - } - else if (BYTE_ORDER != BIG_ENDIAN && sizeof (time_t) == 8) - { - /* Decode the transition times, stored as 8-byte integers in - network (big-endian) byte order. */ - for (i = 0; i < num_transitions; ++i) - transitions[i] = decode64 ((char *) transitions + i * 8); - } - - for (i = 0; i < num_types; ++i) - { - unsigned char x[4]; - int c; - if (__builtin_expect (fread_unlocked (x, 1, sizeof (x), f) != sizeof (x), - 0)) - goto lose; - c = getc_unlocked (f); - if (__builtin_expect ((unsigned int) c > 1u, 0)) - goto lose; - types[i].isdst = c; - c = getc_unlocked (f); - if (__builtin_expect ((size_t) c > chars, 0)) - /* Bogus index in data file. */ - goto lose; - types[i].idx = c; - types[i].offset = (long int) decode (x); - } - - if (__builtin_expect (fread_unlocked (zone_names, 1, chars, f) != chars, 0)) - goto lose; - - for (i = 0; i < num_leaps; ++i) - { - unsigned char x[8]; - if (__builtin_expect (fread_unlocked (x, 1, trans_width, f) - != trans_width, 0)) - goto lose; - if (sizeof (time_t) == 4 || trans_width == 4) - leaps[i].transition = (time_t) decode (x); - else - leaps[i].transition = (time_t) decode64 (x); - - if (__builtin_expect (fread_unlocked (x, 1, 4, f) != 4, 0)) - goto lose; - leaps[i].change = (long int) decode (x); - } - - for (i = 0; i < num_isstd; ++i) - { - int c = getc_unlocked (f); - if (__builtin_expect (c == EOF, 0)) - goto lose; - types[i].isstd = c != 0; - } - while (i < num_types) - types[i++].isstd = 0; - - for (i = 0; i < num_isgmt; ++i) - { - int c = getc_unlocked (f); - if (__builtin_expect (c == EOF, 0)) - goto lose; - types[i].isgmt = c != 0; - } - while (i < num_types) - types[i++].isgmt = 0; - - /* Read the POSIX TZ-style information if possible. */ - if (sizeof (time_t) == 8 && tzspec != NULL) - { - /* Skip over the newline first. */ - if (getc_unlocked (f) != '\n' - || (fread_unlocked (tzspec, 1, tzspec_len - 1, f) - != tzspec_len - 1)) - tzspec = NULL; - else - tzspec[tzspec_len - 1] = '\0'; - } - else if (sizeof (time_t) == 4 && tzhead.tzh_version != '\0') - { - /* Get the TZ string. */ - if (__builtin_expect (fread_unlocked ((void *) &tzhead, sizeof (tzhead), - 1, f) != 1, 0) - || (memcmp (tzhead.tzh_magic, TZ_MAGIC, sizeof (tzhead.tzh_magic)) - != 0)) - goto lose; - - size_t num_transitions2 = (size_t) decode (tzhead.tzh_timecnt); - size_t num_types2 = (size_t) decode (tzhead.tzh_typecnt); - size_t chars2 = (size_t) decode (tzhead.tzh_charcnt); - size_t num_leaps2 = (size_t) decode (tzhead.tzh_leapcnt); - size_t num_isstd2 = (size_t) decode (tzhead.tzh_ttisstdcnt); - size_t num_isgmt2 = (size_t) decode (tzhead.tzh_ttisgmtcnt); - - /* Position the stream before the second header. */ - size_t to_skip = (num_transitions2 * (8 + 1) - + num_types2 * 6 - + chars2 - + num_leaps2 * 12 - + num_isstd2 - + num_isgmt2); - off_t off; - if (fseek (f, to_skip, SEEK_CUR) != 0 - || (off = ftello (f)) < 0 - || st.st_size < off + 2) - goto lose; - - tzspec_len = st.st_size - off - 1; - char *tzstr = alloca (tzspec_len); - if (getc_unlocked (f) != '\n' - || (fread_unlocked (tzstr, 1, tzspec_len - 1, f) != tzspec_len - 1)) - goto lose; - tzstr[tzspec_len - 1] = '\0'; - tzspec = __tzstring (tzstr); - } - - fclose (f); - - /* First "register" all timezone names. */ - for (i = 0; i < num_types; ++i) - (void) __tzstring (&zone_names[types[i].idx]); - - /* Find the standard and daylight time offsets used by the rule file. - We choose the offsets in the types of each flavor that are - transitioned to earliest in time. */ - __tzname[0] = NULL; - __tzname[1] = NULL; - for (i = num_transitions; i > 0; ) - { - int type = type_idxs[--i]; - int dst = types[type].isdst; - - if (__tzname[dst] == NULL) - { - int idx = types[type].idx; - - __tzname[dst] = __tzstring (&zone_names[idx]); - - if (__tzname[1 - dst] != NULL) - break; - } - } - if (__tzname[0] == NULL) - { - /* This should only happen if there are no transition rules. - In this case there should be only one single type. */ - assert (num_types == 1); - __tzname[0] = __tzstring (zone_names); - } - if (__tzname[1] == NULL) - __tzname[1] = __tzname[0]; - - compute_tzname_max (chars); - - if (num_transitions == 0) - /* Use the first rule (which should also be the only one). */ - rule_stdoff = rule_dstoff = types[0].offset; - else - { - int stdoff_set = 0, dstoff_set = 0; - rule_stdoff = rule_dstoff = 0; - i = num_transitions - 1; - do - { - if (!stdoff_set && !types[type_idxs[i]].isdst) - { - stdoff_set = 1; - rule_stdoff = types[type_idxs[i]].offset; - } - else if (!dstoff_set && types[type_idxs[i]].isdst) - { - dstoff_set = 1; - rule_dstoff = types[type_idxs[i]].offset; - } - if (stdoff_set && dstoff_set) - break; - } - while (i-- > 0); - - if (!dstoff_set) - rule_dstoff = rule_stdoff; - } - - __daylight = rule_stdoff != rule_dstoff; - __timezone = -rule_stdoff; - - __use_tzfile = 1; - return; - - lose: - fclose (f); - ret_free_transitions: - free ((void *) transitions); - transitions = NULL; -} - -/* The user specified a hand-made timezone, but not its DST rules. - We will use the names and offsets from the user, and the rules - from the TZDEFRULES file. */ - -void -__tzfile_default (const char *std, const char *dst, - long int stdoff, long int dstoff) -{ - size_t stdlen = strlen (std) + 1; - size_t dstlen = strlen (dst) + 1; - size_t i; - int isdst; - char *cp; - - __tzfile_read (TZDEFRULES, stdlen + dstlen, &cp); - if (!__use_tzfile) - return; - - if (num_types < 2) - { - __use_tzfile = 0; - return; - } - - /* Ignore the zone names read from the file and use the given ones - instead. */ - __mempcpy (__mempcpy (cp, std, stdlen), dst, dstlen); - zone_names = cp; - - /* Now there are only two zones, regardless of what the file contained. */ - num_types = 2; - - /* Now correct the transition times for the user-specified standard and - daylight offsets from GMT. */ - isdst = 0; - for (i = 0; i < num_transitions; ++i) - { - struct ttinfo *trans_type = &types[type_idxs[i]]; - - /* We will use only types 0 (standard) and 1 (daylight). - Fix up this transition to point to whichever matches - the flavor of its original type. */ - type_idxs[i] = trans_type->isdst; - - if (trans_type->isgmt) - /* The transition time is in GMT. No correction to apply. */ ; - else if (isdst && !trans_type->isstd) - /* The type says this transition is in "local wall clock time", and - wall clock time as of the previous transition was DST. Correct - for the difference between the rule's DST offset and the user's - DST offset. */ - transitions[i] += dstoff - rule_dstoff; - else - /* This transition is in "local wall clock time", and wall clock - time as of this iteration is non-DST. Correct for the - difference between the rule's standard offset and the user's - standard offset. */ - transitions[i] += stdoff - rule_stdoff; - - /* The DST state of "local wall clock time" for the next iteration is - as specified by this transition. */ - isdst = trans_type->isdst; - } - - /* Now that we adjusted the transitions to the requested offsets, - reset the rule_stdoff and rule_dstoff values appropriately. They - are used elsewhere. */ - rule_stdoff = stdoff; - rule_dstoff = dstoff; - - /* Reset types 0 and 1 to describe the user's settings. */ - types[0].idx = 0; - types[0].offset = stdoff; - types[0].isdst = 0; - types[1].idx = stdlen; - types[1].offset = dstoff; - types[1].isdst = 1; - - /* Reset the zone names to point to the user's names. */ - __tzname[0] = (char *) std; - __tzname[1] = (char *) dst; - - /* Set the timezone. */ - __timezone = -types[0].offset; - - compute_tzname_max (stdlen + dstlen); -} - -void -__tzfile_compute (time_t timer, int use_localtime, - long int *leap_correct, int *leap_hit, - struct tm *tp) -{ - register size_t i; - - if (use_localtime) - { - __tzname[0] = NULL; - __tzname[1] = NULL; - - if (__builtin_expect (num_transitions == 0 || timer < transitions[0], 0)) - { - /* TIMER is before any transition (or there are no transitions). - Choose the first non-DST type - (or the first if they're all DST types). */ - i = 0; - while (i < num_types && types[i].isdst) - { - if (__tzname[1] == NULL) - __tzname[1] = __tzstring (&zone_names[types[i].idx]); - - ++i; - } - - if (i == num_types) - i = 0; - __tzname[0] = __tzstring (&zone_names[types[i].idx]); - if (__tzname[1] == NULL) - { - size_t j = i; - while (j < num_types) - if (types[j].isdst) - { - __tzname[1] = __tzstring (&zone_names[types[j].idx]); - break; - } - else - ++j; - } - } - else if (__builtin_expect (timer >= transitions[num_transitions - 1], 0)) - { - if (__builtin_expect (tzspec == NULL, 0)) - { - use_last: - i = num_transitions; - goto found; - } - - /* Parse the POSIX TZ-style string. */ - __tzset_parse_tz (tzspec); - - /* Convert to broken down structure. If this fails do not - use the string. */ - if (__builtin_expect (! __offtime (&timer, 0, tp), 0)) - goto use_last; - - /* Use the rules from the TZ string to compute the change. */ - __tz_compute (timer, tp, 1); - - /* If tzspec comes from posixrules loaded by __tzfile_default, - override the STD and DST zone names with the ones user - requested in TZ envvar. */ - if (__builtin_expect (zone_names == (char *) &leaps[num_leaps], 0)) - { - assert (num_types == 2); - __tzname[0] = __tzstring (zone_names); - __tzname[1] = __tzstring (&zone_names[strlen (zone_names) + 1]); - } - - *leap_correct = 0L; - *leap_hit = 0; - return; - } - else - { - /* Find the first transition after TIMER, and - then pick the type of the transition before it. */ - size_t lo = 0; - size_t hi = num_transitions - 1; - /* Assume that DST is changing twice a year and guess initial - search spot from it. - Half of a gregorian year has on average 365.2425 * 86400 / 2 - = 15778476 seconds. */ - i = (transitions[num_transitions - 1] - timer) / 15778476; - if (i < num_transitions) - { - i = num_transitions - 1 - i; - if (timer < transitions[i]) - { - if (i < 10 || timer >= transitions[i - 10]) - { - /* Linear search. */ - while (timer < transitions[i - 1]) - --i; - goto found; - } - hi = i - 10; - } - else - { - if (i + 10 >= num_transitions || timer < transitions[i + 10]) - { - /* Linear search. */ - while (timer >= transitions[i]) - ++i; - goto found; - } - lo = i + 10; - } - } - - /* Binary search. */ - /* assert (timer >= transitions[lo] && timer < transitions[hi]); */ - while (lo + 1 < hi) - { - i = (lo + hi) / 2; - if (timer < transitions[i]) - hi = i; - else - lo = i; - } - i = hi; - - found: - /* assert (timer >= transitions[i - 1] - && (i == num_transitions || timer < transitions[i])); */ - __tzname[types[type_idxs[i - 1]].isdst] - = __tzstring (&zone_names[types[type_idxs[i - 1]].idx]); - size_t j = i; - while (j < num_transitions) - { - int type = type_idxs[j]; - int dst = types[type].isdst; - int idx = types[type].idx; - - if (__tzname[dst] == NULL) - { - __tzname[dst] = __tzstring (&zone_names[idx]); - - if (__tzname[1 - dst] != NULL) - break; - } - - ++j; - } - - if (__builtin_expect (__tzname[0] == NULL, 0)) - __tzname[0] = __tzname[1]; - - i = type_idxs[i - 1]; - } - - struct ttinfo *info = &types[i]; - __daylight = rule_stdoff != rule_dstoff; - __timezone = -rule_stdoff; - - if (__tzname[0] == NULL) - { - /* This should only happen if there are no transition rules. - In this case there should be only one single type. */ - assert (num_types == 1); - __tzname[0] = __tzstring (zone_names); - } - if (__tzname[1] == NULL) - /* There is no daylight saving time. */ - __tzname[1] = __tzname[0]; - tp->tm_isdst = info->isdst; - assert (strcmp (&zone_names[info->idx], __tzname[tp->tm_isdst]) == 0); - tp->tm_zone = __tzname[tp->tm_isdst]; - tp->tm_gmtoff = info->offset; - } - - *leap_correct = 0L; - *leap_hit = 0; - - /* Find the last leap second correction transition time before TIMER. */ - i = num_leaps; - do - if (i-- == 0) - return; - while (timer < leaps[i].transition); - - /* Apply its correction. */ - *leap_correct = leaps[i].change; - - if (timer == leaps[i].transition && /* Exactly at the transition time. */ - ((i == 0 && leaps[i].change > 0) || - leaps[i].change > leaps[i - 1].change)) - { - *leap_hit = 1; - while (i > 0 - && leaps[i].transition == leaps[i - 1].transition + 1 - && leaps[i].change == leaps[i - 1].change + 1) - { - ++*leap_hit; - --i; - } - } -} - -static void -internal_function -compute_tzname_max (size_t chars) -{ - const char *p; - - p = zone_names; - do - { - const char *start = p; - while (*p != '\0') - ++p; - if ((size_t) (p - start) > __tzname_cur_max) - __tzname_cur_max = p - start; - } - while (++p < &zone_names[chars]); -} diff --git a/bin/glibc-2.7/time/tzset.c b/bin/glibc-2.7/time/tzset.c deleted file mode 100644 index 0d542021..00000000 --- a/bin/glibc-2.7/time/tzset.c +++ /dev/null @@ -1,657 +0,0 @@ -/* Copyright (C) 1991-2002,2003,2004,2007 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include -#include -#include -#include -#include -#include -#include - - -#define NOID -#include - -char *__tzname[2] = { (char *) "GMT", (char *) "GMT" }; -int __daylight = 0; -long int __timezone = 0L; - -weak_alias (__tzname, tzname) -weak_alias (__daylight, daylight) -weak_alias (__timezone, timezone) - -/* This locks all the state variables in tzfile.c and this file. */ -__libc_lock_define_initialized (static, tzset_lock) - - -#define min(a, b) ((a) < (b) ? (a) : (b)) -#define max(a, b) ((a) > (b) ? (a) : (b)) -#define sign(x) ((x) < 0 ? -1 : 1) - - -/* This structure contains all the information about a - timezone given in the POSIX standard TZ envariable. */ -typedef struct - { - const char *name; - - /* When to change. */ - enum { J0, J1, M } type; /* Interpretation of: */ - unsigned short int m, n, d; /* Month, week, day. */ - unsigned int secs; /* Time of day. */ - - long int offset; /* Seconds east of GMT (west if < 0). */ - - /* We cache the computed time of change for a - given year so we don't have to recompute it. */ - time_t change; /* When to change to this zone. */ - int computed_for; /* Year above is computed for. */ - } tz_rule; - -/* tz_rules[0] is standard, tz_rules[1] is daylight. */ -static tz_rule tz_rules[2]; - - -static void compute_change (tz_rule *rule, int year) __THROW internal_function; -static void tzset_internal (int always, int explicit) - __THROW internal_function; - -/* List of buffers containing time zone strings. */ -struct tzstring_l -{ - struct tzstring_l *next; - size_t len; /* strlen(data) - doesn't count terminating NUL! */ - char data[0]; -}; - -static struct tzstring_l *tzstring_list; - -/* Allocate a permanent home for S. It will never be moved or deallocated, - but may share space with other strings. - Don't modify the returned string. */ -char * -__tzstring (const char *s) -{ - char *p; - struct tzstring_l *t, *u, *new; - size_t len = strlen (s); - - /* Walk the list and look for a match. If this string is the same - as the end of an already-allocated string, it can share space. */ - for (u = t = tzstring_list; t; u = t, t = t->next) - if (len <= t->len) - { - p = &t->data[t->len - len]; - if (strcmp (s, p) == 0) - return p; - } - - /* Not found; allocate a new buffer. */ - new = malloc (sizeof (struct tzstring_l) + len + 1); - if (!new) - return NULL; - - new->next = NULL; - new->len = len; - strcpy (new->data, s); - - if (u) - u->next = new; - else - tzstring_list = new; - - return new->data; -} - -/* Maximum length of a timezone name. tzset_internal keeps this up to date - (never decreasing it) when ! __use_tzfile. - tzfile.c keeps it up to date when __use_tzfile. */ -size_t __tzname_cur_max; - -long int -__tzname_max () -{ - __libc_lock_lock (tzset_lock); - - tzset_internal (0, 0); - - __libc_lock_unlock (tzset_lock); - - return __tzname_cur_max; -} - -static char *old_tz; - -static void -internal_function -update_vars (void) -{ - __daylight = tz_rules[0].offset != tz_rules[1].offset; - __timezone = -tz_rules[0].offset; - __tzname[0] = (char *) tz_rules[0].name; - __tzname[1] = (char *) tz_rules[1].name; - - /* Keep __tzname_cur_max up to date. */ - size_t len0 = strlen (__tzname[0]); - size_t len1 = strlen (__tzname[1]); - if (len0 > __tzname_cur_max) - __tzname_cur_max = len0; - if (len1 > __tzname_cur_max) - __tzname_cur_max = len1; -} - -/* Parse the POSIX TZ-style string. */ -void -__tzset_parse_tz (tz) - const char *tz; -{ - register size_t l; - char *tzbuf; - unsigned short int hh, mm, ss; - unsigned short int whichrule; - - /* Clear out old state and reset to unnamed UTC. */ - memset (tz_rules, 0, sizeof tz_rules); - tz_rules[0].name = tz_rules[1].name = ""; - - /* Get the standard timezone name. */ - tzbuf = strdupa (tz); - - if (sscanf (tz, "%[^0-9,+-]", tzbuf) != 1 || - (l = strlen (tzbuf)) < 3) - goto out; - - tz_rules[0].name = __tzstring (tzbuf); - - tz += l; - - /* Figure out the standard offset from UTC. */ - if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz))) - goto out; - - if (*tz == '-' || *tz == '+') - tz_rules[0].offset = *tz++ == '-' ? 1L : -1L; - else - tz_rules[0].offset = -1L; - switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss)) - { - default: - tz_rules[0].offset = 0; - goto out; - case 1: - mm = 0; - case 2: - ss = 0; - case 3: - break; - } - tz_rules[0].offset *= (min (ss, 59) + (min (mm, 59) * 60) + - (min (hh, 24) * 60 * 60)); - - for (l = 0; l < 3; ++l) - { - while (isdigit(*tz)) - ++tz; - if (l < 2 && *tz == ':') - ++tz; - } - - /* Get the DST timezone name (if any). */ - if (*tz != '\0') - { - char *n = tzbuf + strlen (tzbuf) + 1; - if (sscanf (tz, "%[^0-9,+-]", n) != 1 || - (l = strlen (n)) < 3) - goto done_names; /* Punt on name, set up the offsets. */ - - tz_rules[1].name = __tzstring (n); - - tz += l; - - /* Figure out the DST offset from GMT. */ - if (*tz == '-' || *tz == '+') - tz_rules[1].offset = *tz++ == '-' ? 1L : -1L; - else - tz_rules[1].offset = -1L; - - switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss)) - { - default: - /* Default to one hour later than standard time. */ - tz_rules[1].offset = tz_rules[0].offset + (60 * 60); - break; - - case 1: - mm = 0; - case 2: - ss = 0; - case 3: - tz_rules[1].offset *= (min (ss, 59) + (min (mm, 59) * 60) + - (min (hh, 23) * (60 * 60))); - break; - } - for (l = 0; l < 3; ++l) - { - while (isdigit (*tz)) - ++tz; - if (l < 2 && *tz == ':') - ++tz; - } - if (*tz == '\0' || (tz[0] == ',' && tz[1] == '\0')) - { - /* There is no rule. See if there is a default rule file. */ - __tzfile_default (tz_rules[0].name, tz_rules[1].name, - tz_rules[0].offset, tz_rules[1].offset); - if (__use_tzfile) - { - free (old_tz); - old_tz = NULL; - return; - } - } - } - else - { - /* There is no DST. */ - tz_rules[1].name = tz_rules[0].name; - tz_rules[1].offset = tz_rules[0].offset; - goto out; - } - - done_names: - /* Figure out the standard <-> DST rules. */ - for (whichrule = 0; whichrule < 2; ++whichrule) - { - register tz_rule *tzr = &tz_rules[whichrule]; - - /* Ignore comma to support string following the incorrect - specification in early POSIX.1 printings. */ - tz += *tz == ','; - - /* Get the date of the change. */ - if (*tz == 'J' || isdigit (*tz)) - { - char *end; - tzr->type = *tz == 'J' ? J1 : J0; - if (tzr->type == J1 && !isdigit (*++tz)) - goto out; - tzr->d = (unsigned short int) strtoul (tz, &end, 10); - if (end == tz || tzr->d > 365) - goto out; - else if (tzr->type == J1 && tzr->d == 0) - goto out; - tz = end; - } - else if (*tz == 'M') - { - int n; - tzr->type = M; - if (sscanf (tz, "M%hu.%hu.%hu%n", - &tzr->m, &tzr->n, &tzr->d, &n) != 3 || - tzr->m < 1 || tzr->m > 12 || - tzr->n < 1 || tzr->n > 5 || tzr->d > 6) - goto out; - tz += n; - } - else if (*tz == '\0') - { - /* United States Federal Law, the equivalent of "M4.1.0,M10.5.0". */ - tzr->type = M; - if (tzr == &tz_rules[0]) - { - tzr->m = 4; - tzr->n = 1; - tzr->d = 0; - } - else - { - tzr->m = 10; - tzr->n = 5; - tzr->d = 0; - } - } - else - goto out; - - if (*tz != '\0' && *tz != '/' && *tz != ',') - goto out; - else if (*tz == '/') - { - /* Get the time of day of the change. */ - ++tz; - if (*tz == '\0') - goto out; - switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss)) - { - default: - hh = 2; /* Default to 2:00 AM. */ - case 1: - mm = 0; - case 2: - ss = 0; - case 3: - break; - } - for (l = 0; l < 3; ++l) - { - while (isdigit (*tz)) - ++tz; - if (l < 2 && *tz == ':') - ++tz; - } - tzr->secs = (hh * 60 * 60) + (mm * 60) + ss; - } - else - /* Default to 2:00 AM. */ - tzr->secs = 2 * 60 * 60; - - tzr->computed_for = -1; - } - - out: - update_vars (); -} - -/* Interpret the TZ envariable. */ -static void -internal_function -tzset_internal (always, explicit) - int always; - int explicit; -{ - static int is_initialized; - register const char *tz; - - if (is_initialized && !always) - return; - is_initialized = 1; - - /* Examine the TZ environment variable. */ - tz = getenv ("TZ"); - if (tz == NULL && !explicit) - /* Use the site-wide default. This is a file name which means we - would not see changes to the file if we compare only the file - name for change. We want to notice file changes if tzset() has - been called explicitly. Leave TZ as NULL in this case. */ - tz = TZDEFAULT; - if (tz && *tz == '\0') - /* User specified the empty string; use UTC explicitly. */ - tz = "Universal"; - - /* A leading colon means "implementation defined syntax". - We ignore the colon and always use the same algorithm: - try a data file, and if none exists parse the 1003.1 syntax. */ - if (tz && *tz == ':') - ++tz; - - /* Check whether the value changed since the last run. */ - if (old_tz != NULL && tz != NULL && strcmp (tz, old_tz) == 0) - /* No change, simply return. */ - return; - - if (tz == NULL) - /* No user specification; use the site-wide default. */ - tz = TZDEFAULT; - - tz_rules[0].name = NULL; - tz_rules[1].name = NULL; - - /* Save the value of `tz'. */ - if (old_tz != NULL) - free (old_tz); - old_tz = tz ? __strdup (tz) : NULL; - - /* Try to read a data file. */ - __tzfile_read (tz, 0, NULL); - if (__use_tzfile) - return; - - /* No data file found. Default to UTC if nothing specified. */ - - if (tz == NULL || *tz == '\0' - || (TZDEFAULT != NULL && strcmp (tz, TZDEFAULT) == 0)) - { - tz_rules[0].name = tz_rules[1].name = "UTC"; - tz_rules[0].type = tz_rules[1].type = J0; - tz_rules[0].m = tz_rules[0].n = tz_rules[0].d = 0; - tz_rules[1].m = tz_rules[1].n = tz_rules[1].d = 0; - tz_rules[0].secs = tz_rules[1].secs = 0; - tz_rules[0].offset = tz_rules[1].offset = 0L; - tz_rules[0].change = tz_rules[1].change = (time_t) -1; - tz_rules[0].computed_for = tz_rules[1].computed_for = 0; - update_vars (); - return; - } - - __tzset_parse_tz (tz); -} - -/* Figure out the exact time (as a time_t) in YEAR - when the change described by RULE will occur and - put it in RULE->change, saving YEAR in RULE->computed_for. */ -static void -internal_function -compute_change (rule, year) - tz_rule *rule; - int year; -{ - register time_t t; - - if (year != -1 && rule->computed_for == year) - /* Operations on times in 2 BC will be slower. Oh well. */ - return; - - /* First set T to January 1st, 0:00:00 GMT in YEAR. */ - if (year > 1970) - t = ((year - 1970) * 365 - + /* Compute the number of leapdays between 1970 and YEAR - (exclusive). There is a leapday every 4th year ... */ - + ((year - 1) / 4 - 1970 / 4) - /* ... except every 100th year ... */ - - ((year - 1) / 100 - 1970 / 100) - /* ... but still every 400th year. */ - + ((year - 1) / 400 - 1970 / 400)) * SECSPERDAY; - else - t = 0; - - switch (rule->type) - { - case J1: - /* Jn - Julian day, 1 == January 1, 60 == March 1 even in leap years. - In non-leap years, or if the day number is 59 or less, just - add SECSPERDAY times the day number-1 to the time of - January 1, midnight, to get the day. */ - t += (rule->d - 1) * SECSPERDAY; - if (rule->d >= 60 && __isleap (year)) - t += SECSPERDAY; - break; - - case J0: - /* n - Day of year. - Just add SECSPERDAY times the day number to the time of Jan 1st. */ - t += rule->d * SECSPERDAY; - break; - - case M: - /* Mm.n.d - Nth "Dth day" of month M. */ - { - unsigned int i; - int d, m1, yy0, yy1, yy2, dow; - const unsigned short int *myday = - &__mon_yday[__isleap (year)][rule->m]; - - /* First add SECSPERDAY for each day in months before M. */ - t += myday[-1] * SECSPERDAY; - - /* Use Zeller's Congruence to get day-of-week of first day of month. */ - m1 = (rule->m + 9) % 12 + 1; - yy0 = (rule->m <= 2) ? (year - 1) : year; - yy1 = yy0 / 100; - yy2 = yy0 % 100; - dow = ((26 * m1 - 2) / 10 + 1 + yy2 + yy2 / 4 + yy1 / 4 - 2 * yy1) % 7; - if (dow < 0) - dow += 7; - - /* DOW is the day-of-week of the first day of the month. Get the - day-of-month (zero-origin) of the first DOW day of the month. */ - d = rule->d - dow; - if (d < 0) - d += 7; - for (i = 1; i < rule->n; ++i) - { - if (d + 7 >= (int) myday[0] - myday[-1]) - break; - d += 7; - } - - /* D is the day-of-month (zero-origin) of the day we want. */ - t += d * SECSPERDAY; - } - break; - } - - /* T is now the Epoch-relative time of 0:00:00 GMT on the day we want. - Just add the time of day and local offset from GMT, and we're done. */ - - rule->change = t - rule->offset + rule->secs; - rule->computed_for = year; -} - - -/* Figure out the correct timezone for TM and set `__tzname', - `__timezone', and `__daylight' accordingly. */ -void -internal_function -__tz_compute (timer, tm, use_localtime) - time_t timer; - struct tm *tm; - int use_localtime; -{ - compute_change (&tz_rules[0], 1900 + tm->tm_year); - compute_change (&tz_rules[1], 1900 + tm->tm_year); - - if (use_localtime) - { - int isdst; - - /* We have to distinguish between northern and southern - hemisphere. For the latter the daylight saving time - ends in the next year. */ - if (__builtin_expect (tz_rules[0].change - > tz_rules[1].change, 0)) - isdst = (timer < tz_rules[1].change - || timer >= tz_rules[0].change); - else - isdst = (timer >= tz_rules[0].change - && timer < tz_rules[1].change); - tm->tm_isdst = isdst; - tm->tm_zone = __tzname[isdst]; - tm->tm_gmtoff = tz_rules[isdst].offset; - } -} - -/* Reinterpret the TZ environment variable and set `tzname'. */ -#undef tzset - -void -__tzset (void) -{ - __libc_lock_lock (tzset_lock); - - tzset_internal (1, 1); - - if (!__use_tzfile) - { - /* Set `tzname'. */ - __tzname[0] = (char *) tz_rules[0].name; - __tzname[1] = (char *) tz_rules[1].name; - } - - __libc_lock_unlock (tzset_lock); -} -weak_alias (__tzset, tzset) - -/* Return the `struct tm' representation of *TIMER in the local timezone. - Use local time if USE_LOCALTIME is nonzero, UTC otherwise. */ -struct tm * -__tz_convert (const time_t *timer, int use_localtime, struct tm *tp) -{ - long int leap_correction; - int leap_extra_secs; - - if (timer == NULL) - { - __set_errno (EINVAL); - return NULL; - } - - __libc_lock_lock (tzset_lock); - - /* Update internal database according to current TZ setting. - POSIX.1 8.3.7.2 says that localtime_r is not required to set tzname. - This is a good idea since this allows at least a bit more parallelism. */ - tzset_internal (tp == &_tmbuf && use_localtime, 1); - - if (__use_tzfile) - __tzfile_compute (*timer, use_localtime, &leap_correction, - &leap_extra_secs, tp); - else - { - if (! __offtime (timer, 0, tp)) - tp = NULL; - else - __tz_compute (*timer, tp, use_localtime); - leap_correction = 0L; - leap_extra_secs = 0; - } - - if (tp) - { - if (! use_localtime) - { - tp->tm_isdst = 0; - tp->tm_zone = "GMT"; - tp->tm_gmtoff = 0L; - } - - if (__offtime (timer, tp->tm_gmtoff - leap_correction, tp)) - tp->tm_sec += leap_extra_secs; - else - tp = NULL; - } - - __libc_lock_unlock (tzset_lock); - - return tp; -} - - -libc_freeres_fn (free_mem) -{ - while (tzstring_list != NULL) - { - struct tzstring_l *old = tzstring_list; - - tzstring_list = tzstring_list->next; - free (old); - } - free (old_tz); - old_tz = NULL; -} diff --git a/bin/glibc-2.7/time/wcsftime.c b/bin/glibc-2.7/time/wcsftime.c deleted file mode 100644 index dcda6be1..00000000 --- a/bin/glibc-2.7/time/wcsftime.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright (C) 1991-1999, 2000, 2001, 2002, 2003, 2004 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - - -size_t -wcsftime (wchar_t *s, size_t maxsize, const wchar_t *format, - const struct tm *tp) -{ - return __wcsftime_l (s, maxsize, format, tp, _NL_CURRENT_LOCALE); -} -libc_hidden_def (wcsftime) diff --git a/bin/glibc-2.7/time/wcsftime_l.c b/bin/glibc-2.7/time/wcsftime_l.c deleted file mode 100644 index e9443ef6..00000000 --- a/bin/glibc-2.7/time/wcsftime_l.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include -#include - -#define USE_IN_EXTENDED_LOCALE_MODEL 1 -#define COMPILE_WIDE 1 -#include "strftime_l.c" - -weak_alias (__wcsftime_l, wcsftime_l) diff --git a/bin/glibc-2.7/timezone/Makefile b/bin/glibc-2.7/timezone/Makefile deleted file mode 100644 index 3d5b73ae..00000000 --- a/bin/glibc-2.7/timezone/Makefile +++ /dev/null @@ -1,223 +0,0 @@ -# Copyright (C) 1998,1999,2000,2002,2005,2007 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, write to the Free -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA. - -# -# Makefile for timezone information -# -subdir := timezone - -distribute := tzfile.h private.h scheck.c ialloc.c yearistype \ - iso3166.tab zone.tab tzselect.ksh checktab.awk \ - README - -extra-objs := scheck.o ialloc.o - -others := zdump zic -tests := test-tz tst-timezone - -tzbases := africa antarctica asia australasia europe northamerica \ - southamerica etcetera factory \ - solar87 solar88 solar89 -tzlinks := backward systemv -tzfiles := $(tzbases) $(tzlinks) -# pacificnew doesn't compile; if it is to be used, it should be included in -# northamerica. -distribute += $(tzfiles) leapseconds pacificnew simplebackw - -generated := $(addprefix z.,$(tzfiles)) -install-sbin := zic zdump - -generated-dirs = testdata - -all: # Make this the default target; it will be defined in Rules. - -include ../Makeconfig # Get objpfx defined so we can use it below. - -CPPFLAGS-zic = -DNOT_IN_libc - -# z.* use this variable. -define nl - - -endef -ifndef avoid-generated -ifndef inhibit_timezone_rules --include $(addprefix $(objpfx)z.,$(tzfiles)) -endif -endif - -# Make these absolute file names. -installed-localtime-file := $(firstword $(filter /%,$(inst_localtime-file)) \ - $(addprefix $(inst_zonedir)/, \ - $(localtime-file))) -installed-posixrules-file := $(firstword $(filter /%,$(posixrules-file)) \ - $(addprefix $(inst_zonedir)/, \ - $(posixrules-file))) - -ifeq ($(cross-compiling),no) -# Don't try to install the zoneinfo files since we can't run zic. -install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \ - $(zonenames:%=posix/%) \ - $(zonenames:%=right/%)) \ - $(installed-localtime-file) $(installed-posixrules-file) -endif - -ifeq ($(have-ksh),yes) -install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab -install-bin-script = tzselect -generated += tzselect -endif - -include ../Rules - - -$(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile -# Kludge alert: we use an implicit rule (in what we are generating here) -# because that is the only way to tell Make that the one command builds all -# the files. -# The extra kludge for the $(tzlinks) files is necessary since running zic -# this file requires all other files to exist. Blech! - $(make-target-directory) - (echo 'define $*-zones' ;\ - $(AWK) '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^ ;\ - echo 'endef' ;\ - echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))' ;\ - echo 'ifdef $*-zones' ;\ - if test x$(findstring $*, $(tzlinks)) != x; then \ - echo '$$(addprefix $$(inst_zonedir)/right/,$$($*-zones)): \';\ - echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/right/,$$($$t-zones)))' ;\ - echo '$$(addprefix $$(inst_zonedir)/posix/,$$($*-zones)): \';\ - echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/posix/,$$($$t-zones)))' ;\ - echo '$$(addprefix $$(inst_zonedir)/,$$($*-zones)): \' ;\ - echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/,$$($$t-zones)))' ;\ - fi ;\ - echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/right/,$$($*-zones)): \' ;\ - echo '$< $$(objpfx)zic leapseconds yearistype' ;\ - echo ' $$(tzcompile)' ;\ - echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/posix/,$$($*-zones)): \' ;\ - echo '$< $$(objpfx)zic /dev/null yearistype' ;\ - echo ' $$(tzcompile)' ;\ - echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/,$$($*-zones)): \' ;\ - echo '$< $$(objpfx)zic $$(leapseconds) yearistype' ;\ - echo ' $$(tzcompile)' ;\ - echo 'endif' ;\ - echo 'zonenames := $$(zonenames) $$($*-zones)' ;\ - ) > $@.new - mv $@.new $@ - -.PHONY: echo-zonenames -echo-zonenames: - @echo 'Known zones: $(zonenames)' - - -# We have to use `-d $(inst_zonedir)' to explictly tell zic where to -# place the output files although $(zonedir) is compiled in. But the -# user might have set $(install_root) on the command line of `make install'. -zic-cmd = $(built-program-cmd) -d $(inst_zonedir) -tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \ - -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $< - -# The source files specify the zone names relative to the -d directory, -# so for the posix/ and right/ flavors we need to pass -d $(inst_zonedir)/posix -# and the like. This magic extracts /posix or /right if it's the first -# component after $(inst_zonedir) in the target name $@. -target-zone-flavor = $(filter /posix /right, \ - /$(firstword $(subst /, , \ - $(patsubst $(inst_zonedir)/%,%,$@)))) - -ifdef localtime -$(installed-localtime-file): $(inst_zonedir)/$(localtime) $(objpfx)zic \ - $(+force) - $(make-target-directory) - if test -r $@; then \ - echo Site timezone NOT reset to Factory.; \ - else \ - rm -f $@T; \ - $(SHELL) $(..)scripts/rellns-sh $< $@T; \ - mv -f $@T $@; \ - fi -endif -ifdef posixrules -$(installed-posixrules-file): $(inst_zonedir)/$(posixrules) $(objpfx)zic \ - $(+force) - $(zic-cmd) -p $(posixrules) -endif - - -$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o - -tz-cflags = -DTZDIR='"$(zonedir)"' \ - -DTZDEFAULT='"$(localtime-file)"' \ - -DTZDEFRULES='"$(posixrules-file)"' \ - -DTM_GMTOFF=tm_gmtoff -DTM_ZONE=tm_zone - -CFLAGS-zdump.c = -fwrapv -Wno-strict-prototypes -DNOID $(tz-cflags) \ - -DHAVE_GETTEXT -CFLAGS-zic.c = -Wno-strict-prototypes -DNOID $(tz-cflags) -DHAVE_GETTEXT -CFLAGS-ialloc.c = -Wno-strict-prototypes -DNOID -DHAVE_GETTEXT -CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID -DHAVE_GETTEXT - -# We have to make sure the data for testing the tz functions is available. -# Don't add leapseconds here since test-tz made checks that work only without -# leapseconds. -testdata = $(objpfx)testdata -define build-testdata -GCONV_PATH=${common-objpfx}iconvdata LANGUAGE=C LC_ALL=C \ - $(built-program-cmd) -d $(testdata) -y ./yearistype $< -endef - -$(objpfx)test-tz.out: $(addprefix $(testdata)/, America/New_York Etc/UTC UTC) -$(objpfx)tst-timezone.out: $(addprefix $(testdata)/, \ - Europe/Berlin Universal \ - Australia/Melbourne \ - America/Sao_Paulo Asia/Tokyo \ - Europe/London) - -test-tz-ENV = TZDIR=$(testdata) -tst-timezone-ENV = TZDIR=$(testdata) - -# Note this must come second in the deps list for $(built-program-cmd) to work. -zic-deps = $(objpfx)zic $(leapseconds) yearistype - -$(testdata)/America/New_York: northamerica $(zic-deps) - $(build-testdata) -$(testdata)/Etc/UTC: etcetera $(zic-deps) - $(build-testdata) -# Use a pattern rule to indicate the command produces both targets at once. -# Two separate targets built separately can collide if in parallel. -%/UTC %/Universal: simplebackw $(zic-deps) %/Etc/UTC - $(build-testdata) -$(testdata)/%/Berlin $(testdata)/%/London: europe $(zic-deps) - $(build-testdata) -$(testdata)/Australia/Melbourne: australasia $(zic-deps) - $(build-testdata) -$(testdata)/America/Sao_Paulo: southamerica $(zic-deps) - $(build-testdata) -$(testdata)/Asia/Tokyo: asia $(zic-deps) - $(build-testdata) - - -$(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make - sed -e 's%@KSH@%$(KSH)%g' \ - -e 's%@TZDIR@%$(zonedir)%g' < $< > $@.new - chmod 555 $@.new - mv -f $@.new $@ - -$(addprefix $(inst_zonedir)/,iso3166.tab zone.tab): \ - $(inst_zonedir)/%: % $(+force) - $(do-install) diff --git a/bin/glibc-2.7/timezone/README b/bin/glibc-2.7/timezone/README deleted file mode 100644 index f9aebca7..00000000 --- a/bin/glibc-2.7/timezone/README +++ /dev/null @@ -1,17 +0,0 @@ -The files - zic.c zdump.c ialloc.c scheck.c tzfile.h - private.h tzselect.ksh checktab.awk -come from the tzcode package by Arthur David Olson et.al. - -The files - africa antarctica asia australasia europe - northamerica southamerica pacificnew etcetera factory - backward systemv solar87 solar88 solar89 - iso3166.tab zone.tab leapseconds yearistype -come from the tzdata package by Arthur David Olson et.al. - -Please check the ChangeLog files in the top level directory for the -version of the tzcode and tzdata packages. - -These packages may be found at ftp://elsie.nci.nih.gov/pub/. Commentary -should be addressed to tz@elsie.nci.nih.gov. diff --git a/bin/glibc-2.7/timezone/africa b/bin/glibc-2.7/timezone/africa deleted file mode 100644 index 434110cc..00000000 --- a/bin/glibc-2.7/timezone/africa +++ /dev/null @@ -1,673 +0,0 @@ -# @(#)africa 8.10 -#
-
-# This data is by no means authoritative; if you think you know better,
-# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
-
-# From Paul Eggert (2006-03-22):
-#
-# A good source for time zone historical data outside the U.S. is
-# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
-# San Diego: ACS Publications, Inc. (2003).
-#
-# Gwillim Law writes that a good source
-# for recent time zone data is the International Air Transport
-# Association's Standard Schedules Information Manual (IATA SSIM),
-# published semiannually.  Law sent in several helpful summaries
-# of the IATA's data after 1990.
-#
-# Except where otherwise noted, Shanks & Pottenger is the source for
-# entries through 1990, and IATA SSIM is the source for entries afterwards.
-#
-# Another source occasionally used is Edward W. Whitman, World Time Differences,
-# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
-# I found in the UCLA library.
-#
-# A reliable and entertaining source about time zones is
-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
-#
-# Previous editions of this database used WAT, CAT, SAT, and EAT
-# for +0:00 through +3:00, respectively,
-# but Mark R V Murray reports that
-# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
-# `CAT' is commonly used for +2:00 in countries north of South Africa, and
-# `WAT' is probably the best name for +1:00, as the common phrase for
-# the area that includes Nigeria is ``West Africa''.
-# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
-#
-# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
-# I'd guess that this was because people needed _some_ name for -1:00,
-# and at the time, far west Africa was the only major land area in -1:00.
-# This usage is now obsolete, as the last use of -1:00 on the African
-# mainland seems to have been 1976 in Western Sahara.
-#
-# To summarize, the following abbreviations seem to have some currency:
-#	-1:00	WAT	West Africa Time (no longer used)
-#	 0:00	GMT	Greenwich Mean Time
-#	 2:00	CAT	Central Africa Time
-#	 2:00	SAST	South Africa Standard Time
-# and Murray suggests the following abbreviation:
-#	 1:00	WAT	West Africa Time
-# I realize that this leads to `WAT' being used for both -1:00 and 1:00
-# for times before 1976, but this is the best I can think of
-# until we get more information.
-#
-# I invented the following abbreviations; corrections are welcome!
-#	 2:00	WAST	West Africa Summer Time
-#	 2:30	BEAT	British East Africa Time (no longer used)
-#	 2:44:45 BEAUT	British East Africa Unified Time (no longer used)
-#	 3:00	CAST	Central Africa Summer Time (no longer used)
-#	 3:00	SAST	South Africa Summer Time (no longer used)
-#	 3:00	EAT	East Africa Time
-#	 4:00	EAST	East Africa Summer Time (no longer used)
-
-# Algeria
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Algeria	1916	only	-	Jun	14	23:00s	1:00	S
-Rule	Algeria	1916	1919	-	Oct	Sun>=1	23:00s	0	-
-Rule	Algeria	1917	only	-	Mar	24	23:00s	1:00	S
-Rule	Algeria	1918	only	-	Mar	 9	23:00s	1:00	S
-Rule	Algeria	1919	only	-	Mar	 1	23:00s	1:00	S
-Rule	Algeria	1920	only	-	Feb	14	23:00s	1:00	S
-Rule	Algeria	1920	only	-	Oct	23	23:00s	0	-
-Rule	Algeria	1921	only	-	Mar	14	23:00s	1:00	S
-Rule	Algeria	1921	only	-	Jun	21	23:00s	0	-
-Rule	Algeria	1939	only	-	Sep	11	23:00s	1:00	S
-Rule	Algeria	1939	only	-	Nov	19	 1:00	0	-
-Rule	Algeria	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
-Rule	Algeria	1944	only	-	Oct	 8	 2:00	0	-
-Rule	Algeria	1945	only	-	Sep	16	 1:00	0	-
-Rule	Algeria	1971	only	-	Apr	25	23:00s	1:00	S
-Rule	Algeria	1971	only	-	Sep	26	23:00s	0	-
-Rule	Algeria	1977	only	-	May	 6	 0:00	1:00	S
-Rule	Algeria	1977	only	-	Oct	21	 0:00	0	-
-Rule	Algeria	1978	only	-	Mar	24	 1:00	1:00	S
-Rule	Algeria	1978	only	-	Sep	22	 3:00	0	-
-Rule	Algeria	1980	only	-	Apr	25	 0:00	1:00	S
-Rule	Algeria	1980	only	-	Oct	31	 2:00	0	-
-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
-# more precise 0:09:21.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Algiers	0:12:12 -	LMT	1891 Mar 15 0:01
-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
-			0:00	Algeria	WE%sT	1940 Feb 25 2:00
-			1:00	Algeria	CE%sT	1946 Oct  7
-			0:00	-	WET	1956 Jan 29
-			1:00	-	CET	1963 Apr 14
-			0:00	Algeria	WE%sT	1977 Oct 21
-			1:00	Algeria	CE%sT	1979 Oct 26
-			0:00	Algeria	WE%sT	1981 May
-			1:00	-	CET
-
-# Angola
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Luanda	0:52:56	-	LMT	1892
-			0:52:04	-	AOT	1911 May 26 # Angola Time
-			1:00	-	WAT
-
-# Benin
-# Whitman says they switched to 1:00 in 1946, not 1934;
-# go with Shanks & Pottenger.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Porto-Novo	0:10:28	-	LMT	1912
-			0:00	-	GMT	1934 Feb 26
-			1:00	-	WAT
-
-# Botswana
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Gaborone	1:43:40 -	LMT	1885
-			2:00	-	CAT	1943 Sep 19 2:00
-			2:00	1:00	CAST	1944 Mar 19 2:00
-			2:00	-	CAT
-
-# Burkina Faso
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Ouagadougou	-0:06:04 -	LMT	1912
-			 0:00	-	GMT
-
-# Burundi
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Bujumbura	1:57:28	-	LMT	1890
-			2:00	-	CAT
-
-# Cameroon
-# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Douala	0:38:48	-	LMT	1912
-			1:00	-	WAT
-
-# Cape Verde
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/Cape_Verde -1:34:04 -	LMT	1907			# Praia
-			-2:00	-	CVT	1942 Sep
-			-2:00	1:00	CVST	1945 Oct 15
-			-2:00	-	CVT	1975 Nov 25 2:00
-			-1:00	-	CVT
-
-# Central African Republic
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Bangui	1:14:20	-	LMT	1912
-			1:00	-	WAT
-
-# Chad
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Ndjamena	1:00:12 -	LMT	1912
-			1:00	-	WAT	1979 Oct 14
-			1:00	1:00	WAST	1980 Mar  8
-			1:00	-	WAT
-
-# Comoros
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Comoro	2:53:04 -	LMT	1911 Jul   # Moroni, Gran Comoro
-			3:00	-	EAT
-
-# Democratic Republic of Congo
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Kinshasa	1:01:12 -	LMT	1897 Nov 9
-			1:00	-	WAT
-Zone Africa/Lubumbashi	1:49:52 -	LMT	1897 Nov 9
-			2:00	-	CAT
-
-# Republic of the Congo
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Brazzaville	1:01:08 -	LMT	1912
-			1:00	-	WAT
-
-# Cote D'Ivoire
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Abidjan	-0:16:08 -	LMT	1912
-			 0:00	-	GMT
-
-# Djibouti
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Djibouti	2:52:36 -	LMT	1911 Jul
-			3:00	-	EAT
-
-###############################################################################
-
-# Egypt
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Egypt	1940	only	-	Jul	15	0:00	1:00	S
-Rule	Egypt	1940	only	-	Oct	 1	0:00	0	-
-Rule	Egypt	1941	only	-	Apr	15	0:00	1:00	S
-Rule	Egypt	1941	only	-	Sep	16	0:00	0	-
-Rule	Egypt	1942	1944	-	Apr	 1	0:00	1:00	S
-Rule	Egypt	1942	only	-	Oct	27	0:00	0	-
-Rule	Egypt	1943	1945	-	Nov	 1	0:00	0	-
-Rule	Egypt	1945	only	-	Apr	16	0:00	1:00	S
-Rule	Egypt	1957	only	-	May	10	0:00	1:00	S
-Rule	Egypt	1957	1958	-	Oct	 1	0:00	0	-
-Rule	Egypt	1958	only	-	May	 1	0:00	1:00	S
-Rule	Egypt	1959	1981	-	May	 1	1:00	1:00	S
-Rule	Egypt	1959	1965	-	Sep	30	3:00	0	-
-Rule	Egypt	1966	1994	-	Oct	 1	3:00	0	-
-Rule	Egypt	1982	only	-	Jul	25	1:00	1:00	S
-Rule	Egypt	1983	only	-	Jul	12	1:00	1:00	S
-Rule	Egypt	1984	1988	-	May	 1	1:00	1:00	S
-Rule	Egypt	1989	only	-	May	 6	1:00	1:00	S
-Rule	Egypt	1990	1994	-	May	 1	1:00	1:00	S
-# IATA (after 1990) says transitions are at 0:00.
-# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
-Rule	Egypt	1995	max	-	Apr	lastFri	 0:00s	1:00	S
-Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
-# From Steffen Thorsen (2006-09-19):
-# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
-# Egypt will turn back clocks by one hour at the midnight of Thursday
-# after observing the daylight saving time since May.
-# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
-Rule	Egypt	2006	only	-	Sep	21	23:00s	0	-
-# From Dirk Losch (2007-08-14):
-# I received a mail from an airline which says that the daylight
-# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
-# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
-# http://www.nentjes.info/Bill/bill5.htm 
-# http://www.timeanddate.com/worldclock/city.html?n=53
-# From Steffen Thorsen (2007-09-04): The official information...:
-# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
-Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s	0	-
-# From Abdelrahman Hassan (2007-09-06):
-# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
-# than the year of the Gregorian calendar, Ramadan shifts earlier each
-# year. This year it will be observed September 13 (September is quite
-# hot in Egypt), and the idea is to make fasting easier for workers by
-# shifting business hours one hour out of daytime heat. Consequently,
-# unless discontinued, next DST may end Thursday 28 August 2008.
-# From Paul Eggert (2007-08-17):
-# For lack of better info, assume the new rule is last Thursday in August.
-Rule	Egypt	2008	max	-	Aug	lastThu	23:00s	0	-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
-			2:00	Egypt	EE%sT
-
-# Equatorial Guinea
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Malabo	0:35:08 -	LMT	1912
-			0:00	-	GMT	1963 Dec 15
-			1:00	-	WAT
-
-# Eritrea
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Asmara	2:35:32 -	LMT	1870
-			2:35:32	-	AMT	1890	      # Asmara Mean Time
-			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
-			3:00	-	EAT
-
-# Ethiopia
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
-# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
-# We'll guess that 38E50 is for Adis Dera.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Addis_Ababa	2:34:48 -	LMT	1870
-			2:35:20	-	ADMT	1936 May 5    # Adis Dera MT
-			3:00	-	EAT
-
-# Gabon
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Libreville	0:37:48 -	LMT	1912
-			1:00	-	WAT
-
-# Gambia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Banjul	-1:06:36 -	LMT	1912
-			-1:06:36 -	BMT	1935	# Banjul Mean Time
-			-1:00	-	WAT	1964
-			 0:00	-	GMT
-
-# Ghana
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# Whitman says DST was observed from 1931 to ``the present'';
-# go with Shanks & Pottenger.
-Rule	Ghana	1936	1942	-	Sep	 1	0:00	0:20	GHST
-Rule	Ghana	1936	1942	-	Dec	31	0:00	0	GMT
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Accra	-0:00:52 -	LMT	1918
-			 0:00	Ghana	%s
-
-# Guinea
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Conakry	-0:54:52 -	LMT	1912
-			 0:00	-	GMT	1934 Feb 26
-			-1:00	-	WAT	1960
-			 0:00	-	GMT
-
-# Guinea-Bissau
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
-			-1:00	-	WAT	1975
-			 0:00	-	GMT
-
-# Kenya
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
-			3:00	-	EAT	1930
-			2:30	-	BEAT	1940
-			2:44:45	-	BEAUT	1960
-			3:00	-	EAT
-
-# Lesotho
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Maseru	1:50:00 -	LMT	1903 Mar
-			2:00	-	SAST	1943 Sep 19 2:00
-			2:00	1:00	SAST	1944 Mar 19 2:00
-			2:00	-	SAST
-
-# Liberia
-# From Paul Eggert (2006-03-22):
-# In 1972 Liberia was the last country to switch
-# from a UTC offset that was not a multiple of 15 or 20 minutes.
-# Howse reports that it was in honor of their president's birthday.
-# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
-# go with Shanks & Pottenger.
-# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
-# Whitman each report -0:44:30; go with the more precise figure.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Monrovia	-0:43:08 -	LMT	1882
-			-0:43:08 -	MMT	1919 Mar # Monrovia Mean Time
-			-0:44:30 -	LRT	1972 May # Liberia Time
-			 0:00	-	GMT
-
-###############################################################################
-
-# Libya
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Libya	1951	only	-	Oct	14	2:00	1:00	S
-Rule	Libya	1952	only	-	Jan	 1	0:00	0	-
-Rule	Libya	1953	only	-	Oct	 9	2:00	1:00	S
-Rule	Libya	1954	only	-	Jan	 1	0:00	0	-
-Rule	Libya	1955	only	-	Sep	30	0:00	1:00	S
-Rule	Libya	1956	only	-	Jan	 1	0:00	0	-
-Rule	Libya	1982	1984	-	Apr	 1	0:00	1:00	S
-Rule	Libya	1982	1985	-	Oct	 1	0:00	0	-
-Rule	Libya	1985	only	-	Apr	 6	0:00	1:00	S
-Rule	Libya	1986	only	-	Apr	 4	0:00	1:00	S
-Rule	Libya	1986	only	-	Oct	 3	0:00	0	-
-Rule	Libya	1987	1989	-	Apr	 1	0:00	1:00	S
-Rule	Libya	1987	1989	-	Oct	 1	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Tripoli	0:52:44 -	LMT	1920
-			1:00	Libya	CE%sT	1959
-			2:00	-	EET	1982
-			1:00	Libya	CE%sT	1990 May  4
-# The following entries are from Shanks & Pottenger;
-# the IATA SSIM data contain some obvious errors.
-			2:00	-	EET	1996 Sep 30
-			1:00	-	CET	1997 Apr  4
-			1:00	1:00	CEST	1997 Oct  4
-			2:00	-	EET
-
-# Madagascar
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Indian/Antananarivo 3:10:04 -	LMT	1911 Jul
-			3:00	-	EAT	1954 Feb 27 23:00s
-			3:00	1:00	EAST	1954 May 29 23:00s
-			3:00	-	EAT
-
-# Malawi
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Blantyre	2:20:00 -	LMT	1903 Mar
-			2:00	-	CAT
-
-# Mali
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Bamako	-0:32:00 -	LMT	1912
-			 0:00	-	GMT	1934 Feb 26
-			-1:00	-	WAT	1960 Jun 20
-			 0:00	-	GMT
-
-# Mauritania
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
-			 0:00	-	GMT	1934 Feb 26
-			-1:00	-	WAT	1960 Nov 28
-			 0:00	-	GMT
-
-# Mauritius
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Indian/Mauritius	3:50:00 -	LMT	1907		# Port Louis
-			4:00	-	MUT	# Mauritius Time
-# Agalega Is, Rodriguez
-# no information; probably like Indian/Mauritius
-
-# Mayotte
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
-			3:00	-	EAT
-
-# Morocco
-# See the `europe' file for Spanish Morocco (Africa/Ceuta).
-# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
-Rule	Morocco	1939	only	-	Nov	19	 0:00	0	-
-Rule	Morocco	1940	only	-	Feb	25	 0:00	1:00	S
-Rule	Morocco	1945	only	-	Nov	18	 0:00	0	-
-Rule	Morocco	1950	only	-	Jun	11	 0:00	1:00	S
-Rule	Morocco	1950	only	-	Oct	29	 0:00	0	-
-Rule	Morocco	1967	only	-	Jun	 3	12:00	1:00	S
-Rule	Morocco	1967	only	-	Oct	 1	 0:00	0	-
-Rule	Morocco	1974	only	-	Jun	24	 0:00	1:00	S
-Rule	Morocco	1974	only	-	Sep	 1	 0:00	0	-
-Rule	Morocco	1976	1977	-	May	 1	 0:00	1:00	S
-Rule	Morocco	1976	only	-	Aug	 1	 0:00	0	-
-Rule	Morocco	1977	only	-	Sep	28	 0:00	0	-
-Rule	Morocco	1978	only	-	Jun	 1	 0:00	1:00	S
-Rule	Morocco	1978	only	-	Aug	 4	 0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
-			 0:00	Morocco	WE%sT	1984 Mar 16
-			 1:00	-	CET	1986
-			 0:00	-	WET
-# Western Sahara
-Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
-			-1:00	-	WAT	1976 Apr 14
-			 0:00	-	WET
-
-# Mozambique
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
-			2:00	-	CAT
-
-# Namibia
-# The 1994-04-03 transition is from Shanks & Pottenger.
-# Shanks & Pottenger report no DST after 1998-04; go with IATA.
-
-# From Petronella Sibeene (2007-03-30) in
-# :
-# While the entire country changes its time, Katima Mulilo and other
-# settlements in Caprivi unofficially will not because the sun there
-# rises and sets earlier compared to other regions.  Chief of
-# Forecasting Riaan van Zyl explained that the far eastern parts of
-# the country are close to 40 minutes earlier in sunrise than the rest
-# of the country.
-# 
-# From Paul Eggert (2007-03-31):
-# Apparently the Caprivi Strip informally observes Botswana time, but
-# we have no details.  In the meantime people there can use Africa/Gaborone.
-
-# RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Namibia	1994	max	-	Sep	Sun>=1	2:00	1:00	S
-Rule	Namibia	1995	max	-	Apr	Sun>=1	2:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Windhoek	1:08:24 -	LMT	1892 Feb 8
-			1:30	-	SWAT	1903 Mar	# SW Africa Time
-			2:00	-	SAST	1942 Sep 20 2:00
-			2:00	1:00	SAST	1943 Mar 21 2:00
-			2:00	-	SAST	1990 Mar 21 # independence
-			2:00	-	CAT	1994 Apr  3
-			1:00	Namibia	WA%sT
-
-# Niger
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Niamey	 0:08:28 -	LMT	1912
-			-1:00	-	WAT	1934 Feb 26
-			 0:00	-	GMT	1960
-			 1:00	-	WAT
-
-# Nigeria
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Lagos	0:13:36 -	LMT	1919 Sep
-			1:00	-	WAT
-
-# Reunion
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Reunion	3:41:52 -	LMT	1911 Jun	# Saint-Denis
-			4:00	-	RET	# Reunion Time
-#
-# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
-# The following information about them is taken from
-# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
-# no longer available as of 1999-08-17).
-# We have no info about their time zone histories.
-#
-# Bassas da India - uninhabited
-# Europa Island - inhabited from 1905 to 1910 by two families
-# Glorioso Is - inhabited until at least 1958
-# Juan de Nova - uninhabited
-# Tromelin - inhabited until at least 1958
-
-# Rwanda
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Kigali	2:00:16 -	LMT	1935 Jun
-			2:00	-	CAT
-
-# St Helena
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/St_Helena	-0:22:48 -	LMT	1890		# Jamestown
-			-0:22:48 -	JMT	1951	# Jamestown Mean Time
-			 0:00	-	GMT
-# The other parts of the St Helena territory are similar:
-#	Tristan da Cunha: on GMT, say Whitman and the CIA
-#	Ascension: on GMT, says usno1995 and the CIA
-#	Gough (scientific station since 1955; sealers wintered previously):
-#		on GMT, says the CIA
-#	Inaccessible, Nightingale: no information, but probably GMT
-
-# Sao Tome and Principe
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Sao_Tome	 0:26:56 -	LMT	1884
-			-0:36:32 -	LMT	1912	# Lisbon Mean Time
-			 0:00	-	GMT
-
-# Senegal
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Dakar	-1:09:44 -	LMT	1912
-			-1:00	-	WAT	1941 Jun
-			 0:00	-	GMT
-
-# Seychelles
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Mahe	3:41:48 -	LMT	1906 Jun	# Victoria
-			4:00	-	SCT	# Seychelles Time
-# From Paul Eggert (2001-05-30):
-# Aldabra, Farquhar, and Desroches, originally dependencies of the
-# Seychelles, were transferred to the British Indian Ocean Territory
-# in 1965 and returned to Seychelles control in 1976.  We don't know
-# whether this affected their time zone, so omit this for now.
-# Possibly the islands were uninhabited.
-
-# Sierra Leone
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
-Rule	SL	1935	1942	-	Jun	 1	0:00	0:40	SLST
-Rule	SL	1935	1942	-	Oct	 1	0:00	0	WAT
-Rule	SL	1957	1962	-	Jun	 1	0:00	1:00	SLST
-Rule	SL	1957	1962	-	Sep	 1	0:00	0	GMT
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Freetown	-0:53:00 -	LMT	1882
-			-0:53:00 -	FMT	1913 Jun # Freetown Mean Time
-			-1:00	SL	%s	1957
-			 0:00	SL	%s
-
-# Somalia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Mogadishu	3:01:28 -	LMT	1893 Nov
-			3:00	-	EAT	1931
-			2:30	-	BEAT	1957
-			3:00	-	EAT
-
-# South Africa
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	SA	1942	1943	-	Sep	Sun>=15	2:00	1:00	-
-Rule	SA	1943	1944	-	Mar	Sun>=15	2:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Johannesburg 1:52:00 -	LMT	1892 Feb 8
-			1:30	-	SAST	1903 Mar
-			2:00	SA	SAST
-# Marion and Prince Edward Is
-# scientific station since 1947
-# no information
-
-# Sudan
-#
-# From 
-# Sudan News Agency (2000-01-13)
-# , also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
-# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
-# Saturday....  This was announced Thursday by Caretaker State Minister for
-# Manpower Abdul-Rahman Nur-Eddin.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Sudan	1970	only	-	May	 1	0:00	1:00	S
-Rule	Sudan	1970	1985	-	Oct	15	0:00	0	-
-Rule	Sudan	1971	only	-	Apr	30	0:00	1:00	S
-Rule	Sudan	1972	1985	-	Apr	lastSun	0:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Khartoum	2:10:08 -	LMT	1931
-			2:00	Sudan	CA%sT	2000 Jan 15 12:00
-			3:00	-	EAT
-
-# Swaziland
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
-			2:00	-	SAST
-
-# Tanzania
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
-			3:00	-	EAT	1948
-			2:44:45	-	BEAUT	1961
-			3:00	-	EAT
-
-# Togo
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Lome	0:04:52 -	LMT	1893
-			0:00	-	GMT
-
-# Tunisia
-
-# From Gwillim Law (2005-04-30):
-# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
-# this time in Tunisia.  According to Yahoo France News
-# , in a story attributed to AP
-# and dated 2005-04-26, "Tunisia has decided to advance its official time by
-# one hour, starting on Sunday, May 1.  Henceforth, Tunisian time will be
-# UTC+2 instead of UTC+1.  The change will take place at 23:00 UTC next
-# Saturday."  (My translation)
-#
-# From Oscar van Vlijmen (2005-05-02):
-# LaPresse, the first national daily newspaper ...
-# 
-# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
-# 1h standard time.
-#
-# From Atef Loukil (2006-03-28):
-# The daylight saving time will be the same each year:
-# Beginning      : the last Sunday of March at 02:00
-# Ending         : the last Sunday of October at 03:00 ...
-# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Tunisia	1939	only	-	Apr	15	23:00s	1:00	S
-Rule	Tunisia	1939	only	-	Nov	18	23:00s	0	-
-Rule	Tunisia	1940	only	-	Feb	25	23:00s	1:00	S
-Rule	Tunisia	1941	only	-	Oct	 6	 0:00	0	-
-Rule	Tunisia	1942	only	-	Mar	 9	 0:00	1:00	S
-Rule	Tunisia	1942	only	-	Nov	 2	 3:00	0	-
-Rule	Tunisia	1943	only	-	Mar	29	 2:00	1:00	S
-Rule	Tunisia	1943	only	-	Apr	17	 2:00	0	-
-Rule	Tunisia	1943	only	-	Apr	25	 2:00	1:00	S
-Rule	Tunisia	1943	only	-	Oct	 4	 2:00	0	-
-Rule	Tunisia	1944	1945	-	Apr	Mon>=1	 2:00	1:00	S
-Rule	Tunisia	1944	only	-	Oct	 8	 0:00	0	-
-Rule	Tunisia	1945	only	-	Sep	16	 0:00	0	-
-Rule	Tunisia	1977	only	-	Apr	30	 0:00s	1:00	S
-Rule	Tunisia	1977	only	-	Sep	24	 0:00s	0	-
-Rule	Tunisia	1978	only	-	May	 1	 0:00s	1:00	S
-Rule	Tunisia	1978	only	-	Oct	 1	 0:00s	0	-
-Rule	Tunisia	1988	only	-	Jun	 1	 0:00s	1:00	S
-Rule	Tunisia	1988	1990	-	Sep	lastSun	 0:00s	0	-
-Rule	Tunisia	1989	only	-	Mar	26	 0:00s	1:00	S
-Rule	Tunisia	1990	only	-	May	 1	 0:00s	1:00	S
-Rule	Tunisia	2005	only	-	May	 1	 0:00s	1:00	S
-Rule	Tunisia	2005	only	-	Sep	30	 1:00s	0	-
-Rule	Tunisia	2006	max	-	Mar	lastSun	 2:00s	1:00	S
-Rule	Tunisia	2006	max	-	Oct	lastSun	 2:00s	0	-
-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
-# more precise 0:09:21.
-# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
-			1:00	Tunisia	CE%sT
-
-# Uganda
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
-			3:00	-	EAT	1930
-			2:30	-	BEAT	1948
-			2:44:45	-	BEAUT	1957
-			3:00	-	EAT
-
-# Zambia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Lusaka	1:53:08 -	LMT	1903 Mar
-			2:00	-	CAT
-
-# Zimbabwe
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Harare	2:04:12 -	LMT	1903 Mar
-			2:00	-	CAT
diff --git a/bin/glibc-2.7/timezone/antarctica b/bin/glibc-2.7/timezone/antarctica
deleted file mode 100644
index ef279cbe..00000000
--- a/bin/glibc-2.7/timezone/antarctica
+++ /dev/null
@@ -1,327 +0,0 @@
-# @(#)antarctica	8.4
-# 
-
-# From Paul Eggert (1999-11-15):
-# To keep things manageable, we list only locations occupied year-round; see
-# 
-# COMNAP - Stations and Bases
-# 
-# and
-# 
-# Summary of the Peri-Antarctic Islands (1998-07-23)
-# 
-# for information.
-# Unless otherwise specified, we have no time zone information.
-#
-# Except for the French entries,
-# I made up all time zone abbreviations mentioned here; corrections welcome!
-# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
-
-# These rules are stolen from the `europe' file.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	RussAQ	1981	1984	-	Apr	 1	 0:00	1:00	S
-Rule	RussAQ	1981	1983	-	Oct	 1	 0:00	0	-
-Rule	RussAQ	1984	1991	-	Sep	lastSun	 2:00s	0	-
-Rule	RussAQ	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
-Rule	RussAQ	1992	only	-	Mar	lastSat	 23:00	1:00	S
-Rule	RussAQ	1992	only	-	Sep	lastSat	 23:00	0	-
-Rule	RussAQ	1993	max	-	Mar	lastSun	 2:00s	1:00	S
-Rule	RussAQ	1993	1995	-	Sep	lastSun	 2:00s	0	-
-Rule	RussAQ	1996	max	-	Oct	lastSun	 2:00s	0	-
-
-# These rules are stolen from the `southamerica' file.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	ArgAQ	1964	1966	-	Mar	 1	0:00	0	-
-Rule	ArgAQ	1964	1966	-	Oct	15	0:00	1:00	S
-Rule	ArgAQ	1967	only	-	Apr	 2	0:00	0	-
-Rule	ArgAQ	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
-Rule	ArgAQ	1968	1969	-	Apr	Sun>=1	0:00	0	-
-Rule	ArgAQ	1974	only	-	Jan	23	0:00	1:00	S
-Rule	ArgAQ	1974	only	-	May	 1	0:00	0	-
-Rule	ChileAQ	1972	1986	-	Mar	Sun>=9	3:00u	0	-
-Rule	ChileAQ	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	ChileAQ	1987	only	-	Apr	12	3:00u	0	-
-Rule	ChileAQ	1988	1989	-	Mar	Sun>=9	3:00u	0	-
-Rule	ChileAQ	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
-Rule	ChileAQ	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	ChileAQ	1990	only	-	Mar	18	3:00u	0	-
-Rule	ChileAQ	1990	only	-	Sep	16	4:00u	1:00	S
-Rule	ChileAQ	1991	1996	-	Mar	Sun>=9	3:00u	0	-
-Rule	ChileAQ	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	ChileAQ	1997	only	-	Mar	30	3:00u	0	-
-Rule	ChileAQ	1998	only	-	Mar	Sun>=9	3:00u	0	-
-Rule	ChileAQ	1998	only	-	Sep	27	4:00u	1:00	S
-Rule	ChileAQ	1999	only	-	Apr	 4	3:00u	0	-
-Rule	ChileAQ	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	ChileAQ	2000	max	-	Mar	Sun>=9	3:00u	0	-
-
-
-# Argentina - year-round bases
-# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
-# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
-# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
-# Marambio, Seymour I, -6414-05637, since 1969-10-29
-# Orcadas, Laurie I, -6016-04444, since 1904-02-22
-# San Martin, Debenham I, -6807-06708, since 1951-03-21
-#	(except 1960-03 / 1976-03-21)
-
-# Australia - territories
-# Heard Island, McDonald Islands (uninhabited)
-#	previously sealers and scientific personnel wintered
-#	
-#	Margaret Turner reports
-#	 (1999-09-30) that they're UTC+5, with no DST;
-#	presumably this is when they have visitors.
-#
-# year-round bases
-# Casey, Bailey Peninsula, -6617+11032, since 1969
-# Davis, Vestfold Hills, -6835+07759, since 1957-01-13
-#	(except 1964-11 - 1969-02)
-# Mawson, Holme Bay, -6736+06253, since 1954-02-13
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/Casey	0	-	zzz	1969
-			8:00	-	WST	# Western (Aus) Standard Time
-Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
-			7:00	-	DAVT	1964 Nov # Davis Time
-			0	-	zzz	1969 Feb
-			7:00	-	DAVT
-Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
-			6:00	-	MAWT	# Mawson Time
-# References:
-# 
-# Casey Weather (1998-02-26)
-# 
-# 
-# Davis Station, Antarctica (1998-02-26)
-# 
-# 
-# Mawson Station, Antarctica (1998-02-25)
-# 
-
-# Brazil - year-round base
-# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
-
-# Chile - year-round bases and towns
-# Escudero, South Shetland Is, -621157-0585735, since 1994
-# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
-# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
-# Capitan Arturo Prat, -6230-05941
-# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
-# These locations have always used Santiago time; use TZ='America/Santiago'.
-
-# China - year-round bases
-# Great Wall, King George Island, -6213-05858, since 1985-02-20
-# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
-
-# France - year-round bases
-#
-# From Antoine Leca (1997-01-20):
-# Time data are from Nicole Pailleau at the IFRTP
-# (French Institute for Polar Research and Technology).
-# She confirms that French Southern Territories and Terre Adelie bases
-# don't observe daylight saving time, even if Terre Adelie supplies came
-# from Tasmania.
-#
-# French Southern Territories with year-round inhabitants
-#
-# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
-# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
-# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
-#	whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
-#
-# St Paul Island - near Amsterdam, uninhabited
-#	fishing stations operated variously 1819/1931
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Indian/Kerguelen	0	-	zzz	1950	# Port-aux-Francais
-			5:00	-	TFT	# ISO code TF Time
-#
-# year-round base in the main continent
-# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
-#
-# Another base at Port-Martin, 50km east, began operation in 1947.
-# It was destroyed by fire on 1952-01-14.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/DumontDUrville 0 -	zzz	1947
-			10:00	-	PMT	1952 Jan 14 # Port-Martin Time
-			0	-	zzz	1956 Nov
-			10:00	-	DDUT	# Dumont-d'Urville Time
-# Reference:
-# 
-# Dumont d'Urville Station (2005-12-05)
-# 
-
-# Germany - year-round base
-# Georg von Neumayer, -7039-00815
-
-# India - year-round base
-# Dakshin Gangotri, -7005+01200
-
-# Japan - year-round bases
-# Dome Fuji, -7719+03942
-# Syowa, -690022+0393524
-#
-# From Hideyuki Suzuki (1999-02-06):
-# In all Japanese stations, +0300 is used as the standard time.
-#
-# Syowa station, which is the first antarctic station of Japan,
-# was established on 1957-01-29.  Since Syowa station is still the main
-# station of Japan, it's appropriate for the principal location.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/Syowa	0	-	zzz	1957 Jan 29
-			3:00	-	SYOT	# Syowa Time
-# See:
-# 
-# NIPR Antarctic Research Activities (1999-08-17)
-# 
-
-# S Korea - year-round base
-# King Sejong, King George Island, -6213-05847, since 1988
-
-# New Zealand - claims
-# Balleny Islands (never inhabited)
-# Scott Island (never inhabited)
-#
-# year-round base
-# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
-#
-# These rules for New Zealand are stolen from the `australasia' file.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	NZAQ	1974	only	-	Nov	 3	2:00s	1:00	D
-Rule	NZAQ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
-Rule	NZAQ	1989	only	-	Oct	 8	2:00s	1:00	D
-Rule	NZAQ	1990	2006	-	Oct	Sun>=1	2:00s	1:00	D
-Rule	NZAQ	1975	only	-	Feb	23	2:00s	0	S
-Rule	NZAQ	1976	1989	-	Mar	Sun>=1	2:00s	0	S
-Rule	NZAQ	1990	2007	-	Mar	Sun>=15	2:00s	0	S
-Rule	NZAQ	2007	max	-	Sep	lastSun	2:00s	1:00	D
-Rule	NZAQ	2008	max	-	Apr	Sun>=1	2:00s	0	S
-
-# Norway - territories
-# Bouvet (never inhabited)
-#
-# claims
-# Peter I Island (never inhabited)
-
-# Poland - year-round base
-# Arctowski, King George Island, -620945-0582745, since 1977
-
-# Russia - year-round bases
-# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
-# Mirny, Davis coast, -6633+09301, since 1956-02
-# Molodezhnaya, Alasheyev Bay, -6740+04551,
-#	year-round from 1962-02 to 1999-07-01
-# Novolazarevskaya, Queen Maud Land, -7046+01150,
-#	year-round from 1960/61 to 1992
-
-# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
-# 
-# From Craig Mundell (1994-12-15):
-# Vostok, which is one of the Russian stations, is set on the same
-# time as Moscow, Russia.
-#
-# From Lee Hotz (2001-03-08):
-# I queried the folks at Columbia who spent the summer at Vostok and this is
-# what they had to say about time there:
-# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
-# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
-# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
-# of GMT). This is a time zone I think two hours east of Moscow. The
-# natural time zone is in between the two: 8 hours ahead of GMT.''
-#
-# From Paul Eggert (2001-05-04):
-# This seems to be hopelessly confusing, so I asked Lee Hotz about it
-# in person.  He said that some Antartic locations set their local
-# time so that noon is the warmest part of the day, and that this
-# changes during the year and does not necessarily correspond to mean
-# solar noon.  So the Vostok time might have been whatever the clocks
-# happened to be during their visit.  So we still don't really know what time
-# it is at Vostok.  But we'll guess UTC+6.
-#
-Zone Antarctica/Vostok	0	-	zzz	1957 Dec 16
-			6:00	-	VOST	# Vostok time
-
-# S Africa - year-round bases
-# Marion Island, -4653+03752
-# Sanae, -7141-00250
-
-# UK
-#
-# British Antarctic Territories (BAT) claims
-# South Orkney Islands
-#	scientific station from 1903
-#	whaling station at Signy I 1920/1926
-# South Shetland Islands
-#
-# year-round bases
-# Bird Island, South Georgia, -5400-03803, since 1983
-# Deception Island, -6259-06034, whaling station 1912/1931,
-#	scientific station 1943/1967,
-#	previously sealers and a scientific expedition wintered by accident,
-#	and a garrison was deployed briefly
-# Halley, Coates Land, -7535-02604, since 1956-01-06
-#	Halley is on a moving ice shelf and is periodically relocated
-#	so that it is never more than 10km from its nominal location.
-# Rothera, Adelaide Island, -6734-6808, since 1976-12-01
-#
-# From Paul Eggert (2002-10-22)
-#  says Rothera is -03 all year.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/Rothera	0	-	zzz	1976 Dec  1
-			-3:00	-	ROTT	# Rothera time
-
-# Uruguay - year round base
-# Artigas, King George Island, -621104-0585107
-
-# USA - year-round bases
-#
-# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
-#
-# From Ethan Dicks (1996-10-06):
-# It keeps the same time as Punta Arenas, Chile, because, just like us
-# and the South Pole, that's the other end of their supply line....
-# I verified with someone who was there that since 1980,
-# Palmer has followed Chile.  Prior to that, before the Falklands War,
-# Palmer used to be supplied from Argentina.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/Palmer	0	-	zzz	1965
-			-4:00	ArgAQ	AR%sT	1969 Oct 5
-			-3:00	ArgAQ	AR%sT	1982 May
-			-4:00	ChileAQ	CL%sT
-#
-#
-# McMurdo, Ross Island, since 1955-12
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/McMurdo	0	-	zzz	1956
-			12:00	NZAQ	NZ%sT
-#
-# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
-#
-# From Paul Eggert (1996-09-03):
-# Normally it wouldn't have a separate entry, since it's like the
-# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
-#
-# From Chris Carrier (1996-06-27):
-# Siple, the first commander of the South Pole station,
-# stated that he would have liked to have kept GMT at the station,
-# but that he found it more convenient to keep GMT+12
-# as supplies for the station were coming from McMurdo Sound,
-# which was on GMT+12 because New Zealand was on GMT+12 all year
-# at that time (1957).  (Source: Siple's book 90 degrees SOUTH.)
-#
-# From Susan Smith
-# http://www.cybertours.com/whs/pole10.html
-# (1995-11-13 16:24:56 +1300, no longer available):
-# We use the same time as McMurdo does.
-# And they use the same time as Christchurch, NZ does....
-# One last quirk about South Pole time.
-# All the electric clocks are usually wrong.
-# Something about the generators running at 60.1hertz or something
-# makes all of the clocks run fast.  So every couple of days,
-# we have to go around and set them back 5 minutes or so.
-# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
-#
-Link	Antarctica/McMurdo	Antarctica/South_Pole
diff --git a/bin/glibc-2.7/timezone/asia b/bin/glibc-2.7/timezone/asia
deleted file mode 100644
index 3007414a..00000000
--- a/bin/glibc-2.7/timezone/asia
+++ /dev/null
@@ -1,1843 +0,0 @@
-# @(#)asia	8.12
-# 
-
-# This data is by no means authoritative; if you think you know better,
-# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
-
-# From Paul Eggert (2006-03-22):
-#
-# A good source for time zone historical data outside the U.S. is
-# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
-# San Diego: ACS Publications, Inc. (2003).
-#
-# Gwillim Law writes that a good source
-# for recent time zone data is the International Air Transport
-# Association's Standard Schedules Information Manual (IATA SSIM),
-# published semiannually.  Law sent in several helpful summaries
-# of the IATA's data after 1990.
-#
-# Except where otherwise noted, Shanks & Pottenger is the source for
-# entries through 1990, and IATA SSIM is the source for entries afterwards.
-#
-# Another source occasionally used is Edward W. Whitman, World Time Differences,
-# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
-# I found in the UCLA library.
-#
-# A reliable and entertaining source about time zones is
-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
-#
-# I invented the abbreviations marked `*' in the following table;
-# the rest are from earlier versions of this file, or from other sources.
-# Corrections are welcome!
-#	     std  dst
-#	     LMT	Local Mean Time
-#	2:00 EET  EEST	Eastern European Time
-#	2:00 IST  IDT	Israel
-#	3:00 AST  ADT	Arabia*
-#	3:30 IRST IRDT	Iran
-#	4:00 GST	Gulf*
-#	5:30 IST	India
-#	7:00 ICT	Indochina*
-#	7:00 WIT	west Indonesia
-#	8:00 CIT	central Indonesia
-#	8:00 CST	China
-#	9:00 CJT	Central Japanese Time (1896/1937)*
-#	9:00 EIT	east Indonesia
-#	9:00 JST  JDT	Japan
-#	9:00 KST  KDT	Korea
-#	9:30 CST	(Australian) Central Standard Time
-#
-# See the `europe' file for Russia and Turkey in Asia.
-
-# From Guy Harris:
-# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
-# additional information from Tom Yap, Sun Microsystems Intercontinental
-# Technical Support (including a page from the Official Airline Guide -
-# Worldwide Edition).  The names for time zones are guesses.
-
-###############################################################################
-
-# These rules are stolen from the `europe' file.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	EUAsia	1981	max	-	Mar	lastSun	 1:00u	1:00	S
-Rule	EUAsia	1979	1995	-	Sep	lastSun	 1:00u	0	-
-Rule	EUAsia	1996	max	-	Oct	lastSun	 1:00u	0	-
-Rule E-EurAsia	1981	max	-	Mar	lastSun	 0:00	1:00	S
-Rule E-EurAsia	1979	1995	-	Sep	lastSun	 0:00	0	-
-Rule E-EurAsia	1996	max	-	Oct	lastSun	 0:00	0	-
-Rule RussiaAsia	1981	1984	-	Apr	1	 0:00	1:00	S
-Rule RussiaAsia	1981	1983	-	Oct	1	 0:00	0	-
-Rule RussiaAsia	1984	1991	-	Sep	lastSun	 2:00s	0	-
-Rule RussiaAsia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
-Rule RussiaAsia	1992	only	-	Mar	lastSat	23:00	1:00	S
-Rule RussiaAsia	1992	only	-	Sep	lastSat	23:00	0	-
-Rule RussiaAsia	1993	max	-	Mar	lastSun	 2:00s	1:00	S
-Rule RussiaAsia	1993	1995	-	Sep	lastSun	 2:00s	0	-
-Rule RussiaAsia	1996	max	-	Oct	lastSun	 2:00s	0	-
-
-# Afghanistan
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Kabul	4:36:48 -	LMT	1890
-			4:00	-	AFT	1945
-			4:30	-	AFT
-
-# Armenia
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST)
-# in spring 1991, then to 4:00 with no DST in fall 1995, then
-# readopting Russian DST in 1997.  Go with Shanks & Pottenger, even
-# when they disagree with others.  Edgar Der-Danieliantz
-# reported (1996-05-04) that Yerevan probably wouldn't use DST
-# in 1996, though it did use DST in 1995.  IATA SSIM (1991/1998) reports that
-# Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
-# but started switching at 3:00s in 1998.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
-			3:00	-	YERT	1957 Mar    # Yerevan Time
-			4:00 RussiaAsia YER%sT	1991 Mar 31 2:00s
-			3:00	1:00	YERST	1991 Sep 23 # independence
-			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
-			4:00	-	AMT	1997
-			4:00 RussiaAsia	AM%sT
-
-# Azerbaijan
-# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
-# According to the resolution of Cabinet of Ministers, 1997
-# Resolution available at: http://aif.az/docs/daylight_res.pdf
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Azer	1997	max	-	Mar	lastSun	 4:00	1:00	S
-Rule	Azer	1997	max	-	Oct	lastSun	 5:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Baku	3:19:24 -	LMT	1924 May  2
-			3:00	-	BAKT	1957 Mar    # Baku Time
-			4:00 RussiaAsia BAK%sT	1991 Mar 31 2:00s
-			3:00	1:00	BAKST	1991 Aug 30 # independence
-			3:00 RussiaAsia	AZ%sT	1992 Sep lastSat 23:00
-			4:00	-	AZT	1996 # Azerbaijan time
-			4:00	EUAsia	AZ%sT	1997
-			4:00	Azer	AZ%sT
-
-# Bahrain
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
-			4:00	-	GST	1972 Jun
-			3:00	-	AST
-
-# Bangladesh
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Dhaka	6:01:40 -	LMT	1890
-			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
-			6:30	-	BURT	1942 May 15 # Burma Time
-			5:30	-	IST	1942 Sep
-			6:30	-	BURT	1951 Sep 30
-			6:00	-	DACT	1971 Mar 26 # Dacca Time
-			6:00	-	BDT	# Bangladesh Time
-
-# Bhutan
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Thimphu	5:58:36 -	LMT	1947 Aug 15 # or Thimbu
-			5:30	-	IST	1987 Oct
-			6:00	-	BTT	# Bhutan Time
-
-# British Indian Ocean Territory
-# Whitman and the 1995 CIA time zone map say 5:00, but the
-# 1997 and later maps say 6:00.  Assume the switch occurred in 1996.
-# We have no information as to when standard time was introduced;
-# assume it occurred in 1907, the same year as Mauritius (which
-# then contained the Chagos Archipelago).
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Chagos	4:49:40	-	LMT	1907
-			5:00	-	IOT	1996 # BIOT Time
-			6:00	-	IOT
-
-# Brunei
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar   # Bandar Seri Begawan
-			7:30	-	BNT	1933
-			8:00	-	BNT
-
-# Burma / Myanmar
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
-			6:24:36	-	RMT	1920	   # Rangoon Mean Time?
-			6:30	-	BURT	1942 May   # Burma Time
-			9:00	-	JST	1945 May 3
-			6:30	-	MMT		   # Myanmar Time
-
-# Cambodia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Phnom_Penh	6:59:40 -	LMT	1906 Jun  9
-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
-			7:00	-	ICT	1912 May
-			8:00	-	ICT	1931 May
-			7:00	-	ICT
-
-# China
-
-# From Guy Harris:
-# People's Republic of China.  Yes, they really have only one time zone.
-
-# From Bob Devine (1988-01-28):
-# No they don't.  See TIME mag, 1986-02-17 p.52.  Even though
-# China is across 4 physical time zones, before Feb 1, 1986 only the
-# Peking (Bejing) time zone was recognized.  Since that date, China
-# has two of 'em -- Peking's and Urumqi (named after the capital of
-# the Xinjiang Uyghur Autonomous Region).  I don't know about DST for it.
-#
-# . . .I just deleted the DST table and this editor makes it too
-# painful to suck in another copy..  So, here is what I have for
-# DST start/end dates for Peking's time zone (info from AP):
-#
-#     1986 May 4 - Sept 14
-#     1987 mid-April - ??
-
-# From U. S. Naval Observatory (1989-01-19):
-# CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
-# CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that China (except for Hong Kong and Macau)
-# has had a single time zone since 1980 May 1, observing summer DST
-# from 1986 through 1991; this contradicts Devine's
-# note about Time magazine, though apparently _something_ happened in 1986.
-# Go with Shanks & Pottenger for now.  I made up names for the other
-# pre-1980 time zones.
-
-# From Shanks & Pottenger:
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Shang	1940	only	-	Jun	 3	0:00	1:00	D
-Rule	Shang	1940	1941	-	Oct	 1	0:00	0	S
-Rule	Shang	1941	only	-	Mar	16	0:00	1:00	D
-Rule	PRC	1986	only	-	May	 4	0:00	1:00	D
-Rule	PRC	1986	1991	-	Sep	Sun>=11	0:00	0	S
-Rule	PRC	1987	1991	-	Apr	Sun>=10	0:00	1:00	D
-
-# From Anthony Fok (2001-12-20):
-# BTW, I did some research on-line and found some info regarding these five
-# historic timezones from some Taiwan websites.  And yes, there are official
-# Chinese names for these locales (before 1949).
-#
-# From Jesper Norgaard Welen (2006-07-14):
-# I have investigated the timezones around 1970 on the
-# http://www.astro.com/atlas site [with provinces and county
-# boundaries summarized below]....  A few other exceptions were two
-# counties on the Sichuan side of the Xizang-Sichuan border,
-# counties Dege and Baiyu which lies on the Sichuan side and are
-# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege
-# county is GMT+8 according to astro.com while Baiyu county is GMT+6
-# (could be true), for the moment I am assuming that those two
-# counties are mistakes in the astro.com data.
-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
-# Heilongjiang (except Mohe county), Jilin
-Zone	Asia/Harbin	8:26:44	-	LMT	1928 # or Haerbin
-			8:30	-	CHAT	1932 Mar # Changbai Time
-			8:00	-	CST	1940
-			9:00	-	CHAT	1966 May
-			8:30	-	CHAT	1980 May
-			8:00	PRC	C%sT
-# Zhongyuan Time ("Central plain Time")
-# most of China
-Zone	Asia/Shanghai	8:05:52	-	LMT	1928
-			8:00	Shang	C%sT	1949
-			8:00	PRC	C%sT
-# Long-shu Time (probably due to Long and Shu being two names of that area)
-# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
-# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
-# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
-# Yangchun, Yangjiang, Yu'nan, and Yunfu.
-Zone	Asia/Chongqing	7:06:20	-	LMT	1928 # or Chungking
-			7:00	-	LONT	1980 May # Long-shu Time
-			8:00	PRC	C%sT
-# Xin-zang Time ("Xinjiang-Tibet Time")
-# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
-# the Guangdong counties  Xuwen, Haikang, Suixi, Lianjiang,
-# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
-# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
-# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
-# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
-# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
-# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
-Zone	Asia/Urumqi	5:50:20	-	LMT	1928 # or Urumchi
-			6:00	-	URUT	1980 May # Urumqi Time
-			8:00	PRC	C%sT
-# Kunlun Time
-# West Tibet, including Pulan, Aheqi, Shufu, Shule;
-# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
-# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
-# and Yarkand.
-Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
-			5:30	-	KAST	1940	 # Kashgar Time
-			5:00	-	KAST	1980 May
-			8:00	PRC	C%sT
-
-# Hong Kong (Xianggang)
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	HK	1946	only	-	Apr	20	3:30	1:00	S
-Rule	HK	1946	only	-	Dec	1	3:30	0	-
-Rule	HK	1947	only	-	Apr	13	3:30	1:00	S
-Rule	HK	1947	only	-	Dec	30	3:30	0	-
-Rule	HK	1948	only	-	May	2	3:30	1:00	S
-Rule	HK	1948	1952	-	Oct	lastSun	3:30	0	-
-Rule	HK	1949	1953	-	Apr	Sun>=1	3:30	1:00	S
-Rule	HK	1953	only	-	Nov	1	3:30	0	-
-Rule	HK	1954	1964	-	Mar	Sun>=18	3:30	1:00	S
-Rule	HK	1954	only	-	Oct	31	3:30	0	-
-Rule	HK	1955	1964	-	Nov	Sun>=1	3:30	0	-
-Rule	HK	1965	1977	-	Apr	Sun>=16	3:30	1:00	S
-Rule	HK	1965	1977	-	Oct	Sun>=16	3:30	0	-
-Rule	HK	1979	1980	-	May	Sun>=8	3:30	1:00	S
-Rule	HK	1979	1980	-	Oct	Sun>=16	3:30	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Hong_Kong	7:36:36 -	LMT	1904 Oct 30
-			8:00	HK	HK%sT
-
-
-###############################################################################
-
-# Taiwan
-
-# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
-# was still controlled by Japan.  This is hard to believe, but we don't
-# have any other information.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Taiwan	1945	1951	-	May	1	0:00	1:00	D
-Rule	Taiwan	1945	1951	-	Oct	1	0:00	0	S
-Rule	Taiwan	1952	only	-	Mar	1	0:00	1:00	D
-Rule	Taiwan	1952	1954	-	Nov	1	0:00	0	S
-Rule	Taiwan	1953	1959	-	Apr	1	0:00	1:00	D
-Rule	Taiwan	1955	1961	-	Oct	1	0:00	0	S
-Rule	Taiwan	1960	1961	-	Jun	1	0:00	1:00	D
-Rule	Taiwan	1974	1975	-	Apr	1	0:00	1:00	D
-Rule	Taiwan	1974	1975	-	Oct	1	0:00	0	S
-Rule	Taiwan	1980	only	-	Jun	30	0:00	1:00	D
-Rule	Taiwan	1980	only	-	Sep	30	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Taipei	8:06:00 -	LMT	1896 # or Taibei or T'ai-pei
-			8:00	Taiwan	C%sT
-
-# Macau (Macao, Aomen)
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Macau	1961	1962	-	Mar	Sun>=16	3:30	1:00	S
-Rule	Macau	1961	1964	-	Nov	Sun>=1	3:30	0	-
-Rule	Macau	1963	only	-	Mar	Sun>=16	0:00	1:00	S
-Rule	Macau	1964	only	-	Mar	Sun>=16	3:30	1:00	S
-Rule	Macau	1965	only	-	Mar	Sun>=16	0:00	1:00	S
-Rule	Macau	1965	only	-	Oct	31	0:00	0	-
-Rule	Macau	1966	1971	-	Apr	Sun>=16	3:30	1:00	S
-Rule	Macau	1966	1971	-	Oct	Sun>=16	3:30	0	-
-Rule	Macau	1972	1974	-	Apr	Sun>=15	0:00	1:00	S
-Rule	Macau	1972	1973	-	Oct	Sun>=15	0:00	0	-
-Rule	Macau	1974	1977	-	Oct	Sun>=15	3:30	0	-
-Rule	Macau	1975	1977	-	Apr	Sun>=15	3:30	1:00	S
-Rule	Macau	1978	1980	-	Apr	Sun>=15	0:00	1:00	S
-Rule	Macau	1978	1980	-	Oct	Sun>=15	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Macau	7:34:20 -	LMT	1912
-			8:00	Macau	MO%sT	1999 Dec 20 # return to China
-			8:00	PRC	C%sT
-
-
-###############################################################################
-
-# Cyprus
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Cyprus	1975	only	-	Apr	13	0:00	1:00	S
-Rule	Cyprus	1975	only	-	Oct	12	0:00	0	-
-Rule	Cyprus	1976	only	-	May	15	0:00	1:00	S
-Rule	Cyprus	1976	only	-	Oct	11	0:00	0	-
-Rule	Cyprus	1977	1980	-	Apr	Sun>=1	0:00	1:00	S
-Rule	Cyprus	1977	only	-	Sep	25	0:00	0	-
-Rule	Cyprus	1978	only	-	Oct	2	0:00	0	-
-Rule	Cyprus	1979	1997	-	Sep	lastSun	0:00	0	-
-Rule	Cyprus	1981	1998	-	Mar	lastSun	0:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Nicosia	2:13:28 -	LMT	1921 Nov 14
-			2:00	Cyprus	EE%sT	1998 Sep
-			2:00	EUAsia	EE%sT
-# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.
-
-# Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72.
-# However, for various reasons many users expect to find it under Europe.
-Link	Asia/Nicosia	Europe/Nicosia
-
-# Georgia
-# From Paul Eggert (1994-11-19):
-# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward
-# an hour recently, due to a law proposed by Zurab Murvanidze,
-# an MP who went on a hunger strike for 11 days to force discussion about it!
-# We have no details, but we'll guess they didn't move the clocks back in fall.
-#
-# From Mathew Englander, quoting AP (1996-10-23 13:05-04):
-# Instead of putting back clocks at the end of October, Georgia
-# will stay on daylight savings time this winter to save energy,
-# President Eduard Shevardnadze decreed Wednesday.
-#
-# From the BBC via Joseph S. Myers (2004-06-27):
-#
-# Georgia moved closer to Western Europe on Sunday...  The former Soviet
-# republic has changed its time zone back to that of Moscow.  As a result it
-# is now just four hours ahead of Greenwich Mean Time, rather than five hours
-# ahead.  The switch was decreed by the pro-Western president of Georgia,
-# Mikhail Saakashvili, who said the change was partly prompted by the process
-# of integration into Europe.
-
-# From Teimuraz Abashidze (2005-11-07):
-# Government of Georgia ... decided to NOT CHANGE daylight savings time on
-# [Oct.] 30, as it was done before during last more than 10 years.
-# Currently, we are in fact GMT +4:00, as before 30 October it was GMT
-# +3:00.... The problem is, there is NO FORMAL LAW or governmental document
-# about it.  As far as I can find, I was told, that there is no document,
-# because we just DIDN'T ISSUE document about switching to winter time....
-# I don't know what can be done, especially knowing that some years ago our
-# DST rules where changed THREE TIMES during one month.
-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Tbilisi	2:59:16 -	LMT	1880
-			2:59:16	-	TBMT	1924 May  2 # Tbilisi Mean Time
-			3:00	-	TBIT	1957 Mar    # Tbilisi Time
-			4:00 RussiaAsia TBI%sT	1991 Mar 31 2:00s
-			3:00	1:00	TBIST	1991 Apr  9 # independence
-			3:00 RussiaAsia GE%sT	1992 # Georgia Time
-			3:00 E-EurAsia	GE%sT	1994 Sep lastSun
-			4:00 E-EurAsia	GE%sT	1996 Oct lastSun
-			4:00	1:00	GEST	1997 Mar lastSun
-			4:00 E-EurAsia	GE%sT	2004 Jun 27
-			3:00 RussiaAsia	GE%sT	2005 Mar lastSun 2:00
-			4:00	-	GET
-
-# East Timor
-
-# See Indonesia for the 1945 transition.
-
-# From Joao Carrascalao, brother of the former governor of East Timor, in
-# 
-# East Timor may be late for its millennium
-#  (1999-12-26/31):
-# Portugal tried to change the time forward in 1974 because the sun
-# rises too early but the suggestion raised a lot of problems with the
-# Timorese and I still don't think it would work today because it
-# conflicts with their way of life.
-
-# From Paul Eggert (2000-12-04):
-# We don't have any record of the above attempt.
-# Most likely our records are incomplete, but we have no better data.
-
-# 
-# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
-# (2000-08-16):
-# The Cabinet of the East Timor Transition Administration decided
-# today to advance East Timor's time by one hour.  The time change,
-# which will be permanent, with no seasonal adjustment, will happen at
-# midnight on Saturday, September 16.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Dili	8:22:20 -	LMT	1912
-			8:00	-	TLT	1942 Feb 21 23:00 # E Timor Time
-			9:00	-	JST	1945 Sep 23
-			9:00	-	TLT	1976 May  3
-			8:00	-	CIT	2000 Sep 17 00:00
-			9:00	-	TLT
-
-# India
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Calcutta	5:53:28 -	LMT	1880	# Kolkata
-			5:53:20	-	HMT	1941 Oct    # Howrah Mean Time?
-			6:30	-	BURT	1942 May 15 # Burma Time
-			5:30	-	IST	1942 Sep
-			5:30	1:00	IST	1945 Oct 15
-			5:30	-	IST
-# The following are like Asia/Calcutta:
-#	Andaman Is
-#	Lakshadweep (Laccadive, Minicoy and Amindivi Is)
-#	Nicobar Is
-
-# Indonesia
-#
-# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
-# 
-# says that Indonesia's time zones changed on 1988-01-01.  Looking at some
-# time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
-# and Kalimantan Tengah) switching from UTC+8 to UTC+7.
-#
-# From Paul Eggert (2007-03-10):
-# Here is another correction to Shanks & Pottenger.
-# JohnTWB writes that Japanese forces did not surrender control in
-# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
-# other formal surrender ceremonies were September 9, 11, and 13, plus
-# September 12 for the regional surrender to Mountbatten in Singapore.
-# These would be the earliest possible times for a change.
-# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
-# Traditionnelles, 1987, Paris) says that Java and Madura switched
-# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
-# (Hollandia).  For now, assume all Indonesian locations other than Jayapura
-# switched on 1945-09-23.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Asia/Jakarta	7:07:12 -	LMT	1867 Aug 10
-# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
-# but this must be a typo.
-			7:07:12	-	JMT	1923 Dec 31 23:47:12 # Jakarta
-			7:20	-	JAVT	1932 Nov	 # Java Time
-			7:30	-	WIT	1942 Mar 23
-			9:00	-	JST	1945 Sep 23
-			7:30	-	WIT	1948 May
-			8:00	-	WIT	1950 May
-			7:30	-	WIT	1964
-			7:00	-	WIT
-Zone Asia/Pontianak	7:17:20	-	LMT	1908 May
-			7:17:20	-	PMT	1932 Nov    # Pontianak MT
-			7:30	-	WIT	1942 Jan 29
-			9:00	-	JST	1945 Sep 23
-			7:30	-	WIT	1948 May
-			8:00	-	WIT	1950 May
-			7:30	-	WIT	1964
-			8:00	-	CIT	1988 Jan  1
-			7:00	-	WIT
-Zone Asia/Makassar	7:57:36 -	LMT	1920
-			7:57:36	-	MMT	1932 Nov    # Macassar MT
-			8:00	-	CIT	1942 Feb  9
-			9:00	-	JST	1945 Sep 23
-			8:00	-	CIT
-Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
-			9:00	-	EIT	1944 Sep  1
-			9:30	-	CST	1964
-			9:00	-	EIT
-
-# Iran
-
-# From Roozbeh Pournader (2003-03-15):
-# This is an English translation of what I just found (originally in Persian).
-# The Gregorian dates in brackets are mine:
-#
-#	Official Newspaper No. 13548-1370/6/25 [1991-09-16]
-#	No. 16760/T233 H				1370/6/10 [1991-09-01]
-#
-#	The Rule About Change of the Official Time of the Country
-#
-#	The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
-#	based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
-#	of the Country's Organization for Official and Employment Affairs,
-#	and referring to the law for equating the working hours of workers
-#	and officers in the whole country dated 1359/4/23 [1980-07-14], and
-#	for synchronizing the official times of the country, agreed that:
-#
-#	The official time of the country will should move forward one hour
-#	at the 24[:00] hours of the first day of Farvardin and should return
-#	to its previous state at the 24[:00] hours of the 30th day of
-#	Shahrivar.
-#
-#	First Deputy to the President - Hassan Habibi
-#
-# From personal experience, that agrees with what has been followed
-# for at least the last 5 years.  Before that, for a few years, the
-# date used was the first Thursday night of Farvardin and the last
-# Thursday night of Shahrivar, but I can't give exact dates....
-# I have also changed the abbreviations to what is considered correct
-# here in Iran, IRST for regular time and IRDT for daylight saving time.
-#
-# From Roozbeh Pournader (2005-04-05):
-# The text of the Iranian law, in effect since 1925, clearly mentions
-# that the true solar year is the measure, and there is no arithmetic
-# leap year calculation involved.  There has never been any serious
-# plan to change that law....
-#
-# From Paul Eggert (2006-03-22):
-# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.
-# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates,
-# stopping after 2037 when 32-bit time_t's overflow.
-# That cal-persia used Birashk's approximation, which disagrees with the solar
-# calendar predictions for the year 2025, so I corrected those dates by hand.
-#
-# From Oscar van Vlijmen (2005-03-30), writing about future
-# discrepancies between cal-persia and the Iranian calendar:
-# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for
-# the vernal equinox and that gets so close to 12:00 some local
-# Iranian time that the definition of the correct location needs to be
-# known exactly, amongst other factors.  2157 is even closer:
-# 2157-03-20 08:37:15.5 UT.  But the Gregorian year 2025 should give
-# no interpretation problem whatsoever.  By the way, another instant
-# in the near future where there will be a discrepancy between
-# arithmetical and astronomical Iranian calendars will be in 2058:
-# vernal equinox on 2058-03-20 09:03:05.9 UT.  The Java version of
-# Reingold's/Dershowitz' calculator gives correctly the Gregorian date
-# 2058-03-21 for 1 Farvardin 1437 (astronomical).
-#
-# From Steffen Thorsen (2006-03-22):
-# Several of my users have reported that Iran will not observe DST anymore:
-# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
-#
-# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
-# ... the Guardian Council ... approved a law on Sunday to re-introduce
-# daylight saving time ...
-# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Iran	1978	1980	-	Mar	21	0:00	1:00	D
-Rule	Iran	1978	only	-	Oct	21	0:00	0	S
-Rule	Iran	1979	only	-	Sep	19	0:00	0	S
-Rule	Iran	1980	only	-	Sep	23	0:00	0	S
-Rule	Iran	1991	only	-	May	 3	0:00	1:00	D
-Rule	Iran	1992	1995	-	Mar	22	0:00	1:00	D
-Rule	Iran	1991	1995	-	Sep	22	0:00	0	S
-Rule	Iran	1996	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	1996	only	-	Sep	21	0:00	0	S
-Rule	Iran	1997	1999	-	Mar	22	0:00	1:00	D
-Rule	Iran	1997	1999	-	Sep	22	0:00	0	S
-Rule	Iran	2000	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2000	only	-	Sep	21	0:00	0	S
-Rule	Iran	2001	2003	-	Mar	22	0:00	1:00	D
-Rule	Iran	2001	2003	-	Sep	22	0:00	0	S
-Rule	Iran	2004	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2004	only	-	Sep	21	0:00	0	S
-Rule	Iran	2005	only	-	Mar	22	0:00	1:00	D
-Rule	Iran	2005	only	-	Sep	22	0:00	0	S
-Rule	Iran	2008	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2008	only	-	Sep	21	0:00	0	S
-Rule	Iran	2009	2011	-	Mar	22	0:00	1:00	D
-Rule	Iran	2009	2011	-	Sep	22	0:00	0	S
-Rule	Iran	2012	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2012	only	-	Sep	21	0:00	0	S
-Rule	Iran	2013	2015	-	Mar	22	0:00	1:00	D
-Rule	Iran	2013	2015	-	Sep	22	0:00	0	S
-Rule	Iran	2016	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2016	only	-	Sep	21	0:00	0	S
-Rule	Iran	2017	2019	-	Mar	22	0:00	1:00	D
-Rule	Iran	2017	2019	-	Sep	22	0:00	0	S
-Rule	Iran	2020	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2020	only	-	Sep	21	0:00	0	S
-Rule	Iran	2021	2023	-	Mar	22	0:00	1:00	D
-Rule	Iran	2021	2023	-	Sep	22	0:00	0	S
-Rule	Iran	2024	only	-	Mar	21	0:00	1:00	D
-Rule	Iran	2024	only	-	Sep	21	0:00	0	S
-Rule	Iran	2025	2027	-	Mar	22	0:00	1:00	D
-Rule	Iran	2025	2027	-	Sep	22	0:00	0	S
-Rule	Iran	2028	2029	-	Mar	21	0:00	1:00	D
-Rule	Iran	2028	2029	-	Sep	21	0:00	0	S
-Rule	Iran	2030	2031	-	Mar	22	0:00	1:00	D
-Rule	Iran	2030	2031	-	Sep	22	0:00	0	S
-Rule	Iran	2032	2033	-	Mar	21	0:00	1:00	D
-Rule	Iran	2032	2033	-	Sep	21	0:00	0	S
-Rule	Iran	2034	2035	-	Mar	22	0:00	1:00	D
-Rule	Iran	2034	2035	-	Sep	22	0:00	0	S
-Rule	Iran	2036	2037	-	Mar	21	0:00	1:00	D
-Rule	Iran	2036	2037	-	Sep	21	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Tehran	3:25:44	-	LMT	1916
-			3:25:44	-	TMT	1946	# Tehran Mean Time
-			3:30	-	IRST	1977 Nov
-			4:00	Iran	IR%sT	1979
-			3:30	Iran	IR%sT
-
-
-# Iraq
-#
-# From Jonathan Lennox (2000-06-12):
-# An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in
-# the U.S. edition) on the Iraqi Kurds contains a paragraph:
-# "The three northern provinces ... switched their clocks this spring and
-# are an hour ahead of Baghdad."
-#
-# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:
-# In the past, some Kurdish nationalists, as a protest to the Iraqi
-# Government, did not adhere to daylight saving time.  They referred
-# to daylight saving as Saddam time.  But, as of today, the time zone
-# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.
-#
-# So we'll ignore the Economist's claim.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Iraq	1982	only	-	May	1	0:00	1:00	D
-Rule	Iraq	1982	1984	-	Oct	1	0:00	0	S
-Rule	Iraq	1983	only	-	Mar	31	0:00	1:00	D
-Rule	Iraq	1984	1985	-	Apr	1	0:00	1:00	D
-Rule	Iraq	1985	1990	-	Sep	lastSun	1:00s	0	S
-Rule	Iraq	1986	1990	-	Mar	lastSun	1:00s	1:00	D
-# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
-# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
-#
-Rule	Iraq	1991	max	-	Apr	 1	3:00s	1:00	D
-Rule	Iraq	1991	max	-	Oct	 1	3:00s	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Baghdad	2:57:40	-	LMT	1890
-			2:57:36	-	BMT	1918	    # Baghdad Mean Time?
-			3:00	-	AST	1982 May
-			3:00	Iraq	A%sT
-
-
-###############################################################################
-
-# Israel
-
-# From Ephraim Silverberg (2001-01-11):
-#
-# I coined "IST/IDT" circa 1988.  Until then there were three
-# different abbreviations in use:
-#
-# JST  Jerusalem Standard Time [Danny Braniss, Hebrew University]
-# IZT  Israel Zonal (sic) Time [Prof. Haim Papo, Technion]
-# EEST Eastern Europe Standard Time [used by almost everyone else]
-#
-# Since timezones should be called by country and not capital cities,
-# I ruled out JST.  As Israel is in Asia Minor and not Eastern Europe,
-# EEST was equally unacceptable.  Since "zonal" was not compatible with
-# any other timezone abbreviation, I felt that 'IST' was the way to go
-# and, indeed, it has received almost universal acceptance in timezone
-# settings in Israeli computers.
-#
-# In any case, I am happy to share timezone abbreviations with India,
-# high on my favorite-country list (and not only because my wife's
-# family is from India).
-
-# From Shanks & Pottenger:
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Zion	1940	only	-	Jun	 1	0:00	1:00	D
-Rule	Zion	1942	1944	-	Nov	 1	0:00	0	S
-Rule	Zion	1943	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	1944	only	-	Apr	 1	0:00	1:00	D
-Rule	Zion	1945	only	-	Apr	16	0:00	1:00	D
-Rule	Zion	1945	only	-	Nov	 1	2:00	0	S
-Rule	Zion	1946	only	-	Apr	16	2:00	1:00	D
-Rule	Zion	1946	only	-	Nov	 1	0:00	0	S
-Rule	Zion	1948	only	-	May	23	0:00	2:00	DD
-Rule	Zion	1948	only	-	Sep	 1	0:00	1:00	D
-Rule	Zion	1948	1949	-	Nov	 1	2:00	0	S
-Rule	Zion	1949	only	-	May	 1	0:00	1:00	D
-Rule	Zion	1950	only	-	Apr	16	0:00	1:00	D
-Rule	Zion	1950	only	-	Sep	15	3:00	0	S
-Rule	Zion	1951	only	-	Apr	 1	0:00	1:00	D
-Rule	Zion	1951	only	-	Nov	11	3:00	0	S
-Rule	Zion	1952	only	-	Apr	20	2:00	1:00	D
-Rule	Zion	1952	only	-	Oct	19	3:00	0	S
-Rule	Zion	1953	only	-	Apr	12	2:00	1:00	D
-Rule	Zion	1953	only	-	Sep	13	3:00	0	S
-Rule	Zion	1954	only	-	Jun	13	0:00	1:00	D
-Rule	Zion	1954	only	-	Sep	12	0:00	0	S
-Rule	Zion	1955	only	-	Jun	11	2:00	1:00	D
-Rule	Zion	1955	only	-	Sep	11	0:00	0	S
-Rule	Zion	1956	only	-	Jun	 3	0:00	1:00	D
-Rule	Zion	1956	only	-	Sep	30	3:00	0	S
-Rule	Zion	1957	only	-	Apr	29	2:00	1:00	D
-Rule	Zion	1957	only	-	Sep	22	0:00	0	S
-Rule	Zion	1974	only	-	Jul	 7	0:00	1:00	D
-Rule	Zion	1974	only	-	Oct	13	0:00	0	S
-Rule	Zion	1975	only	-	Apr	20	0:00	1:00	D
-Rule	Zion	1975	only	-	Aug	31	0:00	0	S
-Rule	Zion	1985	only	-	Apr	14	0:00	1:00	D
-Rule	Zion	1985	only	-	Sep	15	0:00	0	S
-Rule	Zion	1986	only	-	May	18	0:00	1:00	D
-Rule	Zion	1986	only	-	Sep	 7	0:00	0	S
-Rule	Zion	1987	only	-	Apr	15	0:00	1:00	D
-Rule	Zion	1987	only	-	Sep	13	0:00	0	S
-Rule	Zion	1988	only	-	Apr	 9	0:00	1:00	D
-Rule	Zion	1988	only	-	Sep	 3	0:00	0	S
-
-# From Ephraim Silverberg
-# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
-# and 2005-02-17):
-
-# According to the Office of the Secretary General of the Ministry of
-# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
-# One thing is entrenched in law, however: that there must be at least 150
-# days of daylight savings time annually.  From 1993-1998, the change to
-# daylight savings time was on a Friday morning from midnight IST to
-# 1 a.m IDT; up until 1998, the change back to standard time was on a
-# Saturday night from midnight daylight savings time to 11 p.m. standard
-# time.  1996 is an exception to this rule where the change back to standard
-# time took place on Sunday night instead of Saturday night to avoid
-# conflicts with the Jewish New Year.  In 1999, the change to
-# daylight savings time was still on a Friday morning but from
-# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time
-# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for
-# 1999 only.  In the year 2000, the change to daylight savings time was
-# similar to 1999, but although the change back will be on a Friday, it
-# will take place from 1 a.m. IDT to midnight IST.  Starting in 2001, all
-# changes to/from will take place at 1 a.m. old time, but now there is no
-# rule as to what day of the week it will take place in as the start date
-# (except in 2003) is the night after the Passover Seder (i.e. the eve
-# of the 16th of Nisan in the lunar Hebrew calendar) and the end date
-# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
-# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Zion	1989	only	-	Apr	30	0:00	1:00	D
-Rule	Zion	1989	only	-	Sep	 3	0:00	0	S
-Rule	Zion	1990	only	-	Mar	25	0:00	1:00	D
-Rule	Zion	1990	only	-	Aug	26	0:00	0	S
-Rule	Zion	1991	only	-	Mar	24	0:00	1:00	D
-Rule	Zion	1991	only	-	Sep	 1	0:00	0	S
-Rule	Zion	1992	only	-	Mar	29	0:00	1:00	D
-Rule	Zion	1992	only	-	Sep	 6	0:00	0	S
-Rule	Zion	1993	only	-	Apr	 2	0:00	1:00	D
-Rule	Zion	1993	only	-	Sep	 5	0:00	0	S
-
-# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the
-# Ministry of Interior, Jerusalem, Israel.  The spokeswoman can be reached by
-# calling the office directly at 972-2-6701447 or 972-2-6701448.
-
-# Rule	NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
-Rule	Zion	1994	only	-	Apr	 1	0:00	1:00	D
-Rule	Zion	1994	only	-	Aug	28	0:00	0	S
-Rule	Zion	1995	only	-	Mar	31	0:00	1:00	D
-Rule	Zion	1995	only	-	Sep	 3	0:00	0	S
-
-# The dates for 1996 were determined by the Minister of Interior of the
-# time, Haim Ramon.  The official announcement regarding 1996-1998
-# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
-#
-#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
-#
-# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
-#
-# The official announcements for the years 1997-1999 can be viewed at:
-#
-#   ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
-#
-#       where YYYY is the relevant year.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Zion	1996	only	-	Mar	15	0:00	1:00	D
-Rule	Zion	1996	only	-	Sep	16	0:00	0	S
-Rule	Zion	1997	only	-	Mar	21	0:00	1:00	D
-Rule	Zion	1997	only	-	Sep	14	0:00	0	S
-Rule	Zion	1998	only	-	Mar	20	0:00	1:00	D
-Rule	Zion	1998	only	-	Sep	 6	0:00	0	S
-Rule	Zion	1999	only	-	Apr	 2	2:00	1:00	D
-Rule	Zion	1999	only	-	Sep	 3	2:00	0	S
-
-# The Knesset Interior Committee has changed the dates for 2000 for
-# the third time in just over a year and have set new dates for the
-# years 2001-2004 as well.
-#
-# The official announcement for the start date of 2000 can be viewed at:
-#
-#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
-#
-# The official announcement for the end date of 2000 and the dates
-# for the years 2001-2004 can be viewed at:
-#
-#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Zion	2000	only	-	Apr	14	2:00	1:00	D
-Rule	Zion	2000	only	-	Oct	 6	1:00	0	S
-Rule	Zion	2001	only	-	Apr	 9	1:00	1:00	D
-Rule	Zion	2001	only	-	Sep	24	1:00	0	S
-Rule	Zion	2002	only	-	Mar	29	1:00	1:00	D
-Rule	Zion	2002	only	-	Oct	 7	1:00	0	S
-Rule	Zion	2003	only	-	Mar	28	1:00	1:00	D
-Rule	Zion	2003	only	-	Oct	 3	1:00	0	S
-Rule	Zion	2004	only	-	Apr	 7	1:00	1:00	D
-Rule	Zion	2004	only	-	Sep	22	1:00	0	S
-
-# The proposed law agreed upon by the Knesset Interior Committee on
-# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
-# last Friday before April 2nd (i.e. the last Friday in March or April
-# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
-# night _before_ the fast of Yom Kippur.
-#
-# Those who can read Hebrew can view the announcement at:
-#
-#	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
-
-# From Paul Eggert (2005-02-22):
-# I used Ephraim Silverberg's dst-israel.el program
-#  (2005-02-20)
-# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
-# to generate the transitions in this list.
-# (I replaced "lastFri" with "Fri>=26" by hand.)
-# The spring transitions below all correspond to the following Rule:
-#
-# Rule	Zion	2005	max	-	Mar	Fri>=26	2:00	1:00	D
-#
-# but older zic implementations (e.g., Solaris 8) do not support
-# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
-# springtime transitions explicitly.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Zion	2005	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2005	only	-	Oct	 9	2:00	0	S
-Rule	Zion	2006	2010	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2006	only	-	Oct	 1	2:00	0	S
-Rule	Zion	2007	only	-	Sep	16	2:00	0	S
-Rule	Zion	2008	only	-	Oct	 5	2:00	0	S
-Rule	Zion	2009	only	-	Sep	27	2:00	0	S
-Rule	Zion	2010	only	-	Sep	12	2:00	0	S
-Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
-Rule	Zion	2012	2015	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2012	only	-	Sep	23	2:00	0	S
-Rule	Zion	2013	only	-	Sep	 8	2:00	0	S
-Rule	Zion	2014	only	-	Sep	28	2:00	0	S
-Rule	Zion	2015	only	-	Sep	20	2:00	0	S
-Rule	Zion	2016	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2016	only	-	Oct	 9	2:00	0	S
-Rule	Zion	2017	2021	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2017	only	-	Sep	24	2:00	0	S
-Rule	Zion	2018	only	-	Sep	16	2:00	0	S
-Rule	Zion	2019	only	-	Oct	 6	2:00	0	S
-Rule	Zion	2020	only	-	Sep	27	2:00	0	S
-Rule	Zion	2021	only	-	Sep	12	2:00	0	S
-Rule	Zion	2022	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2022	only	-	Oct	 2	2:00	0	S
-Rule	Zion	2023	2032	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2023	only	-	Sep	24	2:00	0	S
-Rule	Zion	2024	only	-	Oct	 6	2:00	0	S
-Rule	Zion	2025	only	-	Sep	28	2:00	0	S
-Rule	Zion	2026	only	-	Sep	20	2:00	0	S
-Rule	Zion	2027	only	-	Oct	10	2:00	0	S
-Rule	Zion	2028	only	-	Sep	24	2:00	0	S
-Rule	Zion	2029	only	-	Sep	16	2:00	0	S
-Rule	Zion	2030	only	-	Oct	 6	2:00	0	S
-Rule	Zion	2031	only	-	Sep	21	2:00	0	S
-Rule	Zion	2032	only	-	Sep	12	2:00	0	S
-Rule	Zion	2033	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2033	only	-	Oct	 2	2:00	0	S
-Rule	Zion	2034	2037	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2034	only	-	Sep	17	2:00	0	S
-Rule	Zion	2035	only	-	Oct	 7	2:00	0	S
-Rule	Zion	2036	only	-	Sep	28	2:00	0	S
-Rule	Zion	2037	only	-	Sep	13	2:00	0	S
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Jerusalem	2:20:56 -	LMT	1880
-			2:20:40	-	JMT	1918	# Jerusalem Mean Time?
-			2:00	Zion	I%sT
-
-
-
-###############################################################################
-
-# Japan
-
-# `9:00' and `JST' is from Guy Harris.
-
-# From Paul Eggert (1995-03-06):
-# Today's _Asahi Evening News_ (page 4) reports that Japan had
-# daylight saving between 1948 and 1951, but ``the system was discontinued
-# because the public believed it would lead to longer working hours.''
-
-# From Mayumi Negishi in the 2005-08-10 Japan Times
-# :
-# Occupation authorities imposed daylight-saving time on Japan on
-# [1948-05-01]....  But lack of prior debate and the execution of
-# daylight-saving time just three days after the bill was passed generated
-# deep hatred of the concept....  The Diet unceremoniously passed a bill to
-# dump the unpopular system in October 1951, less than a month after the San
-# Francisco Peace Treaty was signed.  (A government poll in 1951 showed 53%
-# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
-# wanted to keep it.)
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that DST in Japan during those years was as follows:
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Japan	1948	only	-	May	Sun>=1	2:00	1:00	D
-Rule	Japan	1948	1951	-	Sep	Sat>=8	2:00	0	S
-Rule	Japan	1949	only	-	Apr	Sun>=1	2:00	1:00	D
-Rule	Japan	1950	1951	-	May	Sun>=1	2:00	1:00	D
-# but the only locations using it (for birth certificates, presumably, since
-# their audience is astrologers) were US military bases.  For now, assume
-# that for most purposes daylight-saving time was observed; otherwise, what
-# would have been the point of the 1951 poll?
-
-# From Hideyuki Suzuki (1998-11-09):
-# 'Tokyo' usually stands for the former location of Tokyo Astronomical
-# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
-# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
-# edited by National Astronomical Observatory of Japan....
-# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
-# The law is enacted on 1886-07-07.
-
-# From Hideyuki Suzuki (1998-11-16):
-# The ordinance No. 51 (1886) established "standard time" in Japan,
-# which stands for the time on E 135 degree.
-# In the ordinance No. 167 (1895), "standard time" was renamed to "central
-# standard time".  And the same ordinance also established "western standard
-# time", which stands for the time on E 120 degree....  But "western standard
-# time" was abolished in the ordinance No. 529 (1937).  In the ordinance No.
-# 167, there is no mention regarding for what place western standard time is
-# standard....
-#
-# I wrote "ordinance" above, but I don't know how to translate.
-# In Japanese it's "chokurei", which means ordinance from emperor.
-
-# Shanks & Pottenger claim JST in use since 1896, and that a few
-# places (e.g. Ishigaki) use +0800; go with Suzuki.  Guess that all
-# ordinances took effect on Jan 1.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
-			9:00	-	JST	1896
-			9:00	-	CJT	1938
-			9:00	Japan	J%sT
-# Since 1938, all Japanese possessions have been like Asia/Tokyo.
-
-# Jordan
-#
-# From 
-# Jordan Week (1999-07-01)  via Steffen Thorsen (1999-09-09):
-# Clocks in Jordan were forwarded one hour on Wednesday at midnight,
-# in accordance with the government's decision to implement summer time
-# all year round.
-#
-# From 
-# Jordan Week (1999-09-30)  via Steffen Thorsen (1999-11-09):
-# Winter time starts today Thursday, 30 September. Clocks will be turned back
-# by one hour.  This is the latest government decision and it's final!
-# The decision was taken because of the increase in working hours in
-# government's departments from six to seven hours.
-#
-# From Paul Eggert (2005-11-22):
-# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.
-#
-# From Steffen Thorsen (2005-11-23):
-# For Jordan I have received multiple independent user reports every year
-# about DST end dates, as the end-rule is different every year.
-#
-# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi:
-# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm
-# "Jordan will switch to winter time on Friday, October 27".
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Jordan	1973	only	-	Jun	6	0:00	1:00	S
-Rule	Jordan	1973	1975	-	Oct	1	0:00	0	-
-Rule	Jordan	1974	1977	-	May	1	0:00	1:00	S
-Rule	Jordan	1976	only	-	Nov	1	0:00	0	-
-Rule	Jordan	1977	only	-	Oct	1	0:00	0	-
-Rule	Jordan	1978	only	-	Apr	30	0:00	1:00	S
-Rule	Jordan	1978	only	-	Sep	30	0:00	0	-
-Rule	Jordan	1985	only	-	Apr	1	0:00	1:00	S
-Rule	Jordan	1985	only	-	Oct	1	0:00	0	-
-Rule	Jordan	1986	1988	-	Apr	Fri>=1	0:00	1:00	S
-Rule	Jordan	1986	1990	-	Oct	Fri>=1	0:00	0	-
-Rule	Jordan	1989	only	-	May	8	0:00	1:00	S
-Rule	Jordan	1990	only	-	Apr	27	0:00	1:00	S
-Rule	Jordan	1991	only	-	Apr	17	0:00	1:00	S
-Rule	Jordan	1991	only	-	Sep	27	0:00	0	-
-Rule	Jordan	1992	only	-	Apr	10	0:00	1:00	S
-Rule	Jordan	1992	1993	-	Oct	Fri>=1	0:00	0	-
-Rule	Jordan	1993	1998	-	Apr	Fri>=1	0:00	1:00	S
-Rule	Jordan	1994	only	-	Sep	Fri>=15	0:00	0	-
-Rule	Jordan	1995	1998	-	Sep	Fri>=15	0:00s	0	-
-Rule	Jordan	1999	only	-	Jul	 1	0:00s	1:00	S
-Rule	Jordan	1999	2002	-	Sep	lastThu	0:00s	0	-
-Rule	Jordan	2000	max	-	Mar	lastThu	0:00s	1:00	S
-Rule	Jordan	2003	only	-	Oct	24	0:00s	0	-
-Rule	Jordan	2004	only	-	Oct	15	0:00s	0	-
-Rule	Jordan	2005	only	-	Sep	lastFri	0:00s	0	-
-Rule	Jordan	2006	max	-	Oct	lastFri	0:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Amman	2:23:44 -	LMT	1931
-			2:00	Jordan	EE%sT
-
-
-# Kazakhstan
-
-# From Paul Eggert (1996-11-22):
-# Andrew Evtichov (1996-04-13) writes that Kazakhstan
-# stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)
-# and Aqtau (formerly Shevchenko) are the largest cities in their zones.
-# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time
-# IATA SSIM mentions a third time zone in Kazakhstan.
-
-# From Paul Eggert (2006-03-22):
-# German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses
-# RussiaAsia rules, instead of switching at 00:00 as the IATA has it.
-# Go with Shanks & Pottenger, who have them always using RussiaAsia rules.
-# Also go with the following claims of Shanks & Pottenger:
-#
-# - Kazakhstan did not observe DST in 1991.
-# - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
-# - Oral switched from +5:00 to +4:00 in spring 1989.
-
-# 
-# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
-# 
-# The Government of Kazakhstan passed a resolution March 15 abolishing
-# daylight saving time citing lack of economic benefits and health
-# complications coupled with a decrease in productivity.
-#
-# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):
-# ... what happened was that the former Kazakhstan Eastern time zone
-# was "blended" with the Central zone.  Therefore, Kazakhstan now has
-# two time zones, and difference between them is one hour.  The zone
-# closer to UTC is the former Western zone (probably still called the
-# same), encompassing four provinces in the west: Aqtobe, Atyrau,
-# Mangghystau, and West Kazakhstan.  The other zone encompasses
-# everything else....  I guess that would make Kazakhstan time zones
-# de jure UTC+5 and UTC+6 respectively.
-
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-#
-# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
-Zone	Asia/Almaty	5:07:48 -	LMT	1924 May  2 # or Alma-Ata
-			5:00	-	ALMT	1930 Jun 21 # Alma-Ata Time
-			6:00 RussiaAsia ALM%sT	1991
-			6:00	-	ALMT	1992
-			6:00 RussiaAsia	ALM%sT	2005 Mar 15
-			6:00	-	ALMT
-# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)
-Zone	Asia/Qyzylorda	4:21:52 -	LMT	1924 May  2
-			4:00	-	KIZT	1930 Jun 21 # Kizilorda Time
-			5:00	-	KIZT	1981 Apr  1
-			5:00	1:00	KIZST	1981 Oct  1
-			6:00	-	KIZT	1982 Apr  1
-			5:00 RussiaAsia	KIZ%sT	1991
-			5:00	-	KIZT	1991 Dec 16 # independence
-			5:00	-	QYZT	1992 Jan 19 2:00
-			6:00 RussiaAsia	QYZ%sT	2005 Mar 15
-			6:00	-	QYZT
-# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
-Zone	Asia/Aqtobe	3:48:40	-	LMT	1924 May  2
-			4:00	-	AKTT	1930 Jun 21 # Aktyubinsk Time
-			5:00	-	AKTT	1981 Apr  1
-			5:00	1:00	AKTST	1981 Oct  1
-			6:00	-	AKTT	1982 Apr  1
-			5:00 RussiaAsia	AKT%sT	1991
-			5:00	-	AKTT	1991 Dec 16 # independence
-			5:00 RussiaAsia	AQT%sT	2005 Mar 15 # Aqtobe Time
-			5:00	-	AQTT
-# Mangghystau
-# Aqtau was not founded until 1963, but it represents an inhabited region,
-# so include time stamps before 1963.
-Zone	Asia/Aqtau	3:21:04	-	LMT	1924 May  2
-			4:00	-	FORT	1930 Jun 21 # Fort Shevchenko T
-			5:00	-	FORT	1963
-			5:00	-	SHET	1981 Oct  1 # Shevchenko Time
-			6:00	-	SHET	1982 Apr  1
-			5:00 RussiaAsia	SHE%sT	1991
-			5:00	-	SHET	1991 Dec 16 # independence
-			5:00 RussiaAsia	AQT%sT	1995 Mar lastSun 2:00 # Aqtau Time
-			4:00 RussiaAsia	AQT%sT	2005 Mar 15
-			5:00	-	AQTT
-# West Kazakhstan
-Zone	Asia/Oral	3:25:24	-	LMT	1924 May  2 # or Ural'sk
-			4:00	-	URAT	1930 Jun 21 # Ural'sk time
-			5:00	-	URAT	1981 Apr  1
-			5:00	1:00	URAST	1981 Oct  1
-			6:00	-	URAT	1982 Apr  1
-			5:00 RussiaAsia	URA%sT	1989 Mar 26 2:00
-			4:00 RussiaAsia	URA%sT	1991
-			4:00	-	URAT	1991 Dec 16 # independence
-			4:00 RussiaAsia	ORA%sT	2005 Mar 15 # Oral Time
-			5:00	-	ORAT
-
-# Kyrgyzstan (Kirgizstan)
-# Transitions through 1991 are from Shanks & Pottenger.
-
-# From Paul Eggert (2005-08-15):
-# According to an article dated today in the Kyrgyzstan Development Gateway
-# 
-# Kyrgyzstan is canceling the daylight saving time system.  I take the article
-# to mean that they will leave their clocks at 6 hours ahead of UTC.
-# From Malik Abdugaliev (2005-09-21):
-# Our government cancels daylight saving time 6th of August 2005.
-# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Kyrgyz	1992	1996	-	Apr	Sun>=7	0:00s	1:00	S
-Rule	Kyrgyz	1992	1996	-	Sep	lastSun	0:00	0	-
-Rule	Kyrgyz	1997	2005	-	Mar	lastSun	2:30	1:00	S
-Rule	Kyrgyz	1997	2004	-	Oct	lastSun	2:30	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Bishkek	4:58:24 -	LMT	1924 May  2
-			5:00	-	FRUT	1930 Jun 21 # Frunze Time
-			6:00 RussiaAsia FRU%sT	1991 Mar 31 2:00s
-			5:00	1:00	FRUST	1991 Aug 31 2:00 # independence
-			5:00	Kyrgyz	KG%sT	2005 Aug 12    # Kyrgyzstan Time
-			6:00	-	KGT
-
-###############################################################################
-
-# Korea (North and South)
-
-# From Annie I. Bang (2006-07-10) in
-# :
-# The Ministry of Commerce, Industry and Energy has already
-# commissioned a research project [to reintroduce DST] and has said
-# the system may begin as early as 2008....  Korea ran a daylight
-# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
-
-# From Shanks & Pottenger:
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	ROK	1960	only	-	May	15	0:00	1:00	D
-Rule	ROK	1960	only	-	Sep	13	0:00	0	S
-Rule	ROK	1987	1988	-	May	Sun>=8	0:00	1:00	D
-Rule	ROK	1987	1988	-	Oct	Sun>=8	0:00	0	S
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Seoul	8:27:52	-	LMT	1890
-			8:30	-	KST	1904 Dec
-			9:00	-	KST	1928
-			8:30	-	KST	1932
-			9:00	-	KST	1954 Mar 21
-			8:00	ROK	K%sT	1961 Aug 10
-			8:30	-	KST	1968 Oct
-			9:00	ROK	K%sT
-Zone	Asia/Pyongyang	8:23:00 -	LMT	1890
-			8:30	-	KST	1904 Dec
-			9:00	-	KST	1928
-			8:30	-	KST	1932
-			9:00	-	KST	1954 Mar 21
-			8:00	-	KST	1961 Aug 10
-			9:00	-	KST
-
-###############################################################################
-
-# Kuwait
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# From the Arab Times (2007-03-14):
-# The Civil Service Commission (CSC) has approved a proposal forwarded
-# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
-# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
-# .
-# From Paul Eggert (2007-03-29):
-# We don't know the details, or whether the approval means it'll happen,
-# so for now we assume no DST.
-Zone	Asia/Kuwait	3:11:56 -	LMT	1950
-			3:00	-	AST
-
-# Laos
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Vientiane	6:50:24 -	LMT	1906 Jun  9 # or Viangchan
-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
-			7:00	-	ICT	1912 May
-			8:00	-	ICT	1931 May
-			7:00	-	ICT
-
-# Lebanon
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Lebanon	1920	only	-	Mar	28	0:00	1:00	S
-Rule	Lebanon	1920	only	-	Oct	25	0:00	0	-
-Rule	Lebanon	1921	only	-	Apr	3	0:00	1:00	S
-Rule	Lebanon	1921	only	-	Oct	3	0:00	0	-
-Rule	Lebanon	1922	only	-	Mar	26	0:00	1:00	S
-Rule	Lebanon	1922	only	-	Oct	8	0:00	0	-
-Rule	Lebanon	1923	only	-	Apr	22	0:00	1:00	S
-Rule	Lebanon	1923	only	-	Sep	16	0:00	0	-
-Rule	Lebanon	1957	1961	-	May	1	0:00	1:00	S
-Rule	Lebanon	1957	1961	-	Oct	1	0:00	0	-
-Rule	Lebanon	1972	only	-	Jun	22	0:00	1:00	S
-Rule	Lebanon	1972	1977	-	Oct	1	0:00	0	-
-Rule	Lebanon	1973	1977	-	May	1	0:00	1:00	S
-Rule	Lebanon	1978	only	-	Apr	30	0:00	1:00	S
-Rule	Lebanon	1978	only	-	Sep	30	0:00	0	-
-Rule	Lebanon	1984	1987	-	May	1	0:00	1:00	S
-Rule	Lebanon	1984	1991	-	Oct	16	0:00	0	-
-Rule	Lebanon	1988	only	-	Jun	1	0:00	1:00	S
-Rule	Lebanon	1989	only	-	May	10	0:00	1:00	S
-Rule	Lebanon	1990	1992	-	May	1	0:00	1:00	S
-Rule	Lebanon	1992	only	-	Oct	4	0:00	0	-
-Rule	Lebanon	1993	max	-	Mar	lastSun	0:00	1:00	S
-Rule	Lebanon	1993	1998	-	Sep	lastSun	0:00	0	-
-Rule	Lebanon	1999	max	-	Oct	lastSun	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Beirut	2:22:00 -	LMT	1880
-			2:00	Lebanon	EE%sT
-
-# Malaysia
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	NBorneo	1935	1941	-	Sep	14	0:00	0:20	TS # one-Third Summer
-Rule	NBorneo	1935	1941	-	Dec	14	0:00	0	-
-#
-# peninsular Malaysia
-# The data here are taken from Mok Ly Yng (2003-10-30)
-# .
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Asia/Kuala_Lumpur	6:46:46 -	LMT	1901 Jan  1
-			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
-			7:00	-	MALT	1933 Jan  1 # Malaya Time
-			7:00	0:20	MALST	1936 Jan  1
-			7:20	-	MALT	1941 Sep  1
-			7:30	-	MALT	1942 Feb 16
-			9:00	-	JST	1945 Sep 12
-			7:30	-	MALT	1982 Jan  1
-			8:00	-	MYT	# Malaysia Time
-# Sabah & Sarawak
-# From Paul Eggert (2006-03-22):
-# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
-# transition dates are from Mok Ly Yng.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Asia/Kuching	7:21:20	-	LMT	1926 Mar
-			7:30	-	BORT	1933	# Borneo Time
-			8:00	NBorneo	BOR%sT	1942 Feb 16
-			9:00	-	JST	1945 Sep 12
-			8:00	-	BORT	1982 Jan  1
-			8:00	-	MYT
-
-# Maldives
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Maldives	4:54:00 -	LMT	1880	# Male
-			4:54:00	-	MMT	1960	# Male Mean Time
-			5:00	-	MVT		# Maldives Time
-
-# Mongolia
-
-# Shanks & Pottenger say that Mongolia has three time zones, but
-# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
-# both say that it has just one.
-
-# From Oscar van Vlijmen (1999-12-11):
-# 
-# General Information Mongolia
-#  (1999-09)
-# "Time: Mongolia has two time zones. Three westernmost provinces of
-# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
-# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
-# eight hours."
-
-# From Rives McDow (1999-12-13):
-# Mongolia discontinued the use of daylight savings time in 1999; 1998
-# being the last year it was implemented.  The dates of implementation I am
-# unsure of, but most probably it was similar to Russia, except for the time
-# of implementation may have been different....
-# Some maps in the past have indicated that there was an additional time
-# zone in the eastern part of Mongolia, including the provinces of Dornod,
-# Suhbaatar, and possibly Khentij.
-
-# From Paul Eggert (1999-12-15):
-# Naming and spelling is tricky in Mongolia.
-# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;
-# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,
-# and sometimes Jirgalanta (with variant spellings), but the name Hovd
-# is good enough for our purposes.
-
-# From Rives McDow (2001-05-13):
-# In addition to Mongolia starting daylight savings as reported earlier
-# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
-# there are three time zones.
-#
-# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
-# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
-#	Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
-# Provinces [at 9:00]: Dornod, Sukhbaatar
-#
-# [The province of Selenge is omitted from the above lists.]
-
-# From Ganbold Ts., Ulaanbaatar (2004-04-17):
-# Daylight saving occurs at 02:00 local time last Saturday of March.
-# It will change back to normal at 02:00 local time last Saturday of
-# September.... As I remember this rule was changed in 2001.
-#
-# From Paul Eggert (2004-04-17):
-# For now, assume Rives McDow's informant got confused about Friday vs
-# Saturday, and that his 2001 dates should have 1 added to them.
-
-# From Paul Eggert (2005-07-26):
-# We have wildly conflicting information about Mongolia's time zones.
-# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
-# there is only one time zone and that DST is observed, citing Microsoft
-# Windows XP as the source.  Risto Nykanen (2005-05-16) reports that
-# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
-# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
-# Washington, DC says there are two time zones, with DST observed.
-# He also found
-# 
-# which also says that there is DST, and which has a comment by "Toddius"
-# (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
-# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
-# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
-# The SUKH timezone is new this year, it is one of the few things the
-# parliament passed during the tumultuous winter session."
-# For now, let's ignore this information, until we have more confirmation.
-
-# From Ganbold Ts. (2007-02-26):
-# Parliament of Mongolia has just changed the daylight-saving rule in February.
-# They decided not to adopt daylight-saving time....
-# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Mongol	1983	1984	-	Apr	1	0:00	1:00	S
-Rule	Mongol	1983	only	-	Oct	1	0:00	0	-
-# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
-# but McDow says the 2001 switches occurred at 02:00.  Also, IATA SSIM
-# (1996-09) says 1996-10-25.  Go with Shanks & Pottenger through 1998.
-#
-# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
-# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
-# at 02:00 standard time, not at 00:00 local time as in the rest of
-# the country.  That would be odd, and possibly is a result of their
-# correction of 02:00 (in the previous edition) not being done correctly
-# in the latest edition; so ignore it for now.
-
-Rule	Mongol	1985	1998	-	Mar	lastSun	0:00	1:00	S
-Rule	Mongol	1984	1998	-	Sep	lastSun	0:00	0	-
-# IATA SSIM (1999-09) says Mongolia no longer observes DST.
-Rule	Mongol	2001	only	-	Apr	lastSat	2:00	1:00	S
-Rule	Mongol	2001	2006	-	Sep	lastSat	2:00	0	-
-Rule	Mongol	2002	2006	-	Mar	lastSat	2:00	1:00	S
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
-Zone	Asia/Hovd	6:06:36 -	LMT	1905 Aug
-			6:00	-	HOVT	1978	# Hovd Time
-			7:00	Mongol	HOV%sT
-# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
-Zone	Asia/Ulaanbaatar 7:07:32 -	LMT	1905 Aug
-			7:00	-	ULAT	1978	# Ulaanbaatar Time
-			8:00	Mongol	ULA%sT
-# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
-# Choybalsan, Sanbejse, Tchoibalsan
-Zone	Asia/Choibalsan	7:38:00 -	LMT	1905 Aug
-			7:00	-	ULAT	1978
-			8:00	-	ULAT	1983 Apr
-			9:00	Mongol	CHO%sT	# Choibalsan Time
-
-# Nepal
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Katmandu	5:41:16 -	LMT	1920
-			5:30	-	IST	1986
-			5:45	-	NPT	# Nepal Time
-
-# Oman
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Muscat	3:54:20 -	LMT	1920
-			4:00	-	GST
-
-# Pakistan
-
-# From Rives McDow (2002-03-13):
-# I have been advised that Pakistan has decided to adopt dst on a
-# TRIAL basis for one year, starting 00:01 local time on April 7, 2002
-# and ending at 00:01 local time October 6, 2002.  This is what I was
-# told, but I believe that the actual time of change may be 00:00; the
-# 00:01 was to make it clear which day it was on.
-
-# From Paul Eggert (2002-03-15):
-# Jesper Norgaard found this URL:
-# http://www.pak.gov.pk/public/news/app/app06_dec.htm
-# (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
-# advance the clocks by one hour on the night between the first
-# Saturday and Sunday of April and revert to the original position on
-# 15th October each year".  This agrees with McDow's 04-07 at 00:00,
-# but disagrees about the October transition, and makes it sound like
-# it's not on a trial basis.  Also, the "between the first Saturday
-# and Sunday of April" phrase, if taken literally, means that the
-# transition takes place at 00:00 on the first Sunday on or after 04-02.
-
-# From Paul Eggert (2003-02-09):
-# DAWN  reported on 2002-10-05
-# that 2002 DST ended that day at midnight.  Go with McDow for now.
-
-# From Steffen Thorsen (2003-03-14):
-# According to http://www.dawn.com/2003/03/07/top15.htm
-# there will be no DST in Pakistan this year:
-#
-# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
-# Rashid Ahmed on Thursday said the cabinet had reversed a previous
-# decision to advance clocks by one hour in summer and put them back by
-# one hour in winter with the aim of saving light hours and energy.
-#
-# The minister told a news conference that the experiment had rather
-# shown 8 per cent higher consumption of electricity.
-
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule Pakistan	2002	only	-	Apr	Sun>=2	0:01	1:00	S
-Rule Pakistan	2002	only	-	Oct	Sun>=2	0:01	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Karachi	4:28:12 -	LMT	1907
-			5:30	-	IST	1942 Sep
-			5:30	1:00	IST	1945 Oct 15
-			5:30	-	IST	1951 Sep 30
-			5:00	-	KART	1971 Mar 26 # Karachi Time
-			5:00 Pakistan	PK%sT	# Pakistan Time
-
-# Palestine
-
-# From Amos Shapir (1998-02-15):
-#
-# From 1917 until 1948-05-15, all of Palestine, including the parts now
-# known as the Gaza Strip and the West Bank, was under British rule.
-# Therefore the rules given for Israel for that period, apply there too...
-#
-# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05
-# (except a short occupation by Israel from 1956-11 till 1957-03, but no
-# time zone was affected then).  It was never formally annexed to Egypt,
-# though.
-#
-# The rest of Palestine was under Jordanian rule at that time, formally
-# annexed in 1950 as the West Bank (and the word "Trans" was dropped from
-# the country's previous name of "the Hashemite Kingdom of the
-# Trans-Jordan").  So the rules for Jordan for that time apply.  Major
-# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and
-# East Jerusalem.
-#
-# Both areas were occupied by Israel in June 1967, but not annexed (except
-# for East Jerusalem).  They were on Israel time since then; there might
-# have been a Military Governor's order about time zones, but I'm not aware
-# of any (such orders may have been issued semi-annually whenever summer
-# time was in effect, but maybe the legal aspect of time was just neglected).
-#
-# The Palestinian Authority was established in 1993, and got hold of most
-# towns in the West Bank and Gaza by 1995.  I know that in order to
-# demonstrate...independence, they have been switching to
-# summer time and back on a different schedule than Israel's, but I don't
-# know when this was started, or what algorithm is used (most likely the
-# Jordanian one).
-#
-# To summarize, the table should probably look something like that:
-#
-# Area \ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-
-# ------------+-----------+-----------+-----------+-----------
-# Israel      | Zion      | Zion      | Zion      | Zion
-# West bank   | Zion      | Jordan    | Zion      | Jordan
-# Gaza        | Zion      | Egypt     | Zion      | Jordan
-#
-# I guess more info may be available from the PA's web page (if/when they
-# have one).
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go
-# with Shapir and assume that it observed DST from 1940 through 1947,
-# and that it used Jordanian rules starting in 1996.
-# We don't yet need a separate entry for the West Bank, since
-# the only differences between it and Gaza that we know about
-# occurred before our cutoff date of 1970.
-# However, as we get more information, we may need to add entries
-# for parts of the West Bank as they transitioned from Israel's rules
-# to Palestine's rules.  If you have more info about this, please
-# send it to tz@elsie.nci.nih.gov for incorporation into future editions.
-
-# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
-# forwarded by Ephraim Silverberg:
-#
-# Despite the fact that Israel changed over to daylight savings time
-# last week, the PLO Authority (PA) has decided not to turn its clocks
-# one-hour forward at this time.  As a sign of independence from Israeli rule,
-# the PA has decided to implement DST in April.
-
-# From Paul Eggert (1999-09-20):
-# Daoud Kuttab writes in
-# 
-# Holiday havoc
-#  (Jerusalem Post, 1999-04-22) that
-# the Palestinian National Authority changed to DST on 1999-04-15.
-# I vaguely recall that they switch back in October (sorry, forgot the source).
-# For now, let's assume that the spring switch was at 24:00,
-# and that they switch at 0:00 on the 3rd Fridays of April and October.
-
-# From Paul Eggert (2005-11-22):
-# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.
-
-# From Steffen Thorsen (2005-11-23):
-# A user from Gaza reported that Gaza made the change early because of
-# the Ramadan.  Next year Ramadan will be even earlier, so I think
-# there is a good chance next year's end date will be around two weeks
-# earlier--the same goes for Jordan.
-
-# From Steffen Thorsen (2006-08-17):
-# I was informed by a user in Bethlehem that in Bethlehem it started the
-# same day as Israel, and after checking with other users in the area, I
-# was informed that they started DST one day after Israel.  I was not
-# able to find any authoritative sources at the time, nor details if
-# Gaza changed as well, but presumed Gaza to follow the same rules as
-# the West Bank.
-
-# From Steffen Thorsen (2006-09-26):
-# according to the Palestine News Network (2006-09-19):
-# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5
-# > The Council of Ministers announced that this year its winter schedule
-# > will begin early, as of midnight Thursday.  It is also time to turn
-# > back the clocks for winter.  Friday will begin an hour late this week.
-# I guess it is likely that next year's date will be moved as well,
-# because of the Ramadan.
-
-# From Jesper Norgaard Welen (2007-09-18):
-# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
-# Palestinian territories left DST early on 13.th. of September at 2:00.
-
-# From Paul Eggert (2007-09-20):
-# My understanding is that Gaza and the West Bank disagree even over when
-# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
-# surprised if they agreed about DST.  But for now, assume they agree.
-# For lack of better information, predict that future changes will be
-# the 2nd Thursday of September at 02:00.
-
-# The rules for Egypt are stolen from the `africa' file.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
-Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
-Rule EgyptAsia	1958	only	-	May	 1	0:00	1:00	S
-Rule EgyptAsia	1959	1967	-	May	 1	1:00	1:00	S
-Rule EgyptAsia	1959	1965	-	Sep	30	3:00	0	-
-Rule EgyptAsia	1966	only	-	Oct	 1	3:00	0	-
-
-Rule Palestine	1999	2005	-	Apr	Fri>=15	0:00	1:00	S
-Rule Palestine	1999	2003	-	Oct	Fri>=15	0:00	0	-
-Rule Palestine	2004	only	-	Oct	 1	1:00	0	-
-Rule Palestine	2005	only	-	Oct	 4	2:00	0	-
-Rule Palestine	2006	max	-	Apr	 1	0:00	1:00	S
-Rule Palestine	2006	only	-	Sep	22	0:00	0	-
-Rule Palestine	2007	max	-	Sep	Thu>=8	2:00	0	-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
-			2:00	Zion	EET	1948 May 15
-			2:00 EgyptAsia	EE%sT	1967 Jun  5
-			2:00	Zion	I%sT	1996
-			2:00	Jordan	EE%sT	1999
-			2:00 Palestine	EE%sT
-
-# Paracel Is
-# no information
-
-# Philippines
-# On 1844-08-16, Narciso Claveria, governor-general of the
-# Philippines, issued a proclamation announcing that 1844-12-30 was to
-# be immediately followed by 1845-01-01.  Robert H. van Gent has a
-# transcript of the decree in .
-# The rest of the data are from Shanks & Pottenger.
-
-# From Paul Eggert (2006-04-25):
-# Tomorrow's Manila Standard reports that the Philippines Department of
-# Trade and Industry is considering adopting DST this June when the
-# rainy season begins.  See
-# .
-# For now, we'll ignore this, since it's not definite and we lack details.
-#
-# From Jesper Norgaard Welen (2006-04-26):
-# ... claims that Philippines had DST last time in 1990:
-# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
-# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
-# but no details]
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Phil	1936	only	-	Nov	1	0:00	1:00	S
-Rule	Phil	1937	only	-	Feb	1	0:00	0	-
-Rule	Phil	1954	only	-	Apr	12	0:00	1:00	S
-Rule	Phil	1954	only	-	Jul	1	0:00	0	-
-Rule	Phil	1978	only	-	Mar	22	0:00	1:00	S
-Rule	Phil	1978	only	-	Sep	21	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Manila	-15:56:00 -	LMT	1844 Dec 31
-			8:04:00 -	LMT	1899 May 11
-			8:00	Phil	PH%sT	1942 May
-			9:00	-	JST	1944 Nov
-			8:00	Phil	PH%sT
-
-# Qatar
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Qatar	3:26:08 -	LMT	1920	# Al Dawhah / Doha
-			4:00	-	GST	1972 Jun
-			3:00	-	AST
-
-# Saudi Arabia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Riyadh	3:06:52 -	LMT	1950
-			3:00	-	AST
-
-# Singapore
-# The data here are taken from Mok Ly Yng (2003-10-30)
-# .
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
-			6:55:25	-	SMT	1905 Jun  1 # Singapore M.T.
-			7:00	-	MALT	1933 Jan  1 # Malaya Time
-			7:00	0:20	MALST	1936 Jan  1
-			7:20	-	MALT	1941 Sep  1
-			7:30	-	MALT	1942 Feb 16
-			9:00	-	JST	1945 Sep 12
-			7:30	-	MALT	1965 Aug  9 # independence
-			7:30	-	SGT	1982 Jan  1 # Singapore Time
-			8:00	-	SGT
-
-# Spratly Is
-# no information
-
-# Sri Lanka
-# From Paul Eggert (1996-09-03):
-# "Sri Lanka advances clock by an hour to avoid blackout"
-# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
-# no longer available as of 1999-08-17)
-# reported ``the country's standard time will be put forward by one hour at
-# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
-#
-# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
-# by Shamindra in
-# 
-# Daily News - Hot News Section (1996-10-26)
-# :
-# With effect from 12.30 a.m. on 26th October 1996
-# Sri Lanka will be six (06) hours ahead of GMT.
-
-# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
-#  (2006-04-13):
-# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
-# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
-
-# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
-# 
-# [The Tamil Tigers] never accepted the original 1996 time change and simply
-# kept their clocks set five and a half hours ahead of Greenwich Mean
-# Time (GMT), in line with neighbor India.
-# From Paul Eggert (2006-04-18):
-# People who live in regions under Tamil control can use TZ='Asia/Calcutta',
-# as that zone has agreed with the Tamil areas since our cutoff date of 1970.
-
-# From K Sethu (2006-04-25):
-# I think the abbreviation LKT originated from the world of computers at
-# the time of or subsequent to the time zone changes by SL Government
-# twice in 1996 and probably SL Government or its standardization
-# agencies never declared an abbreviation as a national standard.
-#
-# I recollect before the recent change the government annoucemments
-# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
-# Time and no mention was made about the abbreviation.
-#
-# If we look at Sri Lanka Department of Government's "Official News
-# Website of Sri Lanka" ... http://www.news.lk/ we can see that they
-# use SLT as abbreviation in time stamp at the beginning of each news
-# item....
-#
-# Within Sri Lanka I think LKT is well known among computer users and
-# adminsitrators.  In my opinion SLT may not be a good choice because the
-# nation's largest telcom / internet operator Sri Lanka Telcom is well
-# known by that abbreviation - simply as SLT (there IP domains are
-# slt.lk and sltnet.lk).
-#
-# But if indeed our government has adopted SLT as standard abbreviation
-# (that we have not known so far) then  it is better that it be used for
-# all computers.
-
-# From Paul Eggert (2006-04-25):
-# One possibility is that we wait for a bit for the dust to settle down
-# and then see what people actually say in practice.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Colombo	5:19:24 -	LMT	1880
-			5:19:32	-	MMT	1906	# Moratuwa Mean Time
-			5:30	-	IST	1942 Jan  5
-			5:30	0:30	IHST	1942 Sep
-			5:30	1:00	IST	1945 Oct 16 2:00
-			5:30	-	IST	1996 May 25 0:00
-			6:30	-	LKT	1996 Oct 26 0:30
-			6:00	-	LKT	2006 Apr 15 0:30
-			5:30	-	IST
-
-# Syria
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Syria	1920	1923	-	Apr	Sun>=15	2:00	1:00	S
-Rule	Syria	1920	1923	-	Oct	Sun>=1	2:00	0	-
-Rule	Syria	1962	only	-	Apr	29	2:00	1:00	S
-Rule	Syria	1962	only	-	Oct	1	2:00	0	-
-Rule	Syria	1963	1965	-	May	1	2:00	1:00	S
-Rule	Syria	1963	only	-	Sep	30	2:00	0	-
-Rule	Syria	1964	only	-	Oct	1	2:00	0	-
-Rule	Syria	1965	only	-	Sep	30	2:00	0	-
-Rule	Syria	1966	only	-	Apr	24	2:00	1:00	S
-Rule	Syria	1966	1976	-	Oct	1	2:00	0	-
-Rule	Syria	1967	1978	-	May	1	2:00	1:00	S
-Rule	Syria	1977	1978	-	Sep	1	2:00	0	-
-Rule	Syria	1983	1984	-	Apr	9	2:00	1:00	S
-Rule	Syria	1983	1984	-	Oct	1	2:00	0	-
-Rule	Syria	1986	only	-	Feb	16	2:00	1:00	S
-Rule	Syria	1986	only	-	Oct	9	2:00	0	-
-Rule	Syria	1987	only	-	Mar	1	2:00	1:00	S
-Rule	Syria	1987	1988	-	Oct	31	2:00	0	-
-Rule	Syria	1988	only	-	Mar	15	2:00	1:00	S
-Rule	Syria	1989	only	-	Mar	31	2:00	1:00	S
-Rule	Syria	1989	only	-	Oct	1	2:00	0	-
-Rule	Syria	1990	only	-	Apr	1	2:00	1:00	S
-Rule	Syria	1990	only	-	Sep	30	2:00	0	-
-Rule	Syria	1991	only	-	Apr	 1	0:00	1:00	S
-Rule	Syria	1991	1992	-	Oct	 1	0:00	0	-
-Rule	Syria	1992	only	-	Apr	 8	0:00	1:00	S
-Rule	Syria	1993	only	-	Mar	26	0:00	1:00	S
-Rule	Syria	1993	only	-	Sep	25	0:00	0	-
-# IATA SSIM (1998-02) says 1998-04-02;
-# (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02,
-# 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31;
-# (2006) says 2006-03-31 and 2006-09-22;
-# for now ignore all these claims and go with Shanks & Pottenger,
-# except for the 2006-09-22 claim (which seems right for Ramadan).
-Rule	Syria	1994	1996	-	Apr	 1	0:00	1:00	S
-Rule	Syria	1994	2005	-	Oct	 1	0:00	0	-
-Rule	Syria	1997	1998	-	Mar	lastMon	0:00	1:00	S
-Rule	Syria	1999	2006	-	Apr	 1	0:00	1:00	S
-# From Stephen Colebourne (2006-09-18):
-# According to IATA data, Syria will change DST on 21st September [21:00 UTC]
-# this year [only]....  This is probably related to Ramadan, like Egypt.
-Rule	Syria	2006	only	-	Sep	22	0:00	0	-
-# From Paul Eggert (2007-03-29):
-# Today the AP reported "Syria will switch to summertime at midnight Thursday."
-# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
-# For lack of better info, assume the rule changed to "last Friday in March"
-# this year.
-Rule	Syria	2007	max	-	Mar	lastFri	0:00	1:00	S
-Rule	Syria	2007	max	-	Oct	 1	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Damascus	2:25:12 -	LMT	1920	# Dimashq
-			2:00	Syria	EE%sT
-
-# Tajikistan
-# From Shanks & Pottenger.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Dushanbe	4:35:12 -	LMT	1924 May  2
-			5:00	-	DUST	1930 Jun 21 # Dushanbe Time
-			6:00 RussiaAsia DUS%sT	1991 Mar 31 2:00s
-			5:00	1:00	DUSST	1991 Sep  9 2:00s
-			5:00	-	TJT		    # Tajikistan Time
-
-# Thailand
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Bangkok	6:42:04	-	LMT	1880
-			6:42:04	-	BMT	1920 Apr # Bangkok Mean Time
-			7:00	-	ICT
-
-# Turkmenistan
-# From Shanks & Pottenger.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Ashgabat	3:53:32 -	LMT	1924 May  2 # or Ashkhabad
-			4:00	-	ASHT	1930 Jun 21 # Ashkhabad Time
-			5:00 RussiaAsia	ASH%sT	1991 Mar 31 2:00
-			4:00 RussiaAsia	ASH%sT	1991 Oct 27 # independence
-			4:00 RussiaAsia	TM%sT	1992 Jan 19 2:00
-			5:00	-	TMT
-
-# United Arab Emirates
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Dubai	3:41:12 -	LMT	1920
-			4:00	-	GST
-
-# Uzbekistan
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Samarkand	4:27:12 -	LMT	1924 May  2
-			4:00	-	SAMT	1930 Jun 21 # Samarkand Time
-			5:00	-	SAMT	1981 Apr  1
-			5:00	1:00	SAMST	1981 Oct  1
-			6:00	-	TAST	1982 Apr  1 # Tashkent Time
-			5:00 RussiaAsia	SAM%sT	1991 Sep  1 # independence
-			5:00 RussiaAsia	UZ%sT	1992
-			5:00	-	UZT
-Zone	Asia/Tashkent	4:37:12 -	LMT	1924 May  2
-			5:00	-	TAST	1930 Jun 21 # Tashkent Time
-			6:00 RussiaAsia	TAS%sT	1991 Mar 31 2:00
-			5:00 RussiaAsia	TAS%sT	1991 Sep  1 # independence
-			5:00 RussiaAsia	UZ%sT	1992
-			5:00	-	UZT
-
-# Vietnam
-
-# From Paul Eggert (1993-11-18):
-# Saigon's official name is Thanh-Pho Ho Chi Minh, but it's too long.
-# We'll stick with the traditional name for now.
-
-# From Shanks & Pottenger:
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Saigon	7:06:40 -	LMT	1906 Jun  9
-			7:06:20	-	SMT	1911 Mar 11 0:01 # Saigon MT?
-			7:00	-	ICT	1912 May
-			8:00	-	ICT	1931 May
-			7:00	-	ICT
-
-# Yemen
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Aden	3:00:48	-	LMT	1950
-			3:00	-	AST
diff --git a/bin/glibc-2.7/timezone/australasia b/bin/glibc-2.7/timezone/australasia
deleted file mode 100644
index 30d695ff..00000000
--- a/bin/glibc-2.7/timezone/australasia
+++ /dev/null
@@ -1,1454 +0,0 @@
-# @(#)australasia	8.8
-# 
-
-# This file also includes Pacific islands.
-
-# Notes are at the end of this file
-
-###############################################################################
-
-# Australia
-
-# Please see the notes below for the controversy about "EST" versus "AEST" etc.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Aus	1917	only	-	Jan	 1	0:01	1:00	-
-Rule	Aus	1917	only	-	Mar	25	2:00	0	-
-Rule	Aus	1942	only	-	Jan	 1	2:00	1:00	-
-Rule	Aus	1942	only	-	Mar	29	2:00	0	-
-Rule	Aus	1942	only	-	Sep	27	2:00	1:00	-
-Rule	Aus	1943	1944	-	Mar	lastSun	2:00	0	-
-Rule	Aus	1943	only	-	Oct	 3	2:00	1:00	-
-# Go with Whitman and the Australian National Standards Commission, which
-# says W Australia didn't use DST in 1943/1944.  Ignore Whitman's claim that
-# 1944/1945 was just like 1943/1944.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# Northern Territory
-Zone Australia/Darwin	 8:43:20 -	LMT	1895 Feb
-			 9:00	-	CST	1899 May
-			 9:30	Aus	CST
-# Western Australia
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	AW	1974	only	-	Oct	lastSun	2:00s	1:00	-
-Rule	AW	1975	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AW	1983	only	-	Oct	lastSun	2:00s	1:00	-
-Rule	AW	1984	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AW	1991	only	-	Nov	17	2:00s	1:00	-
-Rule	AW	1992	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AW	2006	only	-	Dec	 3	2:00s	1:00	-
-Rule	AW	2007	2009	-	Mar	lastSun	2:00s	0	-
-Rule	AW	2007	2008	-	Oct	lastSun	2:00s	1:00	-
-Zone Australia/Perth	 7:43:24 -	LMT	1895 Dec
-			 8:00	Aus	WST	1943 Jul
-			 8:00	AW	WST
-Zone Australia/Eucla	 8:35:28 -	LMT	1895 Dec
-			 8:45	Aus	CWST	1943 Jul
-			 8:45	AW	CWST
-
-# Queensland
-#
-# From Alex Livingston (1996-11-01):
-# I have heard or read more than once that some resort islands off the coast
-# of Queensland chose to keep observing daylight-saving time even after
-# Queensland ceased to.
-#
-# From Paul Eggert (1996-11-22):
-# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,
-# Hamilton) observed DST for two years after the rest of Queensland stopped.
-# Hamilton is the largest, but there is also a Hamilton in Victoria,
-# so use Lindeman.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	AQ	1971	only	-	Oct	lastSun	2:00s	1:00	-
-Rule	AQ	1972	only	-	Feb	lastSun	2:00s	0	-
-Rule	AQ	1989	1991	-	Oct	lastSun	2:00s	1:00	-
-Rule	AQ	1990	1992	-	Mar	Sun>=1	2:00s	0	-
-Rule	Holiday	1992	1993	-	Oct	lastSun	2:00s	1:00	-
-Rule	Holiday	1993	1994	-	Mar	Sun>=1	2:00s	0	-
-Zone Australia/Brisbane	10:12:08 -	LMT	1895
-			10:00	Aus	EST	1971
-			10:00	AQ	EST
-Zone Australia/Lindeman  9:55:56 -	LMT	1895
-			10:00	Aus	EST	1971
-			10:00	AQ	EST	1992 Jul
-			10:00	Holiday	EST
-
-# South Australia
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	AS	1971	1985	-	Oct	lastSun	2:00s	1:00	-
-Rule	AS	1986	only	-	Oct	19	2:00s	1:00	-
-Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
-Rule	AS	1972	only	-	Feb	27	2:00s	0	-
-Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
-Rule	AS	1986	1989	-	Mar	Sun>=15	2:00s	0	-
-Rule	AS	1990	only	-	Mar	Sun>=18	2:00s	0	-
-Rule	AS	1991	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AS	1992	only	-	Mar	Sun>=18	2:00s	0	-
-Rule	AS	1993	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AS	1994	only	-	Mar	Sun>=18	2:00s	0	-
-Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
-Rule	AS	2006	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
-Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
-Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Australia/Adelaide	9:14:20 -	LMT	1895 Feb
-			9:00	-	CST	1899 May
-			9:30	Aus	CST	1971
-			9:30	AS	CST
-
-# Tasmania
-#
-# From Paul Eggert (2005-08-16):
-# 
-# says King Island didn't observe DST from WWII until late 1971.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	AT	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	AT	1968	only	-	Mar	lastSun	2:00s	0	-
-Rule	AT	1968	1985	-	Oct	lastSun	2:00s	1:00	-
-Rule	AT	1969	1971	-	Mar	Sun>=8	2:00s	0	-
-Rule	AT	1972	only	-	Feb	lastSun	2:00s	0	-
-Rule	AT	1973	1981	-	Mar	Sun>=1	2:00s	0	-
-Rule	AT	1982	1983	-	Mar	lastSun	2:00s	0	-
-Rule	AT	1984	1986	-	Mar	Sun>=1	2:00s	0	-
-Rule	AT	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
-Rule	AT	1987	1990	-	Mar	Sun>=15	2:00s	0	-
-Rule	AT	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
-Rule	AT	1988	1990	-	Oct	lastSun	2:00s	1:00	-
-Rule	AT	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	AT	1991	2005	-	Mar	lastSun	2:00s	0	-
-Rule	AT	2000	only	-	Aug	lastSun	2:00s	1:00	-
-Rule	AT	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	AT	2006	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	AT	2007	only	-	Mar	lastSun	2:00s	0	-
-Rule	AT	2008	max	-	Apr	Sun>=1	2:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Australia/Hobart	9:49:16	-	LMT	1895 Sep
-			10:00	-	EST	1916 Oct 1 2:00
-			10:00	1:00	EST	1917 Feb
-			10:00	Aus	EST	1967
-			10:00	AT	EST
-Zone Australia/Currie	9:35:28	-	LMT	1895 Sep
-			10:00	-	EST	1916 Oct 1 2:00
-			10:00	1:00	EST	1917 Feb
-			10:00	Aus	EST	1971 Jul
-			10:00	AT	EST
-
-# Victoria
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	AV	1971	1985	-	Oct	lastSun	2:00s	1:00	-
-Rule	AV	1972	only	-	Feb	lastSun	2:00s	0	-
-Rule	AV	1973	1985	-	Mar	Sun>=1	2:00s	0	-
-Rule	AV	1986	1990	-	Mar	Sun>=15	2:00s	0	-
-Rule	AV	1986	1987	-	Oct	Sun>=15	2:00s	1:00	-
-Rule	AV	1988	1999	-	Oct	lastSun	2:00s	1:00	-
-Rule	AV	1991	1994	-	Mar	Sun>=1	2:00s	0	-
-Rule	AV	1995	2005	-	Mar	lastSun	2:00s	0	-
-Rule	AV	2000	only	-	Aug	lastSun	2:00s	1:00	-
-Rule	AV	2001	2007	-	Oct	lastSun	2:00s	1:00	-
-Rule	AV	2006	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	AV	2007	only	-	Mar	lastSun	2:00s	0	-
-Rule	AV	2008	max	-	Apr	Sun>=1	2:00s	0	-
-Rule	AV	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Australia/Melbourne 9:39:52 -	LMT	1895 Feb
-			10:00	Aus	EST	1971
-			10:00	AV	EST
-
-# New South Wales
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	AN	1971	1985	-	Oct	lastSun	2:00s	1:00	-
-Rule	AN	1972	only	-	Feb	27	2:00s	0	-
-Rule	AN	1973	1981	-	Mar	Sun>=1	2:00s	0	-
-Rule	AN	1982	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	AN	1983	1985	-	Mar	Sun>=1	2:00s	0	-
-Rule	AN	1986	1989	-	Mar	Sun>=15	2:00s	0	-
-Rule	AN	1986	only	-	Oct	19	2:00s	1:00	-
-Rule	AN	1987	1999	-	Oct	lastSun	2:00s	1:00	-
-Rule	AN	1990	1995	-	Mar	Sun>=1	2:00s	0	-
-Rule	AN	1996	2005	-	Mar	lastSun	2:00s	0	-
-Rule	AN	2000	only	-	Aug	lastSun	2:00s	1:00	-
-Rule	AN	2001	2007	-	Oct	lastSun	2:00s	1:00	-
-Rule	AN	2006	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	AN	2007	only	-	Mar	lastSun	2:00s	0	-
-Rule	AN	2008	max	-	Apr	Sun>=1	2:00s	0	-
-Rule	AN	2008	max	-	Oct	Sun>=1	2:00s	1:00	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Australia/Sydney	10:04:52 -	LMT	1895 Feb
-			10:00	Aus	EST	1971
-			10:00	AN	EST
-Zone Australia/Broken_Hill 9:25:48 -	LMT	1895 Feb
-			10:00	-	EST	1896 Aug 23
-			9:00	-	CST	1899 May
-			9:30	Aus	CST	1971
-			9:30	AN	CST	2000
-			9:30	AS	CST
-
-# Lord Howe Island
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	LH	1981	1984	-	Oct	lastSun	2:00	1:00	-
-Rule	LH	1982	1985	-	Mar	Sun>=1	2:00	0	-
-Rule	LH	1985	only	-	Oct	lastSun	2:00	0:30	-
-Rule	LH	1986	1989	-	Mar	Sun>=15	2:00	0	-
-Rule	LH	1986	only	-	Oct	19	2:00	0:30	-
-Rule	LH	1987	1999	-	Oct	lastSun	2:00	0:30	-
-Rule	LH	1990	1995	-	Mar	Sun>=1	2:00	0	-
-Rule	LH	1996	2005	-	Mar	lastSun	2:00	0	-
-Rule	LH	2000	only	-	Aug	lastSun	2:00	0:30	-
-Rule	LH	2001	2007	-	Oct	lastSun	2:00	0:30	-
-Rule	LH	2006	only	-	Apr	Sun>=1	2:00	0	-
-Rule	LH	2007	only	-	Mar	lastSun	2:00	0	-
-Rule	LH	2008	max	-	Apr	Sun>=1	2:00	0	-
-Rule	LH	2008	max	-	Oct	Sun>=1	2:00	0:30	-
-Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
-			10:00	-	EST	1981 Mar
-			10:30	LH	LHST
-
-# Australian miscellany
-#
-# Ashmore Is, Cartier
-# no indigenous inhabitants; only seasonal caretakers
-# no times are set
-#
-# Coral Sea Is
-# no indigenous inhabitants; only meteorologists
-# no times are set
-#
-# Macquarie
-# permanent occupation (scientific station) since 1948;
-# sealing and penguin oil station operated 1888/1917
-# like Australia/Hobart
-
-# Christmas
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Indian/Christmas	7:02:52 -	LMT	1895 Feb
-			7:00	-	CXT	# Christmas Island Time
-
-# Cook Is
-# From Shanks & Pottenger:
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Cook	1978	only	-	Nov	12	0:00	0:30	HS
-Rule	Cook	1979	1991	-	Mar	Sun>=1	0:00	0	-
-Rule	Cook	1979	1990	-	Oct	lastSun	0:00	0:30	HS
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Rarotonga	-10:39:04 -	LMT	1901		# Avarua
-			-10:30	-	CKT	1978 Nov 12	# Cook Is Time
-			-10:00	Cook	CK%sT
-
-# Cocos
-# These islands were ruled by the Ross family from about 1830 to 1978.
-# We don't know when standard time was introduced; for now, we guess 1900.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Indian/Cocos	6:27:40	-	LMT	1900
-			6:30	-	CCT	# Cocos Islands Time
-
-# Fiji
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
-Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
-			12:00	Fiji	FJ%sT	# Fiji Time
-
-# French Polynesia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Gambier	 -8:59:48 -	LMT	1912 Oct	# Rikitea
-			 -9:00	-	GAMT	# Gambier Time
-Zone	Pacific/Marquesas -9:18:00 -	LMT	1912 Oct
-			 -9:30	-	MART	# Marquesas Time
-Zone	Pacific/Tahiti	 -9:58:16 -	LMT	1912 Oct	# Papeete
-			-10:00	-	TAHT	# Tahiti Time
-# Clipperton (near North America) is administered from French Polynesia;
-# it is uninhabited.
-
-# Guam
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Guam	-14:21:00 -	LMT	1844 Dec 31
-			 9:39:00 -	LMT	1901		# Agana
-			10:00	-	GST	2000 Dec 23	# Guam
-			10:00	-	ChST	# Chamorro Standard Time
-
-# Kiribati
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Tarawa	 11:32:04 -	LMT	1901		# Bairiki
-			 12:00	-	GILT		 # Gilbert Is Time
-Zone Pacific/Enderbury	-11:24:20 -	LMT	1901
-			-12:00	-	PHOT	1979 Oct # Phoenix Is Time
-			-11:00	-	PHOT	1995
-			 13:00	-	PHOT
-Zone Pacific/Kiritimati	-10:29:20 -	LMT	1901
-			-10:40	-	LINT	1979 Oct # Line Is Time
-			-10:00	-	LINT	1995
-			 14:00	-	LINT
-
-# N Mariana Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Saipan	-14:17:00 -	LMT	1844 Dec 31
-			 9:43:00 -	LMT	1901
-			 9:00	-	MPT	1969 Oct # N Mariana Is Time
-			10:00	-	MPT	2000 Dec 23
-			10:00	-	ChST	# Chamorro Standard Time
-
-# Marshall Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Majuro	11:24:48 -	LMT	1901
-			11:00	-	MHT	1969 Oct # Marshall Islands Time
-			12:00	-	MHT
-Zone Pacific/Kwajalein	11:09:20 -	LMT	1901
-			11:00	-	MHT	1969 Oct
-			-12:00	-	KWAT	1993 Aug 20	# Kwajalein Time
-			12:00	-	MHT
-
-# Micronesia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Truk	10:07:08 -	LMT	1901
-			10:00	-	TRUT			# Truk Time
-Zone Pacific/Ponape	10:32:52 -	LMT	1901		# Kolonia
-			11:00	-	PONT			# Ponape Time
-Zone Pacific/Kosrae	10:51:56 -	LMT	1901
-			11:00	-	KOST	1969 Oct	# Kosrae Time
-			12:00	-	KOST	1999
-			11:00	-	KOST
-
-# Nauru
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Nauru	11:07:40 -	LMT	1921 Jan 15	# Uaobe
-			11:30	-	NRT	1942 Mar 15	# Nauru Time
-			9:00	-	JST	1944 Aug 15
-			11:30	-	NRT	1979 May
-			12:00	-	NRT
-
-# New Caledonia
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	NC	1977	1978	-	Dec	Sun>=1	0:00	1:00	S
-Rule	NC	1978	1979	-	Feb	27	0:00	0	-
-Rule	NC	1996	only	-	Dec	 1	2:00s	1:00	S
-# Shanks & Pottenger say the following was at 2:00; go with IATA.
-Rule	NC	1997	only	-	Mar	 2	2:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Noumea	11:05:48 -	LMT	1912 Jan 13
-			11:00	NC	NC%sT
-
-
-###############################################################################
-
-# New Zealand
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	NZ	1927	only	-	Nov	 6	2:00	1:00	S
-Rule	NZ	1928	only	-	Mar	 4	2:00	0	M
-Rule	NZ	1928	1933	-	Oct	Sun>=8	2:00	0:30	S
-Rule	NZ	1929	1933	-	Mar	Sun>=15	2:00	0	M
-Rule	NZ	1934	1940	-	Apr	lastSun	2:00	0	M
-Rule	NZ	1934	1940	-	Sep	lastSun	2:00	0:30	S
-Rule	NZ	1946	only	-	Jan	 1	0:00	0	S
-# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
-# convenient notation for this so we must duplicate the Rule lines.
-Rule	NZ	1974	only	-	Nov	Sun>=1	2:00s	1:00	D
-Rule	Chatham	1974	only	-	Nov	Sun>=1	2:45s	1:00	D
-Rule	NZ	1975	only	-	Feb	lastSun	2:00s	0	S
-Rule	Chatham	1975	only	-	Feb	lastSun	2:45s	0	S
-Rule	NZ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
-Rule	Chatham	1975	1988	-	Oct	lastSun	2:45s	1:00	D
-Rule	NZ	1976	1989	-	Mar	Sun>=1	2:00s	0	S
-Rule	Chatham	1976	1989	-	Mar	Sun>=1	2:45s	0	S
-Rule	NZ	1989	only	-	Oct	Sun>=8	2:00s	1:00	D
-Rule	Chatham	1989	only	-	Oct	Sun>=8	2:45s	1:00	D
-Rule	NZ	1990	2006	-	Oct	Sun>=1	2:00s	1:00	D
-Rule	Chatham	1990	2006	-	Oct	Sun>=1	2:45s	1:00	D
-Rule	NZ	1990	2007	-	Mar	Sun>=15	2:00s	0	S
-Rule	Chatham	1990	2007	-	Mar	Sun>=15	2:45s	0	S
-Rule	NZ	2007	max	-	Sep	lastSun	2:00s	1:00	D
-Rule	Chatham	2007	max	-	Sep	lastSun	2:45s	1:00	D
-Rule	NZ	2008	max	-	Apr	Sun>=1	2:00s	0	S
-Rule	Chatham	2008	max	-	Apr	Sun>=1	2:45s	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
-			11:30	NZ	NZ%sT	1946 Jan  1
-			12:00	NZ	NZ%sT
-Zone Pacific/Chatham	12:13:48 -	LMT	1957 Jan  1
-			12:45	Chatham	CHA%sT
-
-
-# Auckland Is
-# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
-# and scientific personnel have wintered
-
-# Campbell I
-# minor whaling stations operated 1909/1914
-# scientific station operated 1941/1995;
-# previously whalers, sealers, pastoralists, and scientific personnel wintered
-# was probably like Pacific/Auckland
-
-###############################################################################
-
-
-# Niue
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Niue	-11:19:40 -	LMT	1901		# Alofi
-			-11:20	-	NUT	1951	# Niue Time
-			-11:30	-	NUT	1978 Oct 1
-			-11:00	-	NUT
-
-# Norfolk
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Norfolk	11:11:52 -	LMT	1901		# Kingston
-			11:12	-	NMT	1951	# Norfolk Mean Time
-			11:30	-	NFT		# Norfolk Time
-
-# Palau (Belau)
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Palau	8:57:56 -	LMT	1901		# Koror
-			9:00	-	PWT	# Palau Time
-
-# Papua New Guinea
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Port_Moresby 9:48:40 -	LMT	1880
-			9:48:32	-	PMMT	1895	# Port Moresby Mean Time
-			10:00	-	PGT		# Papua New Guinea Time
-
-# Pitcairn
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Pitcairn	-8:40:20 -	LMT	1901		# Adamstown
-			-8:30	-	PNT	1998 Apr 27 00:00
-			-8:00	-	PST	# Pitcairn Standard Time
-
-# American Samoa
-Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
-			-11:22:48 -	LMT	1911
-			-11:30	-	SAMT	1950		# Samoa Time
-			-11:00	-	NST	1967 Apr	# N=Nome
-			-11:00	-	BST	1983 Nov 30	# B=Bering
-			-11:00	-	SST			# S=Samoa
-
-# Samoa
-Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
-			-11:26:56 -	LMT	1911
-			-11:30	-	SAMT	1950		# Samoa Time
-			-11:00	-	WST			# Samoa Time
-
-# Solomon Is
-# excludes Bougainville, for which see Papua New Guinea
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct	# Honiara
-			11:00	-	SBT	# Solomon Is Time
-
-# Tokelau Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
-			-10:00	-	TKT	# Tokelau Time
-
-# Tonga
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Tonga	1999	only	-	Oct	 7	2:00s	1:00	S
-Rule	Tonga	2000	only	-	Mar	19	2:00s	0	-
-Rule	Tonga	2000	2001	-	Nov	Sun>=1	2:00	1:00	S
-Rule	Tonga	2001	2002	-	Jan	lastSun	2:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Tongatapu	12:19:20 -	LMT	1901
-			12:20	-	TOT	1941 # Tonga Time
-			13:00	-	TOT	1999
-			13:00	Tonga	TO%sT
-
-# Tuvalu
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Funafuti	11:56:52 -	LMT	1901
-			12:00	-	TVT	# Tuvalu Time
-
-
-# US minor outlying islands
-
-# Howland, Baker
-# Howland was mined for guano by American companies 1857-1878 and British
-# 1886-1891; Baker was similar but exact dates are not known.
-# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
-# uninhabited thereafter.
-# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
-# see page 206 of Elgen M. Long and Marie K. Long,
-# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
-# So most likely Howland and Baker observed Hawaii Time from 1935
-# until they were abandoned after the war.
-
-# Jarvis
-# Mined for guano by American companies 1857-1879 and British 1883?-1891?.
-# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;
-# uninhabited thereafter.
-# no information; was probably like Pacific/Kiritimati
-
-# Johnston
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Johnston	-10:00	-	HST
-
-# Kingman
-# uninhabited
-
-# Midway
-#
-# From Mark Brader (2005-01-23):
-# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
-# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
-# reproduced a Pan American Airways timeables from 1936, for their weekly
-# "Orient Express" flights between San Francisco and Manila, and connecting
-# flights to Chicago and the US East Coast.  As it uses some time zone
-# designations that I've never seen before:....
-# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I.   H.L.T. Ar. 5:30P Sun.
-#  "   3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A  "
-#
-Zone Pacific/Midway	-11:49:28 -	LMT	1901
-			-11:00	-	NST	1956 Jun  3
-			-11:00	1:00	NDT	1956 Sep  2
-			-11:00	-	NST	1967 Apr	# N=Nome
-			-11:00	-	BST	1983 Nov 30	# B=Bering
-			-11:00	-	SST			# S=Samoa
-
-# Palmyra
-# uninhabited since World War II; was probably like Pacific/Kiritimati
-
-# Wake
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Wake	11:06:28 -	LMT	1901
-			12:00	-	WAKT	# Wake Time
-
-
-# Vanuatu
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Vanuatu	1983	only	-	Sep	25	0:00	1:00	S
-Rule	Vanuatu	1984	1991	-	Mar	Sun>=23	0:00	0	-
-Rule	Vanuatu	1984	only	-	Oct	23	0:00	1:00	S
-Rule	Vanuatu	1985	1991	-	Sep	Sun>=23	0:00	1:00	S
-Rule	Vanuatu	1992	1993	-	Jan	Sun>=23	0:00	0	-
-Rule	Vanuatu	1992	only	-	Oct	Sun>=23	0:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Efate	11:13:16 -	LMT	1912 Jan 13		# Vila
-			11:00	Vanuatu	VU%sT	# Vanuatu Time
-
-# Wallis and Futuna
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Wallis	12:15:20 -	LMT	1901
-			12:00	-	WFT	# Wallis & Futuna Time
-
-###############################################################################
-
-# NOTES
-
-# This data is by no means authoritative; if you think you know better,
-# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
-
-# From Paul Eggert (2006-03-22):
-# A good source for time zone historical data outside the U.S. is
-# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
-# San Diego: ACS Publications, Inc. (2003).
-#
-# Gwillim Law writes that a good source
-# for recent time zone data is the International Air Transport
-# Association's Standard Schedules Information Manual (IATA SSIM),
-# published semiannually.  Law sent in several helpful summaries
-# of the IATA's data after 1990.
-#
-# Except where otherwise noted, Shanks & Pottenger is the source for
-# entries through 1990, and IATA SSIM is the source for entries afterwards.
-#
-# Another source occasionally used is Edward W. Whitman, World Time Differences,
-# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
-# I found in the UCLA library.
-#
-# A reliable and entertaining source about time zones is
-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
-#
-# I invented the abbreviations marked `*' in the following table;
-# the rest are from earlier versions of this file, or from other sources.
-# Corrections are welcome!
-#		std dst
-#		LMT	Local Mean Time
-#	  8:00	WST WST	Western Australia
-#	  8:45	CWST CWST Central Western Australia*
-#	  9:00	JST	Japan
-#	  9:30	CST CST	Central Australia
-#	 10:00	EST EST	Eastern Australia
-#	 10:00	ChST	Chamorro
-#	 10:30	LHST LHST Lord Howe*
-#	 11:30	NZMT NZST New Zealand through 1945
-#	 12:00	NZST NZDT New Zealand 1946-present
-#	 12:45	CHAST CHADT Chatham*
-#	-11:00	SST	Samoa
-#	-10:00	HST	Hawaii
-#	- 8:00	PST	Pitcairn*
-#
-# See the `northamerica' file for Hawaii.
-# See the `southamerica' file for Easter I and the Galapagos Is.
-
-###############################################################################
-
-# Australia
-
-# From Paul Eggert (2005-12-08):
-# 
-# Implementation Dates of Daylight Saving Time within Australia
-#  summarizes daylight saving issues in Australia.
-
-# From Arthur David Olson (2005-12-12):
-# 
-# Lawlink NSW:Daylight Saving in New South Wales
-#  covers New South Wales in particular.
-
-# From John Mackin (1991-03-06):
-# We in Australia have _never_ referred to DST as `daylight' time.
-# It is called `summer' time.  Now by a happy coincidence, `summer'
-# and `standard' happen to start with the same letter; hence, the
-# abbreviation does _not_ change...
-# The legislation does not actually define abbreviations, at least
-# in this State, but the abbreviation is just commonly taken to be the
-# initials of the phrase, and the legislation here uniformly uses
-# the phrase `summer time' and does not use the phrase `daylight
-# time'.
-# Announcers on the Commonwealth radio network, the ABC (for Australian
-# Broadcasting Commission), use the phrases `Eastern Standard Time'
-# or `Eastern Summer Time'.  (Note, though, that as I say in the
-# current australasia file, there is really no such thing.)  Announcers
-# on its overseas service, Radio Australia, use the same phrases
-# prefixed by the word `Australian' when referring to local times;
-# time announcements on that service, naturally enough, are made in UTC.
-
-# From Arthur David Olson (1992-03-08):
-# Given the above, what's chosen for year-round use is:
-#	CST	for any place operating at a GMTOFF of 9:30
-#	WST	for any place operating at a GMTOFF of 8:00
-#	EST	for any place operating at a GMTOFF of 10:00
-
-# From Chuck Soper (2006-06-01):
-# I recently found this Australian government web page on time zones:
-# 
-# And this government web page lists time zone names and abbreviations:
-# 
-
-# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
-# versus "AEST" etc.:
-#
-# I see the following points of dispute:
-#
-# * How important are unique time zone abbreviations?
-#
-#   Here I tend to agree with the point (most recently made by Chris
-#   Newman) that unique abbreviations should not be essential for proper
-#   operation of software.  We have other instances of ambiguity
-#   (e.g. "IST" denoting both "Israel Standard Time" and "Indian
-#   Standard Time"), and they are not likely to go away any time soon.
-#   In the old days, some software mistakenly relied on unique
-#   abbreviations, but this is becoming less true with time, and I don't
-#   think it's that important to cater to such software these days.
-#
-#   On the other hand, there is another motivation for unambiguous
-#   abbreviations: it cuts down on human confusion.  This is
-#   particularly true for Australia, where "EST" can mean one thing for
-#   time T and a different thing for time T plus 1 second.
-#
-# * Does the relevant legislation indicate which abbreviations should be used?
-#
-#   Here I tend to think that things are a mess, just as they are in
-#   many other countries.  We Americans are currently disagreeing about
-#   which abbreviation to use for the newly legislated Chamorro Standard
-#   Time, for example.
-#
-#   Personally, I would prefer to use common practice; I would like to
-#   refer to legislation only for examples of common practice, or as a
-#   tiebreaker.
-#
-# * Do Australians more often use "Eastern Daylight Time" or "Eastern
-#   Summer Time"?  Do they typically prefix the time zone names with
-#   the word "Australian"?
-#
-#   My own impression is that both "Daylight Time" and "Summer Time" are
-#   common and are widely understood, but that "Summer Time" is more
-#   popular; and that the leading "A" is also common but is omitted more
-#   often than not.  I just used AltaVista advanced search and got the
-#   following count of page hits:
-#
-#     1,103 "Eastern Summer Time" AND domain:au
-#       971 "Australian Eastern Summer Time" AND domain:au
-#       613 "Eastern Daylight Time" AND domain:au
-#       127 "Australian Eastern Daylight Time" AND domain:au
-#
-#   Here "Summer" seems quite a bit more popular than "Daylight",
-#   particularly when we know the time zone is Australian and not US,
-#   say.  The "Australian" prefix seems to be popular for Eastern Summer
-#   Time, but unpopular for Eastern Daylight Time.
-#
-#   For abbreviations, tools like AltaVista are less useful because of
-#   ambiguity.  Many hits are not really time zones, unfortunately, and
-#   many hits denote US time zones and not Australian ones.  But here
-#   are the hit counts anyway:
-#
-#     161,304 "EST" and domain:au
-#      25,156 "EDT" and domain:au
-#      18,263 "AEST" and domain:au
-#      10,416 "AEDT" and domain:au
-#
-#      14,538 "CST" and domain:au
-#       5,728 "CDT" and domain:au
-#         176 "ACST" and domain:au
-#          29 "ACDT" and domain:au
-#
-#       7,539 "WST" and domain:au
-#          68 "AWST" and domain:au
-#
-#   This data suggest that Australians tend to omit the "A" prefix in
-#   practice.  The situation for "ST" versus "DT" is less clear, given
-#   the ambiguities involved.
-#
-# * How do Australians feel about the abbreviations in the tz database?
-#
-#   If you just count Australians on this list, I count 2 in favor and 3
-#   against.  One of the "against" votes (David Keegel) counseled delay,
-#   saying that both AEST/AEDT and EST/EST are widely used and
-#   understood in Australia.
-
-# From Paul Eggert (1995-12-19):
-# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
-# Mark Prior writes that his newspaper
-# reports that NSW's fall 1995 change will occur at 2:00,
-# but Robert Elz says it's been 3:00 in Victoria since 1970
-# and perhaps the newspaper's `2:00' is referring to standard time.
-# For now we'll continue to assume 2:00s for changes since 1960.
-
-# From Eric Ulevik (1998-01-05):
-#
-# Here are some URLs to Australian time legislation. These URLs are stable,
-# and should probably be included in the data file. There are probably more
-# relevant entries in this database.
-#
-# NSW (including LHI and Broken Hill):
-# 
-# Standard Time Act 1987 (updated 1995-04-04)
-# 
-# ACT
-# 
-# Standard Time and Summer Time Act 1972
-# 
-# SA
-# 
-# Standard Time Act, 1898
-# 
-
-# From David Grosz (2005-06-13):
-# It was announced last week that Daylight Saving would be extended by
-# one week next year to allow for the 2006 Commonwealth Games.
-# Daylight Saving is now to end for next year only on the first Sunday
-# in April instead of the last Sunday in March.
-#
-# From Gwillim Law (2005-06-14):
-# I did some Googling and found that all of those states (and territory) plan
-# to extend DST together in 2006.
-# ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt
-# New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html
-# South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html
-# Tasmania: http://www.media.tas.gov.au/release.php?id=14772
-# Victoria: I wasn't able to find anything separate, but the other articles
-# allude to it.
-# But not Queensland
-# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
-
-# Northern Territory
-
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# # The NORTHERN TERRITORY..  [ Courtesy N.T. Dept of the Chief Minister ]
-# #					[ Nov 1990 ]
-# #	N.T. have never utilised any DST due to sub-tropical/tropical location.
-# ...
-# Zone        Australia/North         9:30    -       CST
-
-# From Bradley White (1991-03-04):
-# A recent excerpt from an Australian newspaper...
-# the Northern Territory do[es] not have daylight saving.
-
-# Western Australia
-
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# #  The state of WESTERN AUSTRALIA..  [ Courtesy W.A. dept Premier+Cabinet ]
-# #						[ Nov 1990 ]
-# #	W.A. suffers from a great deal of public and political opposition to
-# #	DST in principle. A bill is brought before parliament in most years, but
-# #	usually defeated either in the upper house, or in party caucus
-# #	before reaching parliament.
-# ...
-# Zone	Australia/West		8:00	AW	%sST
-# ...
-# Rule	AW	1974	only	-	Oct	lastSun	2:00	1:00	D
-# Rule	AW	1975	only	-	Mar	Sun>=1	3:00	0	W
-# Rule	AW	1983	only	-	Oct	lastSun	2:00	1:00	D
-# Rule	AW	1984	only	-	Mar	Sun>=1	3:00	0	W
-
-# From Bradley White (1991-03-04):
-# A recent excerpt from an Australian newspaper...
-# Western Australia...do[es] not have daylight saving.
-
-# From John D. Newman via Bradley White (1991-11-02):
-# Western Australia is still on "winter time". Some DH in Sydney
-# rang me at home a few days ago at 6.00am. (He had just arrived at
-# work at 9.00am.)
-# W.A. is switching to Summer Time on Nov 17th just to confuse
-# everybody again.
-
-# From Arthur David Olson (1992-03-08):
-# The 1992 ending date used in the rules is a best guess;
-# it matches what was used in the past.
-
-# 
-# The Australian Bureau of Meteorology FAQ
-#  (1999-09-27) writes that Giles Meteorological Station uses
-# South Australian time even though it's located in Western Australia.
-
-# Queensland
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# #   The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
-# #						[ Dec 1990 ]
-# ...
-# Zone	Australia/Queensland	10:00	AQ	%sST
-# ...
-# Rule	AQ	1971	only	-	Oct	lastSun	2:00	1:00	D
-# Rule	AQ	1972	only	-	Feb	lastSun	3:00	0	E
-# Rule	AQ	1989	max	-	Oct	lastSun	2:00	1:00	D
-# Rule	AQ	1990	max	-	Mar	Sun>=1	3:00	0	E
-
-# From Bradley White (1989-12-24):
-# "Australia/Queensland" now observes daylight time (i.e. from
-# October 1989).
-
-# From Bradley White (1991-03-04):
-# A recent excerpt from an Australian newspaper...
-# ...Queensland...[has] agreed to end daylight saving
-# at 3am tomorrow (March 3)...
-
-# From John Mackin (1991-03-06):
-# I can certainly confirm for my part that Daylight Saving in NSW did in fact
-# end on Sunday, 3 March.  I don't know at what hour, though.  (It surprised
-# me.)
-
-# From Bradley White (1992-03-08):
-# ...there was recently a referendum in Queensland which resulted
-# in the experimental daylight saving system being abandoned. So, ...
-# ...
-# Rule	QLD	1989	1991	-	Oct	lastSun	2:00	1:00	D
-# Rule	QLD	1990	1992	-	Mar	Sun>=1	3:00	0	S
-# ...
-
-# From Arthur David Olson (1992-03-08):
-# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
-
-# From Christopher Hunt (2006-11-21), after an advance warning
-# from Jesper Norgaard Welen (2006-11-01):
-# WA are trialing DST for three years.
-# 
-
-# From Rives McDow (2002-04-09):
-# The most interesting region I have found consists of three towns on the
-# southern coast....  South Australia observes daylight saving time; Western
-# Australia does not.  The two states are one and a half hours apart.  The
-# residents decided to forget about this nonsense of changing the clock so
-# much and set the local time 20 hours and 45 minutes from the
-# international date line, or right in the middle of the time of South
-# Australia and Western Australia....
-#
-# From Paul Eggert (2002-04-09):
-# This is confirmed by the section entitled
-# "What's the deal with time zones???" in
-# .
-#
-# From Alex Livingston (2006-12-07):
-# ... it was just on four years ago that I drove along the Eyre Highway,
-# which passes through eastern Western Australia close to the southern
-# coast of the continent.
-#
-# I paid particular attention to the time kept there. There can be no
-# dispute that UTC+08:45 was considered "the time" from the border
-# village just inside the border with South Australia to as far west
-# as just east of Caiguna. There can also be no dispute that Eucla is
-# the largest population centre in this zone....
-#
-# Now that Western Australia is observing daylight saving, the
-# question arose whether this part of the state would follow suit. I
-# just called the border village and confirmed that indeed they have,
-# meaning that they are now observing UTC+09:45.
-#
-# (2006-12-09):
-# I personally doubt that either experimentation with daylight saving
-# in WA or its introduction in SA had anything to do with the genesis
-# of this time zone.  My hunch is that it's been around since well
-# before 1975.  I remember seeing it noted on road maps decades ago.
-
-# From Paul Eggert (2006-12-15):
-# For lack of better info, assume the tradition dates back to the
-# introduction of standard time in 1895.
-
-
-# southeast Australia
-#
-# From Paul Eggert (2007-07-23):
-# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT
-# end DST the first Sunday in April and start DST the first Sunday in October.
-# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html
-
-
-# South Australia
-
-# From Bradley White (1991-03-04):
-# A recent excerpt from an Australian newspaper...
-# ...South Australia...[has] agreed to end daylight saving
-# at 3am tomorrow (March 3)...
-
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# #   The state of SOUTH AUSTRALIA....[ Courtesy of S.A. Dept of Labour ]
-# #						[ Nov 1990 ]
-# ...
-# Zone	Australia/South		9:30	AS	%sST
-# ...
-# Rule	 AS	1971	max	-	Oct	lastSun	2:00	1:00	D
-# Rule	 AS	1972	1985	-	Mar	Sun>=1	3:00	0	C
-# Rule	 AS	1986	1990	-	Mar	Sun>=15	3:00	0	C
-# Rule	 AS	1991	max	-	Mar	Sun>=1	3:00	0	C
-
-# From Bradley White (1992-03-11):
-# Recent correspondence with a friend in Adelaide
-# contained the following exchange:  "Due to the Adelaide Festival,
-# South Australia delays setting back our clocks for a few weeks."
-
-# From Robert Elz (1992-03-13):
-# I heard that apparently (or at least, it appears that)
-# South Aus will have an extra 3 weeks daylight saving every even
-# numbered year (from 1990).  That's when the Adelaide Festival
-# is on...
-
-# From Robert Elz (1992-03-16, 00:57:07 +1000):
-# DST didn't end in Adelaide today (yesterday)....
-# But whether it's "4th Sunday" or "2nd last Sunday" I have no idea whatever...
-# (it's just as likely to be "the Sunday we pick for this year"...).
-
-# From Bradley White (1994-04-11):
-# If Sun, 15 March, 1992 was at +1030 as kre asserts, but yet Sun, 20 March,
-# 1994 was at +0930 as John Connolly's customer seems to assert, then I can
-# only conclude that the actual rule is more complicated....
-
-# From John Warburton (1994-10-07):
-# The new Daylight Savings dates for South Australia ...
-# was gazetted in the Government Hansard on Sep 26 1994....
-# start on last Sunday in October and end in last sunday in March.
-
-# From Paul Eggert (2007-07-23):
-# See "southeast Australia" above for 2008 and later.
-
-# Tasmania
-
-# The rules for 1967 through 1991 were reported by George Shepherd
-# via Simon Woodhead via Robert Elz (1991-03-06):
-# #  The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
-# #					[ Nov 1990 ]
-
-# From Bill Hart via Guy Harris (1991-10-10):
-# Oh yes, the new daylight savings rules are uniquely tasmanian, we have
-# 6 weeks a year now when we are out of sync with the rest of Australia
-# (but nothing new about that).
-
-# From Alex Livingston (1999-10-04):
-# I heard on the ABC (Australian Broadcasting Corporation) radio news on the
-# (long) weekend that Tasmania, which usually goes its own way in this regard,
-# has decided to join with most of NSW, the ACT, and most of Victoria
-# (Australia) and start daylight saving on the last Sunday in August in 2000
-# instead of the first Sunday in October.
-
-# Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:
-# http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300
-
-# From Paul Eggert (2007-07-23):
-# See "southeast Australia" above for 2008 and later.
-
-# Victoria
-
-# The rules for 1971 through 1991 were reported by George Shepherd
-# via Simon Woodhead via Robert Elz (1991-03-06):
-# #   The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ]
-# #						[ Nov 1990 ]
-
-# From Scott Harrington (2001-08-29):
-# On KQED's "City Arts and Lectures" program last night I heard an
-# interesting story about daylight savings time.  Dr. John Heilbron was
-# discussing his book "The Sun in the Church: Cathedrals as Solar
-# Observatories"[1], and in particular the Shrine of Remembrance[2] located
-# in Melbourne, Australia.
-#
-# Apparently the shrine's main purpose is a beam of sunlight which
-# illuminates a special spot on the floor at the 11th hour of the 11th day
-# of the 11th month (Remembrance Day) every year in memory of Australia's
-# fallen WWI soldiers.  And if you go there on Nov. 11, at 11am local time,
-# you will indeed see the sunbeam illuminate the special spot at the
-# expected time.
-#
-# However, that is only because of some special mirror contraption that had
-# to be employed, since due to daylight savings time, the true solar time of
-# the remembrance moment occurs one hour later (or earlier?).  Perhaps
-# someone with more information on this jury-rig can tell us more.
-#
-# [1] http://www.hup.harvard.edu/catalog/HEISUN.html
-# [2] http://www.shrine.org.au
-
-# From Paul Eggert (2007-07-23):
-# See "southeast Australia" above for 2008 and later.
-
-# New South Wales
-
-# From Arthur David Olson:
-# New South Wales and subjurisdictions have their own ideas of a fun time.
-# Based on law library research by John Mackin,
-# who notes:
-#	In Australia, time is not legislated federally, but rather by the
-#	individual states.  Thus, while such terms as ``Eastern Standard Time''
-#	[I mean, of course, Australian EST, not any other kind] are in common
-#	use, _they have NO REAL MEANING_, as they are not defined in the
-#	legislation.  This is very important to understand.
-#	I have researched New South Wales time only...
-
-# From Eric Ulevik (1999-05-26):
-# DST will start in NSW on the last Sunday of August, rather than the usual
-# October in 2000.  [See: Matthew Moore,
-# 
-# Two months more daylight saving
-# 
-# Sydney Morning Herald (1999-05-26).]
-
-# From Paul Eggert (1999-09-27):
-# See the following official NSW source:
-# 
-# Daylight Saving in New South Wales.
-# 
-#
-# Narrabri Shire (NSW) council has announced it will ignore the extension of
-# daylight saving next year.  See:
-# 
-# Narrabri Council to ignore daylight saving
-#  (1999-07-22).  For now, we'll wait to see if this really happens.
-#
-# Victoria will following NSW.  See:
-# 
-# Vic to extend daylight saving
-#  (1999-07-28).
-#
-# However, South Australia rejected the DST request.  See:
-# 
-# South Australia rejects Olympics daylight savings request
-#  (1999-07-19).
-#
-# Queensland also will not observe DST for the Olympics.  See:
-# 
-# Qld says no to daylight savings for Olympics
-#  (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
-# ``Look you've got to remember in my family when this came up last time
-# I voted for it, my wife voted against it and she said to me it's all very
-# well for you, you don't have to worry about getting the children out of
-# bed, getting them to school, getting them to sleep at night.
-# I've been through all this argument domestically...my wife rules.''
-#
-# Broken Hill will stick with South Australian time in 2000.  See:
-# 
-# Broken Hill to be behind the times
-#  (1999-07-21).
-
-# IATA SSIM (1998-09) says that the spring 2000 change for Australian
-# Capital Territory, New South Wales except Lord Howe Island and Broken
-# Hill, and Victoria will be August 27, presumably due to the Sydney Olympics.
-
-# From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29:
-# The Queensland Premier Peter Beattie is encouraging northern NSW
-# towns to use Queensland time.
-
-# From Paul Eggert (2007-07-23):
-# See "southeast Australia" above for 2008 and later.
-
-# Yancowinna
-
-# From John Mackin (1989-01-04):
-# `Broken Hill' means the County of Yancowinna.
-
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# # YANCOWINNA..  [ Confirmation courtesy of Broken Hill Postmaster ]
-# #					[ Dec 1990 ]
-# ...
-# # Yancowinna uses Central Standard Time, despite [its] location on the
-# # New South Wales side of the S.A. border. Most business and social dealings
-# # are with CST zones, therefore CST is legislated by local government
-# # although the switch to Summer Time occurs in line with N.S.W. There have
-# # been years when this did not apply, but the historical data is not
-# # presently available.
-# Zone	Australia/Yancowinna	9:30	 AY	%sST
-# ...
-# Rule	 AY	1971	1985	-	Oct	lastSun	2:00	1:00	D
-# Rule	 AY	1972	only	-	Feb	lastSun	3:00	0	C
-# [followed by other Rules]
-
-# Lord Howe Island
-
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# LHI...		[ Courtesy of Pauline Van Winsen ]
-#					[ Dec 1990 ]
-# Lord Howe Island is located off the New South Wales coast, and is half an
-# hour ahead of NSW time.
-
-# From James Lonergan, Secretary, Lord Howe Island Board (2000-01-27):
-# Lord Howe Island summer time in 2000/2001 will commence on the same
-# date as the rest of NSW (i.e. 2000-08-27).  For your information the
-# Lord Howe Island Board (controlling authority for the Island) is
-# seeking the community's views on various options for summer time
-# arrangements on the Island, e.g. advance clocks by 1 full hour
-# instead of only 30 minutes.  Dependant on the wishes of residents
-# the Board may approach the NSW government to change the existing
-# arrangements.  The starting date for summer time on the Island will
-# however always coincide with the rest of NSW.
-
-# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25):
-# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards
-# clocks by 30 minutes when DST finishes. Since DST was most recently
-# introduced in NSW, the "changeover" time on the Island has been 02:00 as
-# shown on clocks on LHI. I guess this means that for 30 minutes at the start
-# of DST, LHI is actually 1 hour ahead of the rest of NSW.
-
-# From Paul Eggert (2006-03-22):
-# For Lord Howe dates we use Shanks & Pottenger through 1989, and
-# Lonergan thereafter.  For times we use Lonergan.
-
-# From Paul Eggert (2007-07-23):
-# See "southeast Australia" above for 2008 and later.
-
-###############################################################################
-
-# New Zealand
-
-# From Mark Davies (1990-10-03):
-# the 1989/90 year was a trial of an extended "daylight saving" period.
-# This trial was deemed successful and the extended period adopted for
-# subsequent years (with the addition of a further week at the start).
-# source -- phone call to Ministry of Internal Affairs Head Office.
-
-# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
-# # The Country of New Zealand   (Australia's east island -) Gee they hate that!
-# #				   or is Australia the west island of N.Z.
-# #	[ courtesy of Geoff Tribble.. Auckland N.Z. ]
-# #				[ Nov 1990 ]
-# ...
-# Rule	NZ      1974    1988	-	Oct	lastSun	2:00	1:00	D
-# Rule	NZ	1989	max	-	Oct	Sun>=1	2:00	1:00	D
-# Rule	NZ      1975    1989	-	Mar	Sun>=1	3:00	0	S
-# Rule	NZ	1990	max	-	Mar	lastSun	3:00	0	S
-# ...
-# Zone	NZ			12:00	NZ		NZ%sT	# New Zealand
-# Zone	NZ-CHAT			12:45	-		NZ-CHAT # Chatham Island
-
-# From Arthur David Olson (1992-03-08):
-# The chosen rules use the Davies October 8 values for the start of DST in 1989
-# rather than the October 1 value.
-
-# From Paul Eggert (1995-12-19);
-# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ.
-# Robert Uzgalis writes that the New Zealand Daylight
-# Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard
-# time on both the first Sunday in October and the third Sunday in March.
-# As with Australia, we'll assume the tradition is 2:00s, not 2:00.
-#
-# From Paul Eggert (2006-03-22):
-# The Department of Internal Affairs (DIA) maintains a brief history,
-# as does Carol Squires; see tz-link.htm for the full references.
-# Use these sources in preference to Shanks & Pottenger.
-#
-# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
-# transitions at 2:45 local standard time; this confirms that Chatham
-# is always exactly 45 minutes ahead of Auckland.
-
-# From Colin Sharples (2007-04-30):
-# DST will now start on the last Sunday in September, and end on the
-# first Sunday in April.  The changes take effect this year, meaning
-# that DST will begin on 2007-09-30 2008-04-06.
-# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
-
-###############################################################################
-
-
-# Fiji
-
-# Howse writes (p 153) that in 1879 the British governor of Fiji
-# enacted an ordinance standardizing the islands on Antipodean Time
-# instead of the American system (which was one day behind).
-
-# From Rives McDow (1998-10-08):
-# Fiji will introduce DST effective 0200 local time, 1998-11-01
-# until 0300 local time 1999-02-28.  Each year the DST period will
-# be from the first Sunday in November until the last Sunday in February.
-
-# From Paul Eggert (2000-01-08):
-# IATA SSIM (1999-09) says DST ends 0100 local time.  Go with McDow.
-
-# From the BBC World Service (1998-10-31 11:32 UTC):
-# The Fijiian government says the main reasons for the time change is to
-# improve productivity and reduce road accidents.  But correspondents say it
-# also hopes the move will boost Fiji's ability to compete with other pacific
-# islands in the effort to attract tourists to witness the dawning of the new
-# millenium.
-
-# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
-# reports that Fiji has discontinued DST.
-
-# Johnston
-
-# Johnston data is from usno1995.
-
-
-# Kiribati
-
-# From Paul Eggert (1996-01-22):
-# Today's _Wall Street Journal_ (page 1) reports that Kiribati
-# ``declared it the same day throught the country as of Jan. 1, 1995''
-# as part of the competition to be first into the 21st century.
-
-
-# Kwajalein
-
-# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:
-# I wonder what happened in Kwajalein, where there was NO Friday,
-# 1993-08-20.  Thursday night at midnight Kwajalein switched sides with
-# respect to the International Date Line, to rejoin its fellow islands,
-# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.
-
-
-# N Mariana Is, Guam
-
-# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
-# Philippines and the Ladrones from America,'' and implies that the Ladrones
-# (now called the Marianas) kept American date for quite some time.
-# For now, we assume the Ladrones switched at the same time as the Philippines;
-# see Asia/Manila.
-
-# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time,
-# under the name "Chamorro Standard Time".  There is no official abbreviation,
-# but Congressman Robert A. Underwood, author of the bill that became law,
-# wrote in a press release (2000-12-27) that he will seek the use of "ChST".
-
-
-# Micronesia
-
-# Alan Eugene Davis writes (1996-03-16),
-# ``I am certain, having lived there for the past decade, that "Truk"
-# (now properly known as Chuuk) ... is in the time zone GMT+10.''
-#
-# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
-# on 1978-10-01; ignore this for now.
-
-# From Paul Eggert (1999-10-29):
-# The Federated States of Micronesia Visitors Board writes in
-# 
-# The Federated States of Micronesia - Visitor Information
-#  (1999-01-26)
-# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
-# We don't know when Kosrae switched from UTC+12; assume January 1 for now.
-
-
-# Midway
-
-# From Charles T O'Connor, KMTH DJ (1956),
-# quoted in the KTMH section of the Radio Heritage Collection
-#  (2002-12-31):
-# For the past two months we've been on what is known as Daylight
-# Saving Time.  This time has put us on air at 5am in the morning,
-# your time down there in New Zealand.  Starting September 2, 1956
-# we'll again go back to Standard Time.  This'll mean that we'll go to
-# air at 6am your time.
-#
-# From Paul Eggert (2003-03-23):
-# We don't know the date of that quote, but we'll guess they
-# started DST on June 3.  Possibly DST was observed other years
-# in Midway, but we have no record of it.
-
-
-# Pitcairn
-
-# From Rives McDow (1999-11-08):
-# A Proclamation was signed by the Governor of Pitcairn on the 27th March 1998
-# with regard to Pitcairn Standard Time.  The Proclamation is as follows.
-#
-#	The local time for general purposes in the Islands shall be
-#	Co-ordinated Universal time minus 8 hours and shall be known
-#	as Pitcairn Standard Time.
-#
-# ... I have also seen Pitcairn listed as UTC minus 9 hours in several
-# references, and can only assume that this was an error in interpretation
-# somehow in light of this proclamation.
-
-# From Rives McDow (1999-11-09):
-# The Proclamation regarding Pitcairn time came into effect on 27 April 1998
-# ... at midnight.
-
-# From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave:
-# Betty Christian told me yesterday that their local time is the same as
-# Pacific Standard Time. They used to be 1/2 hour different from us here in
-# Sacramento but it was changed a couple of years ago.
-
-
-# Samoa
-
-# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
-# that in 1879 the King of Samoa decided to change
-# ``the date in his kingdom from the Antipodean to the American system,
-# ordaining -- by a masterpiece of diplomatic flattery -- that
-# the Fourth of July should be celebrated twice in that year.''
-
-
-# Tonga
-
-# From Paul Eggert (1996-01-22):
-# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
-# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
-# Since Kiribati has moved the Date Line it's not clear what Tonga will do.
-
-# Don Mundell writes in the 1997-02-20 Tonga Chronicle
-# 
-# How Tonga became `The Land where Time Begins'
-# :
-
-# Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
-# 12 hours and 20 minutes ahead of GMT.  When New Zealand adjusted its
-# standard time in 1940s, Tonga had the choice of subtracting from its
-# local time to come on the same standard time as New Zealand or of
-# advancing its time to maintain the differential of 13 degrees
-# (approximately 50 minutes ahead of New Zealand time).
-#
-# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
-# Tungi, preferred to ensure Tonga's title as the land where time
-# begins, the Legislative Assembly approved the latter change.
-#
-# But some of the older, more conservative members from the outer
-# islands objected. "If at midnight on Dec. 31, we move ahead 40
-# minutes, as your Royal Highness wishes, what becomes of the 40
-# minutes we have lost?"
-#
-# The Crown Prince, presented an unanswerable argument: "Remember that
-# on the World Day of Prayer, you would be the first people on Earth
-# to say your prayers in the morning."
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
-
-# From Eric Ulevik (1999-05-03):
-# Tonga's director of tourism, who is also secretary of the National Millenium
-# Committee, has a plan to get Tonga back in front.
-# He has proposed a one-off move to tropical daylight saving for Tonga from
-# October to March, which has won approval in principle from the Tongan
-# Government.
-
-# From Steffen Thorsen (1999-09-09):
-# * Tonga will introduce DST in November
-#
-# I was given this link by John Letts:
-# 
-# http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
-# 
-#
-# I have not been able to find exact dates for the transition in November
-# yet. By reading this article it seems like Fiji will be 14 hours ahead
-# of UTC as well, but as far as I know Fiji will only be 13 hours ahead
-# (12 + 1 hour DST).
-
-# From Arthur David Olson (1999-09-20):
-# According to  (2005-08-31):
-# Before 1920, all ships kept local apparent time on the high seas by setting
-# their clocks at night or at the morning sight so that, given the ship's
-# speed and direction, it would be 12 o'clock when the Sun crossed the ship's
-# meridian (12 o'clock = local apparent noon).  During 1917, at the
-# Anglo-French Conference on Time-keeping at Sea, it was recommended that all
-# ships, both military and civilian, should adopt hourly standard time zones
-# on the high seas.  Whenever a ship was within the territorial waters of any
-# nation it would use that nation's standard time.  The captain was permitted
-# to change his ship's clocks at a time of his choice following his ship's
-# entry into another zone time--he often chose midnight.  These zones were
-# adopted by all major fleets between 1920 and 1925 but not by many
-# independent merchant ships until World War II.
-
-# From Paul Eggert, using references suggested by Oscar van Vlijmen
-# (2005-03-20):
-#
-# The American Practical Navigator (2002)
-# 
-# talks only about the 180-degree meridian with respect to ships in
-# international waters; it ignores the international date line.
diff --git a/bin/glibc-2.7/timezone/backward b/bin/glibc-2.7/timezone/backward
deleted file mode 100644
index 7c922604..00000000
--- a/bin/glibc-2.7/timezone/backward
+++ /dev/null
@@ -1,109 +0,0 @@
-# @(#)backward	8.3
-
-# This file provides links between current names for time zones
-# and their old names.  Many names changed in late 1993.
-
-Link	Africa/Asmara		Africa/Asmera
-Link	Africa/Bamako		Africa/Timbuktu
-Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
-Link	America/Adak		America/Atka
-Link	America/Argentina/Buenos_Aires	America/Buenos_Aires
-Link	America/Argentina/Catamarca	America/Catamarca
-Link	America/Atikokan	America/Coral_Harbour
-Link	America/Argentina/Cordoba	America/Cordoba
-Link	America/Tijuana		America/Ensenada
-Link	America/Indiana/Indianapolis	America/Fort_Wayne
-Link	America/Indiana/Indianapolis	America/Indianapolis
-Link	America/Argentina/Jujuy	America/Jujuy
-Link	America/Indiana/Knox	America/Knox_IN
-Link	America/Kentucky/Louisville	America/Louisville
-Link	America/Argentina/Mendoza	America/Mendoza
-Link	America/Rio_Branco	America/Porto_Acre
-Link	America/Argentina/Cordoba	America/Rosario
-Link	America/St_Thomas	America/Virgin
-Link	Asia/Ashgabat		Asia/Ashkhabad
-Link	Asia/Chongqing		Asia/Chungking
-Link	Asia/Dhaka		Asia/Dacca
-Link	Asia/Macau		Asia/Macao
-Link	Asia/Jerusalem		Asia/Tel_Aviv
-Link	Asia/Thimphu		Asia/Thimbu
-Link	Asia/Makassar		Asia/Ujung_Pandang
-Link	Asia/Ulaanbaatar	Asia/Ulan_Bator
-Link	Atlantic/Faroe		Atlantic/Faeroe
-Link	Australia/Sydney	Australia/ACT
-Link	Australia/Sydney	Australia/Canberra
-Link	Australia/Lord_Howe	Australia/LHI
-Link	Australia/Sydney	Australia/NSW
-Link	Australia/Darwin	Australia/North
-Link	Australia/Brisbane	Australia/Queensland
-Link	Australia/Adelaide	Australia/South
-Link	Australia/Hobart	Australia/Tasmania
-Link	Australia/Melbourne	Australia/Victoria
-Link	Australia/Perth		Australia/West
-Link	Australia/Broken_Hill	Australia/Yancowinna
-Link	America/Rio_Branco	Brazil/Acre
-Link	America/Noronha		Brazil/DeNoronha
-Link	America/Sao_Paulo	Brazil/East
-Link	America/Manaus		Brazil/West
-Link	America/Halifax		Canada/Atlantic
-Link	America/Winnipeg	Canada/Central
-Link	America/Regina		Canada/East-Saskatchewan
-Link	America/Toronto		Canada/Eastern
-Link	America/Edmonton	Canada/Mountain
-Link	America/St_Johns	Canada/Newfoundland
-Link	America/Vancouver	Canada/Pacific
-Link	America/Regina		Canada/Saskatchewan
-Link	America/Whitehorse	Canada/Yukon
-Link	America/Santiago	Chile/Continental
-Link	Pacific/Easter		Chile/EasterIsland
-Link	America/Havana		Cuba
-Link	Africa/Cairo		Egypt
-Link	Europe/Dublin		Eire
-Link	Europe/London		Europe/Belfast
-Link	Europe/Chisinau		Europe/Tiraspol
-Link	Europe/London		GB
-Link	Europe/London		GB-Eire
-Link	Etc/GMT			GMT+0
-Link	Etc/GMT			GMT-0
-Link	Etc/GMT			GMT0
-Link	Etc/GMT			Greenwich
-Link	Asia/Hong_Kong		Hongkong
-Link	Atlantic/Reykjavik	Iceland
-Link	Asia/Tehran		Iran
-Link	Asia/Jerusalem		Israel
-Link	America/Jamaica		Jamaica
-Link	Asia/Tokyo		Japan
-Link	Pacific/Kwajalein	Kwajalein
-Link	Africa/Tripoli		Libya
-Link	America/Tijuana		Mexico/BajaNorte
-Link	America/Mazatlan	Mexico/BajaSur
-Link	America/Mexico_City	Mexico/General
-Link	Pacific/Auckland	NZ
-Link	Pacific/Chatham		NZ-CHAT
-Link	America/Denver		Navajo
-Link	Asia/Shanghai		PRC
-Link	Pacific/Pago_Pago	Pacific/Samoa
-Link	Pacific/Truk		Pacific/Yap
-Link	Europe/Warsaw		Poland
-Link	Europe/Lisbon		Portugal
-Link	Asia/Taipei		ROC
-Link	Asia/Seoul		ROK
-Link	Asia/Singapore		Singapore
-Link	Europe/Istanbul		Turkey
-Link	Etc/UCT			UCT
-Link	America/Anchorage	US/Alaska
-Link	America/Adak		US/Aleutian
-Link	America/Phoenix		US/Arizona
-Link	America/Chicago		US/Central
-Link	America/Indiana/Indianapolis	US/East-Indiana
-Link	America/New_York	US/Eastern
-Link	Pacific/Honolulu	US/Hawaii
-Link	America/Indiana/Knox	US/Indiana-Starke
-Link	America/Detroit		US/Michigan
-Link	America/Denver		US/Mountain
-Link	America/Los_Angeles	US/Pacific
-Link	Pacific/Pago_Pago	US/Samoa
-Link	Etc/UTC			UTC
-Link	Etc/UTC			Universal
-Link	Europe/Moscow		W-SU
-Link	Etc/UTC			Zulu
diff --git a/bin/glibc-2.7/timezone/checktab.awk b/bin/glibc-2.7/timezone/checktab.awk
deleted file mode 100644
index 80ad7d57..00000000
--- a/bin/glibc-2.7/timezone/checktab.awk
+++ /dev/null
@@ -1,159 +0,0 @@
-# Check tz tables for consistency.
-
-# @(#)checktab.awk	8.1
-
-# Contributed by Paul Eggert.
-
-BEGIN {
-	FS = "\t"
-
-	if (!iso_table) iso_table = "iso3166.tab"
-	if (!zone_table) zone_table = "zone.tab"
-	if (!want_warnings) want_warnings = -1
-
-	while (getline >"/dev/stderr"
-			status = 1
-		}
-		cc = $1
-		name = $2
-		if (cc !~ /^[A-Z][A-Z]$/) {
-			printf "%s:%d: invalid country code `%s'\n", \
-				iso_table, iso_NR, cc >>"/dev/stderr"
-			status = 1
-		}
-		if (cc <= cc0) {
-			if (cc == cc0) {
-				s = "duplicate";
-			} else {
-				s = "out of order";
-			}
-
-			printf "%s:%d: country code `%s' is %s\n", \
-				iso_table, iso_NR, cc, s \
-				>>"/dev/stderr"
-			status = 1
-		}
-		cc0 = cc
-		if (name2cc[name]) {
-			printf "%s:%d: `%s' and `%s' have the sname name\n", \
-				iso_table, iso_NR, name2cc[name], cc \
-				>>"/dev/stderr"
-			status = 1
-		}
-		name2cc[name] = cc
-		cc2name[cc] = name
-		cc2NR[cc] = iso_NR
-	}
-
-	zone_table = "zone.tab"
-	cc0 = ""
-
-	while (getline >"/dev/stderr"
-			status = 1
-		}
-		cc = $1
-		coordinates = $2
-		tz = $3
-		comments = $4
-		if (cc < cc0) {
-			printf "%s:%d: country code `%s' is out of order\n", \
-				zone_table, zone_NR, cc >>"/dev/stderr"
-			status = 1
-		}
-		cc0 = cc
-		if (tz2cc[tz]) {
-			printf "%s:%d: %s: duplicate TZ column\n", \
-				zone_table, zone_NR, tz >>"/dev/stderr"
-			status = 1
-		}
-		tz2cc[tz] = cc
-		tz2comments[tz] = comments
-		tz2NR[tz] = zone_NR
-		if (cc2name[cc]) {
-			cc_used[cc]++
-		} else {
-			printf "%s:%d: %s: unknown country code\n", \
-				zone_table, zone_NR, cc >>"/dev/stderr"
-			status = 1
-		}
-		if (coordinates !~ /^[-+][0-9][0-9][0-5][0-9][-+][01][0-9][0-9][0-5][0-9]$/ \
-		    && coordinates !~ /^[-+][0-9][0-9][0-5][0-9][0-5][0-9][-+][01][0-9][0-9][0-5][0-9][0-5][0-9]$/) {
-			printf "%s:%d: %s: invalid coordinates\n", \
-				zone_table, zone_NR, coordinates >>"/dev/stderr"
-			status = 1
-		}
-	}
-
-	for (tz in tz2cc) {
-		if (cc_used[tz2cc[tz]] == 1) {
-			if (tz2comments[tz]) {
-				printf "%s:%d: unnecessary comment `%s'\n", \
-					zone_table, tz2NR[tz], tz2comments[tz] \
-					>>"/dev/stderr"
-				status = 1
-			}
-		} else {
-			if (!tz2comments[tz]) {
-				printf "%s:%d: missing comment\n", \
-					zone_table, tz2NR[tz] >>"/dev/stderr"
-				status = 1
-			}
-		}
-	}
-
-	FS = " "
-}
-
-{
-	tz = ""
-	if ($1 == "Zone") tz = $2
-	if ($1 == "Link") {
-		# Ignore Link commands if source and destination basenames
-		# are identical, e.g. Europe/Istanbul versus Asia/Istanbul.
-		src = $2
-		dst = $3
-		while ((i = index(src, "/"))) src = substr(src, i+1)
-		while ((i = index(dst, "/"))) dst = substr(dst, i+1)
-		if (src != dst) tz = $3
-	}
-	if (tz && tz ~ /\//) {
-		if (!tz2cc[tz]) {
-			printf "%s: no data for `%s'\n", zone_table, tz \
-				>>"/dev/stderr"
-			status = 1
-		}
-		zoneSeen[tz] = 1
-	}
-}
-
-END {
-	for (tz in tz2cc) {
-		if (!zoneSeen[tz]) {
-			printf "%s:%d: no Zone table for `%s'\n", \
-				zone_table, tz2NR[tz], tz >>"/dev/stderr"
-			status = 1
-		}
-	}
-
-	if (0 < want_warnings) {
-		for (cc in cc2name) {
-			if (!cc_used[cc]) {
-				printf "%s:%d: warning: " \
-					"no Zone entries for %s (%s)\n", \
-					iso_table, cc2NR[cc], cc, cc2name[cc]
-			}
-		}
-	}
-
-	exit status
-}
diff --git a/bin/glibc-2.7/timezone/etcetera b/bin/glibc-2.7/timezone/etcetera
deleted file mode 100644
index cddbe8a2..00000000
--- a/bin/glibc-2.7/timezone/etcetera
+++ /dev/null
@@ -1,80 +0,0 @@
-# @(#)etcetera	8.1
-
-# These entries are mostly present for historical reasons, so that
-# people in areas not otherwise covered by the tz files could "zic -l"
-# to a time zone that was right for their area.  These days, the
-# tz files cover almost all the inhabited world, and the only practical
-# need now for the entries that are not on UTC are for ships at sea
-# that cannot use POSIX TZ settings.
-
-Zone	Etc/GMT		0	-	GMT
-Zone	Etc/UTC		0	-	UTC
-Zone	Etc/UCT		0	-	UCT
-
-# The following link uses older naming conventions,
-# but it belongs here, not in the file `backward',
-# as functions like gmtime load the "GMT" file to handle leap seconds properly.
-# We want this to work even on installations that omit the other older names.
-Link	Etc/GMT				GMT
-
-Link	Etc/UTC				Etc/Universal
-Link	Etc/UTC				Etc/Zulu
-
-Link	Etc/GMT				Etc/Greenwich
-Link	Etc/GMT				Etc/GMT-0
-Link	Etc/GMT				Etc/GMT+0
-Link	Etc/GMT				Etc/GMT0
-
-# We use POSIX-style signs in the Zone names and the output abbreviations,
-# even though this is the opposite of what many people expect.
-# POSIX has positive signs west of Greenwich, but many people expect
-# positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses
-# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
-# (i.e. west of Greenwich) even though many people would expect it to
-# mean 4 hours ahead of UTC (i.e. east of Greenwich).
-#
-# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation
-# (which is not yet supported by the tz code) allows for
-# TZ='+4'; if you want time zone abbreviations conforming to
-# ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected
-# offset is kept within the angle bracket (and is used for display)
-# while the POSIX sign is kept outside the angle bracket (and is used
-# for calculation).
-#
-# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
-# GMT but uses the completely misleading abbreviation "GMT".
-
-# Earlier incarnations of this package were not POSIX-compliant,
-# and had lines such as
-#		Zone	GMT-12		-12	-	GMT-1200
-# We did not want things to change quietly if someone accustomed to the old
-# way does a
-#		zic -l GMT-12
-# so we moved the names into the Etc subdirectory.
-
-Zone	Etc/GMT-14	14	-	GMT-14	# 14 hours ahead of GMT
-Zone	Etc/GMT-13	13	-	GMT-13
-Zone	Etc/GMT-12	12	-	GMT-12
-Zone	Etc/GMT-11	11	-	GMT-11
-Zone	Etc/GMT-10	10	-	GMT-10
-Zone	Etc/GMT-9	9	-	GMT-9
-Zone	Etc/GMT-8	8	-	GMT-8
-Zone	Etc/GMT-7	7	-	GMT-7
-Zone	Etc/GMT-6	6	-	GMT-6
-Zone	Etc/GMT-5	5	-	GMT-5
-Zone	Etc/GMT-4	4	-	GMT-4
-Zone	Etc/GMT-3	3	-	GMT-3
-Zone	Etc/GMT-2	2	-	GMT-2
-Zone	Etc/GMT-1	1	-	GMT-1
-Zone	Etc/GMT+1	-1	-	GMT+1
-Zone	Etc/GMT+2	-2	-	GMT+2
-Zone	Etc/GMT+3	-3	-	GMT+3
-Zone	Etc/GMT+4	-4	-	GMT+4
-Zone	Etc/GMT+5	-5	-	GMT+5
-Zone	Etc/GMT+6	-6	-	GMT+6
-Zone	Etc/GMT+7	-7	-	GMT+7
-Zone	Etc/GMT+8	-8	-	GMT+8
-Zone	Etc/GMT+9	-9	-	GMT+9
-Zone	Etc/GMT+10	-10	-	GMT+10
-Zone	Etc/GMT+11	-11	-	GMT+11
-Zone	Etc/GMT+12	-12	-	GMT+12
diff --git a/bin/glibc-2.7/timezone/europe b/bin/glibc-2.7/timezone/europe
deleted file mode 100644
index 60290ddc..00000000
--- a/bin/glibc-2.7/timezone/europe
+++ /dev/null
@@ -1,2526 +0,0 @@
-# @(#)europe	8.11
-# 
-
-# This data is by no means authoritative; if you think you know better,
-# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
-
-# From Paul Eggert (2006-03-22):
-# A good source for time zone historical data outside the U.S. is
-# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
-# San Diego: ACS Publications, Inc. (2003).
-#
-# Gwillim Law writes that a good source
-# for recent time zone data is the International Air Transport
-# Association's Standard Schedules Information Manual (IATA SSIM),
-# published semiannually.  Law sent in several helpful summaries
-# of the IATA's data after 1990.
-#
-# Except where otherwise noted, Shanks & Pottenger is the source for
-# entries through 1991, and IATA SSIM is the source for entries afterwards.
-#
-# Other sources occasionally used include:
-#
-#	Edward W. Whitman, World Time Differences,
-#	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
-#	which I found in the UCLA library.
-#
-#	
-#	William Willett, The Waste of Daylight, 19th edition
-#	 (1914-03)
-#
-#	Brazil's Departamento Servico da Hora (DSH),
-#	
-#	History of Summer Time
-#	 (1998-09-21, in Portuguese)
-
-#
-# I invented the abbreviations marked `*' in the following table;
-# the rest are from earlier versions of this file, or from other sources.
-# Corrections are welcome!
-#                   std dst  2dst
-#                   LMT           Local Mean Time
-#       -4:00       AST ADT       Atlantic
-#       -3:00       WGT WGST      Western Greenland*
-#       -1:00       EGT EGST      Eastern Greenland*
-#        0:00       GMT BST  BDST Greenwich, British Summer
-#        0:00       GMT IST       Greenwich, Irish Summer
-#        0:00       WET WEST WEMT Western Europe
-#        0:19:32.13 AMT NST       Amsterdam, Netherlands Summer (1835-1937)*
-#        0:20       NET NEST      Netherlands (1937-1940)*
-#        1:00       CET CEST CEMT Central Europe
-#        1:00:14    SET           Swedish (1879-1899)*
-#        2:00       EET EEST      Eastern Europe
-#        3:00       MSK MSD       Moscow
-#
-# A reliable and entertaining source about time zones, especially in Britain,
-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
-
-# From Peter Ilieve (1994-12-04),
-# The original six [EU members]: Belgium, France, (West) Germany, Italy,
-# Luxembourg, the Netherlands.
-# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
-# Plus, from 1 Jan 81: Greece.
-# Plus, from 1 Jan 86: Spain, Portugal.
-# Plus, from 1 Jan 95: Austria, Finland, Sweden. (Norway negotiated terms for
-# entry but in a referendum on 28 Nov 94 the people voted No by 52.2% to 47.8%
-# on a turnout of 88.6%. This was almost the same result as Norway's previous
-# referendum in 1972, they are the only country to have said No twice.
-# Referendums in the other three countries voted Yes.)
-# ...
-# Estonia ... uses EU dates but not at 01:00 GMT, they use midnight GMT.
-# I don't think they know yet what they will do from 1996 onwards.
-# ...
-# There shouldn't be any [current members who are not using EU rules].
-# A Directive has the force of law, member states are obliged to enact
-# national law to implement it. The only contentious issue was the
-# different end date for the UK and Ireland, and this was always allowed
-# in the Directive.
-
-
-###############################################################################
-
-# Britain (United Kingdom) and Ireland (Eire)
-
-# From Peter Ilieve (1994-07-06):
-#
-# On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about
-# historical vistas along the Thames in west London. There was a photo
-# and a sketch map showing some of the sightlines involved. One paragraph
-# of the text said:
-#
-# `An old stone obelisk marking a forgotten terrestrial meridian stands
-# beside the river at Kew. In the 18th century, before time and longitude
-# was standardised by the Royal Observatory in Greenwich, scholars observed
-# this stone and the movement of stars from Kew Observatory nearby. They
-# made their calculations and set the time for the Horse Guards and Parliament,
-# but now the stone is obscured by scrubwood and can only be seen by walking
-# along the towpath within a few yards of it.'
-#
-# I have a one inch to one mile map of London and my estimate of the stone's
-# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
-# be within about +-2". The Ordnance Survey grid reference is TQ172761.
-#
-# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
-
-# From Paul Eggert (1993-11-18):
-#
-# Howse writes that Britain was the first country to use standard time.
-# The railways cared most about the inconsistencies of local mean time,
-# and it was they who forced a uniform time on the country.
-# The original idea was credited to Dr. William Hyde Wollaston (1766-1828)
-# and was popularized by Abraham Follett Osler (1808-1903).
-# The first railway to adopt London time was the Great Western Railway
-# in November 1840; other railways followed suit, and by 1847 most
-# (though not all) railways used London time.  On 1847-09-22 the
-# Railway Clearing House, an industry standards body, recommended that GMT be
-# adopted at all stations as soon as the General Post Office permitted it.
-# The transition occurred on 12-01 for the L&NW, the Caledonian,
-# and presumably other railways; the January 1848 Bradshaw's lists many
-# railways as using GMT.  By 1855 the vast majority of public
-# clocks in Britain were set to GMT (though some, like the great clock
-# on Tom Tower at Christ Church, Oxford, were fitted with two minute hands,
-# one for local time and one for GMT).  The last major holdout was the legal
-# system, which stubbornly stuck to local time for many years, leading
-# to oddities like polls opening at 08:13 and closing at 16:13.
-# The legal system finally switched to GMT when the Statutes (Definition
-# of Time) Act took effect; it received the Royal Assent on 1880-08-02.
-#
-# In the tables below, we condense this complicated story into a single
-# transition date for London, namely 1847-12-01.  We don't know as much
-# about Dublin, so we use 1880-08-02, the legal transition time.
-
-# From Paul Eggert (2003-09-27):
-# Summer Time was first seriously proposed by William Willett (1857-1915),
-# a London builder and member of the Royal Astronomical Society
-# who circulated a pamphlet ``The Waste of Daylight'' (1907)
-# that proposed advancing clocks 20 minutes on each of four Sundays in April,
-# and retarding them by the same amount on four Sundays in September.
-# A bill was drafted in 1909 and introduced in Parliament several times,
-# but it met with ridicule and opposition, especially from farming interests.
-# Later editions of the pamphlet proposed one-hour summer time, and
-# it was eventually adopted as a wartime measure in 1916.
-# See: Summer Time Arrives Early, The Times (2000-05-18).
-# A monument to Willett was unveiled on 1927-05-21, in an open space in
-# a 45-acre wood near Chislehurst, Kent that was purchased by popular
-# subscription and open to the public.  On the south face of the monolith,
-# designed by G. W. Miller, is the the William Willett Memorial Sundial,
-# which is permanently set to Summer Time.
-
-# From Winston Churchill (1934-04-28):
-# It is one of the paradoxes of history that we should owe the boon of
-# summer time, which gives every year to the people of this country
-# between 160 and 170 hours more daylight leisure, to a war which
-# plunged Europe into darkness for four years, and shook the
-# foundations of civilization throughout the world.
-#	-- 
-#	"A Silent Toast to William Willett", Pictorial Weekly
-#	
-
-# From Paul Eggert (1996-09-03):
-# The OED Supplement says that the English originally said ``Daylight Saving''
-# when they were debating the adoption of DST in 1908; but by 1916 this
-# term appears only in quotes taken from DST's opponents, whereas the
-# proponents (who eventually won the argument) are quoted as using ``Summer''.
-
-# From Arthur David Olson (1989-01-19):
-#
-# A source at the British Information Office in New York avers that it's
-# known as "British" Summer Time in all parts of the United Kingdom.
-
-# Date: 4 Jan 89 08:57:25 GMT (Wed)
-# From: Jonathan Leffler
-# [British Summer Time] is fixed annually by Act of Parliament.
-# If you can predict what Parliament will do, you should be in
-# politics making a fortune, not computing.
-
-# From Chris Carrier (1996-06-14):
-# I remember reading in various wartime issues of the London Times the
-# acronym BDST for British Double Summer Time.  Look for the published
-# time of sunrise and sunset in The Times, when BDST was in effect, and
-# if you find a zone reference it will say, "All times B.D.S.T."
-
-# From Joseph S. Myers (1999-09-02):
-# ... some military cables (WO 219/4100 - this is a copy from the
-# main SHAEF archives held in the US National Archives, SHAEF/5252/8/516)
-# agree that the usage is BDST (this appears in a message dated 17 Feb 1945).
-
-# From Joseph S. Myers (2000-10-03):
-# On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir
-# Alexander Maxwell of the Home Office asking whether there was any
-# official designation; the reply of the 21st was that there wasn't
-# but he couldn't think of anything better than the "Double British
-# Summer Time" that the BBC had been using informally.
-# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
-# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
-
-# From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
-# [N]o official designation has as far as I know been adopted for the time
-# which is to be introduced in May....
-# I cannot think of anything better than "Double British Summer Time"
-# which could not be said to run counter to any official description.
-
-# From Paul Eggert (2000-10-02):
-# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common
-# and follows the more usual convention of putting the location name first,
-# so we use `BDST'.
-
-# Peter Ilieve (1998-04-19) described at length
-# the history of summer time legislation in the United Kingdom.
-# Since 1998 Joseph S. Myers has been updating
-# and extending this list, which can be found in
-# 
-# History of legal time in Britain
-# 
-
-# From Joseph S. Myers (1998-01-06):
-#
-# The legal time in the UK outside of summer time is definitely GMT, not UTC;
-# see Lord Tanlaw's speech
-# 
-# (Lords Hansard 11 June 1997 columns 964 to 976)
-# .
-
-# From Paul Eggert (2006-03-22):
-#
-# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948.
-#
-# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger
-# are incorrect:
-#     * Wales did not switch from GMT to daylight saving time until
-#	1921 Apr 3, when they began to conform with the rest of Great Britain.
-# Actually, Wales was identical after 1880.
-#     * Eire had two transitions on 1916 Oct 1.
-# It actually just had one transition.
-#     * Northern Ireland used single daylight saving time throughout WW II.
-# Actually, it conformed to Britain.
-#     * GB-Eire changed standard time to 1 hour ahead of GMT on 1968-02-18.
-# Actually, that date saw the usual switch to summer time.
-# Standard time was not changed until 1968-10-27 (the clocks didn't change).
-#
-# Here is another incorrect claim by Shanks & Pottenger:
-#     * Jersey, Guernsey, and the Isle of Man did not switch from GMT
-#	to daylight saving time until 1921 Apr 3, when they began to
-#	conform with Great Britain.
-# S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise.
-#
-# The following claim by Shanks & Pottenger is possible though doubtful;
-# we'll ignore it for now.
-#     * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
-#
-#
-# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
-# Shanks & Pottenger.
-# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
-# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
-# to London.  For example:
-#
-#   "Timeball on the ballast office is down.  Dunsink time."
-#   -- James Joyce, Ulysses
-
-# From Joseph S. Myers (2005-01-26):
-# Irish laws are available online at www.irishstatutebook.ie.  These include
-# various relating to legal time, for example:
-#
-# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
-#
-# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
-# ZZSI27Y1951.html ZZSI73Y1952.html
-#
-# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
-# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
-# ZZA23Y1968.html ZZA17Y1971.html
-#
-# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
-# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
-# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
-#
-# [These are all relative to the root, e.g., the first is
-# .]
-#
-# (These are those I found, but there could be more.  In any case these
-# should allow various updates to the comments in the europe file to cover
-# the laws applicable in Ireland.)
-#
-# (Note that the time in the Republic of Ireland since 1968 has been defined
-# in terms of standard time being GMT+1 with a period of winter time when it
-# is GMT, rather than standard time being GMT with a period of summer time
-# being GMT+1.)
-
-# From Paul Eggert (1999-03-28):
-# Clive Feather (, 1997-03-31)
-# reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time
-# (CT), equivalent to French civil time.
-# Julian Hill (, 1998-09-30) reports that
-# trains between Dollands Moor (the freight facility next door)
-# and Frethun run in CT.
-# My admittedly uninformed guess is that the terminal has two authorities,
-# the French concession operators and the British civil authorities,
-# and that the time depends on who you're talking to.
-# If, say, the British police were called to the station for some reason,
-# I would expect the official police report to use GMT/BST and not CET/CEST.
-# This is a borderline case, but for now let's stick to GMT/BST.
-
-# From an anonymous contributor (1996-06-02):
-# The law governing time in Ireland is under Statutory Instrument SI 395/94,
-# which gives force to European Union 7th Council Directive # 94/21/EC.
-# Under this directive, the Minister for Justice in Ireland makes appropriate
-# regulations. I spoke this morning with the Secretary of the Department of
-# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
-# "Irish Summer Time", abbreviated to "IST".
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# Summer Time Act, 1916
-Rule	GB-Eire	1916	only	-	May	21	2:00s	1:00	BST
-Rule	GB-Eire	1916	only	-	Oct	 1	2:00s	0	GMT
-# S.R.&O. 1917, No. 358
-Rule	GB-Eire	1917	only	-	Apr	 8	2:00s	1:00	BST
-Rule	GB-Eire	1917	only	-	Sep	17	2:00s	0	GMT
-# S.R.&O. 1918, No. 274
-Rule	GB-Eire	1918	only	-	Mar	24	2:00s	1:00	BST
-Rule	GB-Eire	1918	only	-	Sep	30	2:00s	0	GMT
-# S.R.&O. 1919, No. 297
-Rule	GB-Eire	1919	only	-	Mar	30	2:00s	1:00	BST
-Rule	GB-Eire	1919	only	-	Sep	29	2:00s	0	GMT
-# S.R.&O. 1920, No. 458
-Rule	GB-Eire	1920	only	-	Mar	28	2:00s	1:00	BST
-# S.R.&O. 1920, No. 1844
-Rule	GB-Eire	1920	only	-	Oct	25	2:00s	0	GMT
-# S.R.&O. 1921, No. 363
-Rule	GB-Eire	1921	only	-	Apr	 3	2:00s	1:00	BST
-Rule	GB-Eire	1921	only	-	Oct	 3	2:00s	0	GMT
-# S.R.&O. 1922, No. 264
-Rule	GB-Eire	1922	only	-	Mar	26	2:00s	1:00	BST
-Rule	GB-Eire	1922	only	-	Oct	 8	2:00s	0	GMT
-# The Summer Time Act, 1922
-Rule	GB-Eire	1923	only	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1923	1924	-	Sep	Sun>=16	2:00s	0	GMT
-Rule	GB-Eire	1924	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1925	1926	-	Apr	Sun>=16	2:00s	1:00	BST
-# The Summer Time Act, 1925
-Rule	GB-Eire	1925	1938	-	Oct	Sun>=2	2:00s	0	GMT
-Rule	GB-Eire	1927	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1928	1929	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1930	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1931	1932	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1933	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1934	only	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1935	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1936	1937	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1938	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1939	only	-	Apr	Sun>=16	2:00s	1:00	BST
-# S.R.&O. 1939, No. 1379
-Rule	GB-Eire	1939	only	-	Nov	Sun>=16	2:00s	0	GMT
-# S.R.&O. 1940, No. 172 and No. 1883
-Rule	GB-Eire	1940	only	-	Feb	Sun>=23	2:00s	1:00	BST
-# S.R.&O. 1941, No. 476
-Rule	GB-Eire	1941	only	-	May	Sun>=2	1:00s	2:00	BDST
-Rule	GB-Eire	1941	1943	-	Aug	Sun>=9	1:00s	1:00	BST
-# S.R.&O. 1942, No. 506
-Rule	GB-Eire	1942	1944	-	Apr	Sun>=2	1:00s	2:00	BDST
-# S.R.&O. 1944, No. 932
-Rule	GB-Eire	1944	only	-	Sep	Sun>=16	1:00s	1:00	BST
-# S.R.&O. 1945, No. 312
-Rule	GB-Eire	1945	only	-	Apr	Mon>=2	1:00s	2:00	BDST
-Rule	GB-Eire	1945	only	-	Jul	Sun>=9	1:00s	1:00	BST
-# S.R.&O. 1945, No. 1208
-Rule	GB-Eire	1945	1946	-	Oct	Sun>=2	2:00s	0	GMT
-Rule	GB-Eire	1946	only	-	Apr	Sun>=9	2:00s	1:00	BST
-# The Summer Time Act, 1947
-Rule	GB-Eire	1947	only	-	Mar	16	2:00s	1:00	BST
-Rule	GB-Eire	1947	only	-	Apr	13	1:00s	2:00	BDST
-Rule	GB-Eire	1947	only	-	Aug	10	1:00s	1:00	BST
-Rule	GB-Eire	1947	only	-	Nov	 2	2:00s	0	GMT
-# Summer Time Order, 1948 (S.I. 1948/495)
-Rule	GB-Eire	1948	only	-	Mar	14	2:00s	1:00	BST
-Rule	GB-Eire	1948	only	-	Oct	31	2:00s	0	GMT
-# Summer Time Order, 1949 (S.I. 1949/373)
-Rule	GB-Eire	1949	only	-	Apr	 3	2:00s	1:00	BST
-Rule	GB-Eire	1949	only	-	Oct	30	2:00s	0	GMT
-# Summer Time Order, 1950 (S.I. 1950/518)
-# Summer Time Order, 1951 (S.I. 1951/430)
-# Summer Time Order, 1952 (S.I. 1952/451)
-Rule	GB-Eire	1950	1952	-	Apr	Sun>=14	2:00s	1:00	BST
-Rule	GB-Eire	1950	1952	-	Oct	Sun>=21	2:00s	0	GMT
-# revert to the rules of the Summer Time Act, 1925
-Rule	GB-Eire	1953	only	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1953	1960	-	Oct	Sun>=2	2:00s	0	GMT
-Rule	GB-Eire	1954	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1955	1956	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1957	only	-	Apr	Sun>=9	2:00s	1:00	BST
-Rule	GB-Eire	1958	1959	-	Apr	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1960	only	-	Apr	Sun>=9	2:00s	1:00	BST
-# Summer Time Order, 1961 (S.I. 1961/71)
-# Summer Time (1962) Order, 1961 (S.I. 1961/2465)
-# Summer Time Order, 1963 (S.I. 1963/81)
-Rule	GB-Eire	1961	1963	-	Mar	lastSun	2:00s	1:00	BST
-Rule	GB-Eire	1961	1968	-	Oct	Sun>=23	2:00s	0	GMT
-# Summer Time (1964) Order, 1963 (S.I. 1963/2101)
-# Summer Time Order, 1964 (S.I. 1964/1201)
-# Summer Time Order, 1967 (S.I. 1967/1148)
-Rule	GB-Eire	1964	1967	-	Mar	Sun>=19	2:00s	1:00	BST
-# Summer Time Order, 1968 (S.I. 1968/117)
-Rule	GB-Eire	1968	only	-	Feb	18	2:00s	1:00	BST
-# The British Standard Time Act, 1968
-#	(no summer time)
-# The Summer Time Act, 1972
-Rule	GB-Eire	1972	1980	-	Mar	Sun>=16	2:00s	1:00	BST
-Rule	GB-Eire	1972	1980	-	Oct	Sun>=23	2:00s	0	GMT
-# Summer Time Order, 1980 (S.I. 1980/1089)
-# Summer Time Order, 1982 (S.I. 1982/1673)
-# Summer Time Order, 1986 (S.I. 1986/223)
-# Summer Time Order, 1988 (S.I. 1988/931)
-Rule	GB-Eire	1981	1995	-	Mar	lastSun	1:00u	1:00	BST
-Rule	GB-Eire 1981	1989	-	Oct	Sun>=23	1:00u	0	GMT
-# Summer Time Order, 1989 (S.I. 1989/985)
-# Summer Time Order, 1992 (S.I. 1992/1729)
-# Summer Time Order 1994 (S.I. 1994/2798)
-Rule	GB-Eire 1990	1995	-	Oct	Sun>=22	1:00u	0	GMT
-# Summer Time Order 1997 (S.I. 1997/2982)
-# See EU for rules starting in 1996.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1 0:00s
-			 0:00	GB-Eire	%s	1968 Oct 27
-			 1:00	-	BST	1971 Oct 31 2:00u
-			 0:00	GB-Eire	%s	1996
-			 0:00	EU	GMT/BST
-Link	Europe/London	Europe/Jersey
-Link	Europe/London	Europe/Guernsey
-Link	Europe/London	Europe/Isle_of_Man
-Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
-			-0:25:21 -	DMT	1916 May 21 2:00
-			-0:25:21 1:00	IST	1916 Oct  1 2:00s
-			 0:00	GB-Eire	%s	1921 Dec  6 # independence
-			 0:00	GB-Eire	GMT/IST	1940 Feb 25 2:00
-			 0:00	1:00	IST	1946 Oct  6 2:00
-			 0:00	-	GMT	1947 Mar 16 2:00
-			 0:00	1:00	IST	1947 Nov  2 2:00
-			 0:00	-	GMT	1948 Apr 18 2:00
-			 0:00	GB-Eire	GMT/IST	1968 Oct 27
-			 1:00	-	IST	1971 Oct 31 2:00u
-			 0:00	GB-Eire	GMT/IST	1996
-			 0:00	EU	GMT/IST
-
-###############################################################################
-
-# Europe
-
-# EU rules are for the European Union, previously known as the EC, EEC,
-# Common Market, etc.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	EU	1977	1980	-	Apr	Sun>=1	 1:00u	1:00	S
-Rule	EU	1977	only	-	Sep	lastSun	 1:00u	0	-
-Rule	EU	1978	only	-	Oct	 1	 1:00u	0	-
-Rule	EU	1979	1995	-	Sep	lastSun	 1:00u	0	-
-Rule	EU	1981	max	-	Mar	lastSun	 1:00u	1:00	S
-Rule	EU	1996	max	-	Oct	lastSun	 1:00u	0	-
-# The most recent directive covers the years starting in 2002.  See:
-# 
-
-# W-Eur differs from EU only in that W-Eur uses standard time.
-Rule	W-Eur	1977	1980	-	Apr	Sun>=1	 1:00s	1:00	S
-Rule	W-Eur	1977	only	-	Sep	lastSun	 1:00s	0	-
-Rule	W-Eur	1978	only	-	Oct	 1	 1:00s	0	-
-Rule	W-Eur	1979	1995	-	Sep	lastSun	 1:00s	0	-
-Rule	W-Eur	1981	max	-	Mar	lastSun	 1:00s	1:00	S
-Rule	W-Eur	1996	max	-	Oct	lastSun	 1:00s	0	-
-
-# Older C-Eur rules are for convenience in the tables.
-# From 1977 on, C-Eur differs from EU only in that C-Eur uses standard time.
-Rule	C-Eur	1916	only	-	Apr	30	23:00	1:00	S
-Rule	C-Eur	1916	only	-	Oct	 1	 1:00	0	-
-Rule	C-Eur	1917	1918	-	Apr	Mon>=15	 2:00s	1:00	S
-Rule	C-Eur	1917	1918	-	Sep	Mon>=15	 2:00s	0	-
-Rule	C-Eur	1940	only	-	Apr	 1	 2:00s	1:00	S
-Rule	C-Eur	1942	only	-	Nov	 2	 2:00s	0	-
-Rule	C-Eur	1943	only	-	Mar	29	 2:00s	1:00	S
-Rule	C-Eur	1943	only	-	Oct	 4	 2:00s	0	-
-Rule	C-Eur	1944	only	-	Apr	 3	 2:00s	1:00	S
-# Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
-Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
-Rule	C-Eur	1977	1980	-	Apr	Sun>=1	 2:00s	1:00	S
-Rule	C-Eur	1977	only	-	Sep	lastSun	 2:00s	0	-
-Rule	C-Eur	1978	only	-	Oct	 1	 2:00s	0	-
-Rule	C-Eur	1979	1995	-	Sep	lastSun	 2:00s	0	-
-Rule	C-Eur	1981	max	-	Mar	lastSun	 2:00s	1:00	S
-Rule	C-Eur	1996	max	-	Oct	lastSun	 2:00s	0	-
-
-# E-Eur differs from EU only in that E-Eur switches at midnight local time.
-Rule	E-Eur	1977	1980	-	Apr	Sun>=1	 0:00	1:00	S
-Rule	E-Eur	1977	only	-	Sep	lastSun	 0:00	0	-
-Rule	E-Eur	1978	only	-	Oct	 1	 0:00	0	-
-Rule	E-Eur	1979	1995	-	Sep	lastSun	 0:00	0	-
-Rule	E-Eur	1981	max	-	Mar	lastSun	 0:00	1:00	S
-Rule	E-Eur	1996	max	-	Oct	lastSun	 0:00	0	-
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Russia	1917	only	-	Jul	 1	23:00	1:00	MST	# Moscow Summer Time
-Rule	Russia	1917	only	-	Dec	28	 0:00	0	MMT	# Moscow Mean Time
-Rule	Russia	1918	only	-	May	31	22:00	2:00	MDST	# Moscow Double Summer Time
-Rule	Russia	1918	only	-	Sep	16	 1:00	1:00	MST
-Rule	Russia	1919	only	-	May	31	23:00	2:00	MDST
-Rule	Russia	1919	only	-	Jul	 1	 2:00	1:00	S
-Rule	Russia	1919	only	-	Aug	16	 0:00	0	-
-Rule	Russia	1921	only	-	Feb	14	23:00	1:00	S
-Rule	Russia	1921	only	-	Mar	20	23:00	2:00	M # Midsummer
-Rule	Russia	1921	only	-	Sep	 1	 0:00	1:00	S
-Rule	Russia	1921	only	-	Oct	 1	 0:00	0	-
-# Act No.925 of the Council of Ministers of the USSR (1980-10-24):
-Rule	Russia	1981	1984	-	Apr	 1	 0:00	1:00	S
-Rule	Russia	1981	1983	-	Oct	 1	 0:00	0	-
-# Act No.967 of the Council of Ministers of the USSR (1984-09-13), repeated in
-# Act No.227 of the Council of Ministers of the USSR (1989-03-14):
-Rule	Russia	1984	1991	-	Sep	lastSun	 2:00s	0	-
-Rule	Russia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
-#
-Rule	Russia	1992	only	-	Mar	lastSat	 23:00	1:00	S
-Rule	Russia	1992	only	-	Sep	lastSat	 23:00	0	-
-Rule	Russia	1993	max	-	Mar	lastSun	 2:00s	1:00	S
-Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
-Rule	Russia	1996	max	-	Oct	lastSun	 2:00s	0	-
-
-# These are for backward compatibility with older versions.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	WET		0:00	EU	WE%sT
-Zone	CET		1:00	C-Eur	CE%sT
-Zone	MET		1:00	C-Eur	ME%sT
-Zone	EET		2:00	EU	EE%sT
-
-# Previous editions of this database used abbreviations like MET DST
-# for Central European Summer Time, but this didn't agree with common usage.
-
-# From Markus Kuhn (1996-07-12):
-# The official German names ... are
-#
-#	Mitteleuropaeische Zeit (MEZ)         = UTC+01:00
-#	Mitteleuropaeische Sommerzeit (MESZ)  = UTC+02:00
-#
-# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
-# 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
-# I wrote ... to the German Federal Physical-Technical Institution
-#
-#	Physikalisch-Technische Bundesanstalt (PTB)
-#	Laboratorium 4.41 "Zeiteinheit"
-#	Postfach 3345
-#	D-38023 Braunschweig
-#	phone: +49 531 592-0
-#
-# ... I received today an answer letter from Dr. Peter Hetzel, head of the PTB
-# department for time and frequency transmission.  He explained that the
-# PTB translates MEZ and MESZ into English as
-#
-#	Central European Time (CET)         = UTC+01:00
-#	Central European Summer Time (CEST) = UTC+02:00
-
-
-# Albania
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Albania	1940	only	-	Jun	16	0:00	1:00	S
-Rule	Albania	1942	only	-	Nov	 2	3:00	0	-
-Rule	Albania	1943	only	-	Mar	29	2:00	1:00	S
-Rule	Albania	1943	only	-	Apr	10	3:00	0	-
-Rule	Albania	1974	only	-	May	 4	0:00	1:00	S
-Rule	Albania	1974	only	-	Oct	 2	0:00	0	-
-Rule	Albania	1975	only	-	May	 1	0:00	1:00	S
-Rule	Albania	1975	only	-	Oct	 2	0:00	0	-
-Rule	Albania	1976	only	-	May	 2	0:00	1:00	S
-Rule	Albania	1976	only	-	Oct	 3	0:00	0	-
-Rule	Albania	1977	only	-	May	 8	0:00	1:00	S
-Rule	Albania	1977	only	-	Oct	 2	0:00	0	-
-Rule	Albania	1978	only	-	May	 6	0:00	1:00	S
-Rule	Albania	1978	only	-	Oct	 1	0:00	0	-
-Rule	Albania	1979	only	-	May	 5	0:00	1:00	S
-Rule	Albania	1979	only	-	Sep	30	0:00	0	-
-Rule	Albania	1980	only	-	May	 3	0:00	1:00	S
-Rule	Albania	1980	only	-	Oct	 4	0:00	0	-
-Rule	Albania	1981	only	-	Apr	26	0:00	1:00	S
-Rule	Albania	1981	only	-	Sep	27	0:00	0	-
-Rule	Albania	1982	only	-	May	 2	0:00	1:00	S
-Rule	Albania	1982	only	-	Oct	 3	0:00	0	-
-Rule	Albania	1983	only	-	Apr	18	0:00	1:00	S
-Rule	Albania	1983	only	-	Oct	 1	0:00	0	-
-Rule	Albania	1984	only	-	Apr	 1	0:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Tirane	1:19:20 -	LMT	1914
-			1:00	-	CET	1940 Jun 16
-			1:00	Albania	CE%sT	1984 Jul
-			1:00	EU	CE%sT
-
-# Andorra
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Andorra	0:06:04 -	LMT	1901
-			0:00	-	WET	1946 Sep 30
-			1:00	-	CET	1985 Mar 31 2:00
-			1:00	EU	CE%sT
-
-# Austria
-
-# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
-# 1945-11-18, but the Austrian Federal Office of Metrology and
-# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
-# date of 1945-04-12 with no time.  For the 1980-04-06 transition
-# Shanks & Pottenger give 02:00, the BEV 00:00.  Go with the BEV,
-# and guess 02:00 for 1945-04-12.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Austria	1920	only	-	Apr	 5	2:00s	1:00	S
-Rule	Austria	1920	only	-	Sep	13	2:00s	0	-
-Rule	Austria	1946	only	-	Apr	14	2:00s	1:00	S
-Rule	Austria	1946	1948	-	Oct	Sun>=1	2:00s	0	-
-Rule	Austria	1947	only	-	Apr	 6	2:00s	1:00	S
-Rule	Austria	1948	only	-	Apr	18	2:00s	1:00	S
-Rule	Austria	1980	only	-	Apr	 6	0:00	1:00	S
-Rule	Austria	1980	only	-	Sep	28	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Vienna	1:05:20 -	LMT	1893 Apr
-			1:00	C-Eur	CE%sT	1920
-			1:00	Austria	CE%sT	1940 Apr  1 2:00s
-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
-			1:00	1:00	CEST	1945 Apr 12 2:00s
-			1:00	-	CET	1946
-			1:00	Austria	CE%sT	1981
-			1:00	EU	CE%sT
-
-# Belarus
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Minsk	1:50:16 -	LMT	1880
-			1:50	-	MMT	1924 May 2 # Minsk Mean Time
-			2:00	-	EET	1930 Jun 21
-			3:00	-	MSK	1941 Jun 28
-			1:00	C-Eur	CE%sT	1944 Jul  3
-			3:00	Russia	MSK/MSD	1990
-			3:00	-	MSK	1991 Mar 31 2:00s
-			2:00	1:00	EEST	1991 Sep 29 2:00s
-			2:00	-	EET	1992 Mar 29 0:00s
-			2:00	1:00	EEST	1992 Sep 27 0:00s
-			2:00	Russia	EE%sT
-
-# Belgium
-#
-# From Paul Eggert (1997-07-02):
-# Entries from 1918 through 1991 are taken from:
-#	Annuaire de L'Observatoire Royal de Belgique,
-#	Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
-#	(Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
-#	pp 8-9.
-# LMT before 1892 was 0:17:30, according to the official journal of Belgium:
-#	Moniteur Belge, Samedi 30 Avril 1892, N.121.
-# Thanks to Pascal Delmoitie for these references.
-# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
-# Assume Brussels switched to WET in 1918 when the armistice took effect.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Belgium	1918	only	-	Mar	 9	 0:00s	1:00	S
-Rule	Belgium	1918	1919	-	Oct	Sat>=1	23:00s	0	-
-Rule	Belgium	1919	only	-	Mar	 1	23:00s	1:00	S
-Rule	Belgium	1920	only	-	Feb	14	23:00s	1:00	S
-Rule	Belgium	1920	only	-	Oct	23	23:00s	0	-
-Rule	Belgium	1921	only	-	Mar	14	23:00s	1:00	S
-Rule	Belgium	1921	only	-	Oct	25	23:00s	0	-
-Rule	Belgium	1922	only	-	Mar	25	23:00s	1:00	S
-Rule	Belgium	1922	1927	-	Oct	Sat>=1	23:00s	0	-
-Rule	Belgium	1923	only	-	Apr	21	23:00s	1:00	S
-Rule	Belgium	1924	only	-	Mar	29	23:00s	1:00	S
-Rule	Belgium	1925	only	-	Apr	 4	23:00s	1:00	S
-# DSH writes that a royal decree of 1926-02-22 specified the Sun following 3rd
-# Sat in Apr (except if it's Easter, in which case it's one Sunday earlier),
-# to Sun following 1st Sat in Oct, and that a royal decree of 1928-09-15
-# changed the transition times to 02:00 GMT.
-Rule	Belgium	1926	only	-	Apr	17	23:00s	1:00	S
-Rule	Belgium	1927	only	-	Apr	 9	23:00s	1:00	S
-Rule	Belgium	1928	only	-	Apr	14	23:00s	1:00	S
-Rule	Belgium	1928	1938	-	Oct	Sun>=2	 2:00s	0	-
-Rule	Belgium	1929	only	-	Apr	21	 2:00s	1:00	S
-Rule	Belgium	1930	only	-	Apr	13	 2:00s	1:00	S
-Rule	Belgium	1931	only	-	Apr	19	 2:00s	1:00	S
-Rule	Belgium	1932	only	-	Apr	 3	 2:00s	1:00	S
-Rule	Belgium	1933	only	-	Mar	26	 2:00s	1:00	S
-Rule	Belgium	1934	only	-	Apr	 8	 2:00s	1:00	S
-Rule	Belgium	1935	only	-	Mar	31	 2:00s	1:00	S
-Rule	Belgium	1936	only	-	Apr	19	 2:00s	1:00	S
-Rule	Belgium	1937	only	-	Apr	 4	 2:00s	1:00	S
-Rule	Belgium	1938	only	-	Mar	27	 2:00s	1:00	S
-Rule	Belgium	1939	only	-	Apr	16	 2:00s	1:00	S
-Rule	Belgium	1939	only	-	Nov	19	 2:00s	0	-
-Rule	Belgium	1940	only	-	Feb	25	 2:00s	1:00	S
-Rule	Belgium	1944	only	-	Sep	17	 2:00s	0	-
-Rule	Belgium	1945	only	-	Apr	 2	 2:00s	1:00	S
-Rule	Belgium	1945	only	-	Sep	16	 2:00s	0	-
-Rule	Belgium	1946	only	-	May	19	 2:00s	1:00	S
-Rule	Belgium	1946	only	-	Oct	 7	 2:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Brussels	0:17:30 -	LMT	1880
-			0:17:30	-	BMT	1892 May  1 12:00 # Brussels MT
-			0:00	-	WET	1914 Nov  8
-			1:00	-	CET	1916 May  1  0:00
-			1:00	C-Eur	CE%sT	1918 Nov 11 11:00u
-			0:00	Belgium	WE%sT	1940 May 20  2:00s
-			1:00	C-Eur	CE%sT	1944 Sep  3
-			1:00	Belgium	CE%sT	1977
-			1:00	EU	CE%sT
-
-# Bosnia and Herzegovina
-# see Serbia
-
-# Bulgaria
-#
-# From Plamen Simenov via Steffen Thorsen (1999-09-09):
-# A document of Government of Bulgaria (No.94/1997) says:
-# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
-# EETDST --> EET is in 04:00 Local time in last Sunday of October
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Bulg	1979	only	-	Mar	31	23:00	1:00	S
-Rule	Bulg	1979	only	-	Oct	 1	 1:00	0	-
-Rule	Bulg	1980	1982	-	Apr	Sat>=1	23:00	1:00	S
-Rule	Bulg	1980	only	-	Sep	29	 1:00	0	-
-Rule	Bulg	1981	only	-	Sep	27	 2:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Sofia	1:33:16 -	LMT	1880
-			1:56:56	-	IMT	1894 Nov 30 # Istanbul MT?
-			2:00	-	EET	1942 Nov  2  3:00
-			1:00	C-Eur	CE%sT	1945 Apr  2  3:00
-			2:00	-	EET	1979 Mar 31 23:00
-			2:00	Bulg	EE%sT	1982 Sep 26  2:00
-			2:00	C-Eur	EE%sT	1991
-			2:00	E-Eur	EE%sT	1997
-			2:00	EU	EE%sT
-
-# Croatia
-# see Serbia
-
-# Cyprus
-# Please see the `asia' file for Asia/Nicosia.
-
-# Czech Republic
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Czech	1945	only	-	Apr	 8	2:00s	1:00	S
-Rule	Czech	1945	only	-	Nov	18	2:00s	0	-
-Rule	Czech	1946	only	-	May	 6	2:00s	1:00	S
-Rule	Czech	1946	1949	-	Oct	Sun>=1	2:00s	0	-
-Rule	Czech	1947	only	-	Apr	20	2:00s	1:00	S
-Rule	Czech	1948	only	-	Apr	18	2:00s	1:00	S
-Rule	Czech	1949	only	-	Apr	 9	2:00s	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Prague	0:57:44 -	LMT	1850
-			0:57:44	-	PMT	1891 Oct     # Prague Mean Time
-			1:00	C-Eur	CE%sT	1944 Sep 17 2:00s
-			1:00	Czech	CE%sT	1979
-			1:00	EU	CE%sT
-
-# Denmark, Faroe Islands, and Greenland
-
-# From Jesper Norgaard Welen (2005-04-26):
-# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
-# [introducing standard time] was in effect from 1894-01-01....
-# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
-# confirms this, and states that the law was put forth 1893-03-29.
-#
-# The EU treaty with effect from 1973:
-# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
-#
-# This provoked a new law from 1974 to make possible summer time changes
-# in subsequenet decrees with the law
-# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
-#
-# It seems however that no decree was set forward until 1980.  I have
-# not found any decree, but in another related law, the effecting DST
-# changes are stated explicitly to be from 1980-04-06 at 02:00 to
-# 1980-09-28 at 02:00.  If this is true, this differs slightly from
-# the EU rule in that DST runs to 02:00, not 03:00.  We don't know
-# when Denmark began using the EU rule correctly, but we have only
-# confirmation of the 1980-time, so I presume it was correct in 1981:
-# The law is about the management of the extra hour, concerning
-# working hours reported and effect on obligatory-rest rules (which
-# was suspended on that night):
-# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
-
-# From Jesper Norgaard Welen (2005-06-11):
-# The Herning Folkeblad (1980-09-26) reported that the night between
-# Saturday and Sunday the clock is set back from three to two.
-
-# From Paul Eggert (2005-06-11):
-# Hence the "02:00" of the 1980 law refers to standard time, not
-# wall-clock time, and so the EU rules were in effect in 1980.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Denmark	1916	only	-	May	14	23:00	1:00	S
-Rule	Denmark	1916	only	-	Sep	30	23:00	0	-
-Rule	Denmark	1940	only	-	May	15	 0:00	1:00	S
-Rule	Denmark	1945	only	-	Apr	 2	 2:00s	1:00	S
-Rule	Denmark	1945	only	-	Aug	15	 2:00s	0	-
-Rule	Denmark	1946	only	-	May	 1	 2:00s	1:00	S
-Rule	Denmark	1946	only	-	Sep	 1	 2:00s	0	-
-Rule	Denmark	1947	only	-	May	 4	 2:00s	1:00	S
-Rule	Denmark	1947	only	-	Aug	10	 2:00s	0	-
-Rule	Denmark	1948	only	-	May	 9	 2:00s	1:00	S
-Rule	Denmark	1948	only	-	Aug	 8	 2:00s	0	-
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Europe/Copenhagen	 0:50:20 -	LMT	1890
-			 0:50:20 -	CMT	1894 Jan  1 # Copenhagen MT
-			 1:00	Denmark	CE%sT	1942 Nov  2 2:00s
-			 1:00	C-Eur	CE%sT	1945 Apr  2 2:00
-			 1:00	Denmark	CE%sT	1980
-			 1:00	EU	CE%sT
-Zone Atlantic/Faroe	-0:27:04 -	LMT	1908 Jan 11	# Torshavn
-			 0:00	-	WET	1981
-			 0:00	EU	WE%sT
-#
-# From Paul Eggert (2004-10-31):
-# During World War II, Germany maintained secret manned weather stations in
-# East Greenland and Franz Josef Land, but we don't know their time zones.
-# My source for this is Wilhelm Dege's book mentioned under Svalbard.
-#
-# From Paul Eggert (2006-03-22):
-# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
-# and left the EU on 1985-02-01.  It therefore should have been using EU
-# rules at least through 1984.  Shanks & Pottenger say Scoresbysund and Godthab
-# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
-# rules since at least 1991.  Assume EU rules since 1980.
-
-# From Gwillin Law (2001-06-06), citing
-#  (2001-03-15),
-# and with translations corrected by Steffen Thorsen:
-#
-# Greenland has four local times, and the relation to UTC
-# is according to the following time line:
-#
-# The military zone near Thule	UTC-4
-# Standard Greenland time	UTC-3
-# Scoresbysund			UTC-1
-# Danmarkshavn			UTC
-#
-# In the military area near Thule and in Danmarkshavn DST will not be
-# introduced.
-
-# From Rives McDow (2001-11-01):
-#
-# I correspond regularly with the Dansk Polarcenter, and wrote them at
-# the time to clarify the situation in Thule.  Unfortunately, I have
-# not heard back from them regarding my recent letter.  [But I have
-# info from earlier correspondence.]
-#
-# According to the center, a very small local time zone around Thule
-# Air Base keeps the time according to UTC-4, implementing daylight
-# savings using North America rules, changing the time at 02:00 local time....
-#
-# The east coast of Greenland north of the community of Scoresbysund
-# uses UTC in the same way as in Iceland, year round, with no dst.
-# There are just a few stations on this coast, including the
-# Danmarkshavn ICAO weather station mentioned in your September 29th
-# email.  The other stations are two sledge patrol stations in
-# Mestersvig and Daneborg, the air force base at Station Nord, and the
-# DPC research station at Zackenberg.
-#
-# Scoresbysund and two small villages nearby keep time UTC-1 and use
-# the same daylight savings time period as in West Greenland (Godthab).
-#
-# The rest of Greenland, including Godthab (this area, although it
-# includes central Greenland, is known as west Greenland), keeps time
-# UTC-3, with daylight savings methods according to European rules.
-#
-# It is common procedure to use UTC 0 in the wilderness of East and
-# North Greenland, because it is mainly Icelandic aircraft operators
-# maintaining traffic in these areas.  However, the official status of
-# this area is that it sticks with Godthab time.  This area might be
-# considered a dual time zone in some respects because of this.
-
-# From Rives McDow (2001-11-19):
-# I heard back from someone stationed at Thule; the time change took place
-# there at 2:00 AM.
-
-# From Paul Eggert (2006-03-22):
-# From 1997 on the CIA map shows Danmarkshavn on GMT;
-# the 1995 map as like Godthab.
-# For lack of better info, assume they were like Godthab before 1996.
-# startkart.no says Thule does not observe DST, but this is clearly an error,
-# so go with Shanks & Pottenger for Thule transitions until this year.
-# For 2007 on assume Thule will stay in sync with US DST rules.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Thule	1991	1992	-	Mar	lastSun	2:00	1:00	D
-Rule	Thule	1991	1992	-	Sep	lastSun	2:00	0	S
-Rule	Thule	1993	2006	-	Apr	Sun>=1	2:00	1:00	D
-Rule	Thule	1993	2006	-	Oct	lastSun	2:00	0	S
-Rule	Thule	2007	max	-	Mar	Sun>=8	2:00	1:00	D
-Rule	Thule	2007	max	-	Nov	Sun>=1	2:00	0	S
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Danmarkshavn -1:14:40 -	LMT	1916 Jul 28
-			-3:00	-	WGT	1980 Apr  6 2:00
-			-3:00	EU	WG%sT	1996
-			0:00	-	GMT
-Zone America/Scoresbysund -1:27:52 -	LMT	1916 Jul 28 # Ittoqqortoormiit
-			-2:00	-	CGT	1980 Apr  6 2:00
-			-2:00	C-Eur	CG%sT	1981 Mar 29
-			-1:00	EU	EG%sT
-Zone America/Godthab	-3:26:56 -	LMT	1916 Jul 28 # Nuuk
-			-3:00	-	WGT	1980 Apr  6 2:00
-			-3:00	EU	WG%sT
-Zone America/Thule	-4:35:08 -	LMT	1916 Jul 28 # Pituffik air base
-			-4:00	Thule	A%sT
-
-# Estonia
-# From Peter Ilieve (1994-10-15):
-# A relative in Tallinn confirms the accuracy of the data for 1989 onwards
-# [through 1994] and gives the legal authority for it,
-# a regulation of the Government of Estonia, No. 111 of 1989....
-#
-# From Peter Ilieve (1996-10-28):
-# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
-# but a relative confirms that Estonia still switches at 02:00s, writing:]
-# ``I do not [know] exactly but there are some little different
-# (confusing) rules for International Air and Railway Transport Schedules
-# conversion in Sunday connected with end of summer time in Estonia....
-# A discussion is running about the summer time efficiency and effect on
-# human physiology.  It seems that Estonia maybe will not change to
-# summer time next spring.''
-
-# From Peter Ilieve (1998-11-04), heavily edited:
-# 
-# The 1998-09-22 Estonian time law
-# 
-# refers to the Eighth Directive and cites the association agreement between
-# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
-#
-# I also asked [my relative] whether they use any standard abbreviation
-# for their standard and summer times. He says no, they use "suveaeg"
-# (summer time) and "talveaeg" (winter time).
-
-# From The Baltic Times (1999-09-09)
-# via Steffen Thorsen:
-# This year will mark the last time Estonia shifts to summer time,
-# a council of the ruling coalition announced Sept. 6....
-# But what this could mean for Estonia's chances of joining the European
-# Union are still unclear.  In 1994, the EU declared summer time compulsory
-# for all member states until 2001.  Brussels has yet to decide what to do
-# after that.
-
-# From Mart Oruaas (2000-01-29):
-# Regulation no. 301 (1999-10-12) obsoletes previous regulation
-# no. 206 (1998-09-22) and thus sticks Estonia to +02:00 GMT for all
-# the year round.  The regulation is effective 1999-11-01.
-
-# From Toomas Soome (2002-02-21):
-# The Estonian government has changed once again timezone politics.
-# Now we are using again EU rules.
-#
-# From Urmet Jaanes (2002-03-28):
-# The legislative reference is Government decree No. 84 on 2002-02-21.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Tallinn	1:39:00	-	LMT	1880
-			1:39:00	-	TMT	1918 Feb # Tallinn Mean Time
-			1:00	C-Eur	CE%sT	1919 Jul
-			1:39:00	-	TMT	1921 May
-			2:00	-	EET	1940 Aug  6
-			3:00	-	MSK	1941 Sep 15
-			1:00	C-Eur	CE%sT	1944 Sep 22
-			3:00	Russia	MSK/MSD	1989 Mar 26 2:00s
-			2:00	1:00	EEST	1989 Sep 24 2:00s
-			2:00	C-Eur	EE%sT	1998 Sep 22
-			2:00	EU	EE%sT	1999 Nov  1
-			2:00	-	EET	2002 Feb 21
-			2:00	EU	EE%sT
-
-# Finland
-#
-# From Hannu Strang (1994-09-25 06:03:37 UTC):
-# Well, here in Helsinki we're just changing from summer time to regular one,
-# and it's supposed to change at 4am...
-#
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger say Finland has switched at 02:00 standard time
-# since 1981.  Go with Strang instead.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Finland	1942	only	-	Apr	3	0:00	1:00	S
-Rule	Finland	1942	only	-	Oct	3	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Helsinki	1:39:52 -	LMT	1878 May 31
-			1:39:52	-	HMT	1921 May    # Helsinki Mean Time
-			2:00	Finland	EE%sT	1981 Mar 29 2:00
-			2:00	EU	EE%sT
-
-# Aaland Is
-Link	Europe/Helsinki	Europe/Mariehamn
-
-
-# France
-
-# From Ciro Discepolo (2000-12-20):
-#
-# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
-# Traditionnelles - Paris 2 books, 1993
-#
-# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
-# Paris, 1991
-#
-# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
-# Guy tredaniel, Paris 1987
-
-
-#
-# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	France	1916	only	-	Jun	14	23:00s	1:00	S
-Rule	France	1916	1919	-	Oct	Sun>=1	23:00s	0	-
-Rule	France	1917	only	-	Mar	24	23:00s	1:00	S
-Rule	France	1918	only	-	Mar	 9	23:00s	1:00	S
-Rule	France	1919	only	-	Mar	 1	23:00s	1:00	S
-Rule	France	1920	only	-	Feb	14	23:00s	1:00	S
-Rule	France	1920	only	-	Oct	23	23:00s	0	-
-Rule	France	1921	only	-	Mar	14	23:00s	1:00	S
-Rule	France	1921	only	-	Oct	25	23:00s	0	-
-Rule	France	1922	only	-	Mar	25	23:00s	1:00	S
-# DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st
-# Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions
-# were Apr 12 and Oct 5.  Go with Shanks & Pottenger.
-Rule	France	1922	1938	-	Oct	Sat>=1	23:00s	0	-
-Rule	France	1923	only	-	May	26	23:00s	1:00	S
-Rule	France	1924	only	-	Mar	29	23:00s	1:00	S
-Rule	France	1925	only	-	Apr	 4	23:00s	1:00	S
-Rule	France	1926	only	-	Apr	17	23:00s	1:00	S
-Rule	France	1927	only	-	Apr	 9	23:00s	1:00	S
-Rule	France	1928	only	-	Apr	14	23:00s	1:00	S
-Rule	France	1929	only	-	Apr	20	23:00s	1:00	S
-Rule	France	1930	only	-	Apr	12	23:00s	1:00	S
-Rule	France	1931	only	-	Apr	18	23:00s	1:00	S
-Rule	France	1932	only	-	Apr	 2	23:00s	1:00	S
-Rule	France	1933	only	-	Mar	25	23:00s	1:00	S
-Rule	France	1934	only	-	Apr	 7	23:00s	1:00	S
-Rule	France	1935	only	-	Mar	30	23:00s	1:00	S
-Rule	France	1936	only	-	Apr	18	23:00s	1:00	S
-Rule	France	1937	only	-	Apr	 3	23:00s	1:00	S
-Rule	France	1938	only	-	Mar	26	23:00s	1:00	S
-Rule	France	1939	only	-	Apr	15	23:00s	1:00	S
-Rule	France	1939	only	-	Nov	18	23:00s	0	-
-Rule	France	1940	only	-	Feb	25	 2:00	1:00	S
-# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
-# write that they were used in Monaco and in many French locations.
-# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
-# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
-# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Decartes,
-# Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
-# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
-# Dole, Morez, St-Claude, and Collognes (Haute-Savioe).
-Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
-# Shanks & Pottenger say this transition occurred at Oct 6 1:00,
-# but go with Denis Excoffier (1997-12-12),
-# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
-# as saying 5/10/41 22hUT.
-Rule	France	1941	only	-	Oct	 6	 0:00	1:00	S
-Rule	France	1942	only	-	Mar	 9	 0:00	2:00	M
-Rule	France	1942	only	-	Nov	 2	 3:00	1:00	S
-Rule	France	1943	only	-	Mar	29	 2:00	2:00	M
-Rule	France	1943	only	-	Oct	 4	 3:00	1:00	S
-Rule	France	1944	only	-	Apr	 3	 2:00	2:00	M
-Rule	France	1944	only	-	Oct	 8	 1:00	1:00	S
-Rule	France	1945	only	-	Apr	 2	 2:00	2:00	M
-Rule	France	1945	only	-	Sep	16	 3:00	0	-
-# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00;
-# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
-Rule	France	1976	only	-	Mar	28	 1:00	1:00	S
-Rule	France	1976	only	-	Sep	26	 1:00	0	-
-# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
-# but Howse quotes the actual French legislation as saying 0:09:21.
-# Go with Howse.  Howse writes that the time in France was officially based
-# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Paris	0:09:21 -	LMT	1891 Mar 15  0:01
-			0:09:21	-	PMT	1911 Mar 11  0:01  # Paris MT
-# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
-			0:00	France	WE%sT	1940 Jun 14 23:00
-# Le Corre says Paris stuck with occupied-France time after the liberation;
-# go with Shanks & Pottenger.
-			1:00	C-Eur	CE%sT	1944 Aug 25
-			0:00	France	WE%sT	1945 Sep 16  3:00
-			1:00	France	CE%sT	1977
-			1:00	EU	CE%sT
-
-# Germany
-
-# From Markus Kuhn (1998-09-29):
-# The German time zone web site by the Physikalisch-Technische
-# Bundesanstalt contains DST information back to 1916.
-# [See tz-link.htm for the URL.]
-
-# From Joerg Schilling (2002-10-23):
-# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by 
-# General [Nikolai] Bersarin.
-
-# From Paul Eggert (2003-03-08):
-# 
-# says that Bersarin issued an order to use Moscow time on May 20.
-# However, Moscow did not observe daylight saving in 1945, so
-# this was equivalent to CEMT (GMT+3), not GMT+4.
-
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Germany	1945	only	-	Apr	 2	2:00s	1:00	S
-Rule	Germany	1945	only	-	May	24	2:00	2:00	M # Midsummer
-Rule	Germany	1945	only	-	Sep	24	3:00	1:00	S
-Rule	Germany	1945	only	-	Nov	18	2:00s	0	-
-Rule	Germany	1946	only	-	Apr	14	2:00s	1:00	S
-Rule	Germany	1946	only	-	Oct	 7	2:00s	0	-
-Rule	Germany	1947	1949	-	Oct	Sun>=1	2:00s	0	-
-Rule	Germany	1947	only	-	Apr	 6	2:00s	1:00	S
-Rule	Germany	1947	only	-	May	11	2:00s	2:00	M
-Rule	Germany	1947	only	-	Jun	29	3:00	1:00	S
-Rule	Germany	1948	only	-	Apr	18	2:00s	1:00	S
-Rule	Germany	1949	only	-	Apr	10	2:00s	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
-			1:00	C-Eur	CE%sT	1945 Apr 2 2:00
-			1:00	Germany	CE%sT	1980
-			1:00	EU	CE%sT
-
-# Georgia
-# Please see the "asia" file for Asia/Tbilisi.
-# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
-# is in Europe.  Our reference location Tbilisi is in the Asian part.
-
-# Gibraltar
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Europe/Gibraltar	-0:21:24 -	LMT	1880 Aug  2 0:00s
-			0:00	GB-Eire	%s	1957 Apr 14 2:00
-			1:00	-	CET	1982
-			1:00	EU	CE%sT
-
-# Greece
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
-Rule	Greece	1932	only	-	Jul	 7	0:00	1:00	S
-Rule	Greece	1932	only	-	Sep	 1	0:00	0	-
-# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger.
-Rule	Greece	1941	only	-	Apr	 7	0:00	1:00	S
-# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger.
-Rule	Greece	1942	only	-	Nov	 2	3:00	0	-
-Rule	Greece	1943	only	-	Mar	30	0:00	1:00	S
-Rule	Greece	1943	only	-	Oct	 4	0:00	0	-
-# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger.
-Rule	Greece	1952	only	-	Jul	 1	0:00	1:00	S
-Rule	Greece	1952	only	-	Nov	 2	0:00	0	-
-Rule	Greece	1975	only	-	Apr	12	0:00s	1:00	S
-Rule	Greece	1975	only	-	Nov	26	0:00s	0	-
-Rule	Greece	1976	only	-	Apr	11	2:00s	1:00	S
-Rule	Greece	1976	only	-	Oct	10	2:00s	0	-
-Rule	Greece	1977	1978	-	Apr	Sun>=1	2:00s	1:00	S
-Rule	Greece	1977	only	-	Sep	26	2:00s	0	-
-Rule	Greece	1978	only	-	Sep	24	4:00	0	-
-Rule	Greece	1979	only	-	Apr	 1	9:00	1:00	S
-Rule	Greece	1979	only	-	Sep	29	2:00	0	-
-Rule	Greece	1980	only	-	Apr	 1	0:00	1:00	S
-Rule	Greece	1980	only	-	Sep	28	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Athens	1:34:52 -	LMT	1895 Sep 14
-			1:34:52	-	AMT	1916 Jul 28 0:01     # Athens MT
-			2:00	Greece	EE%sT	1941 Apr 30
-			1:00	Greece	CE%sT	1944 Apr  4
-			2:00	Greece	EE%sT	1981
-			# Shanks & Pottenger say it switched to C-Eur in 1981;
-			# go with EU instead, since Greece joined it on Jan 1.
-			2:00	EU	EE%sT
-
-# Hungary
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Hungary	1918	only	-	Apr	 1	 3:00	1:00	S
-Rule	Hungary	1918	only	-	Sep	29	 3:00	0	-
-Rule	Hungary	1919	only	-	Apr	15	 3:00	1:00	S
-Rule	Hungary	1919	only	-	Sep	15	 3:00	0	-
-Rule	Hungary	1920	only	-	Apr	 5	 3:00	1:00	S
-Rule	Hungary	1920	only	-	Sep	30	 3:00	0	-
-Rule	Hungary	1945	only	-	May	 1	23:00	1:00	S
-Rule	Hungary	1945	only	-	Nov	 3	 0:00	0	-
-Rule	Hungary	1946	only	-	Mar	31	 2:00s	1:00	S
-Rule	Hungary	1946	1949	-	Oct	Sun>=1	 2:00s	0	-
-Rule	Hungary	1947	1949	-	Apr	Sun>=4	 2:00s	1:00	S
-Rule	Hungary	1950	only	-	Apr	17	 2:00s	1:00	S
-Rule	Hungary	1950	only	-	Oct	23	 2:00s	0	-
-Rule	Hungary	1954	1955	-	May	23	 0:00	1:00	S
-Rule	Hungary	1954	1955	-	Oct	 3	 0:00	0	-
-Rule	Hungary	1956	only	-	Jun	Sun>=1	 0:00	1:00	S
-Rule	Hungary	1956	only	-	Sep	lastSun	 0:00	0	-
-Rule	Hungary	1957	only	-	Jun	Sun>=1	 1:00	1:00	S
-Rule	Hungary	1957	only	-	Sep	lastSun	 3:00	0	-
-Rule	Hungary	1980	only	-	Apr	 6	 1:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Budapest	1:16:20 -	LMT	1890 Oct
-			1:00	C-Eur	CE%sT	1918
-			1:00	Hungary	CE%sT	1941 Apr  6  2:00
-			1:00	C-Eur	CE%sT	1945 May  1 23:00
-			1:00	Hungary	CE%sT	1980 Sep 28  2:00s
-			1:00	EU	CE%sT
-
-# Iceland
-#
-# From Adam David (1993-11-06):
-# The name of the timezone in Iceland for system / mail / news purposes is GMT.
-#
-# (1993-12-05):
-# This material is paraphrased from the 1988 edition of the University of
-# Iceland Almanak.
-#
-# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
-# behind GMT. Previously, local mean solar time was used in different parts
-# of Iceland, the almanak had been based on Reykjavik mean solar time which
-# was 1 hour and 28 minutes behind GMT.
-#
-# "first day of winter" referred to [below] means the first day of the 26 weeks
-# of winter, according to the old icelandic calendar that dates back to the
-# time the norsemen first settled Iceland.  The first day of winter is always
-# Saturday, but is not dependent on the Julian or Gregorian calendars.
-#
-# (1993-12-10):
-# I have a reference from the Oxford Icelandic-English dictionary for the
-# beginning of winter, which ties it to the ecclesiastical calendar (and thus
-# to the julian/gregorian calendar) over the period in question.
-#	the winter begins on the Saturday next before St. Luke's day
-#	(old style), or on St. Luke's day, if a Saturday.
-# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
-# might be a reference to the Julian calendar as opposed to Gregorian, or it
-# might mean something else (???).
-#
-# From Paul Eggert (2006-03-22):
-# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.
-# We go with the Almanak, except for one claim from Shanks & Pottenger, namely
-# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Iceland	1917	1918	-	Feb	19	23:00	1:00	S
-Rule	Iceland	1917	only	-	Oct	21	 1:00	0	-
-Rule	Iceland	1918	only	-	Nov	16	 1:00	0	-
-Rule	Iceland	1939	only	-	Apr	29	23:00	1:00	S
-Rule	Iceland	1939	only	-	Nov	29	 2:00	0	-
-Rule	Iceland	1940	only	-	Feb	25	 2:00	1:00	S
-Rule	Iceland	1940	only	-	Nov	 3	 2:00	0	-
-Rule	Iceland	1941	only	-	Mar	 2	 1:00s	1:00	S
-Rule	Iceland	1941	only	-	Nov	 2	 1:00s	0	-
-Rule	Iceland	1942	only	-	Mar	 8	 1:00s	1:00	S
-Rule	Iceland	1942	only	-	Oct	25	 1:00s	0	-
-# 1943-1946 - first Sunday in March until first Sunday in winter
-Rule	Iceland	1943	1946	-	Mar	Sun>=1	 1:00s	1:00	S
-Rule	Iceland	1943	1948	-	Oct	Sun>=22	 1:00s	0	-
-# 1947-1967 - first Sunday in April until first Sunday in winter
-Rule	Iceland	1947	1967	-	Apr	Sun>=1	 1:00s	1:00	S
-# 1949 Oct transition delayed by 1 week
-Rule	Iceland	1949	only	-	Oct	30	 1:00s	0	-
-Rule	Iceland	1950	1966	-	Oct	Sun>=22	 1:00s	0	-
-Rule	Iceland	1967	only	-	Oct	29	 1:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
-			-1:27:48 -	RMT	1908 # Reykjavik Mean Time?
-			-1:00	Iceland	IS%sT	1968 Apr 7 1:00s
-			 0:00	-	GMT
-
-# Italy
-#
-# From Paul Eggert (2001-03-06):
-# Sicily and Sardinia each had their own time zones from 1866 to 1893,
-# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32).
-# During World War II, German-controlled Italy used German time.
-# But these events all occurred before the 1970 cutoff,
-# so record only the time in Rome.
-#
-# From Paul Eggert (2006-03-22):
-# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
-# F. Pollastri
-# 
-# Day-light Saving Time in Italy (2006-02-03)
-# 
-# (`FP' below), taken from an Italian National Electrotechnical Institute
-# publication. When the three sources disagree, guess who's right, as follows:
-#
-# year	FP	Shanks&P. (S)	Whitman (W)	Go with:
-# 1916	06-03	06-03 24:00	06-03 00:00	FP & W
-#	09-30	09-30 24:00	09-30 01:00	FP; guess 24:00s
-# 1917	04-01	03-31 24:00	03-31 00:00	FP & S
-#	09-30	09-29 24:00	09-30 01:00	FP & W
-# 1918	03-09	03-09 24:00	03-09 00:00	FP & S
-#	10-06	10-05 24:00	10-06 01:00	FP & W
-# 1919	03-01	03-01 24:00	03-01 00:00	FP & S
-#	10-04	10-04 24:00	10-04 01:00	FP; guess 24:00s
-# 1920	03-20	03-20 24:00	03-20 00:00	FP & S
-#	09-18	09-18 24:00	10-01 01:00	FP; guess 24:00s
-# 1944	04-02	04-03 02:00			S (see C-Eur)
-#	09-16	10-02 03:00			FP; guess 24:00s
-# 1945	09-14	09-16 24:00			FP; guess 24:00s
-# 1970	05-21	05-31 00:00			S
-#	09-20	09-27 00:00			S
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Italy	1916	only	-	Jun	 3	0:00s	1:00	S
-Rule	Italy	1916	only	-	Oct	 1	0:00s	0	-
-Rule	Italy	1917	only	-	Apr	 1	0:00s	1:00	S
-Rule	Italy	1917	only	-	Sep	30	0:00s	0	-
-Rule	Italy	1918	only	-	Mar	10	0:00s	1:00	S
-Rule	Italy	1918	1919	-	Oct	Sun>=1	0:00s	0	-
-Rule	Italy	1919	only	-	Mar	 2	0:00s	1:00	S
-Rule	Italy	1920	only	-	Mar	21	0:00s	1:00	S
-Rule	Italy	1920	only	-	Sep	19	0:00s	0	-
-Rule	Italy	1940	only	-	Jun	15	0:00s	1:00	S
-Rule	Italy	1944	only	-	Sep	17	0:00s	0	-
-Rule	Italy	1945	only	-	Apr	 2	2:00	1:00	S
-Rule	Italy	1945	only	-	Sep	15	0:00s	0	-
-Rule	Italy	1946	only	-	Mar	17	2:00s	1:00	S
-Rule	Italy	1946	only	-	Oct	 6	2:00s	0	-
-Rule	Italy	1947	only	-	Mar	16	0:00s	1:00	S
-Rule	Italy	1947	only	-	Oct	 5	0:00s	0	-
-Rule	Italy	1948	only	-	Feb	29	2:00s	1:00	S
-Rule	Italy	1948	only	-	Oct	 3	2:00s	0	-
-Rule	Italy	1966	1968	-	May	Sun>=22	0:00	1:00	S
-Rule	Italy	1966	1969	-	Sep	Sun>=22	0:00	0	-
-Rule	Italy	1969	only	-	Jun	 1	0:00	1:00	S
-Rule	Italy	1970	only	-	May	31	0:00	1:00	S
-Rule	Italy	1970	only	-	Sep	lastSun	0:00	0	-
-Rule	Italy	1971	1972	-	May	Sun>=22	0:00	1:00	S
-Rule	Italy	1971	only	-	Sep	lastSun	1:00	0	-
-Rule	Italy	1972	only	-	Oct	 1	0:00	0	-
-Rule	Italy	1973	only	-	Jun	 3	0:00	1:00	S
-Rule	Italy	1973	1974	-	Sep	lastSun	0:00	0	-
-Rule	Italy	1974	only	-	May	26	0:00	1:00	S
-Rule	Italy	1975	only	-	Jun	 1	0:00s	1:00	S
-Rule	Italy	1975	1977	-	Sep	lastSun	0:00s	0	-
-Rule	Italy	1976	only	-	May	30	0:00s	1:00	S
-Rule	Italy	1977	1979	-	May	Sun>=22	0:00s	1:00	S
-Rule	Italy	1978	only	-	Oct	 1	0:00s	0	-
-Rule	Italy	1979	only	-	Sep	30	0:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Rome	0:49:56 -	LMT	1866 Sep 22
-			0:49:56	-	RMT	1893 Nov  1 0:00s # Rome Mean
-			1:00	Italy	CE%sT	1942 Nov  2 2:00s
-			1:00	C-Eur	CE%sT	1944 Jul
-			1:00	Italy	CE%sT	1980
-			1:00	EU	CE%sT
-
-Link	Europe/Rome	Europe/Vatican
-Link	Europe/Rome	Europe/San_Marino
-
-# Latvia
-
-# From Liene Kanepe (1998-09-17):
-
-# I asked about this matter Scientific Secretary of the Institute of Astronomy
-# of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the
-# correct data in juridical acts and I found some juridical documents about
-# changes in the counting of time in Latvia from 1981....
-#
-# Act No.35 of the Council of Ministers of Latvian SSR of 1981-01-22 ...
-# according to the Act No.925 of the Council of Ministers of USSR of 1980-10-24
-# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
-# the hands of the clock 1 hour forward on 1 April at 00:00 (GMT 31 March 21:00)
-# and 1 hour backward on the 1 October at 00:00 (GMT 30 September 20:00).
-#
-# Act No.592 of the Council of Ministers of Latvian SSR of 1984-09-24 ...
-# according to the Act No.967 of the Council of Ministers of USSR of 1984-09-13
-# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
-# the hands of the clock 1 hour forward on the last Sunday of March at 02:00
-# (GMT 23:00 on the previous day) and 1 hour backward on the last Sunday of
-# September at 03:00 (GMT 23:00 on the previous day).
-#
-# Act No.81 of the Council of Ministers of Latvian SSR of 1989-03-22 ...
-# according to the Act No.227 of the Council of Ministers of USSR of 1989-03-14
-# ...: since the last Sunday of March 1989 in Lithuanian SSR, Latvian SSR,
-# Estonian SSR and Kaliningrad region of Russian Federation all year round the
-# time of 2nd time zone (Moscow time minus one hour). On the territory of Latvia
-# transition to summer time is performed on the last Sunday of March at 02:00
-# (GMT 00:00), turning the hands of the clock 1 hour forward.  The end of
-# daylight saving time is performed on the last Sunday of September at 03:00
-# (GMT 00:00), turning the hands of the clock 1 hour backward. Exception is
-# 1989-03-26, when we must not turn the hands of the clock....
-#
-# The Regulations of the Cabinet of Ministers of the Republic of Latvia of
-# 1997-01-21 on transition to Summer time ... established the same order of
-# daylight savings time settings as in the States of the European Union.
-
-# From Andrei Ivanov (2000-03-06):
-# This year Latvia will not switch to Daylight Savings Time (as specified in
-# 
-# The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
-# 29-Feb-2000 (#79), in Latvian for subscribers only).
-
-# 
-# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
-# 
-# The Latvian government on 2 January decided that the country will
-# institute daylight-saving time this spring, LETA reported.
-# Last February the three Baltic states decided not to turn back their
-# clocks one hour in the spring....
-# Minister of Economy Aigars Kalvitis noted that Latvia had too few
-# daylight hours and thus decided to comply with a draft European
-# Commission directive that provides for instituting daylight-saving
-# time in EU countries between 2002 and 2006. The Latvian government
-# urged Lithuania and Estonia to adopt a similar time policy, but it
-# appears that they will not do so....
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Latvia	1989	1996	-	Mar	lastSun	 2:00s	1:00	S
-Rule	Latvia	1989	1996	-	Sep	lastSun	 2:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Riga	1:36:24	-	LMT	1880
-			1:36:24	-	RMT	1918 Apr 15 2:00 #Riga Mean Time
-			1:36:24	1:00	LST	1918 Sep 16 3:00 #Latvian Summer
-			1:36:24	-	RMT	1919 Apr  1 2:00
-			1:36:24	1:00	LST	1919 May 22 3:00
-			1:36:24	-	RMT	1926 May 11
-			2:00	-	EET	1940 Aug  5
-			3:00	-	MSK	1941 Jul
-			1:00	C-Eur	CE%sT	1944 Oct 13
-			3:00	Russia	MSK/MSD	1989 Mar lastSun 2:00s
-			2:00	1:00	EEST	1989 Sep lastSun 2:00s
-			2:00	Latvia	EE%sT	1997 Jan 21
-			2:00	EU	EE%sT	2000 Feb 29
-			2:00	-	EET	2001 Jan  2
-			2:00	EU	EE%sT
-
-# Liechtenstein
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Vaduz	0:38:04 -	LMT	1894 Jun
-			1:00	-	CET	1981
-			1:00	EU	CE%sT
-
-# Lithuania
-
-# From Paul Eggert (1996-11-22):
-# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is
-# known to be wrong about Estonia and Latvia, assume it's wrong here too.
-
-# From Marius Gedminas (1998-08-07):
-# I would like to inform that in this year Lithuanian time zone
-# (Europe/Vilnius) was changed.
-
-# From ELTA No. 972 (2582) (1999-09-29),
-# via Steffen Thorsen:
-# Lithuania has shifted back to the second time zone (GMT plus two hours)
-# to be valid here starting from October 31,
-# as decided by the national government on Wednesday....
-# The Lithuanian government also announced plans to consider a
-# motion to give up shifting to summer time in spring, as it was
-# already done by Estonia.
-
-# From the 
-# Fact File, Lithuanian State Department of Tourism
-#  (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
-
-# From a user via Klaus Marten (2003-02-07):
-# As a candidate for membership of the European Union, Lithuania will
-# observe Summer Time in 2003, changing its clocks at the times laid
-# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
-# neighbour Latvia). The text of the Lithuanian government Order of
-# 7.XI.02 to this effect can be found at
-# http://www.lrvk.lt/nut/11/n1749.htm
-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Vilnius	1:41:16	-	LMT	1880
-			1:24:00	-	WMT	1917	    # Warsaw Mean Time
-			1:35:36	-	KMT	1919 Oct 10 # Kaunas Mean Time
-			1:00	-	CET	1920 Jul 12
-			2:00	-	EET	1920 Oct  9
-			1:00	-	CET	1940 Aug  3
-			3:00	-	MSK	1941 Jun 24
-			1:00	C-Eur	CE%sT	1944 Aug
-			3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
-			2:00	1:00	EEST	1991 Sep 29 2:00s
-			2:00	C-Eur	EE%sT	1998
-			2:00	-	EET	1998 Mar 29 1:00u
-			1:00	EU	CE%sT	1999 Oct 31 1:00u
-			2:00	-	EET	2003 Jan  1
-			2:00	EU	EE%sT
-
-# Luxembourg
-# Whitman disagrees with most of these dates in minor ways;
-# go with Shanks & Pottenger.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Lux	1916	only	-	May	14	23:00	1:00	S
-Rule	Lux	1916	only	-	Oct	 1	 1:00	0	-
-Rule	Lux	1917	only	-	Apr	28	23:00	1:00	S
-Rule	Lux	1917	only	-	Sep	17	 1:00	0	-
-Rule	Lux	1918	only	-	Apr	Mon>=15	 2:00s	1:00	S
-Rule	Lux	1918	only	-	Sep	Mon>=15	 2:00s	0	-
-Rule	Lux	1919	only	-	Mar	 1	23:00	1:00	S
-Rule	Lux	1919	only	-	Oct	 5	 3:00	0	-
-Rule	Lux	1920	only	-	Feb	14	23:00	1:00	S
-Rule	Lux	1920	only	-	Oct	24	 2:00	0	-
-Rule	Lux	1921	only	-	Mar	14	23:00	1:00	S
-Rule	Lux	1921	only	-	Oct	26	 2:00	0	-
-Rule	Lux	1922	only	-	Mar	25	23:00	1:00	S
-Rule	Lux	1922	only	-	Oct	Sun>=2	 1:00	0	-
-Rule	Lux	1923	only	-	Apr	21	23:00	1:00	S
-Rule	Lux	1923	only	-	Oct	Sun>=2	 2:00	0	-
-Rule	Lux	1924	only	-	Mar	29	23:00	1:00	S
-Rule	Lux	1924	1928	-	Oct	Sun>=2	 1:00	0	-
-Rule	Lux	1925	only	-	Apr	 5	23:00	1:00	S
-Rule	Lux	1926	only	-	Apr	17	23:00	1:00	S
-Rule	Lux	1927	only	-	Apr	 9	23:00	1:00	S
-Rule	Lux	1928	only	-	Apr	14	23:00	1:00	S
-Rule	Lux	1929	only	-	Apr	20	23:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
-			1:00	Lux	CE%sT	1918 Nov 25
-			0:00	Lux	WE%sT	1929 Oct  6 2:00s
-			0:00	Belgium	WE%sT	1940 May 14 3:00
-			1:00	C-Eur	WE%sT	1944 Sep 18 3:00
-			1:00	Belgium	CE%sT	1977
-			1:00	EU	CE%sT
-
-# Macedonia
-# see Serbia
-
-# Malta
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Malta	1973	only	-	Mar	31	0:00s	1:00	S
-Rule	Malta	1973	only	-	Sep	29	0:00s	0	-
-Rule	Malta	1974	only	-	Apr	21	0:00s	1:00	S
-Rule	Malta	1974	only	-	Sep	16	0:00s	0	-
-Rule	Malta	1975	1979	-	Apr	Sun>=15	2:00	1:00	S
-Rule	Malta	1975	1980	-	Sep	Sun>=15	2:00	0	-
-Rule	Malta	1980	only	-	Mar	31	2:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2 0:00s # Valletta
-			1:00	Italy	CE%sT	1942 Nov  2 2:00s
-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
-			1:00	Italy	CE%sT	1973 Mar 31
-			1:00	Malta	CE%sT	1981
-			1:00	EU	CE%sT
-
-# Moldova
-
-# From Paul Eggert (2006-03-22):
-# A previous version of this database followed Shanks & Pottenger, who write
-# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00.
-# However, this is most likely an error, as Moldova declared independence
-# on 1991-08-27 (the 1992-01-19 date is that of a Russian decree).
-# In early 1992 there was large-scale interethnic violence in the area
-# and it's possible that some Russophones continued to observe Moscow time.
-# But [two people] separately reported via
-# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
-# The Tiraspol entry has therefore been removed for now.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Chisinau	1:55:20 -	LMT	1880
-			1:55	-	CMT	1918 Feb 15 # Chisinau MT
-			1:44:24	-	BMT	1931 Jul 24 # Bucharest MT
-			2:00	Romania	EE%sT	1940 Aug 15
-			2:00	1:00	EEST	1941 Jul 17
-			1:00	C-Eur	CE%sT	1944 Aug 24
-			3:00	Russia	MSK/MSD	1990
-			3:00	-	MSK	1990 May 6
-			2:00	-	EET	1991
-			2:00	Russia	EE%sT	1992
-			2:00	E-Eur	EE%sT	1997
-# See Romania commentary for the guessed 1997 transition to EU rules.
-			2:00	EU	EE%sT
-
-# Monaco
-# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
-# more precise 0:09:21.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
-			0:09:21	-	PMT	1911 Mar 11    # Paris Mean Time
-			0:00	France	WE%sT	1945 Sep 16 3:00
-			1:00	France	CE%sT	1977
-			1:00	EU	CE%sT
-
-# Montenegro
-# see Serbia
-
-# Netherlands
-
-# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
-# but for other purposes the Netherlands used Amsterdam mean time.
-
-# However, Robert H. van Gent writes (2001-04-01):
-# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
-# Amsterdam mean time) onwards, the whole of the Netherlands (including
-# the Dutch railways) was required by law to observe Amsterdam mean time
-# (19 minutes 32.13 seconds ahead of GMT). This had already been the
-# common practice (except for the railways) for many decades but it was
-# not until 1909 when the Dutch government finally defined this by law.
-# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
-# was generally known as Dutch Time ("Nederlandse Tijd").
-#
-# (2001-04-08):
-# 1892-05-01 was the date when the Dutch railways were by law required to
-# observe GMT while the remainder of the Netherlands adhered to the common
-# practice of following Amsterdam mean time.
-#
-# (2001-04-09):
-# In 1835 the authorities of the province of North Holland requested the
-# municipal authorities of the towns and cities in the province to observe
-# Amsterdam mean time but I do not know in how many cases this request was
-# actually followed.
-#
-# From 1852 onwards the Dutch telegraph offices were by law required to
-# observe Amsterdam mean time. As the time signals from the observatory of
-# Leiden were also distributed by the telegraph system, I assume that most
-# places linked up with the telegraph (and railway) system automatically
-# adopted Amsterdam mean time.
-#
-# Although the early Dutch railway companies initially observed a variety
-# of times, most of them had adopted Amsterdam mean time by 1858 but it
-# was not until 1866 when they were all required by law to observe
-# Amsterdam mean time.
-
-# The data before 1945 are taken from
-# .
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Neth	1916	only	-	May	 1	0:00	1:00	NST	# Netherlands Summer Time
-Rule	Neth	1916	only	-	Oct	 1	0:00	0	AMT	# Amsterdam Mean Time
-Rule	Neth	1917	only	-	Apr	16	2:00s	1:00	NST
-Rule	Neth	1917	only	-	Sep	17	2:00s	0	AMT
-Rule	Neth	1918	1921	-	Apr	Mon>=1	2:00s	1:00	NST
-Rule	Neth	1918	1921	-	Sep	lastMon	2:00s	0	AMT
-Rule	Neth	1922	only	-	Mar	lastSun	2:00s	1:00	NST
-Rule	Neth	1922	1936	-	Oct	Sun>=2	2:00s	0	AMT
-Rule	Neth	1923	only	-	Jun	Fri>=1	2:00s	1:00	NST
-Rule	Neth	1924	only	-	Mar	lastSun	2:00s	1:00	NST
-Rule	Neth	1925	only	-	Jun	Fri>=1	2:00s	1:00	NST
-# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
-# in years when 05-15 fell in the Pentecost weekend.
-Rule	Neth	1926	1931	-	May	15	2:00s	1:00	NST
-Rule	Neth	1932	only	-	May	22	2:00s	1:00	NST
-Rule	Neth	1933	1936	-	May	15	2:00s	1:00	NST
-Rule	Neth	1937	only	-	May	22	2:00s	1:00	NST
-Rule	Neth	1937	only	-	Jul	 1	0:00	1:00	S
-Rule	Neth	1937	1939	-	Oct	Sun>=2	2:00s	0	-
-Rule	Neth	1938	1939	-	May	15	2:00s	1:00	S
-Rule	Neth	1945	only	-	Apr	 2	2:00s	1:00	S
-Rule	Neth	1945	only	-	Sep	16	2:00s	0	-
-#
-# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
-# below because the current format requires GMTOFF to be an integer.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Europe/Amsterdam	0:19:32 -	LMT	1835
-			0:19:32	Neth	%s	1937 Jul  1
-			0:20	Neth	NE%sT	1940 May 16 0:00 # Dutch Time
-			1:00	C-Eur	CE%sT	1945 Apr  2 2:00
-			1:00	Neth	CE%sT	1977
-			1:00	EU	CE%sT
-
-# Norway
-# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
-# Pottenger.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Norway	1916	only	-	May	22	1:00	1:00	S
-Rule	Norway	1916	only	-	Sep	30	0:00	0	-
-Rule	Norway	1945	only	-	Apr	 2	2:00s	1:00	S
-Rule	Norway	1945	only	-	Oct	 1	2:00s	0	-
-Rule	Norway	1959	1964	-	Mar	Sun>=15	2:00s	1:00	S
-Rule	Norway	1959	1965	-	Sep	Sun>=15	2:00s	0	-
-Rule	Norway	1965	only	-	Apr	25	2:00s	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
-			1:00	Norway	CE%sT	1940 Aug 10 23:00
-			1:00	C-Eur	CE%sT	1945 Apr  2  2:00
-			1:00	Norway	CE%sT	1980
-			1:00	EU	CE%sT
-
-# Svalbard & Jan Mayen
-
-# From Steffen Thorsen (2001-05-01):
-# Although I could not find it explicitly, it seems that Jan Mayen and
-# Svalbard have been using the same time as Norway at least since the
-# time they were declared as parts of Norway.  Svalbard was declared
-# as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
-# Mayen by law of 1930-02-27 no 2, section 2. (From
-# http://www.lovdata.no/all/nl-19250717-011.html and
-# http://www.lovdata.no/all/nl-19300227-002.html).  The law/regulation
-# for normal/standard time in Norway is from 1894-06-29 no 1 (came
-# into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
-# part of this law since 1925/1930. (From
-# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
-# able to find if Jan Mayen used a different time zone (e.g. -0100)
-# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
-# Norwegian meteorologists and maybe used the same time as Norway ever
-# since 1921.  Svalbard (Arctic/Longyearbyen) has been inhabited since
-# before 1895, and therefore probably changed the local time somewhere
-# between 1895 and 1925 (inclusive).
-
-# From Paul Eggert (2001-05-01):
-#
-# Actually, Jan Mayen was never occupied by Germany during World War II,
-# so it must have diverged from Oslo time during the war, as Oslo was
-# keeping Berlin time.
-#
-#  says that the meteorologists
-# burned down their station in 1940 and left the island, but returned in
-# 1941 with a small Norwegian garrison and continued operations despite
-# frequent air ttacks from Germans.  In 1943 the Americans established a
-# radiolocating station on the island, called "Atlantic City".  Possibly
-# the UTC offset changed during the war, but I think it unlikely that
-# Jan Mayen used German daylight-saving rules.
-#
-# Svalbard is more complicated, as it was raided in August 1941 by an
-# Allied party that evacuated the civilian population to England (says
-# ).  The Svalbard FAQ
-#  says that the Germans were
-# expelled on 1942-05-14.  However, small parties of Germans did return,
-# and according to Wilhelm Dege's book "War North of 80" (1954)
-# 
-# the German armed forces at the Svalbard weather station code-named
-# Haudegen did not surrender to the Allies until September 1945.
-#
-# All these events predate our cutoff date of 1970.  Unless we can
-# come up with more definitive info about the timekeeping during the
-# war years it's probably best just do do the following for now:
-Link	Europe/Oslo	Arctic/Longyearbyen
-Link	Europe/Oslo	Atlantic/Jan_Mayen
-
-# Poland
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Poland	1918	1919	-	Sep	16	2:00s	0	-
-Rule	Poland	1919	only	-	Apr	15	2:00s	1:00	S
-Rule	Poland	1944	only	-	Apr	 3	2:00s	1:00	S
-# Whitman gives 1944 Nov 30; go with Shanks & Pottenger.
-Rule	Poland	1944	only	-	Oct	 4	2:00	0	-
-# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger.
-Rule	Poland	1945	only	-	Apr	29	0:00	1:00	S
-Rule	Poland	1945	only	-	Nov	 1	0:00	0	-
-# For 1946 on the source is Kazimierz Borkowski,
-# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
-# 
-# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
-# He also gives these further references:
-# Mon Pol nr 13, poz 162 (1995) 
-# Druk nr 2180 (2003) 
-Rule	Poland	1946	only	-	Apr	14	0:00s	1:00	S
-Rule	Poland	1946	only	-	Oct	 7	2:00s	0	-
-Rule	Poland	1947	only	-	May	 4	2:00s	1:00	S
-Rule	Poland	1947	1949	-	Oct	Sun>=1	2:00s	0	-
-Rule	Poland	1948	only	-	Apr	18	2:00s	1:00	S
-Rule	Poland	1949	only	-	Apr	10	2:00s	1:00	S
-Rule	Poland	1957	only	-	Jun	 2	1:00s	1:00	S
-Rule	Poland	1957	1958	-	Sep	lastSun	1:00s	0	-
-Rule	Poland	1958	only	-	Mar	30	1:00s	1:00	S
-Rule	Poland	1959	only	-	May	31	1:00s	1:00	S
-Rule	Poland	1959	1961	-	Oct	Sun>=1	1:00s	0	-
-Rule	Poland	1960	only	-	Apr	 3	1:00s	1:00	S
-Rule	Poland	1961	1964	-	May	lastSun	1:00s	1:00	S
-Rule	Poland	1962	1964	-	Sep	lastSun	1:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Warsaw	1:24:00 -	LMT	1880
-			1:24:00	-	WMT	1915 Aug  5   # Warsaw Mean Time
-			1:00	C-Eur	CE%sT	1918 Sep 16 3:00
-			2:00	Poland	EE%sT	1922 Jun
-			1:00	Poland	CE%sT	1940 Jun 23 2:00
-			1:00	C-Eur	CE%sT	1944 Oct
-			1:00	Poland	CE%sT	1977
-			1:00	W-Eur	CE%sT	1988
-			1:00	EU	CE%sT
-
-# Portugal
-#
-# From Rui Pedro Salgueiro (1992-11-12):
-# Portugal has recently (September, 27) changed timezone
-# (from WET to MET or CET) to harmonize with EEC.
-#
-# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
-# that Portugal is reverting to 0:00 by not moving its clocks this spring.
-# The new Prime Minister was fed up with getting up in the dark in the winter.
-#
-# From Paul Eggert (1996-11-12):
-# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
-# at 02:00u, not 01:00u.  Assume that these are typos.
-# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
-# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
-# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
-# harmonized with the EU), and that they stayed +0:00 that winter.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
-# done every year, depending on what Spain did, because of railroad schedules.
-# Go with Shanks & Pottenger.
-Rule	Port	1916	only	-	Jun	17	23:00	1:00	S
-# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.
-Rule	Port	1916	only	-	Nov	 1	 1:00	0	-
-Rule	Port	1917	only	-	Feb	28	23:00s	1:00	S
-Rule	Port	1917	1921	-	Oct	14	23:00s	0	-
-Rule	Port	1918	only	-	Mar	 1	23:00s	1:00	S
-Rule	Port	1919	only	-	Feb	28	23:00s	1:00	S
-Rule	Port	1920	only	-	Feb	29	23:00s	1:00	S
-Rule	Port	1921	only	-	Feb	28	23:00s	1:00	S
-Rule	Port	1924	only	-	Apr	16	23:00s	1:00	S
-Rule	Port	1924	only	-	Oct	14	23:00s	0	-
-Rule	Port	1926	only	-	Apr	17	23:00s	1:00	S
-Rule	Port	1926	1929	-	Oct	Sat>=1	23:00s	0	-
-Rule	Port	1927	only	-	Apr	 9	23:00s	1:00	S
-Rule	Port	1928	only	-	Apr	14	23:00s	1:00	S
-Rule	Port	1929	only	-	Apr	20	23:00s	1:00	S
-Rule	Port	1931	only	-	Apr	18	23:00s	1:00	S
-# Whitman gives 1931 Oct 8; go with Shanks & Pottenger.
-Rule	Port	1931	1932	-	Oct	Sat>=1	23:00s	0	-
-Rule	Port	1932	only	-	Apr	 2	23:00s	1:00	S
-Rule	Port	1934	only	-	Apr	 7	23:00s	1:00	S
-# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
-Rule	Port	1934	1938	-	Oct	Sat>=1	23:00s	0	-
-# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
-Rule	Port	1935	only	-	Mar	30	23:00s	1:00	S
-Rule	Port	1936	only	-	Apr	18	23:00s	1:00	S
-# Whitman gives 1937 Apr 2; go with Shanks & Pottenger.
-Rule	Port	1937	only	-	Apr	 3	23:00s	1:00	S
-Rule	Port	1938	only	-	Mar	26	23:00s	1:00	S
-Rule	Port	1939	only	-	Apr	15	23:00s	1:00	S
-# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
-Rule	Port	1939	only	-	Nov	18	23:00s	0	-
-Rule	Port	1940	only	-	Feb	24	23:00s	1:00	S
-# Shanks & Pottenger give 1940 Oct 7; go with Whitman.
-Rule	Port	1940	1941	-	Oct	 5	23:00s	0	-
-Rule	Port	1941	only	-	Apr	 5	23:00s	1:00	S
-Rule	Port	1942	1945	-	Mar	Sat>=8	23:00s	1:00	S
-Rule	Port	1942	only	-	Apr	25	22:00s	2:00	M # Midsummer
-Rule	Port	1942	only	-	Aug	15	22:00s	1:00	S
-Rule	Port	1942	1945	-	Oct	Sat>=24	23:00s	0	-
-Rule	Port	1943	only	-	Apr	17	22:00s	2:00	M
-Rule	Port	1943	1945	-	Aug	Sat>=25	22:00s	1:00	S
-Rule	Port	1944	1945	-	Apr	Sat>=21	22:00s	2:00	M
-Rule	Port	1946	only	-	Apr	Sat>=1	23:00s	1:00	S
-Rule	Port	1946	only	-	Oct	Sat>=1	23:00s	0	-
-Rule	Port	1947	1949	-	Apr	Sun>=1	 2:00s	1:00	S
-Rule	Port	1947	1949	-	Oct	Sun>=1	 2:00s	0	-
-# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
-# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
-Rule	Port	1951	1965	-	Apr	Sun>=1	 2:00s	1:00	S
-Rule	Port	1951	1965	-	Oct	Sun>=1	 2:00s	0	-
-Rule	Port	1977	only	-	Mar	27	 0:00s	1:00	S
-Rule	Port	1977	only	-	Sep	25	 0:00s	0	-
-Rule	Port	1978	1979	-	Apr	Sun>=1	 0:00s	1:00	S
-Rule	Port	1978	only	-	Oct	 1	 0:00s	0	-
-Rule	Port	1979	1982	-	Sep	lastSun	 1:00s	0	-
-Rule	Port	1980	only	-	Mar	lastSun	 0:00s	1:00	S
-Rule	Port	1981	1982	-	Mar	lastSun	 1:00s	1:00	S
-Rule	Port	1983	only	-	Mar	lastSun	 2:00s	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
-# Willett says 1912-01-01.  Go with Willett.
-Zone	Europe/Lisbon	-0:36:32 -	LMT	1884
-			-0:36:32 -	LMT	1912 Jan  1  # Lisbon Mean Time
-			 0:00	Port	WE%sT	1966 Apr  3 2:00
-			 1:00	-	CET	1976 Sep 26 1:00
-			 0:00	Port	WE%sT	1983 Sep 25 1:00s
-			 0:00	W-Eur	WE%sT	1992 Sep 27 1:00s
-			 1:00	EU	CE%sT	1996 Mar 31 1:00u
-			 0:00	EU	WE%sT
-Zone Atlantic/Azores	-1:42:40 -	LMT	1884		# Ponta Delgada
-			-1:54:32 -	HMT	1911 May 24  # Horta Mean Time
-			-2:00	Port	AZO%sT	1966 Apr  3 2:00 # Azores Time
-			-1:00	Port	AZO%sT	1983 Sep 25 1:00s
-			-1:00	W-Eur	AZO%sT	1992 Sep 27 1:00s
-			 0:00	EU	WE%sT	1993 Mar 28 1:00u
-			-1:00	EU	AZO%sT
-Zone Atlantic/Madeira	-1:07:36 -	LMT	1884		# Funchal
-			-1:07:36 -	FMT	1911 May 24  # Funchal Mean Time
-			-1:00	Port	MAD%sT	1966 Apr  3 2:00 # Madeira Time
-			 0:00	Port	WE%sT	1983 Sep 25 1:00s
-			 0:00	EU	WE%sT
-
-# Romania
-#
-# From Paul Eggert (1999-10-07):
-# 
-# Nine O'clock (1998-10-23) reports that the switch occurred at
-# 04:00 local time in fall 1998.  For lack of better info,
-# assume that Romania and Moldova switched to EU rules in 1997,
-# the same year as Bulgaria.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Romania	1932	only	-	May	21	 0:00s	1:00	S
-Rule	Romania	1932	1939	-	Oct	Sun>=1	 0:00s	0	-
-Rule	Romania	1933	1939	-	Apr	Sun>=2	 0:00s	1:00	S
-Rule	Romania	1979	only	-	May	27	 0:00	1:00	S
-Rule	Romania	1979	only	-	Sep	lastSun	 0:00	0	-
-Rule	Romania	1980	only	-	Apr	 5	23:00	1:00	S
-Rule	Romania	1980	only	-	Sep	lastSun	 1:00	0	-
-Rule	Romania	1991	1993	-	Mar	lastSun	 0:00s	1:00	S
-Rule	Romania	1991	1993	-	Sep	lastSun	 0:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
-			1:44:24	-	BMT	1931 Jul 24	# Bucharest MT
-			2:00	Romania	EE%sT	1981 Mar 29 2:00s
-			2:00	C-Eur	EE%sT	1991
-			2:00	Romania	EE%sT	1994
-			2:00	E-Eur	EE%sT	1997
-			2:00	EU	EE%sT
-
-# Russia
-
-# From Paul Eggert (2006-03-22):
-# Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
-# Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
-# are from Andrey A. Chernov.  The rest is from Shanks & Pottenger,
-# except we follow Chernov's report that 1992 DST transitions were Sat
-# 23:00, not Sun 02:00s.
-#
-# From Stanislaw A. Kuzikowski (1994-06-29):
-# But now it is some months since Novosibirsk is 3 hours ahead of Moscow!
-# I do not know why they have decided to make this change;
-# as far as I remember it was done exactly during winter->summer switching
-# so we (Novosibirsk) simply did not switch.
-#
-# From Andrey A. Chernov (1996-10-04):
-# `MSK' and `MSD' were born and used initially on Moscow computers with
-# UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....
-# The next step was the UUCP network, the Relcom predecessor
-# (used mainly for mail), and MSK/MSD was actively used there.
-#
-# From Chris Carrier (1996-10-30):
-# According to a friend of mine who rode the Trans-Siberian Railroad from
-# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...
-# still follows Moscow time, no matter where in Russia it is located.
-#
-# For Grozny, Chechnya, we have the following story from
-# John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
-# News--often false--is spread by word of mouth.  A rumor that it was
-# time to move the clocks back put this whole city out of sync with
-# the rest of Russia for two weeks--even soldiers stationed here began
-# enforcing curfew at the wrong time.
-#
-# From Gwillim Law (2001-06-05):
-# There's considerable evidence that Sakhalin Island used to be in
-# UTC+11, and has changed to UTC+10, in this decade.  I start with the
-# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan
-# until February 1997, and then in RU9 with Khabarovsk and Vladivostok
-# since September 1997....  Although the Kuril Islands are
-# administratively part of Sakhalin oblast', they appear to have
-# remained on UTC+11 along with Magadan.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-#
-# Kaliningradskaya oblast'.
-Zone Europe/Kaliningrad	 1:22:00 -	LMT	1893 Apr
-			 1:00	C-Eur	CE%sT	1945
-			 2:00	Poland	CE%sT	1946
-			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
-			 2:00	Russia	EE%sT
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Respublika Adygeya, Arkhangel'skaya oblast',
-# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
-# Vologodskaya oblast', Voronezhskaya oblast',
-# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
-# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
-# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
-# Respublika Kareliya, Respublika Komi,
-# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
-# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
-# Respublika Mordoviya, Moskva, Moskovskaya oblast',
-# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
-# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
-# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
-# Ryazanskaya oblast', Sankt-Peterburg,
-# Respublika Severnaya Osetiya, Smolenskaya oblast',
-# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
-# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
-# Chechenskaya Respublika, Chuvashskaya oblast',
-# Yaroslavskaya oblast'
-Zone Europe/Moscow	 2:30:20 -	LMT	1880
-			 2:30	-	MMT	1916 Jul  3 # Moscow Mean Time
-			 2:30:48 Russia	%s	1919 Jul  1 2:00
-			 3:00	Russia	MSK/MSD	1922 Oct
-			 2:00	-	EET	1930 Jun 21
-			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
-			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
-			 3:00	Russia	MSK/MSD
-#
-# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
-# Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
-# but Wikipedia (2006-05-09) says +0300.  Perhaps it switched after the
-# others?  But we have no data.
-Zone Europe/Volgograd	 2:57:40 -	LMT	1920 Jan  3
-			 3:00	-	TSAT	1925 Apr  6 # Tsaritsyn Time
-			 3:00	-	STAT	1930 Jun 21 # Stalingrad Time
-			 4:00	-	STAT	1961 Nov 11
-			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
-			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
-			 4:00	-	VOLT	1992 Mar 29 2:00s
-			 3:00	Russia	VOL%sT
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Samarskaya oblast', Udmyrtskaya respublika
-Zone Europe/Samara	 3:20:36 -	LMT	1919 Jul  1 2:00
-			 3:00	-	SAMT	1930 Jun 21
-			 4:00	-	SAMT	1935 Jan 27
-			 4:00	Russia	KUY%sT	1989 Mar 26 2:00s # Kuybyshev
-			 3:00	Russia	KUY%sT	1991 Mar 31 2:00s
-			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
-			 3:00	-	KUYT	1991 Oct 20 3:00
-			 4:00	Russia	SAM%sT	# Samara Time
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
-# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
-# Sverdlovskaya oblast', Tyumenskaya oblast',
-# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
-# Yamalo-Nenetskij avtonomnyj okrug.
-Zone Asia/Yekaterinburg	 4:02:24 -	LMT	1919 Jul 15 4:00
-			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
-			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
-			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
-			 5:00	Russia	YEK%sT	# Yekaterinburg Time
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
-Zone Asia/Omsk		 4:53:36 -	LMT	1919 Nov 14
-			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
-			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
-			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
-			 6:00	Russia	OMS%sT
-#
-# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
-# not clear when it switched from +7 to +6.
-# Novosibirskaya oblast', Tomskaya oblast'.
-Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14 6:00
-			 6:00	-	NOVT	1930 Jun 21 # Novosibirsk Time
-			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
-			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
-			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
-			 6:00	Russia	NOV%sT
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Kemerovskaya oblast', Krasnoyarskij kraj,
-# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
-# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
-Zone Asia/Krasnoyarsk	 6:11:20 -	LMT	1920 Jan  6
-			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
-			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
-			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
-			 7:00	Russia	KRA%sT
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Respublika Buryatiya, Irkutskaya oblast',
-# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
-Zone Asia/Irkutsk	 6:57:20 -	LMT	1880
-			 6:57:20 -	IMT	1920 Jan 25 # Irkutsk Mean Time
-			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
-			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
-			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
-			 8:00	Russia	IRK%sT
-#
-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
-# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
-# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
-# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
-# Bulunskij, Verkhnekolymskij, Verkhnevilyujskij, Vilyujskij, Gornyj,
-# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
-# Namskij, Nyurbinskij, Olenekskij, Olekminskij, Srednekolymskij,
-# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
-# Churapchinskij, Eveno-Bytantajskij.
-Zone Asia/Yakutsk	 8:38:40 -	LMT	1919 Dec 15
-			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
-			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
-			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
-			 9:00	Russia	YAK%sT
-#
-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
-# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
-# [parts of] Respublika Sakha (Yakutiya).
-# The Sakha districts are: Verkhoyanskij, Tomponskij, Ust'-Majskij,
-# Ust'-Yanskij.
-Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
-			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
-			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
-			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
-			10:00	Russia	VLA%sT
-#
-# Sakhalinskaya oblast'.
-# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
-Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
-			 9:00	-	CJT	1938
-			 9:00	-	JST	1945 Aug 25
-			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
-			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
-			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
-			10:00	Russia	SAK%sT
-#
-# From Oscar van Vlijmen (2003-10-18): [This region consists of]
-# Magadanskaya oblast', Respublika Sakha (Yakutiya).
-# Probably also: Kuril Islands.
-# The Sakha districts are: Abyjskij, Allaikhovskij, Momskij,
-# Nizhnekolymskij, Ojmyakonskij.
-Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
-			10:00	-	MAGT	1930 Jun 21 # Magadan Time
-			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
-			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
-			11:00	Russia	MAG%sT
-#
-# From Oscar van Vlijmen (2001-08-25): [This region consists of]
-# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
-#
-# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
-Zone Asia/Kamchatka	10:34:36 -	LMT	1922 Nov 10
-			11:00	-	PETT	1930 Jun 21 # P-K Time
-			12:00	Russia	PET%sT	1991 Mar 31 2:00s
-			11:00	Russia	PET%sT	1992 Jan 19 2:00s
-			12:00	Russia	PET%sT
-#
-# Chukotskij avtonomnyj okrug
-Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
-			12:00	-	ANAT	1930 Jun 21 # Anadyr Time
-			13:00	Russia	ANA%sT	1982 Apr  1 0:00s
-			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
-			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
-			12:00	Russia	ANA%sT
-
-# Serbia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Belgrade	1:22:00	-	LMT	1884
-			1:00	-	CET	1941 Apr 18 23:00
-			1:00	C-Eur	CE%sT	1945 May  8  2:00s
-			1:00	1:00	CEST	1945 Sep 16  2:00s
-# Metod Kozelj reports that the legal date of
-# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
-# Shanks & Pottenger don't give as much detail, so go with Kozelj.
-			1:00	-	CET	1982 Nov 27
-			1:00	EU	CE%sT
-Link Europe/Belgrade Europe/Ljubljana	# Slovenia
-Link Europe/Belgrade Europe/Podgorica	# Montenegro
-Link Europe/Belgrade Europe/Sarajevo	# Bosnia and Herzegovina
-Link Europe/Belgrade Europe/Skopje	# Macedonia
-Link Europe/Belgrade Europe/Zagreb	# Croatia
-
-# Slovakia
-Link Europe/Prague Europe/Bratislava
-
-# Slovenia
-# see Serbia
-
-# Spain
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1;
-# go with Shanks & Pottenger.
-Rule	Spain	1917	only	-	May	 5	23:00s	1:00	S
-Rule	Spain	1917	1919	-	Oct	 6	23:00s	0	-
-Rule	Spain	1918	only	-	Apr	15	23:00s	1:00	S
-Rule	Spain	1919	only	-	Apr	 5	23:00s	1:00	S
-# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger.
-Rule	Spain	1924	only	-	Apr	16	23:00s	1:00	S
-# Whitman gives 1924 Oct 14; go with Shanks & Pottenger.
-Rule	Spain	1924	only	-	Oct	 4	23:00s	0	-
-Rule	Spain	1926	only	-	Apr	17	23:00s	1:00	S
-# Whitman says no DST in 1929; go with Shanks & Pottenger.
-Rule	Spain	1926	1929	-	Oct	Sat>=1	23:00s	0	-
-Rule	Spain	1927	only	-	Apr	 9	23:00s	1:00	S
-Rule	Spain	1928	only	-	Apr	14	23:00s	1:00	S
-Rule	Spain	1929	only	-	Apr	20	23:00s	1:00	S
-# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13;
-# go with Shanks & Pottenger.
-Rule	Spain	1937	only	-	May	22	23:00s	1:00	S
-Rule	Spain	1937	1939	-	Oct	Sat>=1	23:00s	0	-
-Rule	Spain	1938	only	-	Mar	22	23:00s	1:00	S
-Rule	Spain	1939	only	-	Apr	15	23:00s	1:00	S
-Rule	Spain	1940	only	-	Mar	16	23:00s	1:00	S
-# Whitman says no DST 1942-1945; go with Shanks & Pottenger.
-Rule	Spain	1942	only	-	May	 2	22:00s	2:00	M # Midsummer
-Rule	Spain	1942	only	-	Sep	 1	22:00s	1:00	S
-Rule	Spain	1943	1946	-	Apr	Sat>=13	22:00s	2:00	M
-Rule	Spain	1943	only	-	Oct	 3	22:00s	1:00	S
-Rule	Spain	1944	only	-	Oct	10	22:00s	1:00	S
-Rule	Spain	1945	only	-	Sep	30	 1:00	1:00	S
-Rule	Spain	1946	only	-	Sep	30	 0:00	0	-
-Rule	Spain	1949	only	-	Apr	30	23:00	1:00	S
-Rule	Spain	1949	only	-	Sep	30	 1:00	0	-
-Rule	Spain	1974	1975	-	Apr	Sat>=13	23:00	1:00	S
-Rule	Spain	1974	1975	-	Oct	Sun>=1	 1:00	0	-
-Rule	Spain	1976	only	-	Mar	27	23:00	1:00	S
-Rule	Spain	1976	1977	-	Sep	lastSun	 1:00	0	-
-Rule	Spain	1977	1978	-	Apr	 2	23:00	1:00	S
-Rule	Spain	1978	only	-	Oct	 1	 1:00	0	-
-# The following rules are copied from Morocco from 1967 through 1978.
-Rule SpainAfrica 1967	only	-	Jun	 3	12:00	1:00	S
-Rule SpainAfrica 1967	only	-	Oct	 1	 0:00	0	-
-Rule SpainAfrica 1974	only	-	Jun	24	 0:00	1:00	S
-Rule SpainAfrica 1974	only	-	Sep	 1	 0:00	0	-
-Rule SpainAfrica 1976	1977	-	May	 1	 0:00	1:00	S
-Rule SpainAfrica 1976	only	-	Aug	 1	 0:00	0	-
-Rule SpainAfrica 1977	only	-	Sep	28	 0:00	0	-
-Rule SpainAfrica 1978	only	-	Jun	 1	 0:00	1:00	S
-Rule SpainAfrica 1978	only	-	Aug	 4	 0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Madrid	-0:14:44 -	LMT	1901 Jan  1  0:00s
-			 0:00	Spain	WE%sT	1946 Sep 30
-			 1:00	Spain	CE%sT	1979
-			 1:00	EU	CE%sT
-Zone	Africa/Ceuta	-0:21:16 -	LMT	1901
-			 0:00	-	WET	1918 May  6 23:00
-			 0:00	1:00	WEST	1918 Oct  7 23:00
-			 0:00	-	WET	1924
-			 0:00	Spain	WE%sT	1929
-			 0:00 SpainAfrica WE%sT 1984 Mar 16
-			 1:00	-	CET	1986
-			 1:00	EU	CE%sT
-Zone	Atlantic/Canary	-1:01:36 -	LMT	1922 Mar # Las Palmas de Gran C.
-			-1:00	-	CANT	1946 Sep 30 1:00 # Canaries Time
-			 0:00	-	WET	1980 Apr  6 0:00s
-			 0:00	1:00	WEST	1980 Sep 28 0:00s
-			 0:00	EU	WE%sT
-# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
-# Ignore this for now, as the Canaries are part of the EU.
-
-# Sweden
-
-# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
-#
-# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
-# From the beginning of 1879 (that is 01-01 00:00) the time for all
-# places in the country is "the mean solar time for the meridian at
-# three degrees, or twelve minutes of time, to the west of the
-# meridian of the Observatory of Stockholm".  The law is dated 1878-05-31.
-#
-# The observatory at that time had the meridian 18 degrees 03' 30"
-# eastern longitude = 01:12:14 in time.  Less 12 minutes gives the
-# national standard time as 01:00:14 ahead of GMT....
-#
-# About the beginning of CET in Sweden. The lawtext ("Svensk
-# forfattningssamling 1899, no 44") states, that "from the beginning
-# of 1900... ... the same as the mean solar time for the meridian at
-# the distance of one hour of time from the meridian of the English
-# observatory at Greenwich, or at 12 minutes 14 seconds to the west
-# from the meridian of the Observatory of Stockholm". The law is dated
-# 1899-06-16.  In short: At 1900-01-01 00:00:00 the new standard time
-# in Sweden is 01:00:00 ahead of GMT.
-#
-# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
-# that "1916-05-15 is considered to begin one hour earlier". It is
-# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
-# Further the law says, that "1916-09-30 is considered to end one hour later".
-#
-# The laws regulating [DST] are available on the site of the Swedish
-# Parliament beginning with 1985 - the laws regulating 1980/1984 are
-# not available on the site (to my knowledge they are only available
-# in Swedish):  (type
-# "sommartid" without the quotes in the field "Fritext" and then click
-# the Sok-button).
-#
-# (2001-05-13):
-#
-# I have now found a newspaper stating that at 1916-10-01 01:00
-# summertime the church-clocks etc were set back one hour to show
-# 1916-10-01 00:00 standard time.  The article also reports that some
-# people thought the switch to standard time would take place already
-# at 1916-10-01 00:00 summer time, but they had to wait for another
-# hour before the event took place.
-#
-# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
-			1:00:14	-	SET	1900 Jan  1	# Swedish Time
-			1:00	-	CET	1916 May 14 23:00
-			1:00	1:00	CEST	1916 Oct  1 01:00
-			1:00	-	CET	1980
-			1:00	EU	CE%sT
-
-# Switzerland
-# From Howse:
-# By the end of the 18th century clocks and watches became commonplace
-# and their performance improved enormously.  Communities began to keep
-# mean time in preference to apparent time -- Geneva from 1780 ....
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# From Whitman (who writes ``Midnight?''):
-Rule	Swiss	1940	only	-	Nov	 2	0:00	1:00	S
-Rule	Swiss	1940	only	-	Dec	31	0:00	0	-
-# From Shanks & Pottenger:
-Rule	Swiss	1941	1942	-	May	Sun>=1	2:00	1:00	S
-Rule	Swiss	1941	1942	-	Oct	Sun>=1	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Zurich	0:34:08 -	LMT	1848 Sep 12
-			0:29:44	-	BMT	1894 Jun # Bern Mean Time
-			1:00	Swiss	CE%sT	1981
-			1:00	EU	CE%sT
-
-# Turkey
-
-# From Amar Devegowda (2007-01-03):
-# The time zone rules for Istanbul, Turkey have not been changed for years now.
-# ... The latest rules are available at -
-# http://www.timeanddate.com/worldclock/timezone.html?n=107
-# From Steffen Thorsen (2007-01-03):
-# I have been able to find press records back to 1996 which all say that
-# DST started 01:00 local time and end at 02:00 local time.  I am not sure
-# what happened before that.  One example for each year from 1996 to 2001:
-# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm
-# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT
-# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM
-# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016
-# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021
-# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027
-# From Paul Eggert (2007-01-03):
-# Prefer the above source to Shanks & Pottenger for time stamps after 1990.
-
-# From Steffen Thorsen (2007-03-09):
-# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
-# start/end time, according to the following page (2007-03-07):
-# http://www.ntvmsnbc.com/news/402029.asp
-# The official document is located here - it is in Turkish...:
-# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm
-# I was able to locate the following seemingly official document
-# (on a non-government server though) describing dates between 2002 and 2006:
-# http://www.alomaliye.com/bkk_2002_3769.htm
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Turkey	1916	only	-	May	 1	0:00	1:00	S
-Rule	Turkey	1916	only	-	Oct	 1	0:00	0	-
-Rule	Turkey	1920	only	-	Mar	28	0:00	1:00	S
-Rule	Turkey	1920	only	-	Oct	25	0:00	0	-
-Rule	Turkey	1921	only	-	Apr	 3	0:00	1:00	S
-Rule	Turkey	1921	only	-	Oct	 3	0:00	0	-
-Rule	Turkey	1922	only	-	Mar	26	0:00	1:00	S
-Rule	Turkey	1922	only	-	Oct	 8	0:00	0	-
-# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925;
-# go with Shanks & Pottenger.
-Rule	Turkey	1924	only	-	May	13	0:00	1:00	S
-Rule	Turkey	1924	1925	-	Oct	 1	0:00	0	-
-Rule	Turkey	1925	only	-	May	 1	0:00	1:00	S
-Rule	Turkey	1940	only	-	Jun	30	0:00	1:00	S
-Rule	Turkey	1940	only	-	Oct	 5	0:00	0	-
-Rule	Turkey	1940	only	-	Dec	 1	0:00	1:00	S
-Rule	Turkey	1941	only	-	Sep	21	0:00	0	-
-Rule	Turkey	1942	only	-	Apr	 1	0:00	1:00	S
-# Whitman omits the next two transition and gives 1945 Oct 1;
-# go with Shanks & Pottenger.
-Rule	Turkey	1942	only	-	Nov	 1	0:00	0	-
-Rule	Turkey	1945	only	-	Apr	 2	0:00	1:00	S
-Rule	Turkey	1945	only	-	Oct	 8	0:00	0	-
-Rule	Turkey	1946	only	-	Jun	 1	0:00	1:00	S
-Rule	Turkey	1946	only	-	Oct	 1	0:00	0	-
-Rule	Turkey	1947	1948	-	Apr	Sun>=16	0:00	1:00	S
-Rule	Turkey	1947	1950	-	Oct	Sun>=2	0:00	0	-
-Rule	Turkey	1949	only	-	Apr	10	0:00	1:00	S
-Rule	Turkey	1950	only	-	Apr	19	0:00	1:00	S
-Rule	Turkey	1951	only	-	Apr	22	0:00	1:00	S
-Rule	Turkey	1951	only	-	Oct	 8	0:00	0	-
-Rule	Turkey	1962	only	-	Jul	15	0:00	1:00	S
-Rule	Turkey	1962	only	-	Oct	 8	0:00	0	-
-Rule	Turkey	1964	only	-	May	15	0:00	1:00	S
-Rule	Turkey	1964	only	-	Oct	 1	0:00	0	-
-Rule	Turkey	1970	1972	-	May	Sun>=2	0:00	1:00	S
-Rule	Turkey	1970	1972	-	Oct	Sun>=2	0:00	0	-
-Rule	Turkey	1973	only	-	Jun	 3	1:00	1:00	S
-Rule	Turkey	1973	only	-	Nov	 4	3:00	0	-
-Rule	Turkey	1974	only	-	Mar	31	2:00	1:00	S
-Rule	Turkey	1974	only	-	Nov	 3	5:00	0	-
-Rule	Turkey	1975	only	-	Mar	30	0:00	1:00	S
-Rule	Turkey	1975	1976	-	Oct	lastSun	0:00	0	-
-Rule	Turkey	1976	only	-	Jun	 1	0:00	1:00	S
-Rule	Turkey	1977	1978	-	Apr	Sun>=1	0:00	1:00	S
-Rule	Turkey	1977	only	-	Oct	16	0:00	0	-
-Rule	Turkey	1979	1980	-	Apr	Sun>=1	3:00	1:00	S
-Rule	Turkey	1979	1982	-	Oct	Mon>=11	0:00	0	-
-Rule	Turkey	1981	1982	-	Mar	lastSun	3:00	1:00	S
-Rule	Turkey	1983	only	-	Jul	31	0:00	1:00	S
-Rule	Turkey	1983	only	-	Oct	 2	0:00	0	-
-Rule	Turkey	1985	only	-	Apr	20	0:00	1:00	S
-Rule	Turkey	1985	only	-	Sep	28	0:00	0	-
-Rule	Turkey	1986	1990	-	Mar	lastSun	2:00s	1:00	S
-Rule	Turkey	1986	1990	-	Sep	lastSun	2:00s	0	-
-Rule	Turkey	1991	2006	-	Mar	lastSun	1:00s	1:00	S
-Rule	Turkey	1991	1995	-	Sep	lastSun	1:00s	0	-
-Rule	Turkey	1996	2006	-	Oct	lastSun	1:00s	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Istanbul	1:55:52 -	LMT	1880
-			1:56:56	-	IMT	1910 Oct # Istanbul Mean Time?
-			2:00	Turkey	EE%sT	1978 Oct 15
-			3:00	Turkey	TR%sT	1985 Apr 20 # Turkey Time
-			2:00	Turkey	EE%sT	2007
-			2:00	EU	EE%sT
-Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
-
-# Ukraine
-#
-# From Igor Karpov, who works for the Ukranian Ministry of Justice,
-# via Garrett Wollman (2003-01-27):
-# BTW, I've found the official document on this matter. It's goverment
-# regulations number 509, May 13, 1996. In my poor translation it says:
-# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
-# of March at 3am the time is changing to 4am and each last Sunday of
-# October the time at 4am is changing to 3am"
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# Most of Ukraine since 1970 has been like Kiev.
-# "Kyiv" is the transliteration of the Ukrainian name, but
-# "Kiev" is more common in English.
-Zone Europe/Kiev	2:02:04 -	LMT	1880
-			2:02:04	-	KMT	1924 May  2 # Kiev Mean Time
-			2:00	-	EET	1930 Jun 21
-			3:00	-	MSK	1941 Sep 20
-			1:00	C-Eur	CE%sT	1943 Nov  6
-			3:00	Russia	MSK/MSD	1990
-			3:00	-	MSK	1990 Jul  1 2:00
-			2:00	-	EET	1992
-			2:00	E-Eur	EE%sT	1995
-			2:00	EU	EE%sT
-# Ruthenia used CET 1990/1991.
-# "Uzhhorod" is the transliteration of the Ukrainian name, but
-# "Uzhgorod" is more common in English.
-Zone Europe/Uzhgorod	1:29:12 -	LMT	1890 Oct
-			1:00	-	CET	1940
-			1:00	C-Eur	CE%sT	1944 Oct
-			1:00	1:00	CEST	1944 Oct 26
-			1:00	-	CET	1945 Jun 29
-			3:00	Russia	MSK/MSD	1990
-			3:00	-	MSK	1990 Jul  1 2:00
-			1:00	-	CET	1991 Mar 31 3:00
-			2:00	-	EET	1992
-			2:00	E-Eur	EE%sT	1995
-			2:00	EU	EE%sT
-# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
-# "Zaporizhia" is the transliteration of the Ukrainian name, but
-# "Zaporozh'ye" is more common in English.  Use the common English
-# spelling, except omit the apostrophe as it is not allowed in
-# portable Posix file names.
-Zone Europe/Zaporozhye	2:20:40 -	LMT	1880
-			2:20	-	CUT	1924 May  2 # Central Ukraine T
-			2:00	-	EET	1930 Jun 21
-			3:00	-	MSK	1941 Aug 25
-			1:00	C-Eur	CE%sT	1943 Oct 25
-			3:00	Russia	MSK/MSD	1991 Mar 31 2:00
-			2:00	E-Eur	EE%sT	1995
-			2:00	EU	EE%sT
-# Central Crimea used Moscow time 1994/1997.
-Zone Europe/Simferopol	2:16:24 -	LMT	1880
-			2:16	-	SMT	1924 May  2 # Simferopol Mean T
-			2:00	-	EET	1930 Jun 21
-			3:00	-	MSK	1941 Nov
-			1:00	C-Eur	CE%sT	1944 Apr 13
-			3:00	Russia	MSK/MSD	1990
-			3:00	-	MSK	1990 Jul  1 2:00
-			2:00	-	EET	1992
-# From Paul Eggert (2006-03-22):
-# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
-# from Kiev to Moscow time sometime after the January 1994 elections.
-# Shanks (1999) says ``date of change uncertain'', but implies that it happened
-# sometime between the 1994 DST switches.  Shanks & Pottenger simply say
-# 1994-09-25 03:00, but that can't be right.  For now, guess it
-# changed in May.
-			2:00	E-Eur	EE%sT	1994 May
-# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
-			3:00	E-Eur	MSK/MSD	1996 Mar 31 3:00s
-			3:00	1:00	MSD	1996 Oct 27 3:00s
-# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
-# Assume it happened in March by not changing the clocks.
-			3:00	Russia	MSK/MSD	1997
-			3:00	-	MSK	1997 Mar lastSun 1:00u
-			2:00	EU	EE%sT
-
-###############################################################################
-
-# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
-# the last Sunday in March to the last Sunday in September in 1986.
-# The source shows Romania changing a day later than everybody else.
-#
-# According to Bernard Sieloff's source, Poland is in the MET time zone but
-# uses the WE DST rules.  The Western USSR uses EET+1 and ME DST rules.
-# Bernard Sieloff's source claims Romania switches on the same day, but at
-# 00:00 standard time (i.e., 01:00 DST).  It also claims that Turkey
-# switches on the same day, but switches on at 01:00 standard time
-# and off at 00:00 standard time (i.e., 01:00 DST)
-
-# ...
-# Date: Wed, 28 Jan 87 16:56:27 -0100
-# From: Tom Hofmann
-# ...
-#
-# ...the European time rules are...standardized since 1981, when
-# most European coun[tr]ies started DST.  Before that year, only
-# a few countries (UK, France, Italy) had DST, each according
-# to own national rules.  In 1981, however, DST started on
-# 'Apr firstSun', and not on 'Mar lastSun' as in the following
-# years...
-# But also since 1981 there are some more national exceptions
-# than listed in 'europe': Switzerland, for example, joined DST
-# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
-# lastSun' in 1981---I don't know how they handle now.
-#
-# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
-# Soviet Union (as far as I know).
-#
-# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,
-# 4002 Basle, Switzerland
-# ...
-
-# ...
-# Date: Wed, 4 Feb 87 22:35:22 +0100
-# From: Dik T. Winter
-# ...
-#
-# The information from Tom Hofmann is (as far as I know) not entirely correct.
-# After a request from chongo at amdahl I tried to retrieve all information
-# about DST in Europe.  I was able to find all from about 1969.
-#
-# ...standardization on DST in Europe started in about 1977 with switches on
-# first Sunday in April and last Sunday in September...
-# In 1981 UK joined Europe insofar that
-# the starting day for both shifted to last Sunday in March.  And from 1982
-# the whole of Europe used DST, with switch dates April 1 and October 1 in
-# the Sov[i]et Union.  In 1985 the SU reverted to standard Europe[a]n switch
-# dates...
-#
-# It should also be remembered that time-zones are not constants; e.g.
-# Portugal switched in 1976 from MET (or CET) to WET with DST...
-# Note also that though there were rules for switch dates not
-# all countries abided to these dates, and many individual deviations
-# occurred, though not since 1982 I believe.  Another note: it is always
-# assumed that DST is 1 hour ahead of normal time, this need not be the
-# case; at least in the Netherlands there have been times when DST was 2 hours
-# in advance of normal time.
-#
-# ...
-# dik t. winter, cwi, amsterdam, nederland
-# ...
-
-# From Bob Devine (1988-01-28):
-# ...
-# Greece: Last Sunday in April to last Sunday in September (iffy on dates).
-# Since 1978.  Change at midnight.
-# ...
-# Monaco: has same DST as France.
-# ...
diff --git a/bin/glibc-2.7/timezone/factory b/bin/glibc-2.7/timezone/factory
deleted file mode 100644
index 946063c0..00000000
--- a/bin/glibc-2.7/timezone/factory
+++ /dev/null
@@ -1,8 +0,0 @@
-# @(#)factory	8.1
-
-# For companies who don't want to put time zone specification in
-# their installation procedures.  When users run date, they'll get the message.
-# Also useful for the "comp.sources" version.
-
-# Zone	NAME	GMTOFF	RULES	FORMAT
-Zone	Factory	0	- "Local time zone must be set--see zic manual page"
diff --git a/bin/glibc-2.7/timezone/ialloc.c b/bin/glibc-2.7/timezone/ialloc.c
deleted file mode 100644
index 1fc2035f..00000000
--- a/bin/glibc-2.7/timezone/ialloc.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-** This file is in the public domain, so clarified as of
-** 2006-07-17 by Arthur David Olson.
-*/
-
-#ifndef lint
-#ifndef NOID
-static char	elsieid[] = "@(#)ialloc.c	8.30";
-#endif /* !defined NOID */
-#endif /* !defined lint */
-
-/*LINTLIBRARY*/
-
-#include "private.h"
-
-#define nonzero(n)	(((n) == 0) ? 1 : (n))
-
-char *
-imalloc(n)
-const int	n;
-{
-	return malloc((size_t) nonzero(n));
-}
-
-char *
-icalloc(nelem, elsize)
-int	nelem;
-int	elsize;
-{
-	if (nelem == 0 || elsize == 0)
-		nelem = elsize = 1;
-	return calloc((size_t) nelem, (size_t) elsize);
-}
-
-void *
-irealloc(pointer, size)
-void * const	pointer;
-const int	size;
-{
-	if (pointer == NULL)
-		return imalloc(size);
-	return realloc((void *) pointer, (size_t) nonzero(size));
-}
-
-char *
-icatalloc(old, new)
-char * const		old;
-const char * const	new;
-{
-	register char *	result;
-	register int	oldsize, newsize;
-
-	newsize = (new == NULL) ? 0 : strlen(new);
-	if (old == NULL)
-		oldsize = 0;
-	else if (newsize == 0)
-		return old;
-	else	oldsize = strlen(old);
-	if ((result = irealloc(old, oldsize + newsize + 1)) != NULL)
-		if (new != NULL)
-			(void) strcpy(result + oldsize, new);
-	return result;
-}
-
-char *
-icpyalloc(string)
-const char * const	string;
-{
-	return icatalloc((char *) NULL, string);
-}
-
-void
-ifree(p)
-char * const	p;
-{
-	if (p != NULL)
-		(void) free(p);
-}
-
-void
-icfree(p)
-char * const	p;
-{
-	if (p != NULL)
-		(void) free(p);
-}
diff --git a/bin/glibc-2.7/timezone/iso3166.tab b/bin/glibc-2.7/timezone/iso3166.tab
deleted file mode 100644
index 0e985e95..00000000
--- a/bin/glibc-2.7/timezone/iso3166.tab
+++ /dev/null
@@ -1,267 +0,0 @@
-# ISO 3166 alpha-2 country codes
-#
-# @(#)iso3166.tab	8.4
-#
-# From Paul Eggert (2006-09-27):
-#
-# This file contains a table with the following columns:
-# 1.  ISO 3166-1 alpha-2 country code, current as of
-#     ISO 3166-1 Newsletter No. V-12 (2006-09-26).  See:
-#     
-#     ISO 3166 Maintenance agency (ISO 3166/MA)
-#     .
-# 2.  The usual English name for the country,
-#     chosen so that alphabetic sorting of subsets produces helpful lists.
-#     This is not the same as the English name in the ISO 3166 tables.
-#
-# Columns are separated by a single tab.
-# The table is sorted by country code.
-#
-# Lines beginning with `#' are comments.
-#
-#country-
-#code	country name
-AD	Andorra
-AE	United Arab Emirates
-AF	Afghanistan
-AG	Antigua & Barbuda
-AI	Anguilla
-AL	Albania
-AM	Armenia
-AN	Netherlands Antilles
-AO	Angola
-AQ	Antarctica
-AR	Argentina
-AS	Samoa (American)
-AT	Austria
-AU	Australia
-AW	Aruba
-AX	Aaland Islands
-AZ	Azerbaijan
-BA	Bosnia & Herzegovina
-BB	Barbados
-BD	Bangladesh
-BE	Belgium
-BF	Burkina Faso
-BG	Bulgaria
-BH	Bahrain
-BI	Burundi
-BJ	Benin
-BM	Bermuda
-BN	Brunei
-BO	Bolivia
-BR	Brazil
-BS	Bahamas
-BT	Bhutan
-BV	Bouvet Island
-BW	Botswana
-BY	Belarus
-BZ	Belize
-CA	Canada
-CC	Cocos (Keeling) Islands
-CD	Congo (Dem. Rep.)
-CF	Central African Rep.
-CG	Congo (Rep.)
-CH	Switzerland
-CI	Cote d'Ivoire
-CK	Cook Islands
-CL	Chile
-CM	Cameroon
-CN	China
-CO	Colombia
-CR	Costa Rica
-CU	Cuba
-CV	Cape Verde
-CX	Christmas Island
-CY	Cyprus
-CZ	Czech Republic
-DE	Germany
-DJ	Djibouti
-DK	Denmark
-DM	Dominica
-DO	Dominican Republic
-DZ	Algeria
-EC	Ecuador
-EE	Estonia
-EG	Egypt
-EH	Western Sahara
-ER	Eritrea
-ES	Spain
-ET	Ethiopia
-FI	Finland
-FJ	Fiji
-FK	Falkland Islands
-FM	Micronesia
-FO	Faroe Islands
-FR	France
-GA	Gabon
-GB	Britain (UK)
-GD	Grenada
-GE	Georgia
-GF	French Guiana
-GG	Guernsey
-GH	Ghana
-GI	Gibraltar
-GL	Greenland
-GM	Gambia
-GN	Guinea
-GP	Guadeloupe
-GQ	Equatorial Guinea
-GR	Greece
-GS	South Georgia & the South Sandwich Islands
-GT	Guatemala
-GU	Guam
-GW	Guinea-Bissau
-GY	Guyana
-HK	Hong Kong
-HM	Heard Island & McDonald Islands
-HN	Honduras
-HR	Croatia
-HT	Haiti
-HU	Hungary
-ID	Indonesia
-IE	Ireland
-IL	Israel
-IM	Isle of Man
-IN	India
-IO	British Indian Ocean Territory
-IQ	Iraq
-IR	Iran
-IS	Iceland
-IT	Italy
-JE	Jersey
-JM	Jamaica
-JO	Jordan
-JP	Japan
-KE	Kenya
-KG	Kyrgyzstan
-KH	Cambodia
-KI	Kiribati
-KM	Comoros
-KN	St Kitts & Nevis
-KP	Korea (North)
-KR	Korea (South)
-KW	Kuwait
-KY	Cayman Islands
-KZ	Kazakhstan
-LA	Laos
-LB	Lebanon
-LC	St Lucia
-LI	Liechtenstein
-LK	Sri Lanka
-LR	Liberia
-LS	Lesotho
-LT	Lithuania
-LU	Luxembourg
-LV	Latvia
-LY	Libya
-MA	Morocco
-MC	Monaco
-MD	Moldova
-ME	Montenegro
-MG	Madagascar
-MH	Marshall Islands
-MK	Macedonia
-ML	Mali
-MM	Myanmar (Burma)
-MN	Mongolia
-MO	Macau
-MP	Northern Mariana Islands
-MQ	Martinique
-MR	Mauritania
-MS	Montserrat
-MT	Malta
-MU	Mauritius
-MV	Maldives
-MW	Malawi
-MX	Mexico
-MY	Malaysia
-MZ	Mozambique
-NA	Namibia
-NC	New Caledonia
-NE	Niger
-NF	Norfolk Island
-NG	Nigeria
-NI	Nicaragua
-NL	Netherlands
-NO	Norway
-NP	Nepal
-NR	Nauru
-NU	Niue
-NZ	New Zealand
-OM	Oman
-PA	Panama
-PE	Peru
-PF	French Polynesia
-PG	Papua New Guinea
-PH	Philippines
-PK	Pakistan
-PL	Poland
-PM	St Pierre & Miquelon
-PN	Pitcairn
-PR	Puerto Rico
-PS	Palestine
-PT	Portugal
-PW	Palau
-PY	Paraguay
-QA	Qatar
-RE	Reunion
-RO	Romania
-RS	Serbia
-RU	Russia
-RW	Rwanda
-SA	Saudi Arabia
-SB	Solomon Islands
-SC	Seychelles
-SD	Sudan
-SE	Sweden
-SG	Singapore
-SH	St Helena
-SI	Slovenia
-SJ	Svalbard & Jan Mayen
-SK	Slovakia
-SL	Sierra Leone
-SM	San Marino
-SN	Senegal
-SO	Somalia
-SR	Suriname
-ST	Sao Tome & Principe
-SV	El Salvador
-SY	Syria
-SZ	Swaziland
-TC	Turks & Caicos Is
-TD	Chad
-TF	French Southern & Antarctic Lands
-TG	Togo
-TH	Thailand
-TJ	Tajikistan
-TK	Tokelau
-TL	East Timor
-TM	Turkmenistan
-TN	Tunisia
-TO	Tonga
-TR	Turkey
-TT	Trinidad & Tobago
-TV	Tuvalu
-TW	Taiwan
-TZ	Tanzania
-UA	Ukraine
-UG	Uganda
-UM	US minor outlying islands
-US	United States
-UY	Uruguay
-UZ	Uzbekistan
-VA	Vatican City
-VC	St Vincent
-VE	Venezuela
-VG	Virgin Islands (UK)
-VI	Virgin Islands (US)
-VN	Vietnam
-VU	Vanuatu
-WF	Wallis & Futuna
-WS	Samoa (western)
-YE	Yemen
-YT	Mayotte
-ZA	South Africa
-ZM	Zambia
-ZW	Zimbabwe
diff --git a/bin/glibc-2.7/timezone/leapseconds b/bin/glibc-2.7/timezone/leapseconds
deleted file mode 100644
index 583451e4..00000000
--- a/bin/glibc-2.7/timezone/leapseconds
+++ /dev/null
@@ -1,82 +0,0 @@
-# @(#)leapseconds	8.4
-
-# Allowance for leapseconds added to each timezone file.
-
-# The International Earth Rotation Service periodically uses leap seconds
-# to keep UTC to within 0.9 s of UT1
-# (which measures the true angular orientation of the earth in space); see
-# Terry J Quinn, The BIPM and the accurate measure of time,
-# Proc IEEE 79, 7 (July 1991), 894-905.
-# There were no leap seconds before 1972, because the official mechanism
-# accounting for the discrepancy between atomic time and the earth's rotation
-# did not exist until the early 1970s.
-
-# The correction (+ or -) is made at the given time, so lines
-# will typically look like:
-#	Leap	YEAR	MON	DAY	23:59:60	+	R/S
-# or
-#	Leap	YEAR	MON	DAY	23:59:59	-	R/S
-
-# If the leapsecond is Rolling (R) the given time is local time
-# If the leapsecond is Stationary (S) the given time is UTC
-
-# Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
-Leap	1972	Jun	30	23:59:60	+	S
-Leap	1972	Dec	31	23:59:60	+	S
-Leap	1973	Dec	31	23:59:60	+	S
-Leap	1974	Dec	31	23:59:60	+	S
-Leap	1975	Dec	31	23:59:60	+	S
-Leap	1976	Dec	31	23:59:60	+	S
-Leap	1977	Dec	31	23:59:60	+	S
-Leap	1978	Dec	31	23:59:60	+	S
-Leap	1979	Dec	31	23:59:60	+	S
-Leap	1981	Jun	30	23:59:60	+	S
-Leap	1982	Jun	30	23:59:60	+	S
-Leap	1983	Jun	30	23:59:60	+	S
-Leap	1985	Jun	30	23:59:60	+	S
-Leap	1987	Dec	31	23:59:60	+	S
-Leap	1989	Dec	31	23:59:60	+	S
-Leap	1990	Dec	31	23:59:60	+	S
-Leap	1992	Jun	30	23:59:60	+	S
-Leap	1993	Jun	30	23:59:60	+	S
-Leap	1994	Jun	30	23:59:60	+	S
-Leap	1995	Dec	31	23:59:60	+	S
-Leap	1997	Jun	30	23:59:60	+	S
-Leap	1998	Dec	31	23:59:60	+	S
-Leap	2005	Dec	31	23:59:60	+	S
-
-# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
-# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
-#
-# SERVICE DE LA ROTATION TERRESTRE
-# OBSERVATOIRE DE PARIS
-# 61, Av. de l'Observatoire 75014 PARIS (France)
-# Tel.      : 33 (0) 1 40 51 22 26
-# FAX       : 33 (0) 1 40 51 22 91
-# Internet  : services.iers@obspm.fr
-#
-# Paris, 28 June 2007
-#
-# Bulletin C 34
-#
-# To authorities responsible
-# for the measurement and
-# distribution of time
-#
-# INFORMATION ON UTC - TAI
-#
-# NO positive leap second will be introduced at the end of December 2007.
-# The difference between Coordinated Universal Time UTC and the
-# International Atomic Time TAI is :		
-#
-# from 2006 January 1, 0h UTC, until further notice : UTC-TAI = -33 s
-#
-# Leap seconds can be introduced in UTC at the end of the months of December
-# or June,  depending on the evolution of UT1-TAI. Bulletin C is mailed every
-# six months, either to announce a time step in UTC, or to confirm that there
-# will be no time step at the next possible date.
-#
-# Daniel GAMBIS
-# Director			
-# Earth Orientation Center of IERS
-# Observatoire de Paris, France
diff --git a/bin/glibc-2.7/timezone/northamerica b/bin/glibc-2.7/timezone/northamerica
deleted file mode 100644
index 73e13a52..00000000
--- a/bin/glibc-2.7/timezone/northamerica
+++ /dev/null
@@ -1,2584 +0,0 @@
-# @(#)northamerica	8.18
-# 
-
-# also includes Central America and the Caribbean
-
-# This data is by no means authoritative; if you think you know better,
-# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
-
-# From Paul Eggert (1999-03-22):
-# A reliable and entertaining source about time zones is
-# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
-
-###############################################################################
-
-# United States
-
-# From Paul Eggert (1999-03-31):
-# Howse writes (pp 121-125) that time zones were invented by
-# Professor Charles Ferdinand Dowd (1825-1904),
-# Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).
-# His pamphlet ``A System of National Time for Railroads'' (1870)
-# was the result of his proposals at the Convention of Railroad Trunk Lines
-# in New York City (1869-10).  His 1870 proposal was based on Washington, DC,
-# but in 1872-05 he moved the proposed origin to Greenwich.
-# His proposal was adopted by the railroads on 1883-11-18 at 12:00,
-# and the most of the country soon followed suit.
-
-# From Paul Eggert (2005-04-16):
-# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
-# See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005).
-
-# From Paul Eggert (2006-03-22):
-# A good source for time zone historical data in the US is
-# Thomas G. Shanks, The American Atlas (5th edition),
-# San Diego: ACS Publications, Inc. (1991).
-# Make sure you have the errata sheet; the book is somewhat useless without it.
-# It is the source for most of the pre-1991 US entries below.
-
-# From Paul Eggert (2001-03-06):
-# Daylight Saving Time was first suggested as a joke by Benjamin Franklin
-# in his whimsical essay ``An Economical Project for Diminishing the Cost
-# of Light'' published in the Journal de Paris (1784-04-26).
-# Not everyone is happy with the results:
-#
-#	I don't really care how time is reckoned so long as there is some
-#	agreement about it, but I object to being told that I am saving
-#	daylight when my reason tells me that I am doing nothing of the kind.
-#	I even object to the implication that I am wasting something
-#	valuable if I stay in bed after the sun has risen.  As an admirer
-#	of moonlight I resent the bossy insistence of those who want to
-#	reduce my time for enjoying it.  At the back of the Daylight Saving
-#	scheme I detect the bony, blue-fingered hand of Puritanism, eager
-#	to push people into bed earlier, and get them up earlier, to make
-#	them healthy, wealthy and wise in spite of themselves.
-#
-#	-- Robertson Davies, The diary of Samuel Marchbanks,
-#	   Clarke, Irwin (1947), XIX, Sunday
-#
-# For more about the first ten years of DST in the United States, see
-# Robert Garland's 
-# Ten years of daylight saving from the Pittsburgh standpoint
-# (Carnegie Library of Pittsburgh, 1927).
-#
-# Shanks says that DST was called "War Time" in the US in 1918 and 1919.
-# However, DST was imposed by the Standard Time Act of 1918, which
-# was the first nationwide legal time standard, and apparently
-# time was just called "Standard Time" or "Daylight Saving Time".
-
-# From Arthur David Olson:
-# US Daylight Saving Time ended on the last Sunday of *October* in 1974.
-# See, for example, the front page of the Saturday, 1974-10-26
-# and Sunday, 1974-10-27 editions of the Washington Post.
-
-# From Arthur David Olson:
-# Before the Uniform Time Act of 1966 took effect in 1967, observance of
-# Daylight Saving Time in the US was by local option, except during wartime.
-
-# From Arthur David Olson (2000-09-25):
-# Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
-# In the introduction, Oboler spoke of "Eastern Peace Time."
-# An AltaVista search turned up
-# :
-# "When the time is announced over the radio now, it is 'Eastern Peace
-# Time' instead of the old familiar 'Eastern War Time.'  Peace is wonderful."
-#  (August 1945) by way of confirmation.
-
-# From Joseph Gallant citing
-# George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
-# At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set
-# to switch to London for Attlee's address, but the American people
-# never got to hear his speech live. According to one press account,
-# CBS' Bob Trout was first to announce the word of Japan's surrender,
-# but a few seconds later, NBC, ABC and Mutual also flashed the word
-# of surrender, all of whom interrupting the bells of Big Ben in
-# London which were to precede Mr. Attlee's speech.
-
-# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout.  From
-# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
-#
-# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
-# Any announcement from Asia would reach St. John's New York newsroom on a
-# wire service teletype machine, which had prescribed signals for major news.
-# Associated Press, for example, would ring five bells before spewing out
-# typed copy of an important story, and 10 bells for news "of transcendental
-# importance."
-#
-# On Aug. 14, stalling while talking steadily into the NBC networks' open
-# microphone, St. John heard five bells and waited only to hear a sixth bell,
-# before announcing confidently: "Ladies and gentlemen, World War II is over.
-# The Japanese have agreed to our surrender terms."
-#
-# He had scored a 20-second scoop on other broadcasters.
-
-# From Arthur David Olson (2005-08-22):
-# Paul has been careful to use the "US" rules only in those locations
-# that are part of the United States; this reflects the real scope of
-# U.S. government action.  So even though the "US" rules have changed
-# in the latest release, other countries won't be affected.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	US	1918	1919	-	Mar	lastSun	2:00	1:00	D
-Rule	US	1918	1919	-	Oct	lastSun	2:00	0	S
-Rule	US	1942	only	-	Feb	9	2:00	1:00	W # War
-Rule	US	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	US	1945	only	-	Sep	30	2:00	0	S
-Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
-Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
-Rule	US	1974	only	-	Jan	6	2:00	1:00	D
-Rule	US	1975	only	-	Feb	23	2:00	1:00	D
-Rule	US	1976	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	US	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
-Rule	US	2007	max	-	Mar	Sun>=8	2:00	1:00	D
-Rule	US	2007	max	-	Nov	Sun>=1	2:00	0	S
-
-# From Arthur David Olson, 2005-12-19
-# We generate the files specified below to guard against old files with
-# obsolete information being left in the time zone binary directory.
-# We limit the list to names that have appeared in previous versions of
-# this time zone package.
-# We do these as separate Zones rather than as Links to avoid problems if
-# a particular place changes whether it observes DST.
-# We put these specifications here in the northamerica file both to
-# increase the chances that they'll actually get compiled and to
-# avoid the need to duplicate the US rules in another file.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	EST		 -5:00	-	EST
-Zone	MST		 -7:00	-	MST
-Zone	HST		-10:00	-	HST
-Zone	EST5EDT		 -5:00	US	E%sT
-Zone	CST6CDT		 -6:00	US	C%sT
-Zone	MST7MDT		 -7:00	US	M%sT
-Zone	PST8PDT		 -8:00	US	P%sT
-
-# From Bob Devine (1988-01-28):
-# ...Alaska (and Hawaii) had the timezone names changed in 1967.
-#    old			 new
-#    Pacific Standard Time(PST)  -same-
-#    Yukon Standard Time(YST)    -same-
-#    Central Alaska S.T. (CAT)   Alaska-Hawaii St[an]dard Time (AHST)
-#    Nome Standard Time (NT)     Bering Standard Time (BST)
-#
-# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.
-#    The YST zone now covers nearly all of the state, AHST just part
-#    of the Aleutian islands.   No DST.
-
-# From Paul Eggert (1995-12-19):
-# The tables below use `NST', not `NT', for Nome Standard Time.
-# I invented `CAWT' for Central Alaska War Time.
-
-# From U. S. Naval Observatory (1989-01-19):
-# USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
-# USA  EASTERN       4 H  BEHIND UTC    APR 3 - OCT 30
-# USA  CENTRAL       6 H  BEHIND UTC    CHICAGO, HOUSTON
-# USA  CENTRAL       5 H  BEHIND UTC    APR 3 - OCT 30
-# USA  MOUNTAIN      7 H  BEHIND UTC    DENVER
-# USA  MOUNTAIN      6 H  BEHIND UTC    APR 3 - OCT 30
-# USA  PACIFIC       8 H  BEHIND UTC    L.A., SAN FRANCISCO
-# USA  PACIFIC       7 H  BEHIND UTC    APR 3 - OCT 30
-# USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
-# USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
-# USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
-# USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
-# USA  HAWAII       10 H  BEHIND UTC
-# USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
-
-# From Arthur David Olson (1989-01-21):
-# The above dates are for 1988.
-# Note the "AKST" and "AKDT" abbreviations, the claim that there's
-# no DST in Samoa, and the claim that there is DST in Alaska and the
-# Aleutians.
-
-# From Arthur David Olson (1988-02-13):
-# Legal standard time zone names, from United States Code (1982 Edition and
-# Supplement III), Title 15, Chapter 6, Section 260 and forward.  First, names
-# up to 1967-04-01 (when most provisions of the Uniform Time Act of 1966
-# took effect), as explained in sections 263 and 261:
-#	(none)
-#	United States standard eastern time
-#	United States standard mountain time
-#	United States standard central time
-#	United States standard Pacific time
-#	(none)
-#	United States standard Alaska time
-#	(none)
-# Next, names from 1967-04-01 until 1983-11-30 (the date for
-# public law 98-181):
-#	Atlantic standard time
-#	eastern standard time
-#	central standard time
-#	mountain standard time
-#	Pacific standard time
-#	Yukon standard time
-#	Alaska-Hawaii standard time
-#	Bering standard time
-# And after 1983-11-30:
-#	Atlantic standard time
-#	eastern standard time
-#	central standard time
-#	mountain standard time
-#	Pacific standard time
-#	Alaska standard time
-#	Hawaii-Aleutian standard time
-#	Samoa standard time
-# The law doesn't give abbreviations.
-#
-# From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
-# Public law 106-564 (2000-12-23) introduced the abbreviation
-# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
-# See the file "australasia".
-
-# From Arthur David Olson, 2005-08-09
-# The following was signed into law on 2005-08-08.
-#
-# H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
-#   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
-#   U.S.C. 260a(a)) is amended--
-#     (1) by striking `first Sunday of April' and inserting `second
-#     Sunday of March'; and
-#     (2) by striking `last Sunday of October' and inserting `first
-#     Sunday of November'.
-#   (b) Effective Date- Subsection (a) shall take effect 1 year after the
-#   date of enactment of this Act or March 1, 2007, whichever is later.
-#   (c) Report to Congress- Not later than 9 months after the effective
-#   date stated in subsection (b), the Secretary shall report to Congress
-#   on the impact of this section on energy consumption in the United
-#   States.
-#   (d) Right to Revert- Congress retains the right to revert the
-#   Daylight Saving Time back to the 2005 time schedules once the
-#   Department study is complete.
-
-# US eastern time, represented by New York
-
-# Connecticut, Delaware, District of Columbia, most of Florida,
-# Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky
-# (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts,
-# New Hampshire, New Jersey, New York, North Carolina, Ohio,
-# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
-# Vermont, Virginia, West Virginia
-
-# From Dave Cantor (2004-11-02):
-# Early this summer I had the occasion to visit the Mount Washington
-# Observatory weather station atop (of course!) Mount Washington [, NH]....
-# One of the staff members said that the station was on Eastern Standard Time
-# and didn't change their clocks for Daylight Saving ... so that their
-# reports will always have times which are 5 hours behind UTC.
-
-# From Paul Eggert (2005-08-26):
-# According to today's Huntsville Times
-# 
-# a few towns on Alabama's "eastern border with Georgia, such as Phenix City
-# in Russell County, Lanett in Chambers County and some towns in Lee County,
-# set their watches and clocks on Eastern time."  It quotes H.H. "Bubba"
-# Roberts, city administrator in Phenix City. as saying "We are in the Central
-# time zone, but we do go by the Eastern time zone because so many people work
-# in Columbus."
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	NYC	1920	only	-	Mar	lastSun	2:00	1:00	D
-Rule	NYC	1920	only	-	Oct	lastSun	2:00	0	S
-Rule	NYC	1921	1966	-	Apr	lastSun	2:00	1:00	D
-Rule	NYC	1921	1954	-	Sep	lastSun	2:00	0	S
-Rule	NYC	1955	1966	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/New_York	-4:56:02 -	LMT	1883 Nov 18 12:03:58
-			-5:00	US	E%sT	1920
-			-5:00	NYC	E%sT	1942
-			-5:00	US	E%sT	1946
-			-5:00	NYC	E%sT	1967
-			-5:00	US	E%sT
-
-# US central time, represented by Chicago
-
-# Alabama, Arkansas, Florida panhandle (Bay, Calhoun, Escambia,
-# Gulf, Holmes, Jackson, Okaloosa, Santa Rosa, Walton, and
-# Washington counties), Illinois, western Indiana
-# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
-# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
-# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
-# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
-# western Tennessee, most of Texas, Wisconsin
-
-# From Larry M. Smith (2006-04-26) re Wisconsin:
-# http://www.legis.state.wi.us/statutes/Stat0175.pdf ...
-# is currently enforced at the 01:00 time of change.  Because the local
-# "bar time" in the state corresponds to 02:00, a number of citations
-# are issued for the "sale of class 'B' alcohol after prohibited
-# hours" within the deviated hour of this change every year....
-#
-# From Douglas R. Bomberg (2007-03-12):
-# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI
-# Statue 175 closer in synch with the US Congress' intent....
-# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Chicago	1920	only	-	Jun	13	2:00	1:00	D
-Rule	Chicago	1920	1921	-	Oct	lastSun	2:00	0	S
-Rule	Chicago	1921	only	-	Mar	lastSun	2:00	1:00	D
-Rule	Chicago	1922	1966	-	Apr	lastSun	2:00	1:00	D
-Rule	Chicago	1922	1954	-	Sep	lastSun	2:00	0	S
-Rule	Chicago	1955	1966	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Chicago	-5:50:36 -	LMT	1883 Nov 18 12:09:24
-			-6:00	US	C%sT	1920
-			-6:00	Chicago	C%sT	1936 Mar  1 2:00
-			-5:00	-	EST	1936 Nov 15 2:00
-			-6:00	Chicago	C%sT	1942
-			-6:00	US	C%sT	1946
-			-6:00	Chicago	C%sT	1967
-			-6:00	US	C%sT
-# Oliver County, ND switched from mountain to central time on 1992-10-25.
-Zone America/North_Dakota/Center -6:45:12 - LMT	1883 Nov 18 12:14:48
-			-7:00	US	M%sT	1992 Oct 25 02:00
-			-6:00	US	C%sT
-# Morton County, ND, switched from mountain to central time on
-# 2003-10-26, except for the area around Mandan which was already central time.
-# See .
-# Officially this switch also included part of Sioux County, and
-# Jones, Mellette, and Todd Counties in South Dakota;
-# but in practice these other counties were already observing central time.
-# See .
-Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
-			-7:00	US	M%sT	2003 Oct 26 02:00
-			-6:00	US	C%sT
-
-# US mountain time, represented by Denver
-#
-# Colorado, far western Kansas, Montana, western
-# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
-# New Mexico, southwestern North Dakota,
-# western South Dakota, far western Texas (El Paso County, Hudspeth County,
-# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Denver	1920	1921	-	Mar	lastSun	2:00	1:00	D
-Rule	Denver	1920	only	-	Oct	lastSun	2:00	0	S
-Rule	Denver	1921	only	-	May	22	2:00	0	S
-Rule	Denver	1965	1966	-	Apr	lastSun	2:00	1:00	D
-Rule	Denver	1965	1966	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Denver	-6:59:56 -	LMT	1883 Nov 18 12:00:04
-			-7:00	US	M%sT	1920
-			-7:00	Denver	M%sT	1942
-			-7:00	US	M%sT	1946
-			-7:00	Denver	M%sT	1967
-			-7:00	US	M%sT
-
-# US Pacific time, represented by Los Angeles
-#
-# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
-# and the northern three-quarters of Idaho county),
-# most of Nevada, most of Oregon, and Washington
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	CA	1948	only	-	Mar	14	2:00	1:00	D
-Rule	CA	1949	only	-	Jan	 1	2:00	0	S
-Rule	CA	1950	1966	-	Apr	lastSun	2:00	1:00	D
-Rule	CA	1950	1961	-	Sep	lastSun	2:00	0	S
-Rule	CA	1962	1966	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Los_Angeles -7:52:58 -	LMT	1883 Nov 18 12:07:02
-			-8:00	US	P%sT	1946
-			-8:00	CA	P%sT	1967
-			-8:00	US	P%sT
-
-# Alaska
-# AK%sT is the modern abbreviation for -9:00 per USNO.
-#
-# From Paul Eggert (2001-05-30):
-# Howse writes that Alaska switched from the Julian to the Gregorian calendar,
-# and from east-of-GMT to west-of-GMT days, when the US bought it from Russia.
-# This was on 1867-10-18, a Friday; the previous day was 1867-10-06 Julian,
-# also a Friday.  Include only the time zone part of this transition,
-# ignoring the switch from Julian to Gregorian, since we can't represent
-# the Julian calendar.
-#
-# As far as we know, none of the exact locations mentioned below were
-# permanently inhabited in 1867 by anyone using either calendar.
-# (Yakutat was colonized by the Russians in 1799, but the settlement
-# was destroyed in 1805 by a Yakutat-kon war party.)  However, there
-# were nearby inhabitants in some cases and for our purposes perhaps
-# it's best to simply use the official transition.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
-			 -8:57:41 -	LMT	1900 Aug 20 12:00
-			 -8:00	-	PST	1942
-			 -8:00	US	P%sT	1946
-			 -8:00	-	PST	1969
-			 -8:00	US	P%sT	1983 Oct 30 2:00
-			 -9:00	US	Y%sT	1983 Nov 30
-			 -9:00	US	AK%sT
-Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
-			 -9:18:55 -	LMT	1900 Aug 20 12:00
-			 -9:00	-	YST	1942
-			 -9:00	US	Y%sT	1946
-			 -9:00	-	YST	1969
-			 -9:00	US	Y%sT	1983 Nov 30
-			 -9:00	US	AK%sT
-Zone America/Anchorage	 14:00:24 -	LMT	1867 Oct 18
-			 -9:59:36 -	LMT	1900 Aug 20 12:00
-			-10:00	-	CAT	1942
-			-10:00	US	CAT/CAWT 1945 Aug 14 23:00u
-			-10:00	US	CAT/CAPT 1946 # Peace
-			-10:00	-	CAT	1967 Apr
-			-10:00	-	AHST	1969
-			-10:00	US	AH%sT	1983 Oct 30 2:00
-			 -9:00	US	Y%sT	1983 Nov 30
-			 -9:00	US	AK%sT
-Zone America/Nome	 12:58:21 -	LMT	1867 Oct 18
-			-11:01:38 -	LMT	1900 Aug 20 12:00
-			-11:00	-	NST	1942
-			-11:00	US	N%sT	1946
-			-11:00	-	NST	1967 Apr
-			-11:00	-	BST	1969
-			-11:00	US	B%sT	1983 Oct 30 2:00
-			 -9:00	US	Y%sT	1983 Nov 30
-			 -9:00	US	AK%sT
-Zone America/Adak	 12:13:21 -	LMT	1867 Oct 18
-			-11:46:38 -	LMT	1900 Aug 20 12:00
-			-11:00	-	NST	1942
-			-11:00	US	N%sT	1946
-			-11:00	-	NST	1967 Apr
-			-11:00	-	BST	1969
-			-11:00	US	B%sT	1983 Oct 30 2:00
-			-10:00	US	AH%sT	1983 Nov 30
-			-10:00	US	HA%sT
-# The following switches don't quite make our 1970 cutoff.
-#
-# Shanks writes that part of southwest Alaska (e.g. Aniak)
-# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
-# and another part (e.g. Akiak) made the same switch five weeks later.
-#
-# From David Flater (2004-11-09):
-# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska
-# Historic Preservation Commission, provided this information, which
-# suggests that Unalaska deviated from statutory time from early 1967
-# possibly until 1983:
-#
-#  Minutes of the Unalaska City Council Meeting, January 10, 1967:
-#  "Except for St. Paul and Akutan, Unalaska is the only important
-#  location not on Alaska Standard Time.  The following resolution was
-#  made by William Robinson and seconded by Henry Swanson:  Be it
-#  resolved that the City of Unalaska hereby goes to Alaska Standard
-#  Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
-#  January 14, Alaska Standard Time.)  This resolution was passed with
-#  three votes for and one against."
-
-# Hawaii
-#
-# From Arthur David Olson:
-# And then there's Hawaii.
-# DST was observed for one day in 1933;
-# standard time was changed by half an hour in 1947;
-# it's always standard as of 1986.
-#
-# From Paul Eggert:
-# Shanks says the 1933 experiment lasted for three weeks.  Go with Shanks.
-#
-Zone Pacific/Honolulu	-10:31:26 -	LMT	1900 Jan  1 12:00
-			-10:30	-	HST	1933 Apr 30 2:00
-			-10:30	1:00	HDT	1933 May 21 2:00
-			-10:30	US	H%sT	1947 Jun  8 2:00
-			-10:00	-	HST
-
-# Now we turn to US areas that have diverged from the consensus since 1970.
-
-# Arizona mostly uses MST.
-
-# From Paul Eggert (2002-10-20):
-#
-# The information in the rest of this paragraph is derived from the
-# 
-# Daylight Saving Time web page (2002-01-23) maintained by the
-# Arizona State Library, Archives and Public Records.
-# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
-# time, but by federal law railroads, airlines, bus lines, military
-# personnel, and some engaged in interstate commerce continued to
-# observe war (i.e., daylight saving) time.  The 1944-03-17 Phoenix
-# Gazette says that was the date the law changed, and that 04-01 was
-# the date the state's clocks would change.  In 1945 the State of
-# Arizona used standard time all year, again with exceptions only as
-# mandated by federal law.  Arizona observed DST in 1967, but Arizona
-# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
-#
-# Shanks says the 1944 experiment came to an end on 1944-03-17.
-# Go with the Arizona State Library instead.
-
-Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
-			-7:00	US	M%sT	1944 Jan  1 00:01
-			-7:00	-	MST	1944 Apr  1 00:01
-			-7:00	US	M%sT	1944 Oct  1 00:01
-			-7:00	-	MST	1967
-			-7:00	US	M%sT	1968 Mar 21
-			-7:00	-	MST
-# From Arthur David Olson (1988-02-13):
-# A writer from the Inter Tribal Council of Arizona, Inc.,
-# notes in private correspondence dated 1987-12-28 that "Presently, only the
-# Navajo Nation participates in the Daylight Saving Time policy, due to its
-# large size and location in three states."  (The "only" means that other
-# tribal nations don't use DST.)
-
-Link America/Denver America/Shiprock
-
-# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,
-# Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
-# Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,
-# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
-# Teton, Twin Falls, Valley, Washington counties, and the southern
-# quarter of Idaho county) and eastern Oregon (most of Malheur County)
-# switched four weeks late in 1974.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
-			-8:00	US	P%sT	1923 May 13 2:00
-			-7:00	US	M%sT	1974
-			-7:00	-	MST	1974 Feb  3 2:00
-			-7:00	US	M%sT
-
-# Indiana
-#
-# For a map of Indiana's time zone regions, see:
-# 
-# What time is it in Indiana?
-#  (2006-03-01)
-#
-# From Paul Eggert (2007-08-17):
-# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
-# with the following exceptions:
-#
-# - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
-#   Vandenburgh, and Warrick counties have been like America/Chicago.
-#
-# - Dearborn and Ohio counties have been like America/New_York.
-#
-# - Clark, Floyd, and Harrison counties have been like
-#   America/Kentucky/Louisville.
-#
-# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,
-#   and Switzerland counties have their own time zone histories as noted below.
-#
-# Shanks partitioned Indiana into 345 regions, each with its own time history,
-# and wrote ``Even newspaper reports present contradictory information.''
-# Those Hoosiers!  Such a flighty and changeable people!
-# Fortunately, most of the complexity occurred before our cutoff date of 1970.
-#
-# Other than Indianapolis, the Indiana place names are so nondescript
-# that they would be ambiguous if we left them at the `America' level.
-# So we reluctantly put them all in a subdirectory `America/Indiana'.
-
-# From Paul Eggert (2005-08-16):
-# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
-
-# From Nathan Stratton Treadway (2006-03-30):
-# http://www.dot.gov/affairs/dot0406.htm [3705 B]
-# From Deborah Goldsmith (2006-01-18):
-# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
-# From Paul Eggert (2006-01-20):
-# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
-# Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
-# Eastern Time Zone to the Central Time Zone.... The effective date of
-# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
-# changeover date from standard time to Daylight Saving Time."
-# Strictly speaking, this means the affected counties will change their
-# clocks twice that night, but this obviously is in error.  The intent
-# is that 01:59:59 EST be followed by 02:00:00 CDT.
-
-# From Gwillim Law (2007-02-10):
-# The Associated Press has been reporting that Pulaski County, Indiana is
-# going to switch from Central to Eastern Time on March 11, 2007....
-# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule Indianapolis 1941	only	-	Jun	22	2:00	1:00	D
-Rule Indianapolis 1941	1954	-	Sep	lastSun	2:00	0	S
-Rule Indianapolis 1946	1954	-	Apr	lastSun	2:00	1:00	D
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
-			-6:00	US	C%sT	1920
-			-6:00 Indianapolis C%sT	1942
-			-6:00	US	C%sT	1946
-			-6:00 Indianapolis C%sT	1955 Apr 24 2:00
-			-5:00	-	EST	1957 Sep 29 2:00
-			-6:00	-	CST	1958 Apr 27 2:00
-			-5:00	-	EST	1969
-			-5:00	US	E%sT	1971
-			-5:00	-	EST	2006
-			-5:00	US	E%sT
-#
-# Eastern Crawford County, Indiana, left its clocks alone in 1974,
-# as well as from 1976 through 2005.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Marengo	1951	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Marengo	1951	only	-	Sep	lastSun	2:00	0	S
-Rule	Marengo	1954	1960	-	Apr	lastSun	2:00	1:00	D
-Rule	Marengo	1954	1960	-	Sep	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Marengo -5:45:23 -	LMT	1883 Nov 18 12:14:37
-			-6:00	US	C%sT	1951
-			-6:00	Marengo	C%sT	1961 Apr 30 2:00
-			-5:00	-	EST	1969
-			-5:00	US	E%sT	1974 Jan  6 2:00
-			-6:00	1:00	CDT	1974 Oct 27 2:00
-			-5:00	US	E%sT	1976
-			-5:00	-	EST	2006
-			-5:00	US	E%sT
-#
-# Daviess, Dubois, Knox, and Martin Counties, Indiana,
-# switched from eastern to central time in April 2006, then switched back
-# in November 2007.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule Vincennes	1946	only	-	Apr	lastSun	2:00	1:00	D
-Rule Vincennes	1946	only	-	Sep	lastSun	2:00	0	S
-Rule Vincennes	1953	1954	-	Apr	lastSun	2:00	1:00	D
-Rule Vincennes	1953	1959	-	Sep	lastSun	2:00	0	S
-Rule Vincennes	1955	only	-	May	 1	0:00	1:00	D
-Rule Vincennes	1956	1963	-	Apr	lastSun	2:00	1:00	D
-Rule Vincennes	1960	only	-	Oct	lastSun	2:00	0	S
-Rule Vincennes	1961	only	-	Sep	lastSun	2:00	0	S
-Rule Vincennes	1962	1963	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Vincennes -5:50:07 - LMT	1883 Nov 18 12:09:53
-			-6:00	US	C%sT	1946
-			-6:00 Vincennes	C%sT	1964 Apr 26 2:00
-			-5:00	-	EST	1969
-			-5:00	US	E%sT	1971
-			-5:00	-	EST	2006 Apr  2 2:00
-			-6:00	US	C%sT	2007 Nov  4 2:00
-			-5:00	US	E%sT
-#
-# Perry County, Indiana, switched from eastern to central time in April 2006.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule Perry	1946	only	-	Apr	lastSun	2:00	1:00	D
-Rule Perry	1946	only	-	Sep	lastSun	2:00	0	S
-Rule Perry	1953	1954	-	Apr	lastSun	2:00	1:00	D
-Rule Perry	1953	1959	-	Sep	lastSun	2:00	0	S
-Rule Perry	1955	only	-	May	 1	0:00	1:00	D
-Rule Perry	1956	1963	-	Apr	lastSun	2:00	1:00	D
-Rule Perry	1960	only	-	Oct	lastSun	2:00	0	S
-Rule Perry	1961	only	-	Sep	lastSun	2:00	0	S
-Rule Perry	1962	1963	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Tell_City -5:47:03 - LMT	1883 Nov 18 12:12:57
-			-6:00	US	C%sT	1946
-			-6:00 Perry	C%sT	1964 Apr 26 2:00
-			-5:00	-	EST	1969
-			-5:00	US	E%sT	1971
-			-5:00	-	EST	2006 Apr  2 2:00
-			-6:00	US	C%sT
-#
-# Pike County, Indiana moved from central to eastern time in 1977,
-# then switched back in 2006, then switched back again in 2007.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Pike	1955	only	-	May	 1	0:00	1:00	D
-Rule	Pike	1955	1960	-	Sep	lastSun	2:00	0	S
-Rule	Pike	1956	1964	-	Apr	lastSun	2:00	1:00	D
-Rule	Pike	1961	1964	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Petersburg -5:49:07 - LMT	1883 Nov 18 12:10:53
-			-6:00	US	C%sT	1955
-			-6:00	Pike	C%sT	1965 Apr 25 2:00
-			-5:00	-	EST	1966 Oct 30 2:00
-			-6:00	US	C%sT	1977 Oct 30 2:00
-			-5:00	-	EST	2006 Apr  2 2:00
-			-6:00	US	C%sT	2007 Nov  4 2:00
-			-5:00	US	E%sT
-#
-# Starke County, Indiana moved from central to eastern time in 1991,
-# then switched back in 2006.
-# From Arthur David Olson (1991-10-28):
-# An article on page A3 of the Sunday, 1991-10-27 Washington Post
-# notes that Starke County switched from Central time to Eastern time as of
-# 1991-10-27.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Starke	1947	1961	-	Apr	lastSun	2:00	1:00	D
-Rule	Starke	1947	1954	-	Sep	lastSun	2:00	0	S
-Rule	Starke	1955	1956	-	Oct	lastSun	2:00	0	S
-Rule	Starke	1957	1958	-	Sep	lastSun	2:00	0	S
-Rule	Starke	1959	1961	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Knox -5:46:30 -	LMT	1883 Nov 18 12:13:30
-			-6:00	US	C%sT	1947
-			-6:00	Starke	C%sT	1962 Apr 29 2:00
-			-5:00	-	EST	1963 Oct 27 2:00
-			-6:00	US	C%sT	1991 Oct 27 2:00
-			-5:00	-	EST	2006 Apr  2 2:00
-			-6:00	US	C%sT
-#
-# Pulaski County, Indiana, switched from eastern to central time in
-# April 2006 and then switched back in March 2007.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Pulaski	1946	1960	-	Apr	lastSun	2:00	1:00	D
-Rule	Pulaski	1946	1954	-	Sep	lastSun	2:00	0	S
-Rule	Pulaski	1955	1956	-	Oct	lastSun	2:00	0	S
-Rule	Pulaski	1957	1960	-	Sep	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Winamac -5:46:25 - LMT	1883 Nov 18 12:13:35
-			-6:00	US	C%sT	1946
-			-6:00	Pulaski	C%sT	1961 Apr 30 2:00
-			-5:00	-	EST	1969
-			-5:00	US	E%sT	1971
-			-5:00	-	EST	2006 Apr  2 2:00
-			-6:00	US	C%sT	2007 Mar 11 2:00
-			-5:00	US	E%sT
-#
-# Switzerland County, Indiana, did not observe DST from 1973 through 2005.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Indiana/Vevay -5:40:16 -	LMT	1883 Nov 18 12:19:44
-			-6:00	US	C%sT	1954 Apr 25 2:00
-			-5:00	-	EST	1969
-			-5:00	US	E%sT	1973
-			-5:00	-	EST	2006
-			-5:00	US	E%sT
-
-# Part of Kentucky left its clocks alone in 1974.
-# This also includes Clark, Floyd, and Harrison counties in Indiana.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule Louisville	1921	only	-	May	1	2:00	1:00	D
-Rule Louisville	1921	only	-	Sep	1	2:00	0	S
-Rule Louisville	1941	1961	-	Apr	lastSun	2:00	1:00	D
-Rule Louisville	1941	only	-	Sep	lastSun	2:00	0	S
-Rule Louisville	1946	only	-	Jun	2	2:00	0	S
-Rule Louisville	1950	1955	-	Sep	lastSun	2:00	0	S
-Rule Louisville	1956	1960	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Kentucky/Louisville -5:43:02 -	LMT	1883 Nov 18 12:16:58
-			-6:00	US	C%sT	1921
-			-6:00 Louisville C%sT	1942
-			-6:00	US	C%sT	1946
-			-6:00 Louisville C%sT	1961 Jul 23 2:00
-			-5:00	-	EST	1968
-			-5:00	US	E%sT	1974 Jan  6 2:00
-			-6:00	1:00	CDT	1974 Oct 27 2:00
-			-5:00	US	E%sT
-#
-# Wayne County, Kentucky
-#
-# From
-# 
-# Lake Cumberland LIFE
-#  (1999-01-29) via WKYM-101.7:
-# Clinton County has joined Wayne County in asking the DoT to change from
-# the Central to the Eastern time zone....  The Wayne County government made
-# the same request in December.  And while Russell County officials have not
-# taken action, the majority of respondents to a poll conducted there in
-# August indicated they would like to change to "fast time" also.
-# The three Lake Cumberland counties are the farthest east of any U.S.
-# location in the Central time zone.
-#
-# From Rich Wales (2000-08-29):
-# After prolonged debate, and despite continuing deep differences of opinion,
-# Wayne County (central Kentucky) is switching from Central (-0600) to Eastern
-# (-0500) time.  They won't "fall back" this year.  See Sara Shipley,
-# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400).
-#
-# From Paul Eggert (2001-07-16):
-# The final rule was published in the
-# 
-# Federal Register 65, 160 (2000-08-17), page 50154-50158.
-# 
-#
-Zone America/Kentucky/Monticello -5:39:24 - LMT	1883 Nov 18 12:20:36
-			-6:00	US	C%sT	1946
-			-6:00	-	CST	1968
-			-6:00	US	C%sT	2000 Oct 29  2:00
-			-5:00	US	E%sT
-
-
-# From Rives McDow (2000-08-30):
-# Here ... are all the changes in the US since 1985.
-# Kearny County, KS (put all of county on central;
-#	previously split between MST and CST) ... 1990-10
-# Starke County, IN (from CST to EST) ... 1991-10
-# Oliver County, ND (from MST to CST) ... 1992-10
-# West Wendover, NV (from PST TO MST) ... 1999-10
-# Wayne County, KY (from CST to EST) ... 2000-10
-#
-# From Paul Eggert (2001-07-17):
-# We don't know where the line used to be within Kearny County, KS,
-# so omit that change for now.
-# See America/Indiana/Knox for the Starke County, IN change.
-# See America/North_Dakota/Center for the Oliver County, ND change.
-# West Wendover, NV officially switched from Pacific to mountain time on
-# 1999-10-31.  See the
-# 
-# Federal Register 64, 203 (1999-10-21), page 56705-56707.
-# 
-# However, the Federal Register says that West Wendover already operated
-# on mountain time, and the rule merely made this official;
-# hence a separate tz entry is not needed.
-
-# Michigan
-#
-# From Bob Devine (1988-01-28):
-# Michigan didn't observe DST from 1968 to 1973.
-#
-# From Paul Eggert (1999-03-31):
-# Shanks writes that Michigan started using standard time on 1885-09-18,
-# but Howse writes (pp 124-125, referring to Popular Astronomy, 1901-01)
-# that Detroit kept
-#
-#	local time until 1900 when the City Council decreed that clocks should
-#	be put back twenty-eight minutes to Central Standard Time.  Half the
-#	city obeyed, half refused.  After considerable debate, the decision
-#	was rescinded and the city reverted to Sun time.  A derisive offer to
-#	erect a sundial in front of the city hall was referred to the
-#	Committee on Sewers.  Then, in 1905, Central time was adopted
-#	by city vote.
-#
-# This story is too entertaining to be false, so go with Howse over Shanks.
-#
-# From Paul Eggert (2001-03-06):
-# Garland (1927) writes ``Cleveland and Detroit advanced their clocks
-# one hour in 1914.''  This change is not in Shanks.  We have no more
-# info, so omit this for now.
-#
-# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule	Detroit	1948	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Detroit	1948	only	-	Sep	lastSun	2:00	0	S
-Rule	Detroit	1967	only	-	Jun	14	2:00	1:00	D
-Rule	Detroit	1967	only	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Detroit	-5:32:11 -	LMT	1905
-			-6:00	-	CST	1915 May 15 2:00
-			-5:00	-	EST	1942
-			-5:00	US	E%sT	1946
-			-5:00	Detroit	E%sT	1973
-			-5:00	US	E%sT	1975
-			-5:00	-	EST	1975 Apr 27 2:00
-			-5:00	US	E%sT
-#
-# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
-# switched from EST to CST/CDT in 1973.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
-Rule Menominee	1946	only	-	Apr	lastSun	2:00	1:00	D
-Rule Menominee	1946	only	-	Sep	lastSun	2:00	0	S
-Rule Menominee	1966	only	-	Apr	lastSun	2:00	1:00	D
-Rule Menominee	1966	only	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
-			-6:00	US	C%sT	1946
-			-6:00 Menominee	C%sT	1969 Apr 27 2:00
-			-5:00	-	EST	1973 Apr 29 2:00
-			-6:00	US	C%sT
-
-# Navassa
-# administered by the US Fish and Wildlife Service
-# claimed by US under the provisions of the 1856 Guano Islands Act
-# also claimed by Haiti
-# occupied 1857/1900 by the Navassa Phosphate Co
-# US lighthouse 1917/1996-09
-# currently uninhabited
-# see Mark Fineman, ``An Isle Rich in Guano and Discord'',
-# _Los Angeles Times_ (1998-11-10), A1, A10; it cites
-# Jimmy Skaggs, _The Great Guano Rush_ (1994).
-
-################################################################################
-
-
-# From Paul Eggert (2006-03-22):
-# A good source for time zone historical data outside the U.S. is
-# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
-# San Diego: ACS Publications, Inc. (2003).
-#
-# Gwillim Law writes that a good source
-# for recent time zone data is the International Air Transport
-# Association's Standard Schedules Information Manual (IATA SSIM),
-# published semiannually.  Law sent in several helpful summaries
-# of the IATA's data after 1990.
-#
-# Except where otherwise noted, Shanks & Pottenger is the source for
-# entries through 1990, and IATA SSIM is the source for entries afterwards.
-#
-# Other sources occasionally used include:
-#
-#	Edward W. Whitman, World Time Differences,
-#	Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
-#	which I found in the UCLA library.
-#
-#	
-#	William Willett, The Waste of Daylight, 19th edition
-#	 (1914-03)
-#
-# See the `europe' file for Greenland.
-
-# Canada
-
-# From Alain LaBont (1994-11-14):
-# I post here the time zone abbreviations standardized in Canada
-# for both English and French in the CAN/CSA-Z234.4-89 standard....
-#
-#	UTC	Standard time	Daylight savings time
-#	offset	French	English	French	English
-#	-2:30	-	-	HAT	NDT
-#	-3	-	-	HAA	ADT
-#	-3:30	HNT	NST	-	-
-#	-4	HNA	AST	HAE	EDT
-#	-5	HNE	EST	HAC	CDT
-#	-6	HNC	CST	HAR	MDT
-#	-7	HNR	MST	HAP	PDT
-#	-8	HNP	PST	HAY	YDT
-#	-9	HNY	YST	-	-
-#
-#	HN: Heure Normale	ST: Standard Time
-#	HA: Heure Avance	DT: Daylight saving Time
-#
-#	A: de l'Atlantique	Atlantic
-#	C: du Centre		Central
-#	E: de l'Est		Eastern
-#	M:			Mountain
-#	N:			Newfoundland
-#	P: du Pacifique		Pacific
-#	R: des Rocheuses
-#	T: de Terre-Neuve
-#	Y: du Yukon		Yukon
-#
-# From Paul Eggert (1994-11-22):
-# Alas, this sort of thing must be handled by localization software.
-
-# Unless otherwise specified, the data for Canada are all from Shanks
-# & Pottenger.
-
-# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
-# 2007-03-01):
-# The British Columbia government announced yesterday that it will
-# adjust daylight savings next year to align with changes in the
-# U.S. and the rest of Canada....
-# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm
-# ...
-# Nova Scotia
-# Daylight saving time will be extended by four weeks starting in 2007....
-# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf
-#
-# [For New Brunswick] the new legislation dictates that the time change is to
-# be done at 02:00 instead of 00:01.
-# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf
-# ...
-# Manitoba has traditionally changed the clock every fall at 03:00.
-# As of 2006, the transition is to take place one hour earlier at 02:00.
-# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php
-# ...
-# [Alberta, Ontario, Quebec] will follow US rules.
-# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM
-# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm
-# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF
-# ...
-# P.E.I. will follow US rules....
-# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf
-# ...
-# Province of Newfoundland and Labrador....
-# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm
-# ...
-# Yukon
-# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf
-# ...
-# N.W.T. will follow US rules.  Whoever maintains the government web site
-# does not seem to believe in bookmarks.  To see the news release, click the
-# following link and search for "Daylight Savings Time Change".  Press the
-# "Daylight Savings Time Change" link; it will fire off a popup using
-# JavaScript.
-# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive
-# ...
-# Nunavut
-# An amendment to the Interpretation Act was registered on February 19/2007....
-# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
-
-# From Paul Eggert (2006-04-25):
-# H. David Matthews and Mary Vincent's map
-# 
-# "It's about TIME", _Canadian Geographic_ (September-October 1998)
-#  contains detailed boundaries for regions observing nonstandard
-# time and daylight saving time arrangements in Canada circa 1998.
-#
-# INMS, the Institute for National Measurement Standards in Ottawa, has 
-# information about standard and daylight saving time zones in Canada.
-#  (updated periodically).
-# Its unofficial information is often taken from Matthews and Vincent.
-
-# From Paul Eggert (2006-06-27):
-# For now, assume all of DST-observing Canada will fall into line with the
-# new US DST rules,
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Canada	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Canada	1918	only	-	Oct	31	2:00	0	S
-Rule	Canada	1942	only	-	Feb	 9	2:00	1:00	W # War
-Rule	Canada	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	Canada	1945	only	-	Sep	30	2:00	0	S
-Rule	Canada	1974	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	Canada	1974	2006	-	Oct	lastSun	2:00	0	S
-Rule	Canada	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
-Rule	Canada	2007	max	-	Mar	Sun>=8	2:00	1:00	D
-Rule	Canada	2007	max	-	Nov	Sun>=1	2:00	0	S
-
-
-# Newfoundland and Labrador
-
-# From Paul Eggert (2000-10-02):
-# Matthews and Vincent (1998) write that Labrador should use NST/NDT,
-# but the only part of Labrador that follows the rules is the
-# southeast corner, including Port Hope Simpson and Mary's Harbour,
-# but excluding, say, Black Tickle.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	StJohns	1917	only	-	Apr	 8	2:00	1:00	D
-Rule	StJohns	1917	only	-	Sep	17	2:00	0	S
-# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
-Rule	StJohns	1919	only	-	May	 5	23:00	1:00	D
-Rule	StJohns	1919	only	-	Aug	12	23:00	0	S
-# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger.
-Rule	StJohns	1920	1935	-	May	Sun>=1	23:00	1:00	D
-Rule	StJohns	1920	1935	-	Oct	lastSun	23:00	0	S
-# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks &
-# Pottenger.
-Rule	StJohns	1936	1941	-	May	Mon>=9	0:00	1:00	D
-Rule	StJohns	1936	1941	-	Oct	Mon>=2	0:00	0	S
-# Whitman gives the following transitions:
-# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07
-# but go with Shanks & Pottenger and assume they used Canadian rules.
-# For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
-# Apr 30 - Sep 24; go with Shanks & Pottenger.
-Rule	StJohns	1946	1950	-	May	Sun>=8	2:00	1:00	D
-Rule	StJohns	1946	1950	-	Oct	Sun>=2	2:00	0	S
-Rule	StJohns	1951	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	StJohns	1951	1959	-	Sep	lastSun	2:00	0	S
-Rule	StJohns	1960	1986	-	Oct	lastSun	2:00	0	S
-# From Paul Eggert (2000-10-02):
-# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
-# at 00:01 local time.  For now, assume it started in 1987.
-Rule	StJohns	1987	only	-	Apr	Sun>=1	0:01	1:00	D
-Rule	StJohns	1987	2006	-	Oct	lastSun	0:01	0	S
-Rule	StJohns	1988	only	-	Apr	Sun>=1	0:01	2:00	DD
-Rule	StJohns	1989	2006	-	Apr	Sun>=1	0:01	1:00	D
-Rule	StJohns	2007	max	-	Mar	Sun>=8	0:01	1:00	D
-Rule	StJohns	2007	max	-	Nov	Sun>=1	0:01	0	S
-#
-# St John's has an apostrophe, but Posix file names can't have apostrophes.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Johns	-3:30:52 -	LMT	1884
-			-3:30:52 StJohns N%sT	1918
-			-3:30:52 Canada	N%sT	1919
-			-3:30:52 StJohns N%sT	1935 Mar 30
-			-3:30	StJohns	N%sT	1942 May 11
-			-3:30	Canada	N%sT	1946
-			-3:30	StJohns	N%sT
-
-# most of east Labrador
-
-# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Goose_Bay	-4:01:40 -	LMT	1884 # Happy Valley-Goose Bay
-			-3:30:52 -	NST	1918
-			-3:30:52 Canada N%sT	1919
-			-3:30:52 -	NST	1935 Mar 30
-			-3:30	-	NST	1936
-			-3:30	StJohns	N%sT	1942 May 11
-			-3:30	Canada	N%sT	1946
-			-3:30	StJohns	N%sT	1966 Mar 15 2:00
-			-4:00	StJohns	A%sT
-
-
-# west Labrador, Nova Scotia, Prince Edward I
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that since 1970 most of this region has been like
-# Halifax.  Many locales did not observe peacetime DST until 1972;
-# Glace Bay, NS is the largest that we know of.
-# Shanks & Pottenger also write that Liverpool, NS was the only town
-# in Canada to observe DST in 1971 but not 1970; for now we'll assume
-# this is a typo.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Halifax	1916	only	-	Apr	 1	0:00	1:00	D
-Rule	Halifax	1916	only	-	Oct	 1	0:00	0	S
-Rule	Halifax	1920	only	-	May	 9	0:00	1:00	D
-Rule	Halifax	1920	only	-	Aug	29	0:00	0	S
-Rule	Halifax	1921	only	-	May	 6	0:00	1:00	D
-Rule	Halifax	1921	1922	-	Sep	 5	0:00	0	S
-Rule	Halifax	1922	only	-	Apr	30	0:00	1:00	D
-Rule	Halifax	1923	1925	-	May	Sun>=1	0:00	1:00	D
-Rule	Halifax	1923	only	-	Sep	 4	0:00	0	S
-Rule	Halifax	1924	only	-	Sep	15	0:00	0	S
-Rule	Halifax	1925	only	-	Sep	28	0:00	0	S
-Rule	Halifax	1926	only	-	May	16	0:00	1:00	D
-Rule	Halifax	1926	only	-	Sep	13	0:00	0	S
-Rule	Halifax	1927	only	-	May	 1	0:00	1:00	D
-Rule	Halifax	1927	only	-	Sep	26	0:00	0	S
-Rule	Halifax	1928	1931	-	May	Sun>=8	0:00	1:00	D
-Rule	Halifax	1928	only	-	Sep	 9	0:00	0	S
-Rule	Halifax	1929	only	-	Sep	 3	0:00	0	S
-Rule	Halifax	1930	only	-	Sep	15	0:00	0	S
-Rule	Halifax	1931	1932	-	Sep	Mon>=24	0:00	0	S
-Rule	Halifax	1932	only	-	May	 1	0:00	1:00	D
-Rule	Halifax	1933	only	-	Apr	30	0:00	1:00	D
-Rule	Halifax	1933	only	-	Oct	 2	0:00	0	S
-Rule	Halifax	1934	only	-	May	20	0:00	1:00	D
-Rule	Halifax	1934	only	-	Sep	16	0:00	0	S
-Rule	Halifax	1935	only	-	Jun	 2	0:00	1:00	D
-Rule	Halifax	1935	only	-	Sep	30	0:00	0	S
-Rule	Halifax	1936	only	-	Jun	 1	0:00	1:00	D
-Rule	Halifax	1936	only	-	Sep	14	0:00	0	S
-Rule	Halifax	1937	1938	-	May	Sun>=1	0:00	1:00	D
-Rule	Halifax	1937	1941	-	Sep	Mon>=24	0:00	0	S
-Rule	Halifax	1939	only	-	May	28	0:00	1:00	D
-Rule	Halifax	1940	1941	-	May	Sun>=1	0:00	1:00	D
-Rule	Halifax	1946	1949	-	Apr	lastSun	2:00	1:00	D
-Rule	Halifax	1946	1949	-	Sep	lastSun	2:00	0	S
-Rule	Halifax	1951	1954	-	Apr	lastSun	2:00	1:00	D
-Rule	Halifax	1951	1954	-	Sep	lastSun	2:00	0	S
-Rule	Halifax	1956	1959	-	Apr	lastSun	2:00	1:00	D
-Rule	Halifax	1956	1959	-	Sep	lastSun	2:00	0	S
-Rule	Halifax	1962	1973	-	Apr	lastSun	2:00	1:00	D
-Rule	Halifax	1962	1973	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Halifax	-4:14:24 -	LMT	1902 Jun 15
-			-4:00	Halifax	A%sT	1918
-			-4:00	Canada	A%sT	1919
-			-4:00	Halifax	A%sT	1942 Feb  9 2:00s
-			-4:00	Canada	A%sT	1946
-			-4:00	Halifax	A%sT	1974
-			-4:00	Canada	A%sT
-Zone America/Glace_Bay	-3:59:48 -	LMT	1902 Jun 15
-			-4:00	Canada	A%sT	1953
-			-4:00	Halifax	A%sT	1954
-			-4:00	-	AST	1972
-			-4:00	Halifax	A%sT	1974
-			-4:00	Canada	A%sT
-
-# New Brunswick
-
-# From Paul Eggert (2007-01-31):
-# The Time Definition Act 
-# says they changed at 00:01 through 2006, and
-#  makes it
-# clear that this was the case since at least 1993.
-# For now, assume it started in 1993.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Moncton	1933	1935	-	Jun	Sun>=8	1:00	1:00	D
-Rule	Moncton	1933	1935	-	Sep	Sun>=8	1:00	0	S
-Rule	Moncton	1936	1938	-	Jun	Sun>=1	1:00	1:00	D
-Rule	Moncton	1936	1938	-	Sep	Sun>=1	1:00	0	S
-Rule	Moncton	1939	only	-	May	27	1:00	1:00	D
-Rule	Moncton	1939	1941	-	Sep	Sat>=21	1:00	0	S
-Rule	Moncton	1940	only	-	May	19	1:00	1:00	D
-Rule	Moncton	1941	only	-	May	 4	1:00	1:00	D
-Rule	Moncton	1946	1972	-	Apr	lastSun	2:00	1:00	D
-Rule	Moncton	1946	1956	-	Sep	lastSun	2:00	0	S
-Rule	Moncton	1957	1972	-	Oct	lastSun	2:00	0	S
-Rule	Moncton	1993	2006	-	Apr	Sun>=1	0:01	1:00	D
-Rule	Moncton	1993	2006	-	Oct	lastSun	0:01	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Moncton	-4:19:08 -	LMT	1883 Dec  9
-			-5:00	-	EST	1902 Jun 15
-			-4:00	Canada	A%sT	1933
-			-4:00	Moncton	A%sT	1942
-			-4:00	Canada	A%sT	1946
-			-4:00	Moncton	A%sT	1973
-			-4:00	Canada	A%sT	1993
-			-4:00	Moncton	A%sT	2007
-			-4:00	Canada	A%sT
-
-# Quebec
-
-# From Paul Eggert (2006-07-09):
-# Shanks & Pottenger write that since 1970 most of Quebec has been
-# like Montreal.
-
-# From Paul Eggert (2006-06-27):
-# Matthews and Vincent (1998) also write that Quebec east of the -63
-# meridian is supposed to observe AST, but residents as far east as
-# Natashquan use EST/EDT, and residents east of Natashquan use AST.
-# In "Official time in Quebec" the Quebec department of justice writes in
-# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm
-# that "The residents of the Municipality of the
-# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,
-# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is
-# written and use Atlantic standard time all year round. The same applies to
-# the residents of the Native facilities along the lower North Shore."
-# 
-# says this common practice was codified into law as of 2007.
-# For lack of better info, guess this practice began around 1970, contra to
-# Shanks & Pottenger who have this region observing AST/ADT.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
-Rule	Mont	1917	only	-	Apr	24	0:00	0	S
-Rule	Mont	1919	only	-	Mar	31	2:30	1:00	D
-Rule	Mont	1919	only	-	Oct	25	2:30	0	S
-Rule	Mont	1920	only	-	May	 2	2:30	1:00	D
-Rule	Mont	1920	1922	-	Oct	Sun>=1	2:30	0	S
-Rule	Mont	1921	only	-	May	 1	2:00	1:00	D
-Rule	Mont	1922	only	-	Apr	30	2:00	1:00	D
-Rule	Mont	1924	only	-	May	17	2:00	1:00	D
-Rule	Mont	1924	1926	-	Sep	lastSun	2:30	0	S
-Rule	Mont	1925	1926	-	May	Sun>=1	2:00	1:00	D
-# The 1927-to-1937 rules can be expressed more simply as
-# Rule	Mont	1927	1937	-	Apr	lastSat	24:00	1:00	D
-# Rule	Mont	1927	1937	-	Sep	lastSat	24:00	0	S
-# The rules below avoid use of 24:00
-# (which pre-1998 versions of zic cannot handle).
-Rule	Mont	1927	only	-	May	1	0:00	1:00	D
-Rule	Mont	1927	1932	-	Sep	lastSun	0:00	0	S
-Rule	Mont	1928	1931	-	Apr	lastSun	0:00	1:00	D
-Rule	Mont	1932	only	-	May	1	0:00	1:00	D
-Rule	Mont	1933	1940	-	Apr	lastSun	0:00	1:00	D
-Rule	Mont	1933	only	-	Oct	1	0:00	0	S
-Rule	Mont	1934	1939	-	Sep	lastSun	0:00	0	S
-Rule	Mont	1946	1973	-	Apr	lastSun	2:00	1:00	D
-Rule	Mont	1945	1948	-	Sep	lastSun	2:00	0	S
-Rule	Mont	1949	1950	-	Oct	lastSun	2:00	0	S
-Rule	Mont	1951	1956	-	Sep	lastSun	2:00	0	S
-Rule	Mont	1957	1973	-	Oct	lastSun	2:00	0	S
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Blanc-Sablon -3:48:28 -	LMT	1884
-			-4:00	Canada	A%sT	1970
-			-4:00	-	AST
-Zone America/Montreal	-4:54:16 -	LMT	1884
-			-5:00	Mont	E%sT	1918
-			-5:00	Canada	E%sT	1919
-			-5:00	Mont	E%sT	1942 Feb  9 2:00s
-			-5:00	Canada	E%sT	1946
-			-5:00	Mont	E%sT	1974
-			-5:00	Canada	E%sT
-
-
-# Ontario
-
-# From Paul Eggert (2006-07-09):
-# Shanks & Pottenger write that since 1970 most of Ontario has been like
-# Toronto.
-# Thunder Bay skipped DST in 1973.
-# Many smaller locales did not observe peacetime DST until 1974;
-# Nipigon (EST) and Rainy River (CST) are the largest that we know of.
-# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
-
-# From Mark Brader (2003-07-26):
-# [According to the Toronto Star] Orillia, Ontario, adopted DST
-# effective Saturday, 1912-06-22, 22:00; the article mentions that
-# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw
-# have already done so.  In Orillia DST was to run until Saturday,
-# 1912-08-31 (no time mentioned), but it was met with considerable
-# hostility from certain segments of the public, and was revoked after
-# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
-# presumably that should be -07-06.  (1912-06-19, -07-12; also letters
-# earlier in June).
-#
-# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).
-
-# From Paul Eggert (1997-10-17):
-# Mark Brader writes that an article in the 1997-10-14 Toronto Star
-# says that Atikokan, Ontario currently does not observe DST,
-# but will vote on 11-10 whether to use EST/EDT.
-# He also writes that the
-# 
-# Ontario Time Act (1990, Chapter T.9)
-# 
-# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
-# Officially Atikokan is therefore on CST/CDT, and most likely this report
-# concerns a non-official time observed as a matter of local practice.
-#
-# From Paul Eggert (2000-10-02):
-# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
-# New Osnaburgh observe CST all year, that Big Trout Lake observes
-# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
-# violation of the official Ontario rules.
-#
-# From Paul Eggert (2006-07-09):
-# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
-# 2005-07-21 Chronicle-Journal, which said:
-#
-#	The clocks in Atikokan stay set on standard time year-round.
-#	This means they spend about half the time on central time and
-#	the other half on eastern time.
-#
-#	For the most part, the system works, Mayor Dennis Brown said.
-#
-#	"The majority of businesses in Atikokan deal more with Eastern
-#	Canada, but there are some that deal with Western Canada," he
-#	said.  "I don't see any changes happening here."
-#
-# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
-# [New Osnaburgh] follow the same practice."
-
-# From Garry McKinnon (2006-07-14) via Chris Walton:
-# I chatted with a member of my board who has an outstanding memory
-# and a long history in Atikokan (and in the telecom industry) and he
-# can say for certain that Atikokan has been practicing the current
-# time keeping since 1952, at least.
-
-# From Paul Eggert (2006-07-17):
-# Shanks & Pottenger say that Atikokan has agreed with Rainy River
-# ever since standard time was introduced, but the information from
-# McKinnon sounds more authoritative.  For now, assume that Atikokan
-# switched to EST immediately after WWII era daylight saving time
-# ended.  This matches the old (less-populous) America/Coral_Harbour
-# entry since our cutoff date of 1970, so we can move
-# America/Coral_Harbour to the 'backward' file.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Toronto	1919	only	-	Mar	30	23:30	1:00	D
-Rule	Toronto	1919	only	-	Oct	26	0:00	0	S
-Rule	Toronto	1920	only	-	May	 2	2:00	1:00	D
-Rule	Toronto	1920	only	-	Sep	26	0:00	0	S
-Rule	Toronto	1921	only	-	May	15	2:00	1:00	D
-Rule	Toronto	1921	only	-	Sep	15	2:00	0	S
-Rule	Toronto	1922	1923	-	May	Sun>=8	2:00	1:00	D
-# Shanks & Pottenger say 1923-09-19; assume it's a typo and that "-16"
-# was meant.
-Rule	Toronto	1922	1926	-	Sep	Sun>=15	2:00	0	S
-Rule	Toronto	1924	1927	-	May	Sun>=1	2:00	1:00	D
-# The 1927-to-1939 rules can be expressed more simply as
-# Rule	Toronto	1927	1937	-	Sep	Sun>=25	2:00	0	S
-# Rule	Toronto	1928	1937	-	Apr	Sun>=25	2:00	1:00	D
-# Rule	Toronto	1938	1940	-	Apr	lastSun	2:00	1:00	D
-# Rule	Toronto	1938	1939	-	Sep	lastSun	2:00	0	S
-# The rules below avoid use of Sun>=25
-# (which pre-2004 versions of zic cannot handle).
-Rule	Toronto	1927	1932	-	Sep	lastSun	2:00	0	S
-Rule	Toronto	1928	1931	-	Apr	lastSun	2:00	1:00	D
-Rule	Toronto	1932	only	-	May	1	2:00	1:00	D
-Rule	Toronto	1933	1940	-	Apr	lastSun	2:00	1:00	D
-Rule	Toronto	1933	only	-	Oct	1	2:00	0	S
-Rule	Toronto	1934	1939	-	Sep	lastSun	2:00	0	S
-Rule	Toronto	1945	1946	-	Sep	lastSun	2:00	0	S
-Rule	Toronto	1946	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Toronto	1947	1949	-	Apr	lastSun	0:00	1:00	D
-Rule	Toronto	1947	1948	-	Sep	lastSun	0:00	0	S
-Rule	Toronto	1949	only	-	Nov	lastSun	0:00	0	S
-Rule	Toronto	1950	1973	-	Apr	lastSun	2:00	1:00	D
-Rule	Toronto	1950	only	-	Nov	lastSun	2:00	0	S
-Rule	Toronto	1951	1956	-	Sep	lastSun	2:00	0	S
-# Shanks & Pottenger say Toronto ended DST a week early in 1971,
-# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this
-# is wrong, and that he had confirmed it by checking the 1971-10-30
-# Toronto Star, which said that DST was ending 1971-10-31 as usual.
-Rule	Toronto	1957	1973	-	Oct	lastSun	2:00	0	S
-
-# From Paul Eggert (2003-07-27):
-# Willett (1914-03) writes (p. 17) "In the Cities of Fort William, and
-# Port Arthur, Ontario, the principle of the Bill has been in
-# operation for the past three years, and in the City of Moose Jaw,
-# Saskatchewan, for one year."
-
-# From David Bryan via Tory Tronrud, Director/Curator,
-# Thunder Bay Museum (2003-11-12):
-# There is some suggestion, however, that, by-law or not, daylight
-# savings time was being practiced in Fort William and Port Arthur
-# before 1909.... [I]n 1910, the line between the Eastern and Central
-# Time Zones was permanently moved about two hundred miles west to
-# include the Thunder Bay area....  When Canada adopted daylight
-# savings time in 1916, Fort William and Port Arthur, having done so
-# already, did not change their clocks....  During the Second World
-# War,... [t]he cities agreed to implement DST during the summer
-# months for the remainder of the war years.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Toronto	-5:17:32 -	LMT	1895
-			-5:00	Canada	E%sT	1919
-			-5:00	Toronto	E%sT	1942 Feb  9 2:00s
-			-5:00	Canada	E%sT	1946
-			-5:00	Toronto	E%sT	1974
-			-5:00	Canada	E%sT
-Zone America/Thunder_Bay -5:57:00 -	LMT	1895
-			-6:00	-	CST	1910
-			-5:00	-	EST	1942
-			-5:00	Canada	E%sT	1970
-			-5:00	Mont	E%sT	1973
-			-5:00	-	EST	1974
-			-5:00	Canada	E%sT
-Zone America/Nipigon	-5:53:04 -	LMT	1895
-			-5:00	Canada	E%sT	1940 Sep 29
-			-5:00	1:00	EDT	1942 Feb  9 2:00s
-			-5:00	Canada	E%sT
-Zone America/Rainy_River -6:18:16 -	LMT	1895
-			-6:00	Canada	C%sT	1940 Sep 29
-			-6:00	1:00	CDT	1942 Feb  9 2:00s
-			-6:00	Canada	C%sT
-Zone America/Atikokan	-6:06:28 -	LMT	1895
-			-6:00	Canada	C%sT	1940 Sep 29
-			-6:00	1:00	CDT	1942 Feb  9 2:00s
-			-6:00	Canada	C%sT	1945 Sep 30 2:00
-			-5:00	-	EST
-
-
-# Manitoba
-
-# From Rob Douglas (2006-04-06):
-# the old Manitoba Time Act - as amended by Bill 2, assented to
-# March 27, 1987 ... said ...
-# "between two o'clock Central Standard Time in the morning of
-# the first Sunday of April of each year and two o'clock Central
-# Standard Time in the morning of the last Sunday of October next
-# following, one hour in advance of Central Standard Time."...
-# I believe that the English legislation [of the old time act] had =
-# been assented to (March 22, 1967)....
-# Also, as far as I can tell, there was no order-in-council varying
-# the time of Daylight Saving Time for 2005 and so the provisions of
-# the 1987 version would apply - the changeover was at 2:00 Central
-# Standard Time (i.e. not until 3:00 Central Daylight Time).
-
-# From Paul Eggert (2006-04-10):
-# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s)
-# starting 1966.  Since 02:00s is clearly correct for 1967 on, assume
-# it was also 02:00s in 1966.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Winn	1916	only	-	Apr	23	0:00	1:00	D
-Rule	Winn	1916	only	-	Sep	17	0:00	0	S
-Rule	Winn	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Winn	1918	only	-	Oct	31	2:00	0	S
-Rule	Winn	1937	only	-	May	16	2:00	1:00	D
-Rule	Winn	1937	only	-	Sep	26	2:00	0	S
-Rule	Winn	1942	only	-	Feb	 9	2:00	1:00	W # War
-Rule	Winn	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	Winn	1945	only	-	Sep	lastSun	2:00	0	S
-Rule	Winn	1946	only	-	May	12	2:00	1:00	D
-Rule	Winn	1946	only	-	Oct	13	2:00	0	S
-Rule	Winn	1947	1949	-	Apr	lastSun	2:00	1:00	D
-Rule	Winn	1947	1949	-	Sep	lastSun	2:00	0	S
-Rule	Winn	1950	only	-	May	 1	2:00	1:00	D
-Rule	Winn	1950	only	-	Sep	30	2:00	0	S
-Rule	Winn	1951	1960	-	Apr	lastSun	2:00	1:00	D
-Rule	Winn	1951	1958	-	Sep	lastSun	2:00	0	S
-Rule	Winn	1959	only	-	Oct	lastSun	2:00	0	S
-Rule	Winn	1960	only	-	Sep	lastSun	2:00	0	S
-Rule	Winn	1963	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Winn	1963	only	-	Sep	22	2:00	0	S
-Rule	Winn	1966	1986	-	Apr	lastSun	2:00s	1:00	D
-Rule	Winn	1966	2005	-	Oct	lastSun	2:00s	0	S
-Rule	Winn	1987	2005	-	Apr	Sun>=1	2:00s	1:00	D
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Winnipeg	-6:28:36 -	LMT	1887 Jul 16
-			-6:00	Winn	C%sT	2006
-			-6:00	Canada	C%sT
-
-
-# Saskatchewan
-
-# From Mark Brader (2003-07-26):
-# The first actual adoption of DST in Canada was at the municipal
-# level.  As the [Toronto] Star put it (1912-06-07), "While people
-# elsewhere have long been talking of legislation to save daylight,
-# the city of Moose Jaw [Saskatchewan] has acted on its own hook."
-# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:
-# presumably late evening, as below), and would run until "the end of
-# the summer".  The discrepancy between municipal time and railroad
-# time was noted.
-
-# From Paul Eggert (2003-07-27):
-# Willett (1914-03) notes that DST "has been in operation ... in the
-# City of Moose Jaw, Saskatchewan, for one year."
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger say that since 1970 this region has mostly been as Regina.
-# Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
-# Other western towns (e.g. Lloydminster) are like Edmonton.
-# Matthews and Vincent (1998) write that Denare Beach and Creighton
-# are like Winnipeg, in violation of Saskatchewan law.
-
-# From W. Jones (1992-11-06):
-# The. . .below is based on information I got from our law library, the
-# provincial archives, and the provincial Community Services department.
-# A precise history would require digging through newspaper archives, and
-# since you didn't say what you wanted, I didn't bother.
-#
-# Saskatchewan is split by a time zone meridian (105W) and over the years
-# the boundary became pretty ragged as communities near it reevaluated
-# their affiliations in one direction or the other.  In 1965 a provincial
-# referendum favoured legislating common time practices.
-#
-# On 15 April 1966 the Time Act (c. T-14, Revised Statutes of
-# Saskatchewan 1978) was proclaimed, and established that the eastern
-# part of Saskatchewan would use CST year round, that districts in
-# northwest Saskatchewan would by default follow CST but could opt to
-# follow Mountain Time rules (thus 1 hour difference in the winter and
-# zero in the summer), and that districts in southwest Saskatchewan would
-# by default follow MT but could opt to follow CST.
-#
-# It took a few years for the dust to settle (I know one story of a town
-# on one time zone having its school in another, such that a mom had to
-# serve her family lunch in two shifts), but presently it seems that only
-# a few towns on the border with Alberta (e.g. Lloydminster) follow MT
-# rules any more; all other districts appear to have used CST year round
-# since sometime in the 1960s.
-
-# From Chris Walton (2006-06-26):
-# The Saskatchewan time act which was last updated in 1996 is about 30 pages
-# long and rather painful to read.
-# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Regina	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Regina	1918	only	-	Oct	31	2:00	0	S
-Rule	Regina	1930	1934	-	May	Sun>=1	0:00	1:00	D
-Rule	Regina	1930	1934	-	Oct	Sun>=1	0:00	0	S
-Rule	Regina	1937	1941	-	Apr	Sun>=8	0:00	1:00	D
-Rule	Regina	1937	only	-	Oct	Sun>=8	0:00	0	S
-Rule	Regina	1938	only	-	Oct	Sun>=1	0:00	0	S
-Rule	Regina	1939	1941	-	Oct	Sun>=8	0:00	0	S
-Rule	Regina	1942	only	-	Feb	 9	2:00	1:00	W # War
-Rule	Regina	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	Regina	1945	only	-	Sep	lastSun	2:00	0	S
-Rule	Regina	1946	only	-	Apr	Sun>=8	2:00	1:00	D
-Rule	Regina	1946	only	-	Oct	Sun>=8	2:00	0	S
-Rule	Regina	1947	1957	-	Apr	lastSun	2:00	1:00	D
-Rule	Regina	1947	1957	-	Sep	lastSun	2:00	0	S
-Rule	Regina	1959	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Regina	1959	only	-	Oct	lastSun	2:00	0	S
-#
-Rule	Swift	1957	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Swift	1957	only	-	Oct	lastSun	2:00	0	S
-Rule	Swift	1959	1961	-	Apr	lastSun	2:00	1:00	D
-Rule	Swift	1959	only	-	Oct	lastSun	2:00	0	S
-Rule	Swift	1960	1961	-	Sep	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Regina	-6:58:36 -	LMT	1905 Sep
-			-7:00	Regina	M%sT	1960 Apr lastSun 2:00
-			-6:00	-	CST
-Zone America/Swift_Current -7:11:20 -	LMT	1905 Sep
-			-7:00	Canada	M%sT	1946 Apr lastSun 2:00
-			-7:00	Regina	M%sT	1950
-			-7:00	Swift	M%sT	1972 Apr lastSun 2:00
-			-6:00	-	CST
-
-
-# Alberta
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Edm	1918	1919	-	Apr	Sun>=8	2:00	1:00	D
-Rule	Edm	1918	only	-	Oct	31	2:00	0	S
-Rule	Edm	1919	only	-	May	27	2:00	0	S
-Rule	Edm	1920	1923	-	Apr	lastSun	2:00	1:00	D
-Rule	Edm	1920	only	-	Oct	lastSun	2:00	0	S
-Rule	Edm	1921	1923	-	Sep	lastSun	2:00	0	S
-Rule	Edm	1942	only	-	Feb	 9	2:00	1:00	W # War
-Rule	Edm	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	Edm	1945	only	-	Sep	lastSun	2:00	0	S
-Rule	Edm	1947	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Edm	1947	only	-	Sep	lastSun	2:00	0	S
-Rule	Edm	1967	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Edm	1967	only	-	Oct	lastSun	2:00	0	S
-Rule	Edm	1969	only	-	Apr	lastSun	2:00	1:00	D
-Rule	Edm	1969	only	-	Oct	lastSun	2:00	0	S
-Rule	Edm	1972	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	Edm	1972	2006	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Edmonton	-7:33:52 -	LMT	1906 Sep
-			-7:00	Edm	M%sT	1987
-			-7:00	Canada	M%sT
-
-
-# British Columbia
-
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger write that since 1970 most of this region has
-# been like Vancouver.
-# Dawson Creek uses MST.  Much of east BC is like Edmonton.
-# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Vanc	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Vanc	1918	only	-	Oct	31	2:00	0	S
-Rule	Vanc	1942	only	-	Feb	 9	2:00	1:00	W # War
-Rule	Vanc	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	Vanc	1945	only	-	Sep	30	2:00	0	S
-Rule	Vanc	1946	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	Vanc	1946	only	-	Oct	13	2:00	0	S
-Rule	Vanc	1947	1961	-	Sep	lastSun	2:00	0	S
-Rule	Vanc	1962	2006	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Vancouver	-8:12:28 -	LMT	1884
-			-8:00	Vanc	P%sT	1987
-			-8:00	Canada	P%sT
-Zone America/Dawson_Creek -8:00:56 -	LMT	1884
-			-8:00	Canada	P%sT	1947
-			-8:00	Vanc	P%sT	1972 Aug 30 2:00
-			-7:00	-	MST
-
-
-# Northwest Territories, Nunavut, Yukon
-
-# From Paul Eggert (2006-03-22):
-# Dawson switched to PST in 1973.  Inuvik switched to MST in 1979.
-# Mathew Englander (1996-10-07) gives the following refs:
-#	* 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
-#	c. 7 defines Yukon standard time as UTC-9.  This is still valid;
-#	see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
-#	* C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
-#	* O.I.C. 1980/02 established DST.
-#	* O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
-# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
-# with Englander.
-# From Chris Walton (2006-06-26):
-# Here is a link to the old daylight saving portion of the interpretation
-# act which was last updated in 1987:
-# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
-
-# From Rives McDow (1999-09-04):
-# Nunavut ... moved ... to incorporate the whole territory into one time zone.
-# 
-# Nunavut moves to single time zone Oct. 31
-# 
-#
-# From Antoine Leca (1999-09-06):
-# We then need to create a new timezone for the Kitikmeot region of Nunavut
-# to differentiate it from the Yellowknife region.
-
-# From Paul Eggert (1999-09-20):
-# 
-# Basic Facts: The New Territory
-#  (1999) reports that Pangnirtung operates on eastern time,
-# and that Coral Harbour does not observe DST.  We don't know when
-# Pangnirtung switched to eastern time; we'll guess 1995.
-
-# From Rives McDow (1999-11-08):
-# On October 31, when the rest of Nunavut went to Central time,
-# Pangnirtung wobbled.  Here is the result of their wobble:
-#
-# The following businesses and organizations in Pangnirtung use Central Time:
-#
-#	First Air, Power Corp, Nunavut Construction, Health Center, RCMP,
-#	Eastern Arctic National Parks, A & D Specialist
-#
-# The following businesses and organizations in Pangnirtung use Eastern Time:
-#
-#	Hamlet office, All other businesses, Both schools, Airport operator
-#
-# This has made for an interesting situation there, which warranted the news.
-# No one there that I spoke with seems concerned, or has plans to
-# change the local methods of keeping time, as it evidently does not
-# really interfere with any activities or make things difficult locally.
-# They plan to celebrate New Year's turn-over twice, one hour apart,
-# so it appears that the situation will last at least that long.
-# The Nunavut Intergovernmental Affairs hopes that they will "come to
-# their senses", but the locals evidently don't see any problem with
-# the current state of affairs.
-
-# From Michaela Rodrigue, writing in the
-# 
-# Nunatsiaq News (1999-11-19):
-# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
-# central - or Nunavut time - for government offices, and eastern time
-# for municipal offices and schools....  Igloolik [was similar but then]
-# made the switch to central time on Saturday, Nov. 6.
-
-# From Paul Eggert (2000-10-02):
-# Matthews and Vincent (1998) say the following, but we lack histories
-# for these potential new Zones.
-#
-# The Canadian Forces station at Alert uses Eastern Time while the
-# handful of residents at the Eureka weather station [in the Central
-# zone] skip daylight savings.  Baffin Island, which is crossed by the
-# Central, Eastern and Atlantic Time zones only uses Eastern Time.
-# Gjoa Haven, Taloyoak and Pelly Bay all use Mountain instead of
-# Central Time and Southampton Island [in the Central zone] is not
-# required to use daylight savings.
-
-# From
-# 
-# Nunavut now has two time zones
-#  (2000-11-10):
-# The Nunavut government would allow its employees in Kugluktuk and
-# Cambridge Bay to operate on central time year-round, putting them
-# one hour behind the rest of Nunavut for six months during the winter.
-# At the end of October the two communities had rebelled against
-# Nunavut's unified time zone, refusing to shift to eastern time with
-# the rest of the territory for the winter.  Cambridge Bay remained on
-# central time, while Kugluktuk, even farther west, reverted to
-# mountain time, which they had used before the advent of Nunavut's
-# unified time zone in 1999.
-#
-# From Rives McDow (2001-01-20), quoting the Nunavut government:
-# The preceding decision came into effect at midnight, Saturday Nov 4, 2000.
-
-# From Paul Eggert (2000-12-04):
-# Let's just keep track of the official times for now.
-
-# From Rives McDow (2001-03-07):
-# The premier of Nunavut has issued a ministerial statement advising
-# that effective 2001-04-01, the territory of Nunavut will revert
-# back to three time zones (mountain, central, and eastern).  Of the
-# cities in Nunavut, Coral Harbor is the only one that I know of that
-# has said it will not observe dst, staying on EST year round.  I'm
-# checking for more info, and will get back to you if I come up with
-# more.
-# [Also see  (2001-03-09).]
-
-# From Gwillim Law (2005-05-21):
-# According to maps at
-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
-# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
-# (both dated 2003), and
-# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
-# (from a 1998 Canadian Geographic article), the de facto and de jure time
-# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
-# round.  Using Google, it's easy to find other websites that confirm this.
-# I wasn't able to find how far back this time regimen goes, but since it
-# predates the creation of Nunavut, it probably goes back many years....
-# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
-#
-# From Paul Eggert (2005-07-26):
-# For lack of better information, assume that Southampton Island observed
-# daylight saving only during wartime.
-
-# From Chris Walton (2007-03-01):
-# ... the community of Resolute (located on Cornwallis Island in
-# Nunavut) moved from Central Time to Eastern Time last November.
-# Basically the community did not change its clocks at the end of
-# daylight saving....
-# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
-
-# From Chris Walton (2007-03-14):
-# Today I phoned the "hamlet office" to find out what Resolute was doing with
-# its clocks.
-#
-# The individual that answered the phone confirmed that the clocks did not
-# move at the end of daylight saving on October 29/2006.  He also told me that
-# the clocks did not move this past weekend (March 11/2007)....
-#
-# America/Resolute should use the "Canada" Rule up to October 29/2006.
-# After that it should be fixed on Eastern Standard Time until further notice.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	NT_YK	1918	only	-	Apr	14	2:00	1:00	D
-Rule	NT_YK	1918	only	-	Oct	27	2:00	0	S
-Rule	NT_YK	1919	only	-	May	25	2:00	1:00	D
-Rule	NT_YK	1919	only	-	Nov	 1	0:00	0	S
-Rule	NT_YK	1942	only	-	Feb	 9	2:00	1:00	W # War
-Rule	NT_YK	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	NT_YK	1945	only	-	Sep	30	2:00	0	S
-Rule	NT_YK	1965	only	-	Apr	lastSun	0:00	2:00	DD
-Rule	NT_YK	1965	only	-	Oct	lastSun	2:00	0	S
-Rule	NT_YK	1980	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	NT_YK	1980	2006	-	Oct	lastSun	2:00	0	S
-Rule	NT_YK	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# aka Panniqtuuq
-Zone America/Pangnirtung 0	-	zzz	1921 # trading post est.
-			-4:00	NT_YK	A%sT	1995 Apr Sun>=1 2:00
-			-5:00	Canada	E%sT	1999 Oct 31 2:00
-			-6:00	Canada	C%sT	2000 Oct 29 2:00
-			-5:00	Canada	E%sT
-# formerly Frobisher Bay
-Zone America/Iqaluit	0	-	zzz	1942 Aug # Frobisher Bay est.
-			-5:00	NT_YK	E%sT	1999 Oct 31 2:00
-			-6:00	Canada	C%sT	2000 Oct 29 2:00
-			-5:00	Canada	E%sT
-# aka Qausuittuq
-Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
-			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
-			-5:00	-	EST	2001 Apr  1 3:00
-			-6:00	Canada	C%sT	2006 Oct 29 2:00
-			-5:00	-	EST
-# aka Kangiqiniq
-Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
-			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
-			-5:00	-	EST	2001 Apr  1 3:00
-			-6:00	Canada	C%sT
-# aka Iqaluktuuttiaq
-Zone America/Cambridge_Bay 0	-	zzz	1920 # trading post est.?
-			-7:00	NT_YK	M%sT	1999 Oct 31 2:00
-			-6:00	Canada	C%sT	2000 Oct 29 2:00
-			-5:00	-	EST	2000 Nov  5 0:00
-			-6:00	-	CST	2001 Apr  1 3:00
-			-7:00	Canada	M%sT
-Zone America/Yellowknife 0	-	zzz	1935 # Yellowknife founded?
-			-7:00	NT_YK	M%sT	1980
-			-7:00	Canada	M%sT
-Zone America/Inuvik	0	-	zzz	1953 # Inuvik founded
-			-8:00	NT_YK	P%sT	1979 Apr lastSun 2:00
-			-7:00	NT_YK	M%sT	1980
-			-7:00	Canada	M%sT
-Zone America/Whitehorse	-9:00:12 -	LMT	1900 Aug 20
-			-9:00	NT_YK	Y%sT	1966 Jul 1 2:00
-			-8:00	NT_YK	P%sT	1980
-			-8:00	Canada	P%sT
-Zone America/Dawson	-9:17:40 -	LMT	1900 Aug 20
-			-9:00	NT_YK	Y%sT	1973 Oct 28 0:00
-			-8:00	NT_YK	P%sT	1980
-			-8:00	Canada	P%sT
-
-
-###############################################################################
-
-# Mexico
-
-# From Paul Eggert (2001-03-05):
-# The Investigation and Analysis Service of the
-# Mexican Library of Congress (MLoC) has published a
-# 
-# history of Mexican local time (in Spanish)
-# .
-#
-# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
-# (In all cases we go with the MLoC.)
-# S&P report that Baja was at -8:00 in 1922/1923.
-# S&P say the 1930 transition in Baja was 1930-11-16.
-# S&P report no DST during summer 1931.
-# S&P report a transition at 1932-03-30 23:00, not 1932-04-01.
-
-# From Gwillim Law (2001-02-20):
-# There are some other discrepancies between the Decrees page and the
-# tz database.  I think they can best be explained by supposing that
-# the researchers who prepared the Decrees page failed to find some of
-# the relevant documents.
-
-# From Alan Perry (1996-02-15):
-# A guy from our Mexico subsidiary finally found the Presidential Decree
-# outlining the timezone changes in Mexico.
-#
-# ------------- Begin Forwarded Message -------------
-#
-# I finally got my hands on the Official Presidential Decree that sets up the
-# rules for the DST changes. The rules are:
-#
-# 1. The country is divided in 3 timezones:
-#    - Baja California Norte (the Mexico/BajaNorte TZ)
-#    - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ)
-#    - The rest of the country (the Mexico/General TZ)
-#
-# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October
-#    at 2:00 AM, the times in each zone are as follows:
-#    BajaNorte: GMT+7
-#    BajaSur:   GMT+6
-#    General:   GMT+5
-#
-# 3. The rest of the year, the times are as follows:
-#    BajaNorte: GMT+8
-#    BajaSur:   GMT+7
-#    General:   GMT+6
-#
-# The Decree was published in Mexico's Official Newspaper on January 4th.
-#
-# -------------- End Forwarded Message --------------
-# From Paul Eggert (1996-06-12):
-# For an English translation of the decree, see
-# 
-# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).
-# 
-
-# From Rives McDow (1998-10-08):
-# The State of Quintana Roo has reverted back to central STD and DST times
-# (i.e. UTC -0600 and -0500 as of 1998-08-02).
-
-# From Rives McDow (2000-01-10):
-# Effective April 4, 1999 at 2:00 AM local time, Sonora changed to the time
-# zone 5 hours from the International Date Line, and will not observe daylight
-# savings time so as to stay on the same time zone as the southern part of
-# Arizona year round.
-
-# From Jesper Norgaard, translating
-#  (2001-01-17):
-# In Oaxaca, the 55.000 teachers from the Section 22 of the National
-# Syndicate of Education Workers, refuse to apply daylight saving each
-# year, so that the more than 10,000 schools work at normal hour the
-# whole year.
-
-# From Gwillim Law (2001-01-19):
-#  ... says
-# (translated):...
-# January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
-# that Summer Time will be reduced from seven to five months, starting
-# this year....
-# 
-# [translated], says "summer time will ... take effect on the first Sunday
-# in May, and end on the last Sunday of September.
-
-# From Arthur David Olson (2001-01-25):
-# The 2001-01-24 traditional Washington Post contained the page one
-# story "Timely Issue Divides Mexicans."...
-# http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
-# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
-# Mexico City and its 20 million residents on a different time than
-# the rest of the country..." In particular, Lopez Obrador would abolish
-# observation of Daylight Saving Time.
-
-# 
-# Official statute published by the Energy Department
-#  (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
-# and Sonora with no DST.  This was reported by Jesper Norgaard (2001-02-03).
-
-# From Paul Eggert (2001-03-03):
-#
-# 
-# James F. Smith writes in today's LA Times
-# 
-# * Sonora will continue to observe standard time.
-# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
-#   the Federal District will not adopt DST.
-# * 4 of 16 district leaders announced they'll ignore the decree.
-# * The decree does not affect federal-controlled facilities including
-#   the airport, banks, hospitals, and schools.
-#
-# For now we'll assume that the Federal District will bow to federal rules.
-
-# From Jesper Norgaard (2001-04-01):
-# I found some references to the Mexican application of daylight
-# saving, which modifies what I had already sent you, stating earlier
-# that a number of northern Mexican states would go on daylight
-# saving. The modification reverts this to only cover Baja California
-# (Norte), while all other states (except Sonora, who has no daylight
-# saving all year) will follow the original decree of president
-# Vicente Fox, starting daylight saving May 6, 2001 and ending
-# September 30, 2001.
-# References: "Diario de Monterrey" 
-# Palabra  (2001-03-31)
-
-# From Reuters (2001-09-04):
-# Mexico's Supreme Court on Tuesday declared that daylight savings was
-# unconstitutional in Mexico City, creating the possibility the
-# capital will be in a different time zone from the rest of the nation
-# next year....  The Supreme Court's ruling takes effect at 2:00
-# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to
-# standard time. "This is so residents of the Federal District are not
-# subject to unexpected time changes," a statement from the court said.
-
-# From Jesper Norgaard Welen (2002-03-12):
-# ... consulting my local grocery store(!) and my coworkers, they all insisted
-# that a new decision had been made to reinstate US style DST in Mexico....
-# http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
-# confirms this.  Sonora as usual is the only state where DST is not applied.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Mexico	1939	only	-	Feb	5	0:00	1:00	D
-Rule	Mexico	1939	only	-	Jun	25	0:00	0	S
-Rule	Mexico	1940	only	-	Dec	9	0:00	1:00	D
-Rule	Mexico	1941	only	-	Apr	1	0:00	0	S
-Rule	Mexico	1943	only	-	Dec	16	0:00	1:00	W # War
-Rule	Mexico	1944	only	-	May	1	0:00	0	S
-Rule	Mexico	1950	only	-	Feb	12	0:00	1:00	D
-Rule	Mexico	1950	only	-	Jul	30	0:00	0	S
-Rule	Mexico	1996	2000	-	Apr	Sun>=1	2:00	1:00	D
-Rule	Mexico	1996	2000	-	Oct	lastSun	2:00	0	S
-Rule	Mexico	2001	only	-	May	Sun>=1	2:00	1:00	D
-Rule	Mexico	2001	only	-	Sep	lastSun	2:00	0	S
-Rule	Mexico	2002	max	-	Apr	Sun>=1	2:00	1:00	D
-Rule	Mexico	2002	max	-	Oct	lastSun	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-# Quintana Roo
-Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
-			-6:00	-	CST	1981 Dec 23
-			-5:00	Mexico	E%sT	1998 Aug  2  2:00
-			-6:00	Mexico	C%sT
-# Campeche, Yucatan
-Zone America/Merida	-5:58:28 -	LMT	1922 Jan  1  0:01:32
-			-6:00	-	CST	1981 Dec 23
-			-5:00	-	EST	1982 Dec  2
-			-6:00	Mexico	C%sT
-# Coahuila, Durango, Nuevo Leon, Tamaulipas
-Zone America/Monterrey	-6:41:16 -	LMT	1921 Dec 31 23:18:44
-			-6:00	-	CST	1988
-			-6:00	US	C%sT	1989
-			-6:00	Mexico	C%sT
-# Central Mexico
-Zone America/Mexico_City -6:36:36 -	LMT	1922 Jan  1  0:23:24
-			-7:00	-	MST	1927 Jun 10 23:00
-			-6:00	-	CST	1930 Nov 15
-			-7:00	-	MST	1931 May  1 23:00
-			-6:00	-	CST	1931 Oct
-			-7:00	-	MST	1932 Apr  1
-			-6:00	Mexico	C%sT	2001 Sep 30 02:00
-			-6:00	-	CST	2002 Feb 20
-			-6:00	Mexico	C%sT
-# Chihuahua
-Zone America/Chihuahua	-7:04:20 -	LMT	1921 Dec 31 23:55:40
-			-7:00	-	MST	1927 Jun 10 23:00
-			-6:00	-	CST	1930 Nov 15
-			-7:00	-	MST	1931 May  1 23:00
-			-6:00	-	CST	1931 Oct
-			-7:00	-	MST	1932 Apr  1
-			-6:00	-	CST	1996
-			-6:00	Mexico	C%sT	1998
-			-6:00	-	CST	1998 Apr Sun>=1 3:00
-			-7:00	Mexico	M%sT
-# Sonora
-Zone America/Hermosillo	-7:23:52 -	LMT	1921 Dec 31 23:36:08
-			-7:00	-	MST	1927 Jun 10 23:00
-			-6:00	-	CST	1930 Nov 15
-			-7:00	-	MST	1931 May  1 23:00
-			-6:00	-	CST	1931 Oct
-			-7:00	-	MST	1932 Apr  1
-			-6:00	-	CST	1942 Apr 24
-			-7:00	-	MST	1949 Jan 14
-			-8:00	-	PST	1970
-			-7:00	Mexico	M%sT	1999
-			-7:00	-	MST
-# Baja California Sur, Nayarit, Sinaloa
-Zone America/Mazatlan	-7:05:40 -	LMT	1921 Dec 31 23:54:20
-			-7:00	-	MST	1927 Jun 10 23:00
-			-6:00	-	CST	1930 Nov 15
-			-7:00	-	MST	1931 May  1 23:00
-			-6:00	-	CST	1931 Oct
-			-7:00	-	MST	1932 Apr  1
-			-6:00	-	CST	1942 Apr 24
-			-7:00	-	MST	1949 Jan 14
-			-8:00	-	PST	1970
-			-7:00	Mexico	M%sT
-# Baja California
-Zone America/Tijuana	-7:48:04 -	LMT	1922 Jan  1  0:11:56
-			-7:00	-	MST	1924
-			-8:00	-	PST	1927 Jun 10 23:00
-			-7:00	-	MST	1930 Nov 15
-			-8:00	-	PST	1931 Apr  1
-			-8:00	1:00	PDT	1931 Sep 30
-			-8:00	-	PST	1942 Apr 24
-			-8:00	1:00	PWT	1945 Aug 14 23:00u
-			-8:00	1:00	PPT	1945 Nov 12 # Peace
-			-8:00	-	PST	1948 Apr  5
-			-8:00	1:00	PDT	1949 Jan 14
-			-8:00	-	PST	1954
-			-8:00	CA	P%sT	1961
-			-8:00	-	PST	1976
-			-8:00	US	P%sT	1996
-			-8:00	Mexico	P%sT	2001
-			-8:00	US	P%sT	2002 Feb 20
-			-8:00	Mexico	P%sT
-# From Paul Eggert (2006-03-22):
-# Formerly there was an America/Ensenada zone, which differed from
-# America/Tijuana only in that it did not observe DST from 1976
-# through 1995.  This was as per Shanks (1999).  But Shanks & Pottenger say
-# Ensenada did not observe DST from 1948 through 1975.  Guy Harris reports
-# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
-# Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
-# DST-observance was a town-by-town matter back then.  This concerns
-# data after 1970 so most likely there should be at least one Zone
-# other than America/Tijuana for Baja, but it's not clear yet what its
-# name or contents should be.
-#
-# Revillagigedo Is
-# no information
-
-###############################################################################
-
-# Anguilla
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Anguilla	-4:12:16 -	LMT	1912 Mar 2
-			-4:00	-	AST
-
-# Antigua and Barbuda
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Antigua	-4:07:12 -	LMT	1912 Mar 2
-			-5:00	-	EST	1951
-			-4:00	-	AST
-
-# Bahamas
-#
-# From Sue Williams (2006-12-07):
-# The Bahamas announced about a month ago that they plan to change their DST
-# rules to sync with the U.S. starting in 2007....
-# http://www.jonesbahamas.com/?c=45&a=10412
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Bahamas	1964	2006	-	Oct	lastSun	2:00	0	S
-Rule	Bahamas	1964	1986	-	Apr	lastSun	2:00	1:00	D
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Nassau	-5:09:24 -	LMT	1912 Mar 2
-			-5:00	Bahamas	E%sT	1976
-			-5:00	US	E%sT
-
-# Barbados
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Barb	1977	only	-	Jun	12	2:00	1:00	D
-Rule	Barb	1977	1978	-	Oct	Sun>=1	2:00	0	S
-Rule	Barb	1978	1980	-	Apr	Sun>=15	2:00	1:00	D
-Rule	Barb	1979	only	-	Sep	30	2:00	0	S
-Rule	Barb	1980	only	-	Sep	25	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Barbados	-3:58:28 -	LMT	1924		# Bridgetown
-			-3:58:28 -	BMT	1932	  # Bridgetown Mean Time
-			-4:00	Barb	A%sT
-
-# Belize
-# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Belize	1918	1942	-	Oct	Sun>=2	0:00	0:30	HD
-Rule	Belize	1919	1943	-	Feb	Sun>=9	0:00	0	S
-Rule	Belize	1973	only	-	Dec	 5	0:00	1:00	D
-Rule	Belize	1974	only	-	Feb	 9	0:00	0	S
-Rule	Belize	1982	only	-	Dec	18	0:00	1:00	D
-Rule	Belize	1983	only	-	Feb	12	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Belize	-5:52:48 -	LMT	1912 Apr
-			-6:00	Belize	C%sT
-
-# Bermuda
-
-# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
-
-# Next year, however, clocks in the US will go forward on the second Sunday
-# in March, until the first Sunday in November.  And, after the Time Zone
-# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
-# Friday, the same thing will happen in Bermuda.
-# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/Bermuda	-4:19:04 -	LMT	1930 Jan  1 2:00    # Hamilton
-			-4:00	-	AST	1974 Apr 28 2:00
-			-4:00	Bahamas	A%sT	1976
-			-4:00	US	A%sT
-
-# Cayman Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
-			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
-			-5:00	-	EST
-
-# Costa Rica
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
-Rule	CR	1979	1980	-	Jun	Sun>=1	0:00	0	S
-Rule	CR	1991	1992	-	Jan	Sat>=15	0:00	1:00	D
-# IATA SSIM (1991-09) says the following was at 1:00;
-# go with Shanks & Pottenger.
-Rule	CR	1991	only	-	Jul	 1	0:00	0	S
-Rule	CR	1992	only	-	Mar	15	0:00	0	S
-# There are too many San Joses elsewhere, so we'll use `Costa Rica'.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
-			-5:36:20 -	SJMT	1921 Jan 15 # San Jose Mean Time
-			-6:00	CR	C%sT
-# Coco
-# no information; probably like America/Costa_Rica
-
-# Cuba
-
-# From Arthur David Olson (1999-03-29):
-# The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
-# the Cuban National Team and the Baltimore Orioles was carried live on
-# the Orioles Radio Network, including affiliate WTOP in Washington, DC.
-# During the game, play-by-play announcer Jim Hunter noted that
-# "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
-# Time today."  (The "two hour" remark referred to losing one hour of
-# sleep on 1999-03-28--when the announcers were in Cuba as it switched
-# to DST--and one more hour on 1999-04-04--when the announcers will have
-# returned to Baltimore, which switches on that date.)
-
-# From Evert van der Veer via Steffen Thorsen (2004-10-28):
-# Cuba is not going back to standard time this year.
-# From Paul Eggert (2006-03-22):
-# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html
-# says that it's due to a problem at the Antonio Guiteras
-# thermoelectric plant, and says "This October there will be no return
-# to normal hours (after daylight saving time)".
-# For now, let's assume that it's a temporary measure.
-
-# From Carlos A. Carnero Delgado (2005-11-12):
-# This year (just like in 2004-2005) there's no change in time zone
-# adjustment in Cuba.  We will stay in daylight saving time:
-# http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
-
-# From Jesper Norgaard Welen (2006-10-21):
-# An article in GRANMA INTERNACIONAL claims that Cuba will end
-# the 3 years of permanent DST next weekend, see
-# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
-# "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
-# watches should be set back one hour -- going back to 00:00 hours -- returning
-# to the normal schedule....
-
-# From Paul Eggert (2007-03-02):
-# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
-# says Cuban clocks will advance at midnight on March 10.
-# For lack of better information, assume Cuba will use US rules,
-# except that it switches at midnight standard time as usual.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
-Rule	Cuba	1928	only	-	Oct	10	0:00	0	S
-Rule	Cuba	1940	1942	-	Jun	Sun>=1	0:00	1:00	D
-Rule	Cuba	1940	1942	-	Sep	Sun>=1	0:00	0	S
-Rule	Cuba	1945	1946	-	Jun	Sun>=1	0:00	1:00	D
-Rule	Cuba	1945	1946	-	Sep	Sun>=1	0:00	0	S
-Rule	Cuba	1965	only	-	Jun	1	0:00	1:00	D
-Rule	Cuba	1965	only	-	Sep	30	0:00	0	S
-Rule	Cuba	1966	only	-	May	29	0:00	1:00	D
-Rule	Cuba	1966	only	-	Oct	2	0:00	0	S
-Rule	Cuba	1967	only	-	Apr	8	0:00	1:00	D
-Rule	Cuba	1967	1968	-	Sep	Sun>=8	0:00	0	S
-Rule	Cuba	1968	only	-	Apr	14	0:00	1:00	D
-Rule	Cuba	1969	1977	-	Apr	lastSun	0:00	1:00	D
-Rule	Cuba	1969	1971	-	Oct	lastSun	0:00	0	S
-Rule	Cuba	1972	1974	-	Oct	8	0:00	0	S
-Rule	Cuba	1975	1977	-	Oct	lastSun	0:00	0	S
-Rule	Cuba	1978	only	-	May	7	0:00	1:00	D
-Rule	Cuba	1978	1990	-	Oct	Sun>=8	0:00	0	S
-Rule	Cuba	1979	1980	-	Mar	Sun>=15	0:00	1:00	D
-Rule	Cuba	1981	1985	-	May	Sun>=5	0:00	1:00	D
-Rule	Cuba	1986	1989	-	Mar	Sun>=14	0:00	1:00	D
-Rule	Cuba	1990	1997	-	Apr	Sun>=1	0:00	1:00	D
-Rule	Cuba	1991	1995	-	Oct	Sun>=8	0:00s	0	S
-Rule	Cuba	1996	only	-	Oct	 6	0:00s	0	S
-Rule	Cuba	1997	only	-	Oct	12	0:00s	0	S
-Rule	Cuba	1998	1999	-	Mar	lastSun	0:00s	1:00	D
-Rule	Cuba	1998	2003	-	Oct	lastSun	0:00s	0	S
-Rule	Cuba	2000	2006	-	Apr	Sun>=1	0:00s	1:00	D
-Rule	Cuba	2006	only	-	Oct	lastSun	0:00s	0	S
-Rule	Cuba	2007	max	-	Mar	Sun>=8	0:00s	1:00	D
-Rule	Cuba	2007	max	-	Nov	Sun>=1	0:00s	0	S
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Havana	-5:29:28 -	LMT	1890
-			-5:29:36 -	HMT	1925 Jul 19 12:00 # Havana MT
-			-5:00	Cuba	C%sT
-
-# Dominica
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Dominica	-4:05:36 -	LMT	1911 Jul 1 0:01		# Roseau
-			-4:00	-	AST
-
-# Dominican Republic
-
-# From Steffen Thorsen (2000-10-30):
-# Enrique Morales reported to me that the Dominican Republic has changed the
-# time zone to Eastern Standard Time as of Sunday 29 at 2 am....
-# http://www.listin.com.do/antes/261000/republica/princi.html
-
-# From Paul Eggert (2000-12-04):
-# That URL (2000-10-26, in Spanish) says they planned to use US-style DST.
-
-# From Rives McDow (2000-12-01):
-# Dominican Republic changed its mind and presidential decree on Tuesday,
-# November 28, 2000, with a new decree.  On Sunday, December 3 at 1:00 AM the
-# Dominican Republic will be reverting to 8 hours from the International Date
-# Line, and will not be using DST in the foreseeable future.  The reason they
-# decided to use DST was to be in synch with Puerto Rico, who was also going
-# to implement DST.  When Puerto Rico didn't implement DST, the president
-# decided to revert.
-
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	DR	1966	only	-	Oct	30	0:00	1:00	D
-Rule	DR	1967	only	-	Feb	28	0:00	0	S
-Rule	DR	1969	1973	-	Oct	lastSun	0:00	0:30	HD
-Rule	DR	1970	only	-	Feb	21	0:00	0	S
-Rule	DR	1971	only	-	Jan	20	0:00	0	S
-Rule	DR	1972	1974	-	Jan	21	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Santo_Domingo -4:39:36 -	LMT	1890
-			-4:40	-	SDMT	1933 Apr  1 12:00 # S. Dom. MT
-			-5:00	DR	E%sT	1974 Oct 27
-			-4:00	-	AST	2000 Oct 29 02:00
-			-5:00	US	E%sT	2000 Dec  3 01:00
-			-4:00	-	AST
-
-# El Salvador
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Salv	1987	1988	-	May	Sun>=1	0:00	1:00	D
-Rule	Salv	1987	1988	-	Sep	lastSun	0:00	0	S
-# There are too many San Salvadors elsewhere, so use America/El_Salvador
-# instead of America/San_Salvador.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
-			-6:00	Salv	C%sT
-
-# Grenada
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Grenada	-4:07:00 -	LMT	1911 Jul	# St George's
-			-4:00	-	AST
-
-# Guadeloupe
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Guadeloupe	-4:06:08 -	LMT	1911 Jun 8	# Pointe a Pitre
-			-4:00	-	AST
-
-# Guatemala
-#
-# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
-# Diario Co Latino, at
-# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
-# says in an article dated 2006-04-19 that the Guatemalan government had
-# decided on that date to advance official time by 60 minutes, to lessen the
-# impact of the elevated cost of oil....  Daylight saving time will last from
-# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified).
-# From Paul Eggert (2006-06-22):
-# The Ministry of Energy and Mines, press release CP-15/2006
-# (2006-04-19), says DST ends at 24:00.  See
-# .
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Guat	1973	only	-	Nov	25	0:00	1:00	D
-Rule	Guat	1974	only	-	Feb	24	0:00	0	S
-Rule	Guat	1983	only	-	May	21	0:00	1:00	D
-Rule	Guat	1983	only	-	Sep	22	0:00	0	S
-Rule	Guat	1991	only	-	Mar	23	0:00	1:00	D
-Rule	Guat	1991	only	-	Sep	 7	0:00	0	S
-Rule	Guat	2006	only	-	Apr	30	0:00	1:00	D
-Rule	Guat	2006	only	-	Oct	 1	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Guatemala	-6:02:04 -	LMT	1918 Oct 5
-			-6:00	Guat	C%sT
-
-# Haiti
-# From Gwillim Law (2005-04-15):
-# Risto O. Nykanen wrote me that Haiti is now on DST.
-# I searched for confirmation, and I found a
-#  press release
-# on the Web page of the Haitian Consulate in Chicago (2005-03-31),
-# .  Translated from French, it says:
-#
-#  "The Prime Minister's Communication Office notifies the public in general
-#   and the press in particular that, following a decision of the Interior
-#   Ministry and the Territorial Collectivities [I suppose that means the
-#   provinces], Haiti will move to Eastern Daylight Time in the night from next
-#   Saturday the 2nd to Sunday the 3rd.
-#
-#  "Consequently, the Prime Minister's Communication Office wishes to inform
-#   the population that the country's clocks will be set forward one hour
-#   starting at midnight.  This provision will hold until the last Saturday in
-#   October 2005.
-#
-#  "Port-au-Prince, March 31, 2005"
-#
-# From Steffen Thorsen (2006-04-04):
-# I have been informed by users that Haiti observes DST this year like
-# last year, so the current "only" rule for 2005 might be changed to a
-# "max" rule or to last until 2006. (Who knows if they will observe DST
-# next year or if they will extend their DST like US/Canada next year).
-#
-# I have found this article about it (in French):
-# http://www.haitipressnetwork.com/news.cfm?articleID=7612
-#
-# The reason seems to be an energy crisis.
-
-# From Stephen Colebourne (2007-02-22):
-# Some IATA info: Haiti won't be having DST in 2007.
-
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Haiti	1983	only	-	May	8	0:00	1:00	D
-Rule	Haiti	1984	1987	-	Apr	lastSun	0:00	1:00	D
-Rule	Haiti	1983	1987	-	Oct	lastSun	0:00	0	S
-# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s.
-# Go with IATA.
-Rule	Haiti	1988	1997	-	Apr	Sun>=1	1:00s	1:00	D
-Rule	Haiti	1988	1997	-	Oct	lastSun	1:00s	0	S
-Rule	Haiti	2005	2006	-	Apr	Sun>=1	0:00	1:00	D
-Rule	Haiti	2005	2006	-	Oct	lastSun	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Port-au-Prince -4:49:20 -	LMT	1890
-			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
-			-5:00	Haiti	E%sT
-
-# Honduras
-# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1.
-
-# From Paul Eggert (2006-05-05):
-# worldtimezone.com reports a 2006-05-02 Spanish-language AP article
-# saying Honduras will start using DST midnight Saturday, effective 4
-# months until September.  La Tribuna reported today
-#  that Manuel Zelaya, the president
-# of Honduras, refused to back down on this.
-
-# From Jesper Norgaard Welen (2006-08-08):
-# It seems that Honduras has returned from DST to standard time this Monday at
-# 00:00 hours (prolonging Sunday to 25 hours duration).
-# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
-
-# From Paul Eggert (2006-08-08):
-# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
-# .
-# It mentions executive decree 18-2006.
-
-# From Steffen Thorsen (2006-08-17):
-# Honduras will observe DST from 2007 to 2009, exact dates are not
-# published, I have located this authoritative source:
-# http://www.presidencia.gob.hn/noticia.aspx?nId=47
-
-# From Steffen Thorsen (2007-03-30):
-# http://www.laprensahn.com/pais_nota.php?id04962=7386
-# So it seems that Honduras will not enter DST this year....
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Hond	1987	1988	-	May	Sun>=1	0:00	1:00	D
-Rule	Hond	1987	1988	-	Sep	lastSun	0:00	0	S
-Rule	Hond	2006	only	-	May	Sun>=1	0:00	1:00	D
-Rule	Hond	2006	only	-	Aug	Mon>=1	0:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Tegucigalpa -5:48:52 -	LMT	1921 Apr
-			-6:00	Hond	C%sT
-#
-# Great Swan I ceded by US to Honduras in 1972
-
-# Jamaica
-
-# From Bob Devine (1988-01-28):
-# Follows US rules.
-
-# From U. S. Naval Observatory (1989-01-19):
-# JAMAICA             5 H  BEHIND UTC
-
-# From Shanks & Pottenger:
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Jamaica	-5:07:12 -	LMT	1890		# Kingston
-			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
-			-5:00	-	EST	1974 Apr 28 2:00
-			-5:00	US	E%sT	1984
-			-5:00	-	EST
-
-# Martinique
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Martinique	-4:04:20 -      LMT	1890		# Fort-de-France
-			-4:04:20 -	FFMT	1911 May     # Fort-de-France MT
-			-4:00	-	AST	1980 Apr  6
-			-4:00	1:00	ADT	1980 Sep 28
-			-4:00	-	AST
-
-# Montserrat
-# From Paul Eggert (2006-03-22):
-# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.
-# world.gazetteer.com says Cork Hill is the most populous location now.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Montserrat	-4:08:52 -	LMT	1911 Jul 1 0:01   # Cork Hill
-			-4:00	-	AST
-
-# Nicaragua
-#
-# This uses Shanks & Pottenger for times before 2005.
-#
-# From Steffen Thorsen (2005-04-12):
-# I've got reports from 8 different people that Nicaragua just started
-# DST on Sunday 2005-04-10, in order to save energy because of
-# expensive petroleum.  The exact end date for DST is not yet
-# announced, only "September" but some sites also say "mid-September".
-# Some background information is available on the President's official site:
-# http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm
-# The Decree, no 23-2005 is available here:
-# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf
-#
-# From Paul Eggert (2005-05-01):
-# The decree doesn't say anything about daylight saving, but for now let's
-# assume that it is daylight saving....
-#
-# From Gwillim Law (2005-04-21):
-# The Associated Press story on the time change, which can be found at
-# http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
-# and elsewhere, says (fifth paragraph, translated from Spanish):  "The last
-# time that a change of clocks was applied to save energy was in the year 2000
-# during the Arnoldo Aleman administration."...
-# The northamerica file says that Nicaragua has been on UTC-6 continuously
-# since December 1998.  I wasn't able to find any details of Nicaraguan time
-# changes in 2000.  Perhaps a note could be added to the northamerica file, to
-# the effect that we have indirect evidence that DST was observed in 2000.
-#
-# From Jesper Norgaard Welen (2005-11-02):
-# Nicaragua left DST the 2005-10-02 at 00:00 (local time).
-# http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
-# (2005-09-26)
-#
-# From Jesper Norgaard Welen (2006-05-05):
-# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
-# (my informal translation)
-# By order of the president of the republic, Enrique Bolanos, Nicaragua
-# advanced by sixty minutes their official time, yesterday at 2 in the
-# morning, and will stay that way until 30.th. of september.
-#
-# From Jesper Norgaard Welen (2006-09-30):
-# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
-# My informal translation runs:
-# The natural sun time is restored in all the national territory, in that the
-# time is returned one hour at 01:00 am of October 1 of 2006.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Nic	1979	1980	-	Mar	Sun>=16	0:00	1:00	D
-Rule	Nic	1979	1980	-	Jun	Mon>=23	0:00	0	S
-Rule	Nic	2005	only	-	Apr	10	0:00	1:00	D
-Rule	Nic	2005	only	-	Oct	Sun>=1	0:00	0	S
-Rule	Nic	2006	only	-	Apr	30	2:00	1:00	D
-Rule	Nic	2006	only	-	Oct	Sun>=1	1:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Managua	-5:45:08 -	LMT	1890
-			-5:45:12 -	MMT	1934 Jun 23 # Managua Mean Time?
-			-6:00	-	CST	1973 May
-			-5:00	-	EST	1975 Feb 16
-			-6:00	Nic	C%sT	1992 Jan  1 4:00
-			-5:00	-	EST	1992 Sep 24
-			-6:00	-	CST	1993
-			-5:00	-	EST	1997
-			-6:00	Nic	C%sT
-
-# Panama
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Panama	-5:18:08 -	LMT	1890
-			-5:19:36 -	CMT	1908 Apr 22   # Colon Mean Time
-			-5:00	-	EST
-
-# Puerto Rico
-# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
-			-4:00	-	AST	1942 May  3
-			-4:00	US	A%sT	1946
-			-4:00	-	AST
-
-# St Kitts-Nevis
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Kitts	-4:10:52 -	LMT	1912 Mar 2	# Basseterre
-			-4:00	-	AST
-
-# St Lucia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Lucia	-4:04:00 -	LMT	1890		# Castries
-			-4:04:00 -	CMT	1912	    # Castries Mean Time
-			-4:00	-	AST
-
-# St Pierre and Miquelon
-# There are too many St Pierres elsewhere, so we'll use `Miquelon'.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
-			-4:00	-	AST	1980 May
-			-3:00	-	PMST	1987 # Pierre & Miquelon Time
-			-3:00	Canada	PM%sT
-
-# St Vincent and the Grenadines
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Vincent	-4:04:56 -	LMT	1890		# Kingstown
-			-4:04:56 -	KMT	1912	   # Kingstown Mean Time
-			-4:00	-	AST
-
-# Turks and Caicos
-#
-# From Chris Dunn in
-# 
-# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
-# daylight saving dates for time changes have been adjusted to match
-# the recent U.S. change of dates.
-#
-# From Brian Inglis (2007-04-28):
-# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]
-# there is an entry for Nov 4 "Daylight Savings Time Ends 2007" and three
-# rows before that there is an out of date entry for Oct:
-# "Eastern Standard Times Begins 2007
-# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
-# indicating that the normal ET rules are followed.
-#
-# From Paul Eggert (2006-05-01):
-# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
-# says they switch at midnight.  Go with Shanks & Pottenger.
-#
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	TC	1979	1986	-	Apr	lastSun	2:00	1:00	D
-Rule	TC	1979	2006	-	Oct	lastSun	2:00	0	S
-Rule	TC	1987	2006	-	Apr	Sun>=1	2:00	1:00	D
-Rule	TC	2007	max	-	Mar	Sun>=8	2:00	1:00	D
-Rule	TC	2007	max	-	Nov	Sun>=1	2:00	0	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Grand_Turk	-4:44:32 -	LMT	1890
-			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
-			-5:00	TC	E%sT
-
-# British Virgin Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Tortola	-4:18:28 -	LMT	1911 Jul    # Road Town
-			-4:00	-	AST
-
-# Virgin Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Thomas	-4:19:44 -	LMT	1911 Jul    # Charlotte Amalie
-			-4:00	-	AST
diff --git a/bin/glibc-2.7/timezone/pacificnew b/bin/glibc-2.7/timezone/pacificnew
deleted file mode 100644
index 667940bf..00000000
--- a/bin/glibc-2.7/timezone/pacificnew
+++ /dev/null
@@ -1,26 +0,0 @@
-# @(#)pacificnew	8.1
-
-# From Arthur David Olson (1989-04-05):
-# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
-# establishing "Pacific Presidential Election Time"; it was not acted on
-# by the Senate or signed into law by the President.
-# You might want to change the "PE" (Presidential Election) below to
-# "Q" (Quadrennial) to maintain three-character zone abbreviations.
-# If you're really conservative, you might want to change it to "D".
-# Avoid "L" (Leap Year), which won't be true in 2100.
-
-# If Presidential Election Time is ever established, replace "XXXX" below
-# with the year the law takes effect and uncomment the "##" lines.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-## Rule	Twilite	XXXX	max	-	Apr	Sun>=1	2:00	1:00	D
-## Rule	Twilite	XXXX	max	uspres	Oct	lastSun	2:00	1:00	PE
-## Rule	Twilite	XXXX	max	uspres	Nov	Sun>=7	2:00	0	S
-## Rule	Twilite	XXXX	max	nonpres	Oct	lastSun	2:00	0	S
-
-# Zone	NAME			GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-## Zone	America/Los_Angeles-PET	-8:00	US		P%sT	XXXX
-##				-8:00	Twilite		P%sT
-
-# For now...
-Link	America/Los_Angeles	US/Pacific-New	##
diff --git a/bin/glibc-2.7/timezone/private.h b/bin/glibc-2.7/timezone/private.h
deleted file mode 100644
index d64c724e..00000000
--- a/bin/glibc-2.7/timezone/private.h
+++ /dev/null
@@ -1,368 +0,0 @@
-#ifndef PRIVATE_H
-
-#define PRIVATE_H
-
-/*
-** This file is in the public domain, so clarified as of
-** 1996-06-05 by Arthur David Olson.
-*/
-
-/*
-** This header is for use ONLY with the time conversion code.
-** There is no guarantee that it will remain unchanged,
-** or that it will remain at all.
-** Do NOT copy it to any system include directory.
-** Thank you!
-*/
-
-/*
-** ID
-*/
-
-#ifndef lint
-#ifndef NOID
-static char	privatehid[] = "@(#)private.h	8.3";
-#endif /* !defined NOID */
-#endif /* !defined lint */
-
-#define GRANDPARENTED	"Local time zone must be set--see zic manual page"
-
-/*
-** Defaults for preprocessor symbols.
-** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'.
-*/
-
-#ifndef HAVE_ADJTIME
-#define HAVE_ADJTIME		1
-#endif /* !defined HAVE_ADJTIME */
-
-#ifndef HAVE_GETTEXT
-#define HAVE_GETTEXT		0
-#endif /* !defined HAVE_GETTEXT */
-
-#ifndef HAVE_INCOMPATIBLE_CTIME_R
-#define HAVE_INCOMPATIBLE_CTIME_R	0
-#endif /* !defined INCOMPATIBLE_CTIME_R */
-
-#ifndef HAVE_SETTIMEOFDAY
-#define HAVE_SETTIMEOFDAY	3
-#endif /* !defined HAVE_SETTIMEOFDAY */
-
-#ifndef HAVE_STRERROR
-#define HAVE_STRERROR		1
-#endif /* !defined HAVE_STRERROR */
-
-#ifndef HAVE_SYMLINK
-#define HAVE_SYMLINK		1
-#endif /* !defined HAVE_SYMLINK */
-
-#ifndef HAVE_SYS_STAT_H
-#define HAVE_SYS_STAT_H		1
-#endif /* !defined HAVE_SYS_STAT_H */
-
-#ifndef HAVE_SYS_WAIT_H
-#define HAVE_SYS_WAIT_H		1
-#endif /* !defined HAVE_SYS_WAIT_H */
-
-#ifndef HAVE_UNISTD_H
-#define HAVE_UNISTD_H		1
-#endif /* !defined HAVE_UNISTD_H */
-
-#ifndef HAVE_UTMPX_H
-#define HAVE_UTMPX_H		0
-#endif /* !defined HAVE_UTMPX_H */
-
-#ifndef LOCALE_HOME
-#define LOCALE_HOME		"/usr/lib/locale"
-#endif /* !defined LOCALE_HOME */
-
-#if HAVE_INCOMPATIBLE_CTIME_R
-#define asctime_r _incompatible_asctime_r
-#define ctime_r _incompatible_ctime_r
-#endif /* HAVE_INCOMPATIBLE_CTIME_R */
-
-/*
-** Nested includes
-*/
-
-#include "sys/types.h"	/* for time_t */
-#include "stdio.h"
-#include "errno.h"
-#include "string.h"
-#include "limits.h"	/* for CHAR_BIT et al. */
-#include "time.h"
-#include "stdlib.h"
-
-#if HAVE_GETTEXT
-#include "libintl.h"
-#endif /* HAVE_GETTEXT */
-
-#if HAVE_SYS_WAIT_H
-#include 	/* for WIFEXITED and WEXITSTATUS */
-#endif /* HAVE_SYS_WAIT_H */
-
-#ifndef WIFEXITED
-#define WIFEXITED(status)	(((status) & 0xff) == 0)
-#endif /* !defined WIFEXITED */
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(status)	(((status) >> 8) & 0xff)
-#endif /* !defined WEXITSTATUS */
-
-#if HAVE_UNISTD_H
-#include "unistd.h"	/* for F_OK and R_OK */
-#endif /* HAVE_UNISTD_H */
-
-#if !HAVE_UNISTD_H
-#ifndef F_OK
-#define F_OK	0
-#endif /* !defined F_OK */
-#ifndef R_OK
-#define R_OK	4
-#endif /* !defined R_OK */
-#endif /* !HAVE_UNISTD_H */
-
-/* Unlike 's isdigit, this also works if c < 0 | c > UCHAR_MAX. */
-#define is_digit(c) ((unsigned)(c) - '0' <= 9)
-
-/*
-** Define HAVE_STDINT_H's default value here, rather than at the
-** start, since __GLIBC__'s value depends on previously-included
-** files.
-** (glibc 2.1 and later have stdint.h, even with pre-C99 compilers.)
-*/
-#ifndef HAVE_STDINT_H
-#define HAVE_STDINT_H \
-	(199901 <= __STDC_VERSION__ || \
-	2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
-#endif /* !defined HAVE_STDINT_H */
-
-#if HAVE_STDINT_H
-#include "stdint.h"
-#endif /* !HAVE_STDINT_H */
-
-#ifndef INT_FAST64_MAX
-/* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX.  */
-#if defined LLONG_MAX || defined __LONG_LONG_MAX__
-typedef long long	int_fast64_t;
-#else /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */
-#if (LONG_MAX >> 31) < 0xffffffff
-Please use a compiler that supports a 64-bit integer type (or wider);
-you may need to compile with "-DHAVE_STDINT_H".
-#endif /* (LONG_MAX >> 31) < 0xffffffff */
-typedef long		int_fast64_t;
-#endif /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */
-#endif /* !defined INT_FAST64_MAX */
-
-#ifndef INT32_MAX
-#define INT32_MAX 0x7fffffff
-#endif /* !defined INT32_MAX */
-#ifndef INT32_MIN
-#define INT32_MIN (-1 - INT32_MAX)
-#endif /* !defined INT32_MIN */
-
-/*
-** Workarounds for compilers/systems.
-*/
-
-/*
-** If your compiler lacks prototypes, "#define P(x) ()".
-*/
-
-#ifndef P
-#define P(x)	x
-#endif /* !defined P */
-
-/*
-** SunOS 4.1.1 headers lack EXIT_SUCCESS.
-*/
-
-#ifndef EXIT_SUCCESS
-#define EXIT_SUCCESS	0
-#endif /* !defined EXIT_SUCCESS */
-
-/*
-** SunOS 4.1.1 headers lack EXIT_FAILURE.
-*/
-
-#ifndef EXIT_FAILURE
-#define EXIT_FAILURE	1
-#endif /* !defined EXIT_FAILURE */
-
-/*
-** SunOS 4.1.1 headers lack FILENAME_MAX.
-*/
-
-#ifndef FILENAME_MAX
-
-#ifndef MAXPATHLEN
-#ifdef unix
-#include "sys/param.h"
-#endif /* defined unix */
-#endif /* !defined MAXPATHLEN */
-
-#ifdef MAXPATHLEN
-#define FILENAME_MAX	MAXPATHLEN
-#endif /* defined MAXPATHLEN */
-#ifndef MAXPATHLEN
-#define FILENAME_MAX	1024		/* Pure guesswork */
-#endif /* !defined MAXPATHLEN */
-
-#endif /* !defined FILENAME_MAX */
-
-/*
-** SunOS 4.1.1 libraries lack remove.
-*/
-
-#ifndef remove
-extern int	unlink P((const char * filename));
-#define remove	unlink
-#endif /* !defined remove */
-
-/*
-** Some ancient errno.h implementations don't declare errno.
-** But some newer errno.h implementations define it as a macro.
-** Fix the former without affecting the latter.
-*/
-
-#ifndef errno
-extern int errno;
-#endif /* !defined errno */
-
-/*
-** Some time.h implementations don't declare asctime_r.
-** Others might define it as a macro.
-** Fix the former without affecting the latter.
-*/
-
-#ifndef asctime_r
-extern char *	asctime_r();
-#endif
-
-/*
-** Private function declarations.
-*/
-
-char *		icalloc P((int nelem, int elsize));
-char *		icatalloc P((char * old, const char * new));
-char *		icpyalloc P((const char * string));
-char *		imalloc P((int n));
-void *		irealloc P((void * pointer, int size));
-void		icfree P((char * pointer));
-void		ifree P((char * pointer));
-const char *	scheck P((const char * string, const char * format));
-
-/*
-** Finally, some convenience items.
-*/
-
-#ifndef TRUE
-#define TRUE	1
-#endif /* !defined TRUE */
-
-#ifndef FALSE
-#define FALSE	0
-#endif /* !defined FALSE */
-
-#ifndef TYPE_BIT
-#define TYPE_BIT(type)	(sizeof (type) * CHAR_BIT)
-#endif /* !defined TYPE_BIT */
-
-#ifndef TYPE_SIGNED
-#define TYPE_SIGNED(type) (((type) -1) < 0)
-#endif /* !defined TYPE_SIGNED */
-
-/*
-** Since the definition of TYPE_INTEGRAL contains floating point numbers,
-** it cannot be used in preprocessor directives.
-*/
-
-#ifndef TYPE_INTEGRAL
-#define TYPE_INTEGRAL(type) (((type) 0.5) != 0.5)
-#endif /* !defined TYPE_INTEGRAL */
-
-#ifndef INT_STRLEN_MAXIMUM
-/*
-** 302 / 1000 is log10(2.0) rounded up.
-** Subtract one for the sign bit if the type is signed;
-** add one for integer division truncation;
-** add one more for a minus sign if the type is signed.
-*/
-#define INT_STRLEN_MAXIMUM(type) \
-	((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \
-	1 + TYPE_SIGNED(type))
-#endif /* !defined INT_STRLEN_MAXIMUM */
-
-/*
-** INITIALIZE(x)
-*/
-
-#ifndef GNUC_or_lint
-#ifdef lint
-#define GNUC_or_lint
-#endif /* defined lint */
-#ifndef lint
-#ifdef __GNUC__
-#define GNUC_or_lint
-#endif /* defined __GNUC__ */
-#endif /* !defined lint */
-#endif /* !defined GNUC_or_lint */
-
-#ifndef INITIALIZE
-#ifdef GNUC_or_lint
-#define INITIALIZE(x)	((x) = 0)
-#endif /* defined GNUC_or_lint */
-#ifndef GNUC_or_lint
-#define INITIALIZE(x)
-#endif /* !defined GNUC_or_lint */
-#endif /* !defined INITIALIZE */
-
-/*
-** For the benefit of GNU folk...
-** `_(MSGID)' uses the current locale's message library string for MSGID.
-** The default is to use gettext if available, and use MSGID otherwise.
-*/
-
-#ifndef _
-#if HAVE_GETTEXT
-#define _(msgid) gettext(msgid)
-#else /* !HAVE_GETTEXT */
-#define _(msgid) msgid
-#endif /* !HAVE_GETTEXT */
-#endif /* !defined _ */
-
-#ifndef TZ_DOMAIN
-#define TZ_DOMAIN "tz"
-#endif /* !defined TZ_DOMAIN */
-
-#if HAVE_INCOMPATIBLE_CTIME_R
-#undef asctime_r
-#undef ctime_r
-char *asctime_r P((struct tm const *, char *));
-char *ctime_r P((time_t const *, char *));
-#endif /* HAVE_INCOMPATIBLE_CTIME_R */
-
-#ifndef YEARSPERREPEAT
-#define YEARSPERREPEAT		400	/* years before a Gregorian repeat */
-#endif /* !defined YEARSPERREPEAT */
-
-/*
-** The Gregorian year averages 365.2425 days, which is 31556952 seconds.
-*/
-
-#ifndef AVGSECSPERYEAR
-#define AVGSECSPERYEAR		31556952L
-#endif /* !defined AVGSECSPERYEAR */
-
-#ifndef SECSPERREPEAT
-#define SECSPERREPEAT		((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR)
-#endif /* !defined SECSPERREPEAT */
-
-#ifndef SECSPERREPEAT_BITS
-#define SECSPERREPEAT_BITS	34	/* ceil(log2(SECSPERREPEAT)) */
-#endif /* !defined SECSPERREPEAT_BITS */
-
-/*
-** UNIX was a registered trademark of The Open Group in 2003.
-*/
-
-#endif /* !defined PRIVATE_H */
diff --git a/bin/glibc-2.7/timezone/scheck.c b/bin/glibc-2.7/timezone/scheck.c
deleted file mode 100644
index 74d9b07c..00000000
--- a/bin/glibc-2.7/timezone/scheck.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-** This file is in the public domain, so clarified as of
-** 2006-07-17 by Arthur David Olson.
-*/
-
-#ifndef lint
-#ifndef NOID
-static char	elsieid[] = "@(#)scheck.c	8.19";
-#endif /* !defined lint */
-#endif /* !defined NOID */
-
-/*LINTLIBRARY*/
-
-#include "private.h"
-
-const char *
-scheck(string, format)
-const char * const	string;
-const char * const	format;
-{
-	register char *		fbuf;
-	register const char *	fp;
-	register char *		tp;
-	register int		c;
-	register const char *	result;
-	char			dummy;
-
-	result = "";
-	if (string == NULL || format == NULL)
-		return result;
-	fbuf = imalloc((int) (2 * strlen(format) + 4));
-	if (fbuf == NULL)
-		return result;
-	fp = format;
-	tp = fbuf;
-	while ((*tp++ = c = *fp++) != '\0') {
-		if (c != '%')
-			continue;
-		if (*fp == '%') {
-			*tp++ = *fp++;
-			continue;
-		}
-		*tp++ = '*';
-		if (*fp == '*')
-			++fp;
-		while (is_digit(*fp))
-			*tp++ = *fp++;
-		if (*fp == 'l' || *fp == 'h')
-			*tp++ = *fp++;
-		else if (*fp == '[')
-			do *tp++ = *fp++;
-				while (*fp != '\0' && *fp != ']');
-		if ((*tp++ = *fp++) == '\0')
-			break;
-	}
-	*(tp - 1) = '%';
-	*tp++ = 'c';
-	*tp = '\0';
-	if (sscanf(string, fbuf, &dummy) != 1)
-		result = (char *) format;
-	ifree(fbuf);
-	return result;
-}
diff --git a/bin/glibc-2.7/timezone/simplebackw b/bin/glibc-2.7/timezone/simplebackw
deleted file mode 100644
index 860624a1..00000000
--- a/bin/glibc-2.7/timezone/simplebackw
+++ /dev/null
@@ -1,2 +0,0 @@
-Link	Etc/UTC			UTC
-Link	Etc/Universal		Universal
diff --git a/bin/glibc-2.7/timezone/solar87 b/bin/glibc-2.7/timezone/solar87
deleted file mode 100644
index 71839320..00000000
--- a/bin/glibc-2.7/timezone/solar87
+++ /dev/null
@@ -1,388 +0,0 @@
-# @(#)solar87	8.1
-
-# So much for footnotes about Saudi Arabia.
-# Apparent noon times below are for Riyadh; your mileage will vary.
-# Times were computed using formulas in the U.S. Naval Observatory's
-# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
-# [plus or minus two] seconds during the current year."
-#
-# Rounding to the nearest five seconds results in fewer than
-# 256 different "time types"--a limit that's faced because time types are
-# stored on disk as unsigned chars.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	sol87	1987	only	-	Jan	1	12:03:20s -0:03:20 -
-Rule	sol87	1987	only	-	Jan	2	12:03:50s -0:03:50 -
-Rule	sol87	1987	only	-	Jan	3	12:04:15s -0:04:15 -
-Rule	sol87	1987	only	-	Jan	4	12:04:45s -0:04:45 -
-Rule	sol87	1987	only	-	Jan	5	12:05:10s -0:05:10 -
-Rule	sol87	1987	only	-	Jan	6	12:05:40s -0:05:40 -
-Rule	sol87	1987	only	-	Jan	7	12:06:05s -0:06:05 -
-Rule	sol87	1987	only	-	Jan	8	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jan	9	12:06:55s -0:06:55 -
-Rule	sol87	1987	only	-	Jan	10	12:07:20s -0:07:20 -
-Rule	sol87	1987	only	-	Jan	11	12:07:45s -0:07:45 -
-Rule	sol87	1987	only	-	Jan	12	12:08:10s -0:08:10 -
-Rule	sol87	1987	only	-	Jan	13	12:08:30s -0:08:30 -
-Rule	sol87	1987	only	-	Jan	14	12:08:55s -0:08:55 -
-Rule	sol87	1987	only	-	Jan	15	12:09:15s -0:09:15 -
-Rule	sol87	1987	only	-	Jan	16	12:09:35s -0:09:35 -
-Rule	sol87	1987	only	-	Jan	17	12:09:55s -0:09:55 -
-Rule	sol87	1987	only	-	Jan	18	12:10:15s -0:10:15 -
-Rule	sol87	1987	only	-	Jan	19	12:10:35s -0:10:35 -
-Rule	sol87	1987	only	-	Jan	20	12:10:55s -0:10:55 -
-Rule	sol87	1987	only	-	Jan	21	12:11:10s -0:11:10 -
-Rule	sol87	1987	only	-	Jan	22	12:11:30s -0:11:30 -
-Rule	sol87	1987	only	-	Jan	23	12:11:45s -0:11:45 -
-Rule	sol87	1987	only	-	Jan	24	12:12:00s -0:12:00 -
-Rule	sol87	1987	only	-	Jan	25	12:12:15s -0:12:15 -
-Rule	sol87	1987	only	-	Jan	26	12:12:30s -0:12:30 -
-Rule	sol87	1987	only	-	Jan	27	12:12:40s -0:12:40 -
-Rule	sol87	1987	only	-	Jan	28	12:12:55s -0:12:55 -
-Rule	sol87	1987	only	-	Jan	29	12:13:05s -0:13:05 -
-Rule	sol87	1987	only	-	Jan	30	12:13:15s -0:13:15 -
-Rule	sol87	1987	only	-	Jan	31	12:13:25s -0:13:25 -
-Rule	sol87	1987	only	-	Feb	1	12:13:35s -0:13:35 -
-Rule	sol87	1987	only	-	Feb	2	12:13:40s -0:13:40 -
-Rule	sol87	1987	only	-	Feb	3	12:13:50s -0:13:50 -
-Rule	sol87	1987	only	-	Feb	4	12:13:55s -0:13:55 -
-Rule	sol87	1987	only	-	Feb	5	12:14:00s -0:14:00 -
-Rule	sol87	1987	only	-	Feb	6	12:14:05s -0:14:05 -
-Rule	sol87	1987	only	-	Feb	7	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	8	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	9	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	10	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	11	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	12	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	13	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	14	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	15	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	16	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	17	12:14:05s -0:14:05 -
-Rule	sol87	1987	only	-	Feb	18	12:14:00s -0:14:00 -
-Rule	sol87	1987	only	-	Feb	19	12:13:55s -0:13:55 -
-Rule	sol87	1987	only	-	Feb	20	12:13:50s -0:13:50 -
-Rule	sol87	1987	only	-	Feb	21	12:13:45s -0:13:45 -
-Rule	sol87	1987	only	-	Feb	22	12:13:35s -0:13:35 -
-Rule	sol87	1987	only	-	Feb	23	12:13:30s -0:13:30 -
-Rule	sol87	1987	only	-	Feb	24	12:13:20s -0:13:20 -
-Rule	sol87	1987	only	-	Feb	25	12:13:10s -0:13:10 -
-Rule	sol87	1987	only	-	Feb	26	12:13:00s -0:13:00 -
-Rule	sol87	1987	only	-	Feb	27	12:12:50s -0:12:50 -
-Rule	sol87	1987	only	-	Feb	28	12:12:40s -0:12:40 -
-Rule	sol87	1987	only	-	Mar	1	12:12:30s -0:12:30 -
-Rule	sol87	1987	only	-	Mar	2	12:12:20s -0:12:20 -
-Rule	sol87	1987	only	-	Mar	3	12:12:05s -0:12:05 -
-Rule	sol87	1987	only	-	Mar	4	12:11:55s -0:11:55 -
-Rule	sol87	1987	only	-	Mar	5	12:11:40s -0:11:40 -
-Rule	sol87	1987	only	-	Mar	6	12:11:25s -0:11:25 -
-Rule	sol87	1987	only	-	Mar	7	12:11:15s -0:11:15 -
-Rule	sol87	1987	only	-	Mar	8	12:11:00s -0:11:00 -
-Rule	sol87	1987	only	-	Mar	9	12:10:45s -0:10:45 -
-Rule	sol87	1987	only	-	Mar	10	12:10:30s -0:10:30 -
-Rule	sol87	1987	only	-	Mar	11	12:10:15s -0:10:15 -
-Rule	sol87	1987	only	-	Mar	12	12:09:55s -0:09:55 -
-Rule	sol87	1987	only	-	Mar	13	12:09:40s -0:09:40 -
-Rule	sol87	1987	only	-	Mar	14	12:09:25s -0:09:25 -
-Rule	sol87	1987	only	-	Mar	15	12:09:10s -0:09:10 -
-Rule	sol87	1987	only	-	Mar	16	12:08:50s -0:08:50 -
-Rule	sol87	1987	only	-	Mar	17	12:08:35s -0:08:35 -
-Rule	sol87	1987	only	-	Mar	18	12:08:15s -0:08:15 -
-Rule	sol87	1987	only	-	Mar	19	12:08:00s -0:08:00 -
-Rule	sol87	1987	only	-	Mar	20	12:07:40s -0:07:40 -
-Rule	sol87	1987	only	-	Mar	21	12:07:25s -0:07:25 -
-Rule	sol87	1987	only	-	Mar	22	12:07:05s -0:07:05 -
-Rule	sol87	1987	only	-	Mar	23	12:06:50s -0:06:50 -
-Rule	sol87	1987	only	-	Mar	24	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Mar	25	12:06:10s -0:06:10 -
-Rule	sol87	1987	only	-	Mar	26	12:05:55s -0:05:55 -
-Rule	sol87	1987	only	-	Mar	27	12:05:35s -0:05:35 -
-Rule	sol87	1987	only	-	Mar	28	12:05:15s -0:05:15 -
-Rule	sol87	1987	only	-	Mar	29	12:05:00s -0:05:00 -
-Rule	sol87	1987	only	-	Mar	30	12:04:40s -0:04:40 -
-Rule	sol87	1987	only	-	Mar	31	12:04:25s -0:04:25 -
-Rule	sol87	1987	only	-	Apr	1	12:04:05s -0:04:05 -
-Rule	sol87	1987	only	-	Apr	2	12:03:45s -0:03:45 -
-Rule	sol87	1987	only	-	Apr	3	12:03:30s -0:03:30 -
-Rule	sol87	1987	only	-	Apr	4	12:03:10s -0:03:10 -
-Rule	sol87	1987	only	-	Apr	5	12:02:55s -0:02:55 -
-Rule	sol87	1987	only	-	Apr	6	12:02:35s -0:02:35 -
-Rule	sol87	1987	only	-	Apr	7	12:02:20s -0:02:20 -
-Rule	sol87	1987	only	-	Apr	8	12:02:05s -0:02:05 -
-Rule	sol87	1987	only	-	Apr	9	12:01:45s -0:01:45 -
-Rule	sol87	1987	only	-	Apr	10	12:01:30s -0:01:30 -
-Rule	sol87	1987	only	-	Apr	11	12:01:15s -0:01:15 -
-Rule	sol87	1987	only	-	Apr	12	12:00:55s -0:00:55 -
-Rule	sol87	1987	only	-	Apr	13	12:00:40s -0:00:40 -
-Rule	sol87	1987	only	-	Apr	14	12:00:25s -0:00:25 -
-Rule	sol87	1987	only	-	Apr	15	12:00:10s -0:00:10 -
-Rule	sol87	1987	only	-	Apr	16	11:59:55s 0:00:05 -
-Rule	sol87	1987	only	-	Apr	17	11:59:45s 0:00:15 -
-Rule	sol87	1987	only	-	Apr	18	11:59:30s 0:00:30 -
-Rule	sol87	1987	only	-	Apr	19	11:59:15s 0:00:45 -
-Rule	sol87	1987	only	-	Apr	20	11:59:05s 0:00:55 -
-Rule	sol87	1987	only	-	Apr	21	11:58:50s 0:01:10 -
-Rule	sol87	1987	only	-	Apr	22	11:58:40s 0:01:20 -
-Rule	sol87	1987	only	-	Apr	23	11:58:25s 0:01:35 -
-Rule	sol87	1987	only	-	Apr	24	11:58:15s 0:01:45 -
-Rule	sol87	1987	only	-	Apr	25	11:58:05s 0:01:55 -
-Rule	sol87	1987	only	-	Apr	26	11:57:55s 0:02:05 -
-Rule	sol87	1987	only	-	Apr	27	11:57:45s 0:02:15 -
-Rule	sol87	1987	only	-	Apr	28	11:57:35s 0:02:25 -
-Rule	sol87	1987	only	-	Apr	29	11:57:25s 0:02:35 -
-Rule	sol87	1987	only	-	Apr	30	11:57:15s 0:02:45 -
-Rule	sol87	1987	only	-	May	1	11:57:10s 0:02:50 -
-Rule	sol87	1987	only	-	May	2	11:57:00s 0:03:00 -
-Rule	sol87	1987	only	-	May	3	11:56:55s 0:03:05 -
-Rule	sol87	1987	only	-	May	4	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	May	5	11:56:45s 0:03:15 -
-Rule	sol87	1987	only	-	May	6	11:56:40s 0:03:20 -
-Rule	sol87	1987	only	-	May	7	11:56:35s 0:03:25 -
-Rule	sol87	1987	only	-	May	8	11:56:30s 0:03:30 -
-Rule	sol87	1987	only	-	May	9	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	10	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	11	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	12	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	13	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	14	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	15	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	16	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	17	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	18	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	19	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	20	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	21	11:56:30s 0:03:30 -
-Rule	sol87	1987	only	-	May	22	11:56:35s 0:03:25 -
-Rule	sol87	1987	only	-	May	23	11:56:40s 0:03:20 -
-Rule	sol87	1987	only	-	May	24	11:56:45s 0:03:15 -
-Rule	sol87	1987	only	-	May	25	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	May	26	11:56:55s 0:03:05 -
-Rule	sol87	1987	only	-	May	27	11:57:00s 0:03:00 -
-Rule	sol87	1987	only	-	May	28	11:57:10s 0:02:50 -
-Rule	sol87	1987	only	-	May	29	11:57:15s 0:02:45 -
-Rule	sol87	1987	only	-	May	30	11:57:25s 0:02:35 -
-Rule	sol87	1987	only	-	May	31	11:57:30s 0:02:30 -
-Rule	sol87	1987	only	-	Jun	1	11:57:40s 0:02:20 -
-Rule	sol87	1987	only	-	Jun	2	11:57:50s 0:02:10 -
-Rule	sol87	1987	only	-	Jun	3	11:58:00s 0:02:00 -
-Rule	sol87	1987	only	-	Jun	4	11:58:10s 0:01:50 -
-Rule	sol87	1987	only	-	Jun	5	11:58:20s 0:01:40 -
-Rule	sol87	1987	only	-	Jun	6	11:58:30s 0:01:30 -
-Rule	sol87	1987	only	-	Jun	7	11:58:40s 0:01:20 -
-Rule	sol87	1987	only	-	Jun	8	11:58:50s 0:01:10 -
-Rule	sol87	1987	only	-	Jun	9	11:59:05s 0:00:55 -
-Rule	sol87	1987	only	-	Jun	10	11:59:15s 0:00:45 -
-Rule	sol87	1987	only	-	Jun	11	11:59:30s 0:00:30 -
-Rule	sol87	1987	only	-	Jun	12	11:59:40s 0:00:20 -
-Rule	sol87	1987	only	-	Jun	13	11:59:50s 0:00:10 -
-Rule	sol87	1987	only	-	Jun	14	12:00:05s -0:00:05 -
-Rule	sol87	1987	only	-	Jun	15	12:00:15s -0:00:15 -
-Rule	sol87	1987	only	-	Jun	16	12:00:30s -0:00:30 -
-Rule	sol87	1987	only	-	Jun	17	12:00:45s -0:00:45 -
-Rule	sol87	1987	only	-	Jun	18	12:00:55s -0:00:55 -
-Rule	sol87	1987	only	-	Jun	19	12:01:10s -0:01:10 -
-Rule	sol87	1987	only	-	Jun	20	12:01:20s -0:01:20 -
-Rule	sol87	1987	only	-	Jun	21	12:01:35s -0:01:35 -
-Rule	sol87	1987	only	-	Jun	22	12:01:50s -0:01:50 -
-Rule	sol87	1987	only	-	Jun	23	12:02:00s -0:02:00 -
-Rule	sol87	1987	only	-	Jun	24	12:02:15s -0:02:15 -
-Rule	sol87	1987	only	-	Jun	25	12:02:25s -0:02:25 -
-Rule	sol87	1987	only	-	Jun	26	12:02:40s -0:02:40 -
-Rule	sol87	1987	only	-	Jun	27	12:02:50s -0:02:50 -
-Rule	sol87	1987	only	-	Jun	28	12:03:05s -0:03:05 -
-Rule	sol87	1987	only	-	Jun	29	12:03:15s -0:03:15 -
-Rule	sol87	1987	only	-	Jun	30	12:03:30s -0:03:30 -
-Rule	sol87	1987	only	-	Jul	1	12:03:40s -0:03:40 -
-Rule	sol87	1987	only	-	Jul	2	12:03:50s -0:03:50 -
-Rule	sol87	1987	only	-	Jul	3	12:04:05s -0:04:05 -
-Rule	sol87	1987	only	-	Jul	4	12:04:15s -0:04:15 -
-Rule	sol87	1987	only	-	Jul	5	12:04:25s -0:04:25 -
-Rule	sol87	1987	only	-	Jul	6	12:04:35s -0:04:35 -
-Rule	sol87	1987	only	-	Jul	7	12:04:45s -0:04:45 -
-Rule	sol87	1987	only	-	Jul	8	12:04:55s -0:04:55 -
-Rule	sol87	1987	only	-	Jul	9	12:05:05s -0:05:05 -
-Rule	sol87	1987	only	-	Jul	10	12:05:15s -0:05:15 -
-Rule	sol87	1987	only	-	Jul	11	12:05:20s -0:05:20 -
-Rule	sol87	1987	only	-	Jul	12	12:05:30s -0:05:30 -
-Rule	sol87	1987	only	-	Jul	13	12:05:40s -0:05:40 -
-Rule	sol87	1987	only	-	Jul	14	12:05:45s -0:05:45 -
-Rule	sol87	1987	only	-	Jul	15	12:05:50s -0:05:50 -
-Rule	sol87	1987	only	-	Jul	16	12:06:00s -0:06:00 -
-Rule	sol87	1987	only	-	Jul	17	12:06:05s -0:06:05 -
-Rule	sol87	1987	only	-	Jul	18	12:06:10s -0:06:10 -
-Rule	sol87	1987	only	-	Jul	19	12:06:15s -0:06:15 -
-Rule	sol87	1987	only	-	Jul	20	12:06:15s -0:06:15 -
-Rule	sol87	1987	only	-	Jul	21	12:06:20s -0:06:20 -
-Rule	sol87	1987	only	-	Jul	22	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	23	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	24	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	25	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	26	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	27	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	28	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	29	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	30	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	31	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Aug	1	12:06:20s -0:06:20 -
-Rule	sol87	1987	only	-	Aug	2	12:06:15s -0:06:15 -
-Rule	sol87	1987	only	-	Aug	3	12:06:10s -0:06:10 -
-Rule	sol87	1987	only	-	Aug	4	12:06:05s -0:06:05 -
-Rule	sol87	1987	only	-	Aug	5	12:06:00s -0:06:00 -
-Rule	sol87	1987	only	-	Aug	6	12:05:55s -0:05:55 -
-Rule	sol87	1987	only	-	Aug	7	12:05:50s -0:05:50 -
-Rule	sol87	1987	only	-	Aug	8	12:05:40s -0:05:40 -
-Rule	sol87	1987	only	-	Aug	9	12:05:35s -0:05:35 -
-Rule	sol87	1987	only	-	Aug	10	12:05:25s -0:05:25 -
-Rule	sol87	1987	only	-	Aug	11	12:05:15s -0:05:15 -
-Rule	sol87	1987	only	-	Aug	12	12:05:05s -0:05:05 -
-Rule	sol87	1987	only	-	Aug	13	12:04:55s -0:04:55 -
-Rule	sol87	1987	only	-	Aug	14	12:04:45s -0:04:45 -
-Rule	sol87	1987	only	-	Aug	15	12:04:35s -0:04:35 -
-Rule	sol87	1987	only	-	Aug	16	12:04:25s -0:04:25 -
-Rule	sol87	1987	only	-	Aug	17	12:04:10s -0:04:10 -
-Rule	sol87	1987	only	-	Aug	18	12:04:00s -0:04:00 -
-Rule	sol87	1987	only	-	Aug	19	12:03:45s -0:03:45 -
-Rule	sol87	1987	only	-	Aug	20	12:03:30s -0:03:30 -
-Rule	sol87	1987	only	-	Aug	21	12:03:15s -0:03:15 -
-Rule	sol87	1987	only	-	Aug	22	12:03:00s -0:03:00 -
-Rule	sol87	1987	only	-	Aug	23	12:02:45s -0:02:45 -
-Rule	sol87	1987	only	-	Aug	24	12:02:30s -0:02:30 -
-Rule	sol87	1987	only	-	Aug	25	12:02:15s -0:02:15 -
-Rule	sol87	1987	only	-	Aug	26	12:02:00s -0:02:00 -
-Rule	sol87	1987	only	-	Aug	27	12:01:40s -0:01:40 -
-Rule	sol87	1987	only	-	Aug	28	12:01:25s -0:01:25 -
-Rule	sol87	1987	only	-	Aug	29	12:01:05s -0:01:05 -
-Rule	sol87	1987	only	-	Aug	30	12:00:50s -0:00:50 -
-Rule	sol87	1987	only	-	Aug	31	12:00:30s -0:00:30 -
-Rule	sol87	1987	only	-	Sep	1	12:00:10s -0:00:10 -
-Rule	sol87	1987	only	-	Sep	2	11:59:50s 0:00:10 -
-Rule	sol87	1987	only	-	Sep	3	11:59:35s 0:00:25 -
-Rule	sol87	1987	only	-	Sep	4	11:59:15s 0:00:45 -
-Rule	sol87	1987	only	-	Sep	5	11:58:55s 0:01:05 -
-Rule	sol87	1987	only	-	Sep	6	11:58:35s 0:01:25 -
-Rule	sol87	1987	only	-	Sep	7	11:58:15s 0:01:45 -
-Rule	sol87	1987	only	-	Sep	8	11:57:55s 0:02:05 -
-Rule	sol87	1987	only	-	Sep	9	11:57:30s 0:02:30 -
-Rule	sol87	1987	only	-	Sep	10	11:57:10s 0:02:50 -
-Rule	sol87	1987	only	-	Sep	11	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	Sep	12	11:56:30s 0:03:30 -
-Rule	sol87	1987	only	-	Sep	13	11:56:10s 0:03:50 -
-Rule	sol87	1987	only	-	Sep	14	11:55:45s 0:04:15 -
-Rule	sol87	1987	only	-	Sep	15	11:55:25s 0:04:35 -
-Rule	sol87	1987	only	-	Sep	16	11:55:05s 0:04:55 -
-Rule	sol87	1987	only	-	Sep	17	11:54:45s 0:05:15 -
-Rule	sol87	1987	only	-	Sep	18	11:54:20s 0:05:40 -
-Rule	sol87	1987	only	-	Sep	19	11:54:00s 0:06:00 -
-Rule	sol87	1987	only	-	Sep	20	11:53:40s 0:06:20 -
-Rule	sol87	1987	only	-	Sep	21	11:53:15s 0:06:45 -
-Rule	sol87	1987	only	-	Sep	22	11:52:55s 0:07:05 -
-Rule	sol87	1987	only	-	Sep	23	11:52:35s 0:07:25 -
-Rule	sol87	1987	only	-	Sep	24	11:52:15s 0:07:45 -
-Rule	sol87	1987	only	-	Sep	25	11:51:55s 0:08:05 -
-Rule	sol87	1987	only	-	Sep	26	11:51:35s 0:08:25 -
-Rule	sol87	1987	only	-	Sep	27	11:51:10s 0:08:50 -
-Rule	sol87	1987	only	-	Sep	28	11:50:50s 0:09:10 -
-Rule	sol87	1987	only	-	Sep	29	11:50:30s 0:09:30 -
-Rule	sol87	1987	only	-	Sep	30	11:50:10s 0:09:50 -
-Rule	sol87	1987	only	-	Oct	1	11:49:50s 0:10:10 -
-Rule	sol87	1987	only	-	Oct	2	11:49:35s 0:10:25 -
-Rule	sol87	1987	only	-	Oct	3	11:49:15s 0:10:45 -
-Rule	sol87	1987	only	-	Oct	4	11:48:55s 0:11:05 -
-Rule	sol87	1987	only	-	Oct	5	11:48:35s 0:11:25 -
-Rule	sol87	1987	only	-	Oct	6	11:48:20s 0:11:40 -
-Rule	sol87	1987	only	-	Oct	7	11:48:00s 0:12:00 -
-Rule	sol87	1987	only	-	Oct	8	11:47:45s 0:12:15 -
-Rule	sol87	1987	only	-	Oct	9	11:47:25s 0:12:35 -
-Rule	sol87	1987	only	-	Oct	10	11:47:10s 0:12:50 -
-Rule	sol87	1987	only	-	Oct	11	11:46:55s 0:13:05 -
-Rule	sol87	1987	only	-	Oct	12	11:46:40s 0:13:20 -
-Rule	sol87	1987	only	-	Oct	13	11:46:25s 0:13:35 -
-Rule	sol87	1987	only	-	Oct	14	11:46:10s 0:13:50 -
-Rule	sol87	1987	only	-	Oct	15	11:45:55s 0:14:05 -
-Rule	sol87	1987	only	-	Oct	16	11:45:45s 0:14:15 -
-Rule	sol87	1987	only	-	Oct	17	11:45:30s 0:14:30 -
-Rule	sol87	1987	only	-	Oct	18	11:45:20s 0:14:40 -
-Rule	sol87	1987	only	-	Oct	19	11:45:05s 0:14:55 -
-Rule	sol87	1987	only	-	Oct	20	11:44:55s 0:15:05 -
-Rule	sol87	1987	only	-	Oct	21	11:44:45s 0:15:15 -
-Rule	sol87	1987	only	-	Oct	22	11:44:35s 0:15:25 -
-Rule	sol87	1987	only	-	Oct	23	11:44:25s 0:15:35 -
-Rule	sol87	1987	only	-	Oct	24	11:44:20s 0:15:40 -
-Rule	sol87	1987	only	-	Oct	25	11:44:10s 0:15:50 -
-Rule	sol87	1987	only	-	Oct	26	11:44:05s 0:15:55 -
-Rule	sol87	1987	only	-	Oct	27	11:43:55s 0:16:05 -
-Rule	sol87	1987	only	-	Oct	28	11:43:50s 0:16:10 -
-Rule	sol87	1987	only	-	Oct	29	11:43:45s 0:16:15 -
-Rule	sol87	1987	only	-	Oct	30	11:43:45s 0:16:15 -
-Rule	sol87	1987	only	-	Oct	31	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	1	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	2	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	3	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	4	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	5	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	6	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	7	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	8	11:43:45s 0:16:15 -
-Rule	sol87	1987	only	-	Nov	9	11:43:50s 0:16:10 -
-Rule	sol87	1987	only	-	Nov	10	11:43:55s 0:16:05 -
-Rule	sol87	1987	only	-	Nov	11	11:44:00s 0:16:00 -
-Rule	sol87	1987	only	-	Nov	12	11:44:05s 0:15:55 -
-Rule	sol87	1987	only	-	Nov	13	11:44:15s 0:15:45 -
-Rule	sol87	1987	only	-	Nov	14	11:44:20s 0:15:40 -
-Rule	sol87	1987	only	-	Nov	15	11:44:30s 0:15:30 -
-Rule	sol87	1987	only	-	Nov	16	11:44:40s 0:15:20 -
-Rule	sol87	1987	only	-	Nov	17	11:44:50s 0:15:10 -
-Rule	sol87	1987	only	-	Nov	18	11:45:05s 0:14:55 -
-Rule	sol87	1987	only	-	Nov	19	11:45:15s 0:14:45 -
-Rule	sol87	1987	only	-	Nov	20	11:45:30s 0:14:30 -
-Rule	sol87	1987	only	-	Nov	21	11:45:45s 0:14:15 -
-Rule	sol87	1987	only	-	Nov	22	11:46:00s 0:14:00 -
-Rule	sol87	1987	only	-	Nov	23	11:46:15s 0:13:45 -
-Rule	sol87	1987	only	-	Nov	24	11:46:30s 0:13:30 -
-Rule	sol87	1987	only	-	Nov	25	11:46:50s 0:13:10 -
-Rule	sol87	1987	only	-	Nov	26	11:47:10s 0:12:50 -
-Rule	sol87	1987	only	-	Nov	27	11:47:25s 0:12:35 -
-Rule	sol87	1987	only	-	Nov	28	11:47:45s 0:12:15 -
-Rule	sol87	1987	only	-	Nov	29	11:48:05s 0:11:55 -
-Rule	sol87	1987	only	-	Nov	30	11:48:30s 0:11:30 -
-Rule	sol87	1987	only	-	Dec	1	11:48:50s 0:11:10 -
-Rule	sol87	1987	only	-	Dec	2	11:49:10s 0:10:50 -
-Rule	sol87	1987	only	-	Dec	3	11:49:35s 0:10:25 -
-Rule	sol87	1987	only	-	Dec	4	11:50:00s 0:10:00 -
-Rule	sol87	1987	only	-	Dec	5	11:50:25s 0:09:35 -
-Rule	sol87	1987	only	-	Dec	6	11:50:50s 0:09:10 -
-Rule	sol87	1987	only	-	Dec	7	11:51:15s 0:08:45 -
-Rule	sol87	1987	only	-	Dec	8	11:51:40s 0:08:20 -
-Rule	sol87	1987	only	-	Dec	9	11:52:05s 0:07:55 -
-Rule	sol87	1987	only	-	Dec	10	11:52:30s 0:07:30 -
-Rule	sol87	1987	only	-	Dec	11	11:53:00s 0:07:00 -
-Rule	sol87	1987	only	-	Dec	12	11:53:25s 0:06:35 -
-Rule	sol87	1987	only	-	Dec	13	11:53:55s 0:06:05 -
-Rule	sol87	1987	only	-	Dec	14	11:54:25s 0:05:35 -
-Rule	sol87	1987	only	-	Dec	15	11:54:50s 0:05:10 -
-Rule	sol87	1987	only	-	Dec	16	11:55:20s 0:04:40 -
-Rule	sol87	1987	only	-	Dec	17	11:55:50s 0:04:10 -
-Rule	sol87	1987	only	-	Dec	18	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	Dec	19	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	Dec	20	11:57:20s 0:02:40 -
-Rule	sol87	1987	only	-	Dec	21	11:57:50s 0:02:10 -
-Rule	sol87	1987	only	-	Dec	22	11:58:20s 0:01:40 -
-Rule	sol87	1987	only	-	Dec	23	11:58:50s 0:01:10 -
-Rule	sol87	1987	only	-	Dec	24	11:59:20s 0:00:40 -
-Rule	sol87	1987	only	-	Dec	25	11:59:50s 0:00:10 -
-Rule	sol87	1987	only	-	Dec	26	12:00:20s -0:00:20 -
-Rule	sol87	1987	only	-	Dec	27	12:00:45s -0:00:45 -
-Rule	sol87	1987	only	-	Dec	28	12:01:15s -0:01:15 -
-Rule	sol87	1987	only	-	Dec	29	12:01:45s -0:01:45 -
-Rule	sol87	1987	only	-	Dec	30	12:02:15s -0:02:15 -
-Rule	sol87	1987	only	-	Dec	31	12:02:45s -0:02:45 -
-
-# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
-# Before and after 1987, we'll operate on local mean solar time.
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	Asia/Riyadh87	3:07:04	-		zzz	1987
-			3:07:04	sol87		zzz	1988
-			3:07:04	-		zzz
-# For backward compatibility...
-Link	Asia/Riyadh87	Mideast/Riyadh87
diff --git a/bin/glibc-2.7/timezone/solar88 b/bin/glibc-2.7/timezone/solar88
deleted file mode 100644
index b4cfe8e3..00000000
--- a/bin/glibc-2.7/timezone/solar88
+++ /dev/null
@@ -1,388 +0,0 @@
-# @(#)solar88	8.1
-
-# Apparent noon times below are for Riyadh; they're a bit off for other places.
-# Times were computed using formulas in the U.S. Naval Observatory's
-# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
-# [plus or minus two] seconds during the current year."
-#
-# Rounding to the nearest five seconds results in fewer than
-# 256 different "time types"--a limit that's faced because time types are
-# stored on disk as unsigned chars.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	sol88	1988	only	-	Jan	1	12:03:15s -0:03:15 -
-Rule	sol88	1988	only	-	Jan	2	12:03:40s -0:03:40 -
-Rule	sol88	1988	only	-	Jan	3	12:04:10s -0:04:10 -
-Rule	sol88	1988	only	-	Jan	4	12:04:40s -0:04:40 -
-Rule	sol88	1988	only	-	Jan	5	12:05:05s -0:05:05 -
-Rule	sol88	1988	only	-	Jan	6	12:05:30s -0:05:30 -
-Rule	sol88	1988	only	-	Jan	7	12:06:00s -0:06:00 -
-Rule	sol88	1988	only	-	Jan	8	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jan	9	12:06:50s -0:06:50 -
-Rule	sol88	1988	only	-	Jan	10	12:07:15s -0:07:15 -
-Rule	sol88	1988	only	-	Jan	11	12:07:40s -0:07:40 -
-Rule	sol88	1988	only	-	Jan	12	12:08:05s -0:08:05 -
-Rule	sol88	1988	only	-	Jan	13	12:08:25s -0:08:25 -
-Rule	sol88	1988	only	-	Jan	14	12:08:50s -0:08:50 -
-Rule	sol88	1988	only	-	Jan	15	12:09:10s -0:09:10 -
-Rule	sol88	1988	only	-	Jan	16	12:09:30s -0:09:30 -
-Rule	sol88	1988	only	-	Jan	17	12:09:50s -0:09:50 -
-Rule	sol88	1988	only	-	Jan	18	12:10:10s -0:10:10 -
-Rule	sol88	1988	only	-	Jan	19	12:10:30s -0:10:30 -
-Rule	sol88	1988	only	-	Jan	20	12:10:50s -0:10:50 -
-Rule	sol88	1988	only	-	Jan	21	12:11:05s -0:11:05 -
-Rule	sol88	1988	only	-	Jan	22	12:11:25s -0:11:25 -
-Rule	sol88	1988	only	-	Jan	23	12:11:40s -0:11:40 -
-Rule	sol88	1988	only	-	Jan	24	12:11:55s -0:11:55 -
-Rule	sol88	1988	only	-	Jan	25	12:12:10s -0:12:10 -
-Rule	sol88	1988	only	-	Jan	26	12:12:25s -0:12:25 -
-Rule	sol88	1988	only	-	Jan	27	12:12:40s -0:12:40 -
-Rule	sol88	1988	only	-	Jan	28	12:12:50s -0:12:50 -
-Rule	sol88	1988	only	-	Jan	29	12:13:00s -0:13:00 -
-Rule	sol88	1988	only	-	Jan	30	12:13:10s -0:13:10 -
-Rule	sol88	1988	only	-	Jan	31	12:13:20s -0:13:20 -
-Rule	sol88	1988	only	-	Feb	1	12:13:30s -0:13:30 -
-Rule	sol88	1988	only	-	Feb	2	12:13:40s -0:13:40 -
-Rule	sol88	1988	only	-	Feb	3	12:13:45s -0:13:45 -
-Rule	sol88	1988	only	-	Feb	4	12:13:55s -0:13:55 -
-Rule	sol88	1988	only	-	Feb	5	12:14:00s -0:14:00 -
-Rule	sol88	1988	only	-	Feb	6	12:14:05s -0:14:05 -
-Rule	sol88	1988	only	-	Feb	7	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	8	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	9	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	10	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	11	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	12	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	13	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	14	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	15	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	16	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	17	12:14:05s -0:14:05 -
-Rule	sol88	1988	only	-	Feb	18	12:14:00s -0:14:00 -
-Rule	sol88	1988	only	-	Feb	19	12:13:55s -0:13:55 -
-Rule	sol88	1988	only	-	Feb	20	12:13:50s -0:13:50 -
-Rule	sol88	1988	only	-	Feb	21	12:13:45s -0:13:45 -
-Rule	sol88	1988	only	-	Feb	22	12:13:40s -0:13:40 -
-Rule	sol88	1988	only	-	Feb	23	12:13:30s -0:13:30 -
-Rule	sol88	1988	only	-	Feb	24	12:13:20s -0:13:20 -
-Rule	sol88	1988	only	-	Feb	25	12:13:15s -0:13:15 -
-Rule	sol88	1988	only	-	Feb	26	12:13:05s -0:13:05 -
-Rule	sol88	1988	only	-	Feb	27	12:12:55s -0:12:55 -
-Rule	sol88	1988	only	-	Feb	28	12:12:45s -0:12:45 -
-Rule	sol88	1988	only	-	Feb	29	12:12:30s -0:12:30 -
-Rule	sol88	1988	only	-	Mar	1	12:12:20s -0:12:20 -
-Rule	sol88	1988	only	-	Mar	2	12:12:10s -0:12:10 -
-Rule	sol88	1988	only	-	Mar	3	12:11:55s -0:11:55 -
-Rule	sol88	1988	only	-	Mar	4	12:11:45s -0:11:45 -
-Rule	sol88	1988	only	-	Mar	5	12:11:30s -0:11:30 -
-Rule	sol88	1988	only	-	Mar	6	12:11:15s -0:11:15 -
-Rule	sol88	1988	only	-	Mar	7	12:11:00s -0:11:00 -
-Rule	sol88	1988	only	-	Mar	8	12:10:45s -0:10:45 -
-Rule	sol88	1988	only	-	Mar	9	12:10:30s -0:10:30 -
-Rule	sol88	1988	only	-	Mar	10	12:10:15s -0:10:15 -
-Rule	sol88	1988	only	-	Mar	11	12:10:00s -0:10:00 -
-Rule	sol88	1988	only	-	Mar	12	12:09:45s -0:09:45 -
-Rule	sol88	1988	only	-	Mar	13	12:09:30s -0:09:30 -
-Rule	sol88	1988	only	-	Mar	14	12:09:10s -0:09:10 -
-Rule	sol88	1988	only	-	Mar	15	12:08:55s -0:08:55 -
-Rule	sol88	1988	only	-	Mar	16	12:08:40s -0:08:40 -
-Rule	sol88	1988	only	-	Mar	17	12:08:20s -0:08:20 -
-Rule	sol88	1988	only	-	Mar	18	12:08:05s -0:08:05 -
-Rule	sol88	1988	only	-	Mar	19	12:07:45s -0:07:45 -
-Rule	sol88	1988	only	-	Mar	20	12:07:30s -0:07:30 -
-Rule	sol88	1988	only	-	Mar	21	12:07:10s -0:07:10 -
-Rule	sol88	1988	only	-	Mar	22	12:06:50s -0:06:50 -
-Rule	sol88	1988	only	-	Mar	23	12:06:35s -0:06:35 -
-Rule	sol88	1988	only	-	Mar	24	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Mar	25	12:06:00s -0:06:00 -
-Rule	sol88	1988	only	-	Mar	26	12:05:40s -0:05:40 -
-Rule	sol88	1988	only	-	Mar	27	12:05:20s -0:05:20 -
-Rule	sol88	1988	only	-	Mar	28	12:05:05s -0:05:05 -
-Rule	sol88	1988	only	-	Mar	29	12:04:45s -0:04:45 -
-Rule	sol88	1988	only	-	Mar	30	12:04:25s -0:04:25 -
-Rule	sol88	1988	only	-	Mar	31	12:04:10s -0:04:10 -
-Rule	sol88	1988	only	-	Apr	1	12:03:50s -0:03:50 -
-Rule	sol88	1988	only	-	Apr	2	12:03:35s -0:03:35 -
-Rule	sol88	1988	only	-	Apr	3	12:03:15s -0:03:15 -
-Rule	sol88	1988	only	-	Apr	4	12:03:00s -0:03:00 -
-Rule	sol88	1988	only	-	Apr	5	12:02:40s -0:02:40 -
-Rule	sol88	1988	only	-	Apr	6	12:02:25s -0:02:25 -
-Rule	sol88	1988	only	-	Apr	7	12:02:05s -0:02:05 -
-Rule	sol88	1988	only	-	Apr	8	12:01:50s -0:01:50 -
-Rule	sol88	1988	only	-	Apr	9	12:01:35s -0:01:35 -
-Rule	sol88	1988	only	-	Apr	10	12:01:15s -0:01:15 -
-Rule	sol88	1988	only	-	Apr	11	12:01:00s -0:01:00 -
-Rule	sol88	1988	only	-	Apr	12	12:00:45s -0:00:45 -
-Rule	sol88	1988	only	-	Apr	13	12:00:30s -0:00:30 -
-Rule	sol88	1988	only	-	Apr	14	12:00:15s -0:00:15 -
-Rule	sol88	1988	only	-	Apr	15	12:00:00s 0:00:00 -
-Rule	sol88	1988	only	-	Apr	16	11:59:45s 0:00:15 -
-Rule	sol88	1988	only	-	Apr	17	11:59:30s 0:00:30 -
-Rule	sol88	1988	only	-	Apr	18	11:59:20s 0:00:40 -
-Rule	sol88	1988	only	-	Apr	19	11:59:05s 0:00:55 -
-Rule	sol88	1988	only	-	Apr	20	11:58:55s 0:01:05 -
-Rule	sol88	1988	only	-	Apr	21	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Apr	22	11:58:30s 0:01:30 -
-Rule	sol88	1988	only	-	Apr	23	11:58:15s 0:01:45 -
-Rule	sol88	1988	only	-	Apr	24	11:58:05s 0:01:55 -
-Rule	sol88	1988	only	-	Apr	25	11:57:55s 0:02:05 -
-Rule	sol88	1988	only	-	Apr	26	11:57:45s 0:02:15 -
-Rule	sol88	1988	only	-	Apr	27	11:57:35s 0:02:25 -
-Rule	sol88	1988	only	-	Apr	28	11:57:30s 0:02:30 -
-Rule	sol88	1988	only	-	Apr	29	11:57:20s 0:02:40 -
-Rule	sol88	1988	only	-	Apr	30	11:57:10s 0:02:50 -
-Rule	sol88	1988	only	-	May	1	11:57:05s 0:02:55 -
-Rule	sol88	1988	only	-	May	2	11:56:55s 0:03:05 -
-Rule	sol88	1988	only	-	May	3	11:56:50s 0:03:10 -
-Rule	sol88	1988	only	-	May	4	11:56:45s 0:03:15 -
-Rule	sol88	1988	only	-	May	5	11:56:40s 0:03:20 -
-Rule	sol88	1988	only	-	May	6	11:56:35s 0:03:25 -
-Rule	sol88	1988	only	-	May	7	11:56:30s 0:03:30 -
-Rule	sol88	1988	only	-	May	8	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	9	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	10	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	11	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	12	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	13	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	14	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	15	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	16	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	17	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	18	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	19	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	20	11:56:30s 0:03:30 -
-Rule	sol88	1988	only	-	May	21	11:56:35s 0:03:25 -
-Rule	sol88	1988	only	-	May	22	11:56:40s 0:03:20 -
-Rule	sol88	1988	only	-	May	23	11:56:45s 0:03:15 -
-Rule	sol88	1988	only	-	May	24	11:56:50s 0:03:10 -
-Rule	sol88	1988	only	-	May	25	11:56:55s 0:03:05 -
-Rule	sol88	1988	only	-	May	26	11:57:00s 0:03:00 -
-Rule	sol88	1988	only	-	May	27	11:57:05s 0:02:55 -
-Rule	sol88	1988	only	-	May	28	11:57:15s 0:02:45 -
-Rule	sol88	1988	only	-	May	29	11:57:20s 0:02:40 -
-Rule	sol88	1988	only	-	May	30	11:57:30s 0:02:30 -
-Rule	sol88	1988	only	-	May	31	11:57:40s 0:02:20 -
-Rule	sol88	1988	only	-	Jun	1	11:57:50s 0:02:10 -
-Rule	sol88	1988	only	-	Jun	2	11:57:55s 0:02:05 -
-Rule	sol88	1988	only	-	Jun	3	11:58:05s 0:01:55 -
-Rule	sol88	1988	only	-	Jun	4	11:58:15s 0:01:45 -
-Rule	sol88	1988	only	-	Jun	5	11:58:30s 0:01:30 -
-Rule	sol88	1988	only	-	Jun	6	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Jun	7	11:58:50s 0:01:10 -
-Rule	sol88	1988	only	-	Jun	8	11:59:00s 0:01:00 -
-Rule	sol88	1988	only	-	Jun	9	11:59:15s 0:00:45 -
-Rule	sol88	1988	only	-	Jun	10	11:59:25s 0:00:35 -
-Rule	sol88	1988	only	-	Jun	11	11:59:35s 0:00:25 -
-Rule	sol88	1988	only	-	Jun	12	11:59:50s 0:00:10 -
-Rule	sol88	1988	only	-	Jun	13	12:00:00s 0:00:00 -
-Rule	sol88	1988	only	-	Jun	14	12:00:15s -0:00:15 -
-Rule	sol88	1988	only	-	Jun	15	12:00:25s -0:00:25 -
-Rule	sol88	1988	only	-	Jun	16	12:00:40s -0:00:40 -
-Rule	sol88	1988	only	-	Jun	17	12:00:55s -0:00:55 -
-Rule	sol88	1988	only	-	Jun	18	12:01:05s -0:01:05 -
-Rule	sol88	1988	only	-	Jun	19	12:01:20s -0:01:20 -
-Rule	sol88	1988	only	-	Jun	20	12:01:30s -0:01:30 -
-Rule	sol88	1988	only	-	Jun	21	12:01:45s -0:01:45 -
-Rule	sol88	1988	only	-	Jun	22	12:02:00s -0:02:00 -
-Rule	sol88	1988	only	-	Jun	23	12:02:10s -0:02:10 -
-Rule	sol88	1988	only	-	Jun	24	12:02:25s -0:02:25 -
-Rule	sol88	1988	only	-	Jun	25	12:02:35s -0:02:35 -
-Rule	sol88	1988	only	-	Jun	26	12:02:50s -0:02:50 -
-Rule	sol88	1988	only	-	Jun	27	12:03:00s -0:03:00 -
-Rule	sol88	1988	only	-	Jun	28	12:03:15s -0:03:15 -
-Rule	sol88	1988	only	-	Jun	29	12:03:25s -0:03:25 -
-Rule	sol88	1988	only	-	Jun	30	12:03:40s -0:03:40 -
-Rule	sol88	1988	only	-	Jul	1	12:03:50s -0:03:50 -
-Rule	sol88	1988	only	-	Jul	2	12:04:00s -0:04:00 -
-Rule	sol88	1988	only	-	Jul	3	12:04:10s -0:04:10 -
-Rule	sol88	1988	only	-	Jul	4	12:04:25s -0:04:25 -
-Rule	sol88	1988	only	-	Jul	5	12:04:35s -0:04:35 -
-Rule	sol88	1988	only	-	Jul	6	12:04:45s -0:04:45 -
-Rule	sol88	1988	only	-	Jul	7	12:04:55s -0:04:55 -
-Rule	sol88	1988	only	-	Jul	8	12:05:05s -0:05:05 -
-Rule	sol88	1988	only	-	Jul	9	12:05:10s -0:05:10 -
-Rule	sol88	1988	only	-	Jul	10	12:05:20s -0:05:20 -
-Rule	sol88	1988	only	-	Jul	11	12:05:30s -0:05:30 -
-Rule	sol88	1988	only	-	Jul	12	12:05:35s -0:05:35 -
-Rule	sol88	1988	only	-	Jul	13	12:05:45s -0:05:45 -
-Rule	sol88	1988	only	-	Jul	14	12:05:50s -0:05:50 -
-Rule	sol88	1988	only	-	Jul	15	12:05:55s -0:05:55 -
-Rule	sol88	1988	only	-	Jul	16	12:06:00s -0:06:00 -
-Rule	sol88	1988	only	-	Jul	17	12:06:05s -0:06:05 -
-Rule	sol88	1988	only	-	Jul	18	12:06:10s -0:06:10 -
-Rule	sol88	1988	only	-	Jul	19	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Jul	20	12:06:20s -0:06:20 -
-Rule	sol88	1988	only	-	Jul	21	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	22	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	23	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	24	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	25	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	26	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	27	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	28	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	29	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	30	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	31	12:06:20s -0:06:20 -
-Rule	sol88	1988	only	-	Aug	1	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Aug	2	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Aug	3	12:06:10s -0:06:10 -
-Rule	sol88	1988	only	-	Aug	4	12:06:05s -0:06:05 -
-Rule	sol88	1988	only	-	Aug	5	12:05:55s -0:05:55 -
-Rule	sol88	1988	only	-	Aug	6	12:05:50s -0:05:50 -
-Rule	sol88	1988	only	-	Aug	7	12:05:45s -0:05:45 -
-Rule	sol88	1988	only	-	Aug	8	12:05:35s -0:05:35 -
-Rule	sol88	1988	only	-	Aug	9	12:05:25s -0:05:25 -
-Rule	sol88	1988	only	-	Aug	10	12:05:20s -0:05:20 -
-Rule	sol88	1988	only	-	Aug	11	12:05:10s -0:05:10 -
-Rule	sol88	1988	only	-	Aug	12	12:05:00s -0:05:00 -
-Rule	sol88	1988	only	-	Aug	13	12:04:50s -0:04:50 -
-Rule	sol88	1988	only	-	Aug	14	12:04:35s -0:04:35 -
-Rule	sol88	1988	only	-	Aug	15	12:04:25s -0:04:25 -
-Rule	sol88	1988	only	-	Aug	16	12:04:15s -0:04:15 -
-Rule	sol88	1988	only	-	Aug	17	12:04:00s -0:04:00 -
-Rule	sol88	1988	only	-	Aug	18	12:03:50s -0:03:50 -
-Rule	sol88	1988	only	-	Aug	19	12:03:35s -0:03:35 -
-Rule	sol88	1988	only	-	Aug	20	12:03:20s -0:03:20 -
-Rule	sol88	1988	only	-	Aug	21	12:03:05s -0:03:05 -
-Rule	sol88	1988	only	-	Aug	22	12:02:50s -0:02:50 -
-Rule	sol88	1988	only	-	Aug	23	12:02:35s -0:02:35 -
-Rule	sol88	1988	only	-	Aug	24	12:02:20s -0:02:20 -
-Rule	sol88	1988	only	-	Aug	25	12:02:00s -0:02:00 -
-Rule	sol88	1988	only	-	Aug	26	12:01:45s -0:01:45 -
-Rule	sol88	1988	only	-	Aug	27	12:01:30s -0:01:30 -
-Rule	sol88	1988	only	-	Aug	28	12:01:10s -0:01:10 -
-Rule	sol88	1988	only	-	Aug	29	12:00:50s -0:00:50 -
-Rule	sol88	1988	only	-	Aug	30	12:00:35s -0:00:35 -
-Rule	sol88	1988	only	-	Aug	31	12:00:15s -0:00:15 -
-Rule	sol88	1988	only	-	Sep	1	11:59:55s 0:00:05 -
-Rule	sol88	1988	only	-	Sep	2	11:59:35s 0:00:25 -
-Rule	sol88	1988	only	-	Sep	3	11:59:20s 0:00:40 -
-Rule	sol88	1988	only	-	Sep	4	11:59:00s 0:01:00 -
-Rule	sol88	1988	only	-	Sep	5	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Sep	6	11:58:20s 0:01:40 -
-Rule	sol88	1988	only	-	Sep	7	11:58:00s 0:02:00 -
-Rule	sol88	1988	only	-	Sep	8	11:57:35s 0:02:25 -
-Rule	sol88	1988	only	-	Sep	9	11:57:15s 0:02:45 -
-Rule	sol88	1988	only	-	Sep	10	11:56:55s 0:03:05 -
-Rule	sol88	1988	only	-	Sep	11	11:56:35s 0:03:25 -
-Rule	sol88	1988	only	-	Sep	12	11:56:15s 0:03:45 -
-Rule	sol88	1988	only	-	Sep	13	11:55:50s 0:04:10 -
-Rule	sol88	1988	only	-	Sep	14	11:55:30s 0:04:30 -
-Rule	sol88	1988	only	-	Sep	15	11:55:10s 0:04:50 -
-Rule	sol88	1988	only	-	Sep	16	11:54:50s 0:05:10 -
-Rule	sol88	1988	only	-	Sep	17	11:54:25s 0:05:35 -
-Rule	sol88	1988	only	-	Sep	18	11:54:05s 0:05:55 -
-Rule	sol88	1988	only	-	Sep	19	11:53:45s 0:06:15 -
-Rule	sol88	1988	only	-	Sep	20	11:53:25s 0:06:35 -
-Rule	sol88	1988	only	-	Sep	21	11:53:00s 0:07:00 -
-Rule	sol88	1988	only	-	Sep	22	11:52:40s 0:07:20 -
-Rule	sol88	1988	only	-	Sep	23	11:52:20s 0:07:40 -
-Rule	sol88	1988	only	-	Sep	24	11:52:00s 0:08:00 -
-Rule	sol88	1988	only	-	Sep	25	11:51:40s 0:08:20 -
-Rule	sol88	1988	only	-	Sep	26	11:51:15s 0:08:45 -
-Rule	sol88	1988	only	-	Sep	27	11:50:55s 0:09:05 -
-Rule	sol88	1988	only	-	Sep	28	11:50:35s 0:09:25 -
-Rule	sol88	1988	only	-	Sep	29	11:50:15s 0:09:45 -
-Rule	sol88	1988	only	-	Sep	30	11:49:55s 0:10:05 -
-Rule	sol88	1988	only	-	Oct	1	11:49:35s 0:10:25 -
-Rule	sol88	1988	only	-	Oct	2	11:49:20s 0:10:40 -
-Rule	sol88	1988	only	-	Oct	3	11:49:00s 0:11:00 -
-Rule	sol88	1988	only	-	Oct	4	11:48:40s 0:11:20 -
-Rule	sol88	1988	only	-	Oct	5	11:48:25s 0:11:35 -
-Rule	sol88	1988	only	-	Oct	6	11:48:05s 0:11:55 -
-Rule	sol88	1988	only	-	Oct	7	11:47:50s 0:12:10 -
-Rule	sol88	1988	only	-	Oct	8	11:47:30s 0:12:30 -
-Rule	sol88	1988	only	-	Oct	9	11:47:15s 0:12:45 -
-Rule	sol88	1988	only	-	Oct	10	11:47:00s 0:13:00 -
-Rule	sol88	1988	only	-	Oct	11	11:46:45s 0:13:15 -
-Rule	sol88	1988	only	-	Oct	12	11:46:30s 0:13:30 -
-Rule	sol88	1988	only	-	Oct	13	11:46:15s 0:13:45 -
-Rule	sol88	1988	only	-	Oct	14	11:46:00s 0:14:00 -
-Rule	sol88	1988	only	-	Oct	15	11:45:45s 0:14:15 -
-Rule	sol88	1988	only	-	Oct	16	11:45:35s 0:14:25 -
-Rule	sol88	1988	only	-	Oct	17	11:45:20s 0:14:40 -
-Rule	sol88	1988	only	-	Oct	18	11:45:10s 0:14:50 -
-Rule	sol88	1988	only	-	Oct	19	11:45:00s 0:15:00 -
-Rule	sol88	1988	only	-	Oct	20	11:44:45s 0:15:15 -
-Rule	sol88	1988	only	-	Oct	21	11:44:40s 0:15:20 -
-Rule	sol88	1988	only	-	Oct	22	11:44:30s 0:15:30 -
-Rule	sol88	1988	only	-	Oct	23	11:44:20s 0:15:40 -
-Rule	sol88	1988	only	-	Oct	24	11:44:10s 0:15:50 -
-Rule	sol88	1988	only	-	Oct	25	11:44:05s 0:15:55 -
-Rule	sol88	1988	only	-	Oct	26	11:44:00s 0:16:00 -
-Rule	sol88	1988	only	-	Oct	27	11:43:55s 0:16:05 -
-Rule	sol88	1988	only	-	Oct	28	11:43:50s 0:16:10 -
-Rule	sol88	1988	only	-	Oct	29	11:43:45s 0:16:15 -
-Rule	sol88	1988	only	-	Oct	30	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Oct	31	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Nov	1	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	2	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	3	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	4	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	5	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Nov	6	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Nov	7	11:43:45s 0:16:15 -
-Rule	sol88	1988	only	-	Nov	8	11:43:45s 0:16:15 -
-Rule	sol88	1988	only	-	Nov	9	11:43:50s 0:16:10 -
-Rule	sol88	1988	only	-	Nov	10	11:44:00s 0:16:00 -
-Rule	sol88	1988	only	-	Nov	11	11:44:05s 0:15:55 -
-Rule	sol88	1988	only	-	Nov	12	11:44:10s 0:15:50 -
-Rule	sol88	1988	only	-	Nov	13	11:44:20s 0:15:40 -
-Rule	sol88	1988	only	-	Nov	14	11:44:30s 0:15:30 -
-Rule	sol88	1988	only	-	Nov	15	11:44:40s 0:15:20 -
-Rule	sol88	1988	only	-	Nov	16	11:44:50s 0:15:10 -
-Rule	sol88	1988	only	-	Nov	17	11:45:00s 0:15:00 -
-Rule	sol88	1988	only	-	Nov	18	11:45:15s 0:14:45 -
-Rule	sol88	1988	only	-	Nov	19	11:45:25s 0:14:35 -
-Rule	sol88	1988	only	-	Nov	20	11:45:40s 0:14:20 -
-Rule	sol88	1988	only	-	Nov	21	11:45:55s 0:14:05 -
-Rule	sol88	1988	only	-	Nov	22	11:46:10s 0:13:50 -
-Rule	sol88	1988	only	-	Nov	23	11:46:30s 0:13:30 -
-Rule	sol88	1988	only	-	Nov	24	11:46:45s 0:13:15 -
-Rule	sol88	1988	only	-	Nov	25	11:47:05s 0:12:55 -
-Rule	sol88	1988	only	-	Nov	26	11:47:20s 0:12:40 -
-Rule	sol88	1988	only	-	Nov	27	11:47:40s 0:12:20 -
-Rule	sol88	1988	only	-	Nov	28	11:48:00s 0:12:00 -
-Rule	sol88	1988	only	-	Nov	29	11:48:25s 0:11:35 -
-Rule	sol88	1988	only	-	Nov	30	11:48:45s 0:11:15 -
-Rule	sol88	1988	only	-	Dec	1	11:49:05s 0:10:55 -
-Rule	sol88	1988	only	-	Dec	2	11:49:30s 0:10:30 -
-Rule	sol88	1988	only	-	Dec	3	11:49:55s 0:10:05 -
-Rule	sol88	1988	only	-	Dec	4	11:50:15s 0:09:45 -
-Rule	sol88	1988	only	-	Dec	5	11:50:40s 0:09:20 -
-Rule	sol88	1988	only	-	Dec	6	11:51:05s 0:08:55 -
-Rule	sol88	1988	only	-	Dec	7	11:51:35s 0:08:25 -
-Rule	sol88	1988	only	-	Dec	8	11:52:00s 0:08:00 -
-Rule	sol88	1988	only	-	Dec	9	11:52:25s 0:07:35 -
-Rule	sol88	1988	only	-	Dec	10	11:52:55s 0:07:05 -
-Rule	sol88	1988	only	-	Dec	11	11:53:20s 0:06:40 -
-Rule	sol88	1988	only	-	Dec	12	11:53:50s 0:06:10 -
-Rule	sol88	1988	only	-	Dec	13	11:54:15s 0:05:45 -
-Rule	sol88	1988	only	-	Dec	14	11:54:45s 0:05:15 -
-Rule	sol88	1988	only	-	Dec	15	11:55:15s 0:04:45 -
-Rule	sol88	1988	only	-	Dec	16	11:55:45s 0:04:15 -
-Rule	sol88	1988	only	-	Dec	17	11:56:15s 0:03:45 -
-Rule	sol88	1988	only	-	Dec	18	11:56:40s 0:03:20 -
-Rule	sol88	1988	only	-	Dec	19	11:57:10s 0:02:50 -
-Rule	sol88	1988	only	-	Dec	20	11:57:40s 0:02:20 -
-Rule	sol88	1988	only	-	Dec	21	11:58:10s 0:01:50 -
-Rule	sol88	1988	only	-	Dec	22	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Dec	23	11:59:10s 0:00:50 -
-Rule	sol88	1988	only	-	Dec	24	11:59:40s 0:00:20 -
-Rule	sol88	1988	only	-	Dec	25	12:00:10s -0:00:10 -
-Rule	sol88	1988	only	-	Dec	26	12:00:40s -0:00:40 -
-Rule	sol88	1988	only	-	Dec	27	12:01:10s -0:01:10 -
-Rule	sol88	1988	only	-	Dec	28	12:01:40s -0:01:40 -
-Rule	sol88	1988	only	-	Dec	29	12:02:10s -0:02:10 -
-Rule	sol88	1988	only	-	Dec	30	12:02:35s -0:02:35 -
-Rule	sol88	1988	only	-	Dec	31	12:03:05s -0:03:05 -
-
-# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
-# Before and after 1988, we'll operate on local mean solar time.
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	Asia/Riyadh88	3:07:04	-		zzz	1988
-			3:07:04	sol88		zzz	1989
-			3:07:04	-		zzz
-# For backward compatibility...
-Link	Asia/Riyadh88	Mideast/Riyadh88
diff --git a/bin/glibc-2.7/timezone/solar89 b/bin/glibc-2.7/timezone/solar89
deleted file mode 100644
index 8c485314..00000000
--- a/bin/glibc-2.7/timezone/solar89
+++ /dev/null
@@ -1,393 +0,0 @@
-# @(#)solar89	8.1
-
-# Apparent noon times below are for Riyadh; they're a bit off for other places.
-# Times were computed using a formula provided by the U. S. Naval Observatory:
-#	eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
-#		-12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
-#		+ 19.3 * cos(3 * l);
-# where l is the "mean longitude of the Sun" given by
-#	l = 279.642 degrees + 0.985647 * d
-# and d is the interval in days from January 0, 0 hours Universal Time
-# (equaling the day of the year plus the fraction of a day from zero hours).
-# The accuracy of the formula is plus or minus three seconds.
-#
-# Rounding to the nearest five seconds results in fewer than
-# 256 different "time types"--a limit that's faced because time types are
-# stored on disk as unsigned chars.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	sol89	1989	only	-	Jan	1	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Jan	2	12:04:05s -0:04:05 -
-Rule	sol89	1989	only	-	Jan	3	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Jan	4	12:05:00s -0:05:00 -
-Rule	sol89	1989	only	-	Jan	5	12:05:25s -0:05:25 -
-Rule	sol89	1989	only	-	Jan	6	12:05:50s -0:05:50 -
-Rule	sol89	1989	only	-	Jan	7	12:06:15s -0:06:15 -
-Rule	sol89	1989	only	-	Jan	8	12:06:45s -0:06:45 -
-Rule	sol89	1989	only	-	Jan	9	12:07:10s -0:07:10 -
-Rule	sol89	1989	only	-	Jan	10	12:07:35s -0:07:35 -
-Rule	sol89	1989	only	-	Jan	11	12:07:55s -0:07:55 -
-Rule	sol89	1989	only	-	Jan	12	12:08:20s -0:08:20 -
-Rule	sol89	1989	only	-	Jan	13	12:08:45s -0:08:45 -
-Rule	sol89	1989	only	-	Jan	14	12:09:05s -0:09:05 -
-Rule	sol89	1989	only	-	Jan	15	12:09:25s -0:09:25 -
-Rule	sol89	1989	only	-	Jan	16	12:09:45s -0:09:45 -
-Rule	sol89	1989	only	-	Jan	17	12:10:05s -0:10:05 -
-Rule	sol89	1989	only	-	Jan	18	12:10:25s -0:10:25 -
-Rule	sol89	1989	only	-	Jan	19	12:10:45s -0:10:45 -
-Rule	sol89	1989	only	-	Jan	20	12:11:05s -0:11:05 -
-Rule	sol89	1989	only	-	Jan	21	12:11:20s -0:11:20 -
-Rule	sol89	1989	only	-	Jan	22	12:11:35s -0:11:35 -
-Rule	sol89	1989	only	-	Jan	23	12:11:55s -0:11:55 -
-Rule	sol89	1989	only	-	Jan	24	12:12:10s -0:12:10 -
-Rule	sol89	1989	only	-	Jan	25	12:12:20s -0:12:20 -
-Rule	sol89	1989	only	-	Jan	26	12:12:35s -0:12:35 -
-Rule	sol89	1989	only	-	Jan	27	12:12:50s -0:12:50 -
-Rule	sol89	1989	only	-	Jan	28	12:13:00s -0:13:00 -
-Rule	sol89	1989	only	-	Jan	29	12:13:10s -0:13:10 -
-Rule	sol89	1989	only	-	Jan	30	12:13:20s -0:13:20 -
-Rule	sol89	1989	only	-	Jan	31	12:13:30s -0:13:30 -
-Rule	sol89	1989	only	-	Feb	1	12:13:40s -0:13:40 -
-Rule	sol89	1989	only	-	Feb	2	12:13:45s -0:13:45 -
-Rule	sol89	1989	only	-	Feb	3	12:13:55s -0:13:55 -
-Rule	sol89	1989	only	-	Feb	4	12:14:00s -0:14:00 -
-Rule	sol89	1989	only	-	Feb	5	12:14:05s -0:14:05 -
-Rule	sol89	1989	only	-	Feb	6	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	7	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	8	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	9	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	10	12:14:20s -0:14:20 -
-Rule	sol89	1989	only	-	Feb	11	12:14:20s -0:14:20 -
-Rule	sol89	1989	only	-	Feb	12	12:14:20s -0:14:20 -
-Rule	sol89	1989	only	-	Feb	13	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	14	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	15	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	16	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	17	12:14:05s -0:14:05 -
-Rule	sol89	1989	only	-	Feb	18	12:14:00s -0:14:00 -
-Rule	sol89	1989	only	-	Feb	19	12:13:55s -0:13:55 -
-Rule	sol89	1989	only	-	Feb	20	12:13:50s -0:13:50 -
-Rule	sol89	1989	only	-	Feb	21	12:13:40s -0:13:40 -
-Rule	sol89	1989	only	-	Feb	22	12:13:35s -0:13:35 -
-Rule	sol89	1989	only	-	Feb	23	12:13:25s -0:13:25 -
-Rule	sol89	1989	only	-	Feb	24	12:13:15s -0:13:15 -
-Rule	sol89	1989	only	-	Feb	25	12:13:05s -0:13:05 -
-Rule	sol89	1989	only	-	Feb	26	12:12:55s -0:12:55 -
-Rule	sol89	1989	only	-	Feb	27	12:12:45s -0:12:45 -
-Rule	sol89	1989	only	-	Feb	28	12:12:35s -0:12:35 -
-Rule	sol89	1989	only	-	Mar	1	12:12:25s -0:12:25 -
-Rule	sol89	1989	only	-	Mar	2	12:12:10s -0:12:10 -
-Rule	sol89	1989	only	-	Mar	3	12:12:00s -0:12:00 -
-Rule	sol89	1989	only	-	Mar	4	12:11:45s -0:11:45 -
-Rule	sol89	1989	only	-	Mar	5	12:11:35s -0:11:35 -
-Rule	sol89	1989	only	-	Mar	6	12:11:20s -0:11:20 -
-Rule	sol89	1989	only	-	Mar	7	12:11:05s -0:11:05 -
-Rule	sol89	1989	only	-	Mar	8	12:10:50s -0:10:50 -
-Rule	sol89	1989	only	-	Mar	9	12:10:35s -0:10:35 -
-Rule	sol89	1989	only	-	Mar	10	12:10:20s -0:10:20 -
-Rule	sol89	1989	only	-	Mar	11	12:10:05s -0:10:05 -
-Rule	sol89	1989	only	-	Mar	12	12:09:50s -0:09:50 -
-Rule	sol89	1989	only	-	Mar	13	12:09:30s -0:09:30 -
-Rule	sol89	1989	only	-	Mar	14	12:09:15s -0:09:15 -
-Rule	sol89	1989	only	-	Mar	15	12:09:00s -0:09:00 -
-Rule	sol89	1989	only	-	Mar	16	12:08:40s -0:08:40 -
-Rule	sol89	1989	only	-	Mar	17	12:08:25s -0:08:25 -
-Rule	sol89	1989	only	-	Mar	18	12:08:05s -0:08:05 -
-Rule	sol89	1989	only	-	Mar	19	12:07:50s -0:07:50 -
-Rule	sol89	1989	only	-	Mar	20	12:07:30s -0:07:30 -
-Rule	sol89	1989	only	-	Mar	21	12:07:15s -0:07:15 -
-Rule	sol89	1989	only	-	Mar	22	12:06:55s -0:06:55 -
-Rule	sol89	1989	only	-	Mar	23	12:06:35s -0:06:35 -
-Rule	sol89	1989	only	-	Mar	24	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Mar	25	12:06:00s -0:06:00 -
-Rule	sol89	1989	only	-	Mar	26	12:05:40s -0:05:40 -
-Rule	sol89	1989	only	-	Mar	27	12:05:25s -0:05:25 -
-Rule	sol89	1989	only	-	Mar	28	12:05:05s -0:05:05 -
-Rule	sol89	1989	only	-	Mar	29	12:04:50s -0:04:50 -
-Rule	sol89	1989	only	-	Mar	30	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Mar	31	12:04:10s -0:04:10 -
-Rule	sol89	1989	only	-	Apr	1	12:03:55s -0:03:55 -
-Rule	sol89	1989	only	-	Apr	2	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Apr	3	12:03:20s -0:03:20 -
-Rule	sol89	1989	only	-	Apr	4	12:03:00s -0:03:00 -
-Rule	sol89	1989	only	-	Apr	5	12:02:45s -0:02:45 -
-Rule	sol89	1989	only	-	Apr	6	12:02:25s -0:02:25 -
-Rule	sol89	1989	only	-	Apr	7	12:02:10s -0:02:10 -
-Rule	sol89	1989	only	-	Apr	8	12:01:50s -0:01:50 -
-Rule	sol89	1989	only	-	Apr	9	12:01:35s -0:01:35 -
-Rule	sol89	1989	only	-	Apr	10	12:01:20s -0:01:20 -
-Rule	sol89	1989	only	-	Apr	11	12:01:05s -0:01:05 -
-Rule	sol89	1989	only	-	Apr	12	12:00:50s -0:00:50 -
-Rule	sol89	1989	only	-	Apr	13	12:00:35s -0:00:35 -
-Rule	sol89	1989	only	-	Apr	14	12:00:20s -0:00:20 -
-Rule	sol89	1989	only	-	Apr	15	12:00:05s -0:00:05 -
-Rule	sol89	1989	only	-	Apr	16	11:59:50s 0:00:10 -
-Rule	sol89	1989	only	-	Apr	17	11:59:35s 0:00:25 -
-Rule	sol89	1989	only	-	Apr	18	11:59:20s 0:00:40 -
-Rule	sol89	1989	only	-	Apr	19	11:59:10s 0:00:50 -
-Rule	sol89	1989	only	-	Apr	20	11:58:55s 0:01:05 -
-Rule	sol89	1989	only	-	Apr	21	11:58:45s 0:01:15 -
-Rule	sol89	1989	only	-	Apr	22	11:58:30s 0:01:30 -
-Rule	sol89	1989	only	-	Apr	23	11:58:20s 0:01:40 -
-Rule	sol89	1989	only	-	Apr	24	11:58:10s 0:01:50 -
-Rule	sol89	1989	only	-	Apr	25	11:58:00s 0:02:00 -
-Rule	sol89	1989	only	-	Apr	26	11:57:50s 0:02:10 -
-Rule	sol89	1989	only	-	Apr	27	11:57:40s 0:02:20 -
-Rule	sol89	1989	only	-	Apr	28	11:57:30s 0:02:30 -
-Rule	sol89	1989	only	-	Apr	29	11:57:20s 0:02:40 -
-Rule	sol89	1989	only	-	Apr	30	11:57:15s 0:02:45 -
-Rule	sol89	1989	only	-	May	1	11:57:05s 0:02:55 -
-Rule	sol89	1989	only	-	May	2	11:57:00s 0:03:00 -
-Rule	sol89	1989	only	-	May	3	11:56:50s 0:03:10 -
-Rule	sol89	1989	only	-	May	4	11:56:45s 0:03:15 -
-Rule	sol89	1989	only	-	May	5	11:56:40s 0:03:20 -
-Rule	sol89	1989	only	-	May	6	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	May	7	11:56:30s 0:03:30 -
-Rule	sol89	1989	only	-	May	8	11:56:30s 0:03:30 -
-Rule	sol89	1989	only	-	May	9	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	10	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	11	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	12	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	13	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	14	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	15	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	16	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	17	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	18	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	19	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	20	11:56:30s 0:03:30 -
-Rule	sol89	1989	only	-	May	21	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	May	22	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	May	23	11:56:40s 0:03:20 -
-Rule	sol89	1989	only	-	May	24	11:56:45s 0:03:15 -
-Rule	sol89	1989	only	-	May	25	11:56:55s 0:03:05 -
-Rule	sol89	1989	only	-	May	26	11:57:00s 0:03:00 -
-Rule	sol89	1989	only	-	May	27	11:57:05s 0:02:55 -
-Rule	sol89	1989	only	-	May	28	11:57:15s 0:02:45 -
-Rule	sol89	1989	only	-	May	29	11:57:20s 0:02:40 -
-Rule	sol89	1989	only	-	May	30	11:57:30s 0:02:30 -
-Rule	sol89	1989	only	-	May	31	11:57:35s 0:02:25 -
-Rule	sol89	1989	only	-	Jun	1	11:57:45s 0:02:15 -
-Rule	sol89	1989	only	-	Jun	2	11:57:55s 0:02:05 -
-Rule	sol89	1989	only	-	Jun	3	11:58:05s 0:01:55 -
-Rule	sol89	1989	only	-	Jun	4	11:58:15s 0:01:45 -
-Rule	sol89	1989	only	-	Jun	5	11:58:25s 0:01:35 -
-Rule	sol89	1989	only	-	Jun	6	11:58:35s 0:01:25 -
-Rule	sol89	1989	only	-	Jun	7	11:58:45s 0:01:15 -
-Rule	sol89	1989	only	-	Jun	8	11:59:00s 0:01:00 -
-Rule	sol89	1989	only	-	Jun	9	11:59:10s 0:00:50 -
-Rule	sol89	1989	only	-	Jun	10	11:59:20s 0:00:40 -
-Rule	sol89	1989	only	-	Jun	11	11:59:35s 0:00:25 -
-Rule	sol89	1989	only	-	Jun	12	11:59:45s 0:00:15 -
-Rule	sol89	1989	only	-	Jun	13	12:00:00s 0:00:00 -
-Rule	sol89	1989	only	-	Jun	14	12:00:10s -0:00:10 -
-Rule	sol89	1989	only	-	Jun	15	12:00:25s -0:00:25 -
-Rule	sol89	1989	only	-	Jun	16	12:00:35s -0:00:35 -
-Rule	sol89	1989	only	-	Jun	17	12:00:50s -0:00:50 -
-Rule	sol89	1989	only	-	Jun	18	12:01:05s -0:01:05 -
-Rule	sol89	1989	only	-	Jun	19	12:01:15s -0:01:15 -
-Rule	sol89	1989	only	-	Jun	20	12:01:30s -0:01:30 -
-Rule	sol89	1989	only	-	Jun	21	12:01:40s -0:01:40 -
-Rule	sol89	1989	only	-	Jun	22	12:01:55s -0:01:55 -
-Rule	sol89	1989	only	-	Jun	23	12:02:10s -0:02:10 -
-Rule	sol89	1989	only	-	Jun	24	12:02:20s -0:02:20 -
-Rule	sol89	1989	only	-	Jun	25	12:02:35s -0:02:35 -
-Rule	sol89	1989	only	-	Jun	26	12:02:45s -0:02:45 -
-Rule	sol89	1989	only	-	Jun	27	12:03:00s -0:03:00 -
-Rule	sol89	1989	only	-	Jun	28	12:03:10s -0:03:10 -
-Rule	sol89	1989	only	-	Jun	29	12:03:25s -0:03:25 -
-Rule	sol89	1989	only	-	Jun	30	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Jul	1	12:03:45s -0:03:45 -
-Rule	sol89	1989	only	-	Jul	2	12:04:00s -0:04:00 -
-Rule	sol89	1989	only	-	Jul	3	12:04:10s -0:04:10 -
-Rule	sol89	1989	only	-	Jul	4	12:04:20s -0:04:20 -
-Rule	sol89	1989	only	-	Jul	5	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Jul	6	12:04:40s -0:04:40 -
-Rule	sol89	1989	only	-	Jul	7	12:04:50s -0:04:50 -
-Rule	sol89	1989	only	-	Jul	8	12:05:00s -0:05:00 -
-Rule	sol89	1989	only	-	Jul	9	12:05:10s -0:05:10 -
-Rule	sol89	1989	only	-	Jul	10	12:05:20s -0:05:20 -
-Rule	sol89	1989	only	-	Jul	11	12:05:25s -0:05:25 -
-Rule	sol89	1989	only	-	Jul	12	12:05:35s -0:05:35 -
-Rule	sol89	1989	only	-	Jul	13	12:05:40s -0:05:40 -
-Rule	sol89	1989	only	-	Jul	14	12:05:50s -0:05:50 -
-Rule	sol89	1989	only	-	Jul	15	12:05:55s -0:05:55 -
-Rule	sol89	1989	only	-	Jul	16	12:06:00s -0:06:00 -
-Rule	sol89	1989	only	-	Jul	17	12:06:05s -0:06:05 -
-Rule	sol89	1989	only	-	Jul	18	12:06:10s -0:06:10 -
-Rule	sol89	1989	only	-	Jul	19	12:06:15s -0:06:15 -
-Rule	sol89	1989	only	-	Jul	20	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Jul	21	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Jul	22	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	23	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	24	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	25	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	26	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	27	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	28	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	29	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	30	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	31	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Aug	1	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Aug	2	12:06:15s -0:06:15 -
-Rule	sol89	1989	only	-	Aug	3	12:06:10s -0:06:10 -
-Rule	sol89	1989	only	-	Aug	4	12:06:05s -0:06:05 -
-Rule	sol89	1989	only	-	Aug	5	12:06:00s -0:06:00 -
-Rule	sol89	1989	only	-	Aug	6	12:05:50s -0:05:50 -
-Rule	sol89	1989	only	-	Aug	7	12:05:45s -0:05:45 -
-Rule	sol89	1989	only	-	Aug	8	12:05:35s -0:05:35 -
-Rule	sol89	1989	only	-	Aug	9	12:05:30s -0:05:30 -
-Rule	sol89	1989	only	-	Aug	10	12:05:20s -0:05:20 -
-Rule	sol89	1989	only	-	Aug	11	12:05:10s -0:05:10 -
-Rule	sol89	1989	only	-	Aug	12	12:05:00s -0:05:00 -
-Rule	sol89	1989	only	-	Aug	13	12:04:50s -0:04:50 -
-Rule	sol89	1989	only	-	Aug	14	12:04:40s -0:04:40 -
-Rule	sol89	1989	only	-	Aug	15	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Aug	16	12:04:15s -0:04:15 -
-Rule	sol89	1989	only	-	Aug	17	12:04:05s -0:04:05 -
-Rule	sol89	1989	only	-	Aug	18	12:03:50s -0:03:50 -
-Rule	sol89	1989	only	-	Aug	19	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Aug	20	12:03:25s -0:03:25 -
-Rule	sol89	1989	only	-	Aug	21	12:03:10s -0:03:10 -
-Rule	sol89	1989	only	-	Aug	22	12:02:55s -0:02:55 -
-Rule	sol89	1989	only	-	Aug	23	12:02:40s -0:02:40 -
-Rule	sol89	1989	only	-	Aug	24	12:02:20s -0:02:20 -
-Rule	sol89	1989	only	-	Aug	25	12:02:05s -0:02:05 -
-Rule	sol89	1989	only	-	Aug	26	12:01:50s -0:01:50 -
-Rule	sol89	1989	only	-	Aug	27	12:01:30s -0:01:30 -
-Rule	sol89	1989	only	-	Aug	28	12:01:15s -0:01:15 -
-Rule	sol89	1989	only	-	Aug	29	12:00:55s -0:00:55 -
-Rule	sol89	1989	only	-	Aug	30	12:00:40s -0:00:40 -
-Rule	sol89	1989	only	-	Aug	31	12:00:20s -0:00:20 -
-Rule	sol89	1989	only	-	Sep	1	12:00:00s 0:00:00 -
-Rule	sol89	1989	only	-	Sep	2	11:59:45s 0:00:15 -
-Rule	sol89	1989	only	-	Sep	3	11:59:25s 0:00:35 -
-Rule	sol89	1989	only	-	Sep	4	11:59:05s 0:00:55 -
-Rule	sol89	1989	only	-	Sep	5	11:58:45s 0:01:15 -
-Rule	sol89	1989	only	-	Sep	6	11:58:25s 0:01:35 -
-Rule	sol89	1989	only	-	Sep	7	11:58:05s 0:01:55 -
-Rule	sol89	1989	only	-	Sep	8	11:57:45s 0:02:15 -
-Rule	sol89	1989	only	-	Sep	9	11:57:20s 0:02:40 -
-Rule	sol89	1989	only	-	Sep	10	11:57:00s 0:03:00 -
-Rule	sol89	1989	only	-	Sep	11	11:56:40s 0:03:20 -
-Rule	sol89	1989	only	-	Sep	12	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	Sep	13	11:56:00s 0:04:00 -
-Rule	sol89	1989	only	-	Sep	14	11:55:35s 0:04:25 -
-Rule	sol89	1989	only	-	Sep	15	11:55:15s 0:04:45 -
-Rule	sol89	1989	only	-	Sep	16	11:54:55s 0:05:05 -
-Rule	sol89	1989	only	-	Sep	17	11:54:35s 0:05:25 -
-Rule	sol89	1989	only	-	Sep	18	11:54:10s 0:05:50 -
-Rule	sol89	1989	only	-	Sep	19	11:53:50s 0:06:10 -
-Rule	sol89	1989	only	-	Sep	20	11:53:30s 0:06:30 -
-Rule	sol89	1989	only	-	Sep	21	11:53:10s 0:06:50 -
-Rule	sol89	1989	only	-	Sep	22	11:52:45s 0:07:15 -
-Rule	sol89	1989	only	-	Sep	23	11:52:25s 0:07:35 -
-Rule	sol89	1989	only	-	Sep	24	11:52:05s 0:07:55 -
-Rule	sol89	1989	only	-	Sep	25	11:51:45s 0:08:15 -
-Rule	sol89	1989	only	-	Sep	26	11:51:25s 0:08:35 -
-Rule	sol89	1989	only	-	Sep	27	11:51:05s 0:08:55 -
-Rule	sol89	1989	only	-	Sep	28	11:50:40s 0:09:20 -
-Rule	sol89	1989	only	-	Sep	29	11:50:20s 0:09:40 -
-Rule	sol89	1989	only	-	Sep	30	11:50:00s 0:10:00 -
-Rule	sol89	1989	only	-	Oct	1	11:49:45s 0:10:15 -
-Rule	sol89	1989	only	-	Oct	2	11:49:25s 0:10:35 -
-Rule	sol89	1989	only	-	Oct	3	11:49:05s 0:10:55 -
-Rule	sol89	1989	only	-	Oct	4	11:48:45s 0:11:15 -
-Rule	sol89	1989	only	-	Oct	5	11:48:30s 0:11:30 -
-Rule	sol89	1989	only	-	Oct	6	11:48:10s 0:11:50 -
-Rule	sol89	1989	only	-	Oct	7	11:47:50s 0:12:10 -
-Rule	sol89	1989	only	-	Oct	8	11:47:35s 0:12:25 -
-Rule	sol89	1989	only	-	Oct	9	11:47:20s 0:12:40 -
-Rule	sol89	1989	only	-	Oct	10	11:47:00s 0:13:00 -
-Rule	sol89	1989	only	-	Oct	11	11:46:45s 0:13:15 -
-Rule	sol89	1989	only	-	Oct	12	11:46:30s 0:13:30 -
-Rule	sol89	1989	only	-	Oct	13	11:46:15s 0:13:45 -
-Rule	sol89	1989	only	-	Oct	14	11:46:00s 0:14:00 -
-Rule	sol89	1989	only	-	Oct	15	11:45:50s 0:14:10 -
-Rule	sol89	1989	only	-	Oct	16	11:45:35s 0:14:25 -
-Rule	sol89	1989	only	-	Oct	17	11:45:20s 0:14:40 -
-Rule	sol89	1989	only	-	Oct	18	11:45:10s 0:14:50 -
-Rule	sol89	1989	only	-	Oct	19	11:45:00s 0:15:00 -
-Rule	sol89	1989	only	-	Oct	20	11:44:50s 0:15:10 -
-Rule	sol89	1989	only	-	Oct	21	11:44:40s 0:15:20 -
-Rule	sol89	1989	only	-	Oct	22	11:44:30s 0:15:30 -
-Rule	sol89	1989	only	-	Oct	23	11:44:20s 0:15:40 -
-Rule	sol89	1989	only	-	Oct	24	11:44:10s 0:15:50 -
-Rule	sol89	1989	only	-	Oct	25	11:44:05s 0:15:55 -
-Rule	sol89	1989	only	-	Oct	26	11:44:00s 0:16:00 -
-Rule	sol89	1989	only	-	Oct	27	11:43:50s 0:16:10 -
-Rule	sol89	1989	only	-	Oct	28	11:43:45s 0:16:15 -
-Rule	sol89	1989	only	-	Oct	29	11:43:40s 0:16:20 -
-Rule	sol89	1989	only	-	Oct	30	11:43:40s 0:16:20 -
-Rule	sol89	1989	only	-	Oct	31	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	1	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	2	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	3	11:43:30s 0:16:30 -
-Rule	sol89	1989	only	-	Nov	4	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	5	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	6	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	7	11:43:40s 0:16:20 -
-Rule	sol89	1989	only	-	Nov	8	11:43:45s 0:16:15 -
-Rule	sol89	1989	only	-	Nov	9	11:43:50s 0:16:10 -
-Rule	sol89	1989	only	-	Nov	10	11:43:55s 0:16:05 -
-Rule	sol89	1989	only	-	Nov	11	11:44:00s 0:16:00 -
-Rule	sol89	1989	only	-	Nov	12	11:44:05s 0:15:55 -
-Rule	sol89	1989	only	-	Nov	13	11:44:15s 0:15:45 -
-Rule	sol89	1989	only	-	Nov	14	11:44:25s 0:15:35 -
-Rule	sol89	1989	only	-	Nov	15	11:44:35s 0:15:25 -
-Rule	sol89	1989	only	-	Nov	16	11:44:45s 0:15:15 -
-Rule	sol89	1989	only	-	Nov	17	11:44:55s 0:15:05 -
-Rule	sol89	1989	only	-	Nov	18	11:45:10s 0:14:50 -
-Rule	sol89	1989	only	-	Nov	19	11:45:20s 0:14:40 -
-Rule	sol89	1989	only	-	Nov	20	11:45:35s 0:14:25 -
-Rule	sol89	1989	only	-	Nov	21	11:45:50s 0:14:10 -
-Rule	sol89	1989	only	-	Nov	22	11:46:05s 0:13:55 -
-Rule	sol89	1989	only	-	Nov	23	11:46:25s 0:13:35 -
-Rule	sol89	1989	only	-	Nov	24	11:46:40s 0:13:20 -
-Rule	sol89	1989	only	-	Nov	25	11:47:00s 0:13:00 -
-Rule	sol89	1989	only	-	Nov	26	11:47:20s 0:12:40 -
-Rule	sol89	1989	only	-	Nov	27	11:47:35s 0:12:25 -
-Rule	sol89	1989	only	-	Nov	28	11:47:55s 0:12:05 -
-Rule	sol89	1989	only	-	Nov	29	11:48:20s 0:11:40 -
-Rule	sol89	1989	only	-	Nov	30	11:48:40s 0:11:20 -
-Rule	sol89	1989	only	-	Dec	1	11:49:00s 0:11:00 -
-Rule	sol89	1989	only	-	Dec	2	11:49:25s 0:10:35 -
-Rule	sol89	1989	only	-	Dec	3	11:49:50s 0:10:10 -
-Rule	sol89	1989	only	-	Dec	4	11:50:15s 0:09:45 -
-Rule	sol89	1989	only	-	Dec	5	11:50:35s 0:09:25 -
-Rule	sol89	1989	only	-	Dec	6	11:51:00s 0:09:00 -
-Rule	sol89	1989	only	-	Dec	7	11:51:30s 0:08:30 -
-Rule	sol89	1989	only	-	Dec	8	11:51:55s 0:08:05 -
-Rule	sol89	1989	only	-	Dec	9	11:52:20s 0:07:40 -
-Rule	sol89	1989	only	-	Dec	10	11:52:50s 0:07:10 -
-Rule	sol89	1989	only	-	Dec	11	11:53:15s 0:06:45 -
-Rule	sol89	1989	only	-	Dec	12	11:53:45s 0:06:15 -
-Rule	sol89	1989	only	-	Dec	13	11:54:10s 0:05:50 -
-Rule	sol89	1989	only	-	Dec	14	11:54:40s 0:05:20 -
-Rule	sol89	1989	only	-	Dec	15	11:55:10s 0:04:50 -
-Rule	sol89	1989	only	-	Dec	16	11:55:40s 0:04:20 -
-Rule	sol89	1989	only	-	Dec	17	11:56:05s 0:03:55 -
-Rule	sol89	1989	only	-	Dec	18	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	Dec	19	11:57:05s 0:02:55 -
-Rule	sol89	1989	only	-	Dec	20	11:57:35s 0:02:25 -
-Rule	sol89	1989	only	-	Dec	21	11:58:05s 0:01:55 -
-Rule	sol89	1989	only	-	Dec	22	11:58:35s 0:01:25 -
-Rule	sol89	1989	only	-	Dec	23	11:59:05s 0:00:55 -
-Rule	sol89	1989	only	-	Dec	24	11:59:35s 0:00:25 -
-Rule	sol89	1989	only	-	Dec	25	12:00:05s -0:00:05 -
-Rule	sol89	1989	only	-	Dec	26	12:00:35s -0:00:35 -
-Rule	sol89	1989	only	-	Dec	27	12:01:05s -0:01:05 -
-Rule	sol89	1989	only	-	Dec	28	12:01:35s -0:01:35 -
-Rule	sol89	1989	only	-	Dec	29	12:02:00s -0:02:00 -
-Rule	sol89	1989	only	-	Dec	30	12:02:30s -0:02:30 -
-Rule	sol89	1989	only	-	Dec	31	12:03:00s -0:03:00 -
-
-# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
-# Before and after 1989, we'll operate on local mean solar time.
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	Asia/Riyadh89	3:07:04	-		zzz	1989
-			3:07:04	sol89		zzz	1990
-			3:07:04	-		zzz
-# For backward compatibility...
-Link	Asia/Riyadh89	Mideast/Riyadh89
diff --git a/bin/glibc-2.7/timezone/southamerica b/bin/glibc-2.7/timezone/southamerica
deleted file mode 100644
index bfda8276..00000000
--- a/bin/glibc-2.7/timezone/southamerica
+++ /dev/null
@@ -1,1125 +0,0 @@
-# @(#)southamerica	8.12
-# 
-
-# This data is by no means authoritative; if you think you know better,
-# go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
-
-# From Paul Eggert (2006-03-22):
-# A good source for time zone historical data outside the U.S. is
-# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
-# San Diego: ACS Publications, Inc. (2003).
-#
-# Gwillim Law writes that a good source
-# for recent time zone data is the International Air Transport
-# Association's Standard Schedules Information Manual (IATA SSIM),
-# published semiannually.  Law sent in several helpful summaries
-# of the IATA's data after 1990.
-#
-# Except where otherwise noted, Shanks & Pottenger is the source for
-# entries through 1990, and IATA SSIM is the source for entries afterwards.
-#
-# Earlier editions of these tables used the North American style (e.g. ARST and
-# ARDT for Argentine Standard and Daylight Time), but the following quote
-# suggests that it's better to use European style (e.g. ART and ARST).
-#	I suggest the use of _Summer time_ instead of the more cumbersome
-#	_daylight-saving time_.  _Summer time_ seems to be in general use
-#	in Europe and South America.
-#	-- E O Cutler, _New York Times_ (1937-02-14), quoted in
-#	H L Mencken, _The American Language: Supplement I_ (1960), p 466
-#
-# Earlier editions of these tables also used the North American style
-# for time zones in Brazil, but this was incorrect, as Brazilians say
-# "summer time".  Reinaldo Goulart, a Sao Paulo businessman active in
-# the railroad sector, writes (1999-07-06):
-#	The subject of time zones is currently a matter of discussion/debate in
-#	Brazil.  Let's say that "the Brasilia time" is considered the
-#	"official time" because Brasilia is the capital city.
-#	The other three time zones are called "Brasilia time "minus one" or
-#	"plus one" or "plus two".  As far as I know there is no such
-#	name/designation as "Eastern Time" or "Central Time".
-# So I invented the following (English-language) abbreviations for now.
-# Corrections are welcome!
-#		std	dst
-#	-2:00	FNT	FNST	Fernando de Noronha
-#	-3:00	BRT	BRST	Brasilia
-#	-4:00	AMT	AMST	Amazon
-#	-5:00	ACT	ACST	Acre
-
-###############################################################################
-
-###############################################################################
-
-# Argentina
-
-# From Bob Devine (1988-01-28):
-# Argentina: first Sunday in October to first Sunday in April since 1976.
-# Double Summer time from 1969 to 1974.  Switches at midnight.
-
-# From U. S. Naval Observatory (1988-01-199):
-# ARGENTINA           3 H BEHIND   UTC
-
-# From Hernan G. Otero (1995-06-26):
-# I am sending modifications to the Argentine time zone table...
-# AR was chosen because they are the ISO letters that represent Argentina.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Arg	1930	only	-	Dec	 1	0:00	1:00	S
-Rule	Arg	1931	only	-	Apr	 1	0:00	0	-
-Rule	Arg	1931	only	-	Oct	15	0:00	1:00	S
-Rule	Arg	1932	1940	-	Mar	 1	0:00	0	-
-Rule	Arg	1932	1939	-	Nov	 1	0:00	1:00	S
-Rule	Arg	1940	only	-	Jul	 1	0:00	1:00	S
-Rule	Arg	1941	only	-	Jun	15	0:00	0	-
-Rule	Arg	1941	only	-	Oct	15	0:00	1:00	S
-Rule	Arg	1943	only	-	Aug	 1	0:00	0	-
-Rule	Arg	1943	only	-	Oct	15	0:00	1:00	S
-Rule	Arg	1946	only	-	Mar	 1	0:00	0	-
-Rule	Arg	1946	only	-	Oct	 1	0:00	1:00	S
-Rule	Arg	1963	only	-	Oct	 1	0:00	0	-
-Rule	Arg	1963	only	-	Dec	15	0:00	1:00	S
-Rule	Arg	1964	1966	-	Mar	 1	0:00	0	-
-Rule	Arg	1964	1966	-	Oct	15	0:00	1:00	S
-Rule	Arg	1967	only	-	Apr	 2	0:00	0	-
-Rule	Arg	1967	1968	-	Oct	Sun>=1	0:00	1:00	S
-Rule	Arg	1968	1969	-	Apr	Sun>=1	0:00	0	-
-Rule	Arg	1974	only	-	Jan	23	0:00	1:00	S
-Rule	Arg	1974	only	-	May	 1	0:00	0	-
-Rule	Arg	1988	only	-	Dec	 1	0:00	1:00	S
-#
-# From Hernan G. Otero (1995-06-26):
-# These corrections were contributed by InterSoft Argentina S.A.,
-# obtaining the data from the:
-# Talleres de Hidrografia Naval Argentina
-# (Argentine Naval Hydrography Institute)
-Rule	Arg	1989	1993	-	Mar	Sun>=1	0:00	0	-
-Rule	Arg	1989	1992	-	Oct	Sun>=15	0:00	1:00	S
-#
-# From Hernan G. Otero (1995-06-26):
-# From this moment on, the law that mandated the daylight saving
-# time corrections was derogated and no more modifications
-# to the time zones (for daylight saving) are now made.
-#
-# From Rives McDow (2000-01-10):
-# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
-# which did not result in the switch of a time zone, as they stayed 9 hours
-# from the International Date Line.
-Rule	Arg	1999	only	-	Oct	Sun>=1	0:00	1:00	S
-Rule	Arg	2000	only	-	Mar	Sun>=1	0:00	0	-
-#
-# From Peter Gradelski via Steffen Thorsen (2000-03-01):
-# We just checked with our Sao Paulo office and they say the government of
-# Argentina decided not to become one of the countries that go on or off DST.
-# So Buenos Aires should be -3 hours from GMT at all times.
-#
-# From Fabian L. Arce Jofre (2000-04-04):
-# The law that claimed DST for Argentina was derogated by President Fernando
-# de la Rua on March 2, 2000, because it would make people spend more energy
-# in the winter time, rather than less.  The change took effect on March 3.
-#
-# From Mariano Absatz (2001-06-06):
-# one of the major newspapers here in Argentina said that the 1999
-# Timezone Law (which never was effectively applied) will (would?) be
-# in effect.... The article is at
-# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
-# ... The Law itself is "Ley No 25155", sanctioned on 1999-08-25, enacted
-# 1999-09-17, and published 1999-09-21.  The official publication is at:
-# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
-# Regretfully, you have to subscribe (and pay) for the on-line version....
-#
-# (2001-06-12):
-# the timezone for Argentina will not change next Sunday.
-# Apparently it will do so on Sunday 24th....
-# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
-#
-# (2001-06-25):
-# Last Friday (yes, the last working day before the date of the change), the
-# Senate annulled the 1999 law that introduced the changes later postponed.
-# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
-# It remains the vote of the Deputies..., but it will be the same....
-# This kind of things had always been done this way in Argentina.
-# We are still -03:00 all year round in all of the country.
-#
-# From Mariano Absatz (2004-05-21):
-# Today it was officially published that the Province of Mendoza is changing
-# its timezone this winter... starting tomorrow night....
-# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
-# From Paul Eggert (2004-05-24):
-# It's Law No. 7,210.  This change is due to a public power emergency, so for
-# now we'll assume it's for this year only.
-#
-# From Paul Eggert (2006-03-22):
-# 
-# Hora de verano para la Republica Argentina (2003-06-08)
-#  says that standard time in Argentina from 1894-10-31
-# to 1920-05-01 was -4:16:48.25.  Go with this more-precise value
-# over Shanks & Pottenger.
-#
-# From Mariano Absatz (2004-06-05):
-# These media articles from a major newspaper mostly cover the current state:
-# http://www.lanacion.com.ar/04/05/27/de_604825.asp
-# http://www.lanacion.com.ar/04/05/28/de_605203.asp
-#
-# The following eight (8) provinces pulled clocks back to UTC-04:00 at
-# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
-# Apparently, all nine provinces would go back to UTC-03:00 at the same
-# time in October 17th.
-#
-# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
-# Tierra del Fuego, Tucuman.
-#
-# From Mariano Absatz (2004-06-14):
-# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
-# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
-# annoyance with the change is much higher than the power savings obtained....
-#
-# From Gwillim Law (2004-06-14):
-# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
-#     "The time change in Tierra del Fuego was a conflicted decision from
-#   the start.  The government had decreed that the measure would take
-#   effect on June 1, but a normative error forced the new time to begin
-#   three days earlier, from a Saturday to a Sunday....
-# Our understanding was that the change was originally scheduled to take place
-# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
-# provinces).  Sunday was May 30, only two days earlier.  So the article
-# contains a contradiction.  I would give more credence to the Saturday/Sunday
-# date than the "three days earlier" phrase, and conclude that Tierra del
-# Fuego set its clocks back at 2004-05-30 00:00.
-#
-# From Steffen Thorsen (2004-10-05):
-# The previous law 7210 which changed the province of Mendoza's time zone
-# back in May have been modified slightly in a new law 7277, which set the
-# new end date to 2004-09-26 (original date was 2004-10-17).
-# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
-#
-# From Mariano Absatz (2004-10-05):
-# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
-# Sunday, May 30th and Monday, May 31st.  It changed back to UTC-03:00
-# at midnight between Saturday, July 24th and Sunday, July 25th....
-# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
-# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
-# http://www.sanjuan.gov.ar/prensa/archivo/000441.html
-
-# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
-# from the IATA otherwise.  As noted below, Shanks & Pottenger say that
-# America/Cordoba split into 6 subregions during 1991/1992, but we
-# haven't verified this yet so for now we'll keep it a single region.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-#
-# Buenos Aires (BA), Capital Federal (CF),
-Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART
-#
-# Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC),
-# Formosa (FM), Salta (SA), Santiago del Estero (SE), Cordoba (CB),
-# San Luis (SL), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
-#
-# Shanks & Pottenger also make the following claims, which we haven't verified:
-# - Formosa switched to -3:00 on 1991-01-07.
-# - Misiones switched to -3:00 on 1990-12-29.
-# - Chaco switched to -3:00 on 1991-01-04.
-# - San Luis switched to -4:00 on 1990-03-14, then to -3:00 on 1990-10-15,
-#   then to -4:00 on 1991-03-01, then to -3:00 on 1991-06-01.
-# - Santiago del Estero switched to -4:00 on 1991-04-01,
-#   then to -3:00 on 1991-04-26.
-#
-Zone America/Argentina/Cordoba -4:16:48 - LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1991 Mar  3
-			-4:00	-	WART	1991 Oct 20
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART
-#
-# Tucuman (TM)
-Zone America/Argentina/Tucuman -4:20:52 - LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1991 Mar  3
-			-4:00	-	WART	1991 Oct 20
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 Jun  1
-			-4:00	-	WART	2004 Jun 13
-			-3:00	-	ART
-#
-# La Rioja (LR)
-Zone America/Argentina/La_Rioja -4:27:24 - LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1991 Mar  1
-			-4:00	-	WART	1991 May  7
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 Jun  1
-			-4:00	-	WART	2004 Jun 20
-			-3:00	-	ART
-#
-# San Juan (SJ)
-Zone America/Argentina/San_Juan -4:34:04 - LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1991 Mar  1
-			-4:00	-	WART	1991 May  7
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 May 31
-			-4:00	-	WART	2004 Jul 25
-			-3:00	-	ART
-#
-# Jujuy (JY)
-Zone America/Argentina/Jujuy -4:21:12 -	LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1990 Mar  4
-			-4:00	-	WART	1990 Oct 28
-			-4:00	1:00	WARST	1991 Mar 17
-			-4:00	-	WART	1991 Oct  6
-			-3:00	1:00	ARST	1992
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART
-#
-# Catamarca (CT), Chubut (CH)
-Zone America/Argentina/Catamarca -4:23:08 - LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1991 Mar  3
-			-4:00	-	WART	1991 Oct 20
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 Jun  1
-			-4:00	-	WART	2004 Jun 20
-			-3:00	-	ART
-#
-# Mendoza (MZ)
-Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
-			-4:16:48 -	CMT	1920 May
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1990 Mar  4
-			-4:00	-	WART	1990 Oct 15
-			-4:00	1:00	WARST	1991 Mar  1
-			-4:00	-	WART	1991 Oct 15
-			-4:00	1:00	WARST	1992 Mar  1
-			-4:00	-	WART	1992 Oct 18
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 May 23
-			-4:00	-	WART	2004 Sep 26
-			-3:00	-	ART
-#
-# Santa Cruz (SC)
-Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 Jun  1
-			-4:00	-	WART	2004 Jun 20
-			-3:00	-	ART
-#
-# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
-Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
-			-4:16:48 -	CMT	1920 May # Cordoba Mean Time
-			-4:00	-	ART	1930 Dec
-			-4:00	Arg	AR%sT	1969 Oct  5
-			-3:00	Arg	AR%sT	1999 Oct  3
-			-4:00	Arg	AR%sT	2000 Mar  3
-			-3:00	-	ART	2004 May 30
-			-4:00	-	WART	2004 Jun 20
-			-3:00	-	ART
-
-# Aruba
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Aruba	-4:40:24 -	LMT	1912 Feb 12	# Oranjestad
-			-4:30	-	ANT	1965 # Netherlands Antilles Time
-			-4:00	-	AST
-
-# Bolivia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/La_Paz	-4:32:36 -	LMT	1890
-			-4:32:36 -	CMT	1931 Oct 15 # Calamarca MT
-			-4:32:36 1:00	BOST	1932 Mar 21 # Bolivia ST
-			-4:00	-	BOT	# Bolivia Time
-
-# Brazil
-
-# From Paul Eggert (1993-11-18):
-# The mayor of Rio recently attempted to change the time zone rules
-# just in his city, in order to leave more summer time for the tourist trade.
-# The rule change lasted only part of the day;
-# the federal government refused to follow the city's rules, and business
-# was in a chaos, so the mayor backed down that afternoon.
-
-# From IATA SSIM (1996-02):
-# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
-# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
-# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
-# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
-# [The last three states are new to this issue of the IATA SSIM.]
-
-# From Gwillim Law (1996-10-07):
-# Geography, history (Tocantins was part of Goias until 1989), and other
-# sources of time zone information lead me to believe that AL, SE, and TO were
-# always in BR1, and so the only change was whether or not they observed DST....
-# The earliest issue of the SSIM I have is 2/91.  Each issue from then until
-# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
-# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
-# (UTC-4)....  The other two time zones given for Brazil are BR3, which is
-# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
-# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
-# become part of the state of Pernambuco).  The boundary between BR1 and BR2
-# has never been clearly stated.  They've simply been called East and West.
-# However, some conclusions can be drawn from another IATA manual: the Airline
-# Coding Directory, which lists close to 400 airports in Brazil.  For each
-# airport it gives a time zone which is coded to the SSIM.  From that
-# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
-# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
-# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
-
-# From Marcos Tadeu (1998-09-27):
-# 
-# Brazilian official page
-# 
-
-# From Jesper Norgaard (2000-11-03):
-# [For an official list of which regions in Brazil use which time zones, see:]
-# http://pcdsh01.on.br/Fusbr.htm
-# http://pcdsh01.on.br/Fusbrhv.htm
-
-# From Celso Doria via David Madeo (2002-10-09):
-# The reason for the delay this year has to do with elections in Brazil.
-#
-# Unlike in the United States, elections in Brazil are 100% computerized and
-# the results are known almost immediately.  Yesterday, it was the first
-# round of the elections when 115 million Brazilians voted for President,
-# Governor, Senators, Federal Deputies, and State Deputies.  Nobody is
-# counting (or re-counting) votes anymore and we know there will be a second
-# round for the Presidency and also for some Governors.  The 2nd round will
-# take place on October 27th.
-#
-# The reason why the DST will only begin November 3rd is that the thousands
-# of electoral machines used cannot have their time changed, and since the
-# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
-# the Government decided to postpone DST, instead of changing the Constitution
-# (maybe, for the next elections, it will be possible to change the clock)...
-
-# From Rodrigo Severo (2004-10-04):
-# It's just the biannual change made necessary by the much hyped, supposedly
-# modern Brazilian eletronic voting machines which, apparently, can't deal
-# with a time change between the first and the second rounds of the elections.
-
-# From Steffen Thorsen (2007-09-20):
-# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
-# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
-
-# From Paul Eggert (2002-10-10):
-# The official decrees referenced below are mostly taken from
-# 
-# Decretos sobre o Horario de Verao no Brasil
-# .
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# Decree 20,466 (1931-10-01)
-# Decree 21,896 (1932-01-10)
-Rule	Brazil	1931	only	-	Oct	 3	11:00	1:00	S
-Rule	Brazil	1932	1933	-	Apr	 1	 0:00	0	-
-Rule	Brazil	1932	only	-	Oct	 3	 0:00	1:00	S
-# Decree 23,195 (1933-10-10)
-# revoked DST.
-# Decree 27,496 (1949-11-24)
-# Decree 27,998 (1950-04-13)
-Rule	Brazil	1949	1952	-	Dec	 1	 0:00	1:00	S
-Rule	Brazil	1950	only	-	Apr	16	 1:00	0	-
-Rule	Brazil	1951	1952	-	Apr	 1	 0:00	0	-
-# Decree 32,308 (1953-02-24)
-Rule	Brazil	1953	only	-	Mar	 1	 0:00	0	-
-# Decree 34,724 (1953-11-30)
-# revoked DST.
-# Decree 52,700 (1963-10-18)
-# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
-# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
-# Decree 53,071 (1963-12-03)
-# extended the above decree to all of the national territory on 12-09.
-Rule	Brazil	1963	only	-	Dec	 9	 0:00	1:00	S
-# Decree 53,604 (1964-02-25)
-# extended summer time by one day to 1964-03-01 00:00 (start of school).
-Rule	Brazil	1964	only	-	Mar	 1	 0:00	0	-
-# Decree 55,639 (1965-01-27)
-Rule	Brazil	1965	only	-	Jan	31	 0:00	1:00	S
-Rule	Brazil	1965	only	-	Mar	31	 0:00	0	-
-# Decree 57,303 (1965-11-22)
-Rule	Brazil	1965	only	-	Dec	 1	 0:00	1:00	S
-# Decree 57,843 (1966-02-18)
-Rule	Brazil	1966	1968	-	Mar	 1	 0:00	0	-
-Rule	Brazil	1966	1967	-	Nov	 1	 0:00	1:00	S
-# Decree 63,429 (1968-10-15)
-# revoked DST.
-# Decree 91,698 (1985-09-27)
-Rule	Brazil	1985	only	-	Nov	 2	 0:00	1:00	S
-# Decree 92,310 (1986-01-21)
-# Decree 92,463 (1986-03-13)
-Rule	Brazil	1986	only	-	Mar	15	 0:00	0	-
-# Decree 93,316 (1986-10-01)
-Rule	Brazil	1986	only	-	Oct	25	 0:00	1:00	S
-Rule	Brazil	1987	only	-	Feb	14	 0:00	0	-
-# Decree 94,922 (1987-09-22)
-Rule	Brazil	1987	only	-	Oct	25	 0:00	1:00	S
-Rule	Brazil	1988	only	-	Feb	 7	 0:00	0	-
-# Decree 96,676 (1988-09-12)
-# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
-Rule	Brazil	1988	only	-	Oct	16	 0:00	1:00	S
-Rule	Brazil	1989	only	-	Jan	29	 0:00	0	-
-# Decree 98,077 (1989-08-21)
-# with the same exceptions
-Rule	Brazil	1989	only	-	Oct	15	 0:00	1:00	S
-Rule	Brazil	1990	only	-	Feb	11	 0:00	0	-
-# Decree 99,530 (1990-09-17)
-# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
-# Decree 99,629 (1990-10-19) adds BA, MT.
-Rule	Brazil	1990	only	-	Oct	21	 0:00	1:00	S
-Rule	Brazil	1991	only	-	Feb	17	 0:00	0	-
-# Unnumbered decree (1991-09-25)
-# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
-Rule	Brazil	1991	only	-	Oct	20	 0:00	1:00	S
-Rule	Brazil	1992	only	-	Feb	 9	 0:00	0	-
-# Unnumbered decree (1992-10-16)
-# adopted by same states.
-Rule	Brazil	1992	only	-	Oct	25	 0:00	1:00	S
-Rule	Brazil	1993	only	-	Jan	31	 0:00	0	-
-# Decree 942 (1993-09-28)
-# adopted by same states, plus AM.
-# Decree 1,252 (1994-09-22;
-# web page corrected 2004-01-07) adopted by same states, minus AM.
-# Decree 1,636 (1995-09-14)
-# adopted by same states, plus MT and TO.
-# Decree 1,674 (1995-10-13)
-# adds AL, SE.
-Rule	Brazil	1993	1995	-	Oct	Sun>=11	 0:00	1:00	S
-Rule	Brazil	1994	1995	-	Feb	Sun>=15	 0:00	0	-
-Rule	Brazil	1996	only	-	Feb	11	 0:00	0	-
-# Decree 2,000 (1996-09-04)
-# adopted by same states, minus AL, SE.
-Rule	Brazil	1996	only	-	Oct	 6	 0:00	1:00	S
-Rule	Brazil	1997	only	-	Feb	16	 0:00	0	-
-# From Daniel C. Sobral (1998-02-12):
-# In 1997, the DS began on October 6. The stated reason was that
-# because international television networks ignored Brazil's policy on DS,
-# they bought the wrong times on satellite for coverage of Pope's visit.
-# This year, the ending date of DS was postponed to March 1
-# to help dealing with the shortages of electric power.
-#
-# Decree 2,317 (1997-09-04), adopted by same states.
-Rule	Brazil	1997	only	-	Oct	 6	 0:00	1:00	S
-# Decree 2,495
-# (1998-02-10)
-Rule	Brazil	1998	only	-	Mar	 1	 0:00	0	-
-# Decree 2,780 (1998-09-11)
-# adopted by the same states as before.
-Rule	Brazil	1998	only	-	Oct	11	 0:00	1:00	S
-Rule	Brazil	1999	only	-	Feb	21	 0:00	0	-
-# Decree 3,150
-# (1999-08-23) adopted by same states.
-# Decree 3,188 (1999-09-30)
-# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
-Rule	Brazil	1999	only	-	Oct	 3	 0:00	1:00	S
-Rule	Brazil	2000	only	-	Feb	27	 0:00	0	-
-# Decree 3,592 (2000-09-06)
-# adopted by the same states as before.
-# Decree 3,630 (2000-10-13)
-# repeals DST in PE and RR, effective 2000-10-15 00:00.
-# Decree 3,632 (2000-10-17)
-# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
-# Decree 3,916
-# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
-Rule	Brazil	2000	2001	-	Oct	Sun>=8	 0:00	1:00	S
-Rule	Brazil	2001	2006	-	Feb	Sun>=15	 0:00	0	-
-# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
-# 
-Rule	Brazil	2002	only	-	Nov	 3	 0:00	1:00	S
-# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
-# 
-Rule	Brazil	2003	only	-	Oct	19	 0:00	1:00	S
-# Decree 5,223 (2004-10-01) reestablishes DST in MT.
-# 
-Rule	Brazil	2004	only	-	Nov	 2	 0:00	1:00	S
-# Decree 5,539 (2005-09-19),
-# adopted by the same states as before.
-Rule	Brazil	2005	only	-	Oct	16	 0:00	1:00	S
-# Decree 5,920 (2006-10-03),
-# adopted by the same states as before.
-Rule	Brazil	2006	only	-	Nov	 5	 0:00	1:00	S
-Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
-# (Decree number not yet known)
-# http://www.brasil.gov.br/noticias/ultimas_noticias/horario_verao070920/
-# (2007-09-20) after a heads-up from Steffen Thorsen:
-Rule	Brazil	2007	max	-	Oct	Sun>=8	 0:00	1:00	S
-Rule	Brazil	2008	max	-	Feb	Sun>=15	 0:00	0	-
-# The latest ruleset listed above says that the following states observe DST:
-# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
-# For dates after mid-2008, the above rules with TO="max" are guesses
-# and are quite possibly wrong, but are more likely than no DST at all.
-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-#
-# Fernando de Noronha (administratively part of PE)
-Zone America/Noronha	-2:09:40 -	LMT	1914
-			-2:00	Brazil	FN%sT	1990 Sep 17
-			-2:00	-	FNT	1999 Sep 30
-			-2:00	Brazil	FN%sT	2000 Oct 15
-			-2:00	-	FNT	2001 Sep 13
-			-2:00	Brazil	FN%sT	2002 Oct  1
-			-2:00	-	FNT
-# Other Atlantic islands have no permanent settlement.
-# These include Trindade and Martin Vaz (administratively part of ES),
-# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
-# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
-# it also included the Penedos.
-#
-# Amapa (AP), east Para (PA)
-# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
-# The division between east and west Para is the river Xingu.
-# In the north a very small part from the river Javary (now Jari I guess,
-# the border with Amapa) to the Amazon, then to the Xingu.
-Zone America/Belem	-3:13:56 -	LMT	1914
-			-3:00	Brazil	BR%sT	1988 Sep 12
-			-3:00	-	BRT
-#
-# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
-# Paraiba (PB)
-Zone America/Fortaleza	-2:34:00 -	LMT	1914
-			-3:00	Brazil	BR%sT	1990 Sep 17
-			-3:00	-	BRT	1999 Sep 30
-			-3:00	Brazil	BR%sT	2000 Oct 22
-			-3:00	-	BRT	2001 Sep 13
-			-3:00	Brazil	BR%sT	2002 Oct  1
-			-3:00	-	BRT
-#
-# Pernambuco (PE) (except Atlantic islands)
-Zone America/Recife	-2:19:36 -	LMT	1914
-			-3:00	Brazil	BR%sT	1990 Sep 17
-			-3:00	-	BRT	1999 Sep 30
-			-3:00	Brazil	BR%sT	2000 Oct 15
-			-3:00	-	BRT	2001 Sep 13
-			-3:00	Brazil	BR%sT	2002 Oct  1
-			-3:00	-	BRT
-#
-# Tocantins (TO)
-Zone America/Araguaina	-3:12:48 -	LMT	1914
-			-3:00	Brazil	BR%sT	1990 Sep 17
-			-3:00	-	BRT	1995 Sep 14
-			-3:00	Brazil	BR%sT	2003 Sep 24
-			-3:00	-	BRT
-#
-# Alagoas (AL), Sergipe (SE)
-Zone America/Maceio	-2:22:52 -	LMT	1914
-			-3:00	Brazil	BR%sT	1990 Sep 17
-			-3:00	-	BRT	1995 Oct 13
-			-3:00	Brazil	BR%sT	1996 Sep  4
-			-3:00	-	BRT	1999 Sep 30
-			-3:00	Brazil	BR%sT	2000 Oct 22
-			-3:00	-	BRT	2001 Sep 13
-			-3:00	Brazil	BR%sT	2002 Oct  1
-			-3:00	-	BRT
-#
-# Bahia (BA)
-# There are too many Salvadors elsewhere, so use America/Bahia instead
-# of America/Salvador.
-Zone America/Bahia	-2:34:04 -	LMT	1914
-			-3:00	Brazil	BR%sT	2003 Sep 24
-			-3:00	-	BRT
-#
-# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
-# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
-# Santa Catarina (SC), Rio Grande do Sul (RS)
-Zone America/Sao_Paulo	-3:06:28 -	LMT	1914
-			-3:00	Brazil	BR%sT	1963 Oct 23 00:00
-			-3:00	1:00	BRST	1964
-			-3:00	Brazil	BR%sT
-#
-# Mato Grosso do Sul (MS)
-Zone America/Campo_Grande -3:38:28 -	LMT	1914
-			-4:00	Brazil	AM%sT
-#
-# Mato Grosso (MT)
-Zone America/Cuiaba	-3:44:20 -	LMT	1914
-			-4:00	Brazil	AM%sT	2003 Sep 24
-			-4:00	-	AMT	2004 Oct  1
-			-4:00	Brazil	AM%sT
-#
-# west Para (PA), Rondonia (RO)
-# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
-Zone America/Porto_Velho -4:15:36 -	LMT	1914
-			-4:00	Brazil	AM%sT	1988 Sep 12
-			-4:00	-	AMT
-#
-# Roraima (RR)
-Zone America/Boa_Vista	-4:02:40 -	LMT	1914
-			-4:00	Brazil	AM%sT	1988 Sep 12
-			-4:00	-	AMT	1999 Sep 30
-			-4:00	Brazil	AM%sT	2000 Oct 15
-			-4:00	-	AMT
-#
-# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
-# The great circle line from Tabatinga to Porto Acre divides
-# east from west Amazonas.
-Zone America/Manaus	-4:00:04 -	LMT	1914
-			-4:00	Brazil	AM%sT	1988 Sep 12
-			-4:00	-	AMT	1993 Sep 28
-			-4:00	Brazil	AM%sT	1994 Sep 22
-			-4:00	-	AMT
-#
-# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
-#	Eirunepe, Envira, Ipixuna
-Zone America/Eirunepe	-4:39:28 -	LMT	1914
-			-5:00	Brazil	AC%sT	1988 Sep 12
-			-5:00	-	ACT	1993 Sep 28
-			-5:00	Brazil	AC%sT	1994 Sep 22
-			-5:00	-	ACT
-#
-# Acre (AC)
-Zone America/Rio_Branco	-4:31:12 -	LMT	1914
-			-5:00	Brazil	AC%sT	1988 Sep 12
-			-5:00	-	ACT
-
-
-# Chile
-
-# From Eduardo Krell (1995-10-19):
-# The law says to switch to DST at midnight [24:00] on the second SATURDAY
-# of October....  The law is the same for March and October.
-# (1998-09-29):
-# Because of the drought this year, the government decided to go into
-# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
-# (unless there's another dry season next year, I guess).
-
-# From Julio I. Pacheco Troncoso (1999-03-18):
-# Because of the same drought, the government decided to end DST later,
-# on April 3, (one-time change).
-
-# From Oscar van Vlijmen (2006-10-08):
-# http://www.horaoficial.cl/cambio.htm
-
-# From Jesper Norgaard Welen (2006-10-08):
-# I think that there are some obvious mistakes in the suggested link
-# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
-# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
-# (they should have been 1990-09-15 and 1990-09-16 respectively), but
-# anyhow it clears up some doubts too.
-
-# From Paul Eggert (2006-12-27):
-# The following data for Chile and America/Santiago are from
-#  (2006-09-20), transcribed by
-# Jesper Norgaard Welen.  The data for Pacific/Easter are from Shanks
-# & Pottenger, except with DST transitions after 1932 cloned from
-# America/Santiago.  The pre-1980 Pacific/Easter data are dubious,
-# but we have no other source.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
-Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
-Rule	Chile	1942	only	-	Jun	 1	4:00u	0	-
-Rule	Chile	1942	only	-	Aug	 1	5:00u	1:00	S
-Rule	Chile	1946	only	-	Jul	15	4:00u	1:00	S
-Rule	Chile	1946	only	-	Sep	 1	3:00u	0:00	-
-Rule	Chile	1947	only	-	Apr	 1	4:00u	0	-
-Rule	Chile	1968	only	-	Nov	 3	4:00u	1:00	S
-Rule	Chile	1969	only	-	Mar	30	3:00u	0	-
-Rule	Chile	1969	only	-	Nov	23	4:00u	1:00	S
-Rule	Chile	1970	only	-	Mar	29	3:00u	0	-
-Rule	Chile	1971	only	-	Mar	14	3:00u	0	-
-Rule	Chile	1970	1972	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	Chile	1972	1986	-	Mar	Sun>=9	3:00u	0	-
-Rule	Chile	1973	only	-	Sep	30	4:00u	1:00	S
-Rule	Chile	1974	1987	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	Chile	1987	only	-	Apr	12	3:00u	0	-
-Rule	Chile	1988	1989	-	Mar	Sun>=9	3:00u	0	-
-Rule	Chile	1988	only	-	Oct	Sun>=1	4:00u	1:00	S
-Rule	Chile	1989	only	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	Chile	1990	only	-	Mar	18	3:00u	0	-
-Rule	Chile	1990	only	-	Sep	16	4:00u	1:00	S
-Rule	Chile	1991	1996	-	Mar	Sun>=9	3:00u	0	-
-Rule	Chile	1991	1997	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	Chile	1997	only	-	Mar	30	3:00u	0	-
-Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
-Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
-Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
-Rule	Chile	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	Chile	2000	max	-	Mar	Sun>=9	3:00u	0	-
-# IATA SSIM anomalies: (1992-02) says 1992-03-14;
-# (1996-09) says 1998-03-08.  Ignore these.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Santiago	-4:42:46 -	LMT	1890
-			-4:42:46 -	SMT	1910 	    # Santiago Mean Time
-			-5:00	-	CLT	1916 Jul  1 # Chile Time
-			-4:42:46 -	SMT	1918 Sep  1 # Santiago Mean Time
-			-4:00	-	CLT	1919 Jul  1 # Chile Time
-			-4:42:46 -	SMT	1927 Sep  1 # Santiago Mean Time
-			-5:00	Chile	CL%sT	1947 May 22 # Chile Time
-			-4:00	Chile	CL%sT
-Zone Pacific/Easter	-7:17:44 -	LMT	1890
-			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
-			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter I Time
-			-6:00	Chile	EAS%sT
-#
-# Sala y Gomez Island is like Pacific/Easter.
-# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
-# San Felix, and Antarctic bases, are like America/Santiago.
-
-# Colombia
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	CO	1992	only	-	May	 3	0:00	1:00	S
-Rule	CO	1993	only	-	Apr	 4	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Bogota	-4:56:20 -	LMT	1884 Mar 13
-			-4:56:20 -	BMT	1914 Nov 23 # Bogota Mean Time
-			-5:00	CO	CO%sT	# Colombia Time
-# Malpelo, Providencia, San Andres
-# no information; probably like America/Bogota
-
-# Curacao
-#
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger say that The Bottom and Philipsburg have been at
-# -4:00 since standard time was introduced on 1912-03-02; and that
-# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
-# 1912-02-02 to 1965-01-01.  The former is dubious, since S&P also say
-# Saba Island has been like Curacao.
-# This all predates our 1970 cutoff, though.
-#
-# By July 2007 Curacao and St Maarten are planned to become
-# associated states within the Netherlands, much like Aruba;
-# Bonaire, Saba and St Eustatius would become directly part of the
-# Netherlands as Kingdom Islands.  This won't affect their time zones
-# though, as far as we know.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Curacao	-4:35:44 -	LMT	1912 Feb 12	# Willemstad
-			-4:30	-	ANT	1965 # Netherlands Antilles Time
-			-4:00	-	AST
-
-# Ecuador
-#
-# From Paul Eggert (2007-03-04):
-# Apparently Ecuador had a failed experiment with DST in 1992.
-#  (2007-02-27) and
-#  (2006-11-06) both
-# talk about "hora Sixto".  Leave this alone for now, as we have no data.
-#
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Guayaquil	-5:19:20 -	LMT	1890
-			-5:14:00 -	QMT	1931 # Quito Mean Time
-			-5:00	-	ECT	     # Ecuador Time
-Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
-			-5:00	-	ECT	1986
-			-6:00	-	GALT	     # Galapagos Time
-
-# Falklands
-
-# From Paul Eggert (2006-03-22):
-# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
-# the IATA gives 1996-09-08.  Go with Shanks & Pottenger.
-
-# From Falkland Islands Government Office, London (2001-01-22)
-# via Jesper Norgaard:
-# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
-# April 2001 and advance one hour to summer time at 2 am on Sunday 2
-# September.  It is anticipated that the clocks will revert back at 2
-# am on Sunday 21 April 2002 and advance to summer time at 2 am on
-# Sunday 1 September.
-
-# From Rives McDow (2001-02-13):
-#
-# I have communicated several times with people there, and the last
-# time I had communications that was helpful was in 1998.  Here is
-# what was said then:
-#
-# "The general rule was that Stanley used daylight saving and the Camp
-# did not. However for various reasons many people in the Camp have
-# started to use daylight saving (known locally as 'Stanley Time')
-# There is no rule as to who uses daylight saving - it is a matter of
-# personal choice and so it is impossible to draw a map showing who
-# uses it and who does not. Any list would be out of date as soon as
-# it was produced. This year daylight saving ended on April 18/19th
-# and started again on September 12/13th.  I do not know what the rule
-# is, but can find out if you like.  We do not change at the same time
-# as UK or Chile."
-#
-# I did have in my notes that the rule was "Second Saturday in Sep at
-# 0:00 until third Saturday in Apr at 0:00".  I think that this does
-# not agree in some cases with Shanks; is this true?
-#
-# Also, there is no mention in the list that some areas in the
-# Falklands do not use DST.  I have found in my communications there
-# that these areas are on the western half of East Falkland and all of
-# West Falkland.  Stanley is the only place that consistently observes
-# DST.  Again, as in other places in the world, the farmers don't like
-# it.  West Falkland is almost entirely sheep farmers.
-#
-# I know one lady there that keeps a list of which farm keeps DST and
-# which doesn't each year.  She runs a shop in Stanley, and says that
-# the list changes each year.  She uses it to communicate to her
-# customers, catching them when they are home for lunch or dinner.
-
-# From Paul Eggert (2001-03-05):
-# For now, we'll just record the time in Stanley, since we have no
-# better info.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
-Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
-Rule	Falk	1939	only	-	Oct	1	0:00	1:00	S
-Rule	Falk	1940	1942	-	Sep	lastSun	0:00	1:00	S
-Rule	Falk	1943	only	-	Jan	1	0:00	0	-
-Rule	Falk	1983	only	-	Sep	lastSun	0:00	1:00	S
-Rule	Falk	1984	1985	-	Apr	lastSun	0:00	0	-
-Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
-Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
-Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
-Rule	Falk	2001	max	-	Apr	Sun>=15	2:00	0	-
-Rule	Falk	2001	max	-	Sep	Sun>=1	2:00	1:00	S
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
-			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
-			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
-			-3:00	Falk	FK%sT	1985 Sep 15
-			-4:00	Falk	FK%sT
-
-# French Guiana
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Cayenne	-3:29:20 -	LMT	1911 Jul
-			-4:00	-	GFT	1967 Oct # French Guiana Time
-			-3:00	-	GFT
-
-# Guyana
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
-			-3:45	-	GBGT	1966 May 26 # Br Guiana Time
-			-3:45	-	GYT	1975 Jul 31 # Guyana Time
-			-3:00	-	GYT	1991
-# IATA SSIM (1996-06) says -4:00.  Assume a 1991 switch.
-			-4:00	-	GYT
-
-# Paraguay
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
-# and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
-# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Para	1975	1988	-	Oct	 1	0:00	1:00	S
-Rule	Para	1975	1978	-	Mar	 1	0:00	0	-
-Rule	Para	1979	1991	-	Apr	 1	0:00	0	-
-Rule	Para	1989	only	-	Oct	22	0:00	1:00	S
-Rule	Para	1990	only	-	Oct	 1	0:00	1:00	S
-Rule	Para	1991	only	-	Oct	 6	0:00	1:00	S
-Rule	Para	1992	only	-	Mar	 1	0:00	0	-
-Rule	Para	1992	only	-	Oct	 5	0:00	1:00	S
-Rule	Para	1993	only	-	Mar	31	0:00	0	-
-Rule	Para	1993	1995	-	Oct	 1	0:00	1:00	S
-Rule	Para	1994	1995	-	Feb	lastSun	0:00	0	-
-Rule	Para	1996	only	-	Mar	 1	0:00	0	-
-# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
-# From Steffen Thorsen (2000-10-02):
-# I have three independent reports that Paraguay changed to DST this Sunday
-# (10-01).
-#
-# Translated by Gwillim Law (2001-02-27) from
-# 
-# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
-# :
-# Starting at 0:00 today, the clock will be set forward 60 minutes, in
-# fulfillment of Decree No. 7,273 of the Executive Power....  The time change
-# system has been operating for several years.  Formerly there was a separate
-# decree each year; the new law has the same effect, but permanently.  Every
-# year, the time will change on the first Sunday of October; likewise, the
-# clock will be set back on the first Sunday of March.
-#
-Rule	Para	1996	2001	-	Oct	Sun>=1	0:00	1:00	S
-# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
-Rule	Para	1997	only	-	Feb	lastSun	0:00	0	-
-# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
-# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
-Rule	Para	1998	2001	-	Mar	Sun>=1	0:00	0	-
-# From Rives McDow (2002-02-28):
-# A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the
-# dst method to be from the first Sunday in September to the first Sunday in
-# April.
-Rule	Para	2002	2004	-	Apr	Sun>=1	0:00	0	-
-Rule	Para	2002	2003	-	Sep	Sun>=1	0:00	1:00	S
-#
-# From Jesper Norgaard Welen (2005-01-02):
-# There are several sources that claim that Paraguay made
-# a timezone rule change in autumn 2004.
-# From Steffen Thorsen (2005-01-05):
-# Decree 1,867 (2004-03-05)
-# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
-# 
-Rule	Para	2004	max	-	Oct	Sun>=15	0:00	1:00	S
-Rule	Para	2005	max	-	Mar	Sun>=8	0:00	0	-
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Asuncion	-3:50:40 -	LMT	1890
-			-3:50:40 -	AMT	1931 Oct 10 # Asuncion Mean Time
-			-4:00	-	PYT	1972 Oct # Paraguay Time
-			-3:00	-	PYT	1974 Apr
-			-4:00	Para	PY%sT
-
-# Peru
-#
-# 
-# From Evelyn C. Leeper via Mark Brader (2003-10-26):
-# When we were in Peru in 1985-1986, they apparently switched over
-# sometime between December 29 and January 3 while we were on the Amazon.
-#
-# From Paul Eggert (2006-03-22):
-# Shanks & Pottenger don't have this transition.  Assume 1986 was like 1987.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Peru	1938	only	-	Jan	 1	0:00	1:00	S
-Rule	Peru	1938	only	-	Apr	 1	0:00	0	-
-Rule	Peru	1938	1939	-	Sep	lastSun	0:00	1:00	S
-Rule	Peru	1939	1940	-	Mar	Sun>=24	0:00	0	-
-Rule	Peru	1986	1987	-	Jan	 1	0:00	1:00	S
-Rule	Peru	1986	1987	-	Apr	 1	0:00	0	-
-Rule	Peru	1990	only	-	Jan	 1	0:00	1:00	S
-Rule	Peru	1990	only	-	Apr	 1	0:00	0	-
-# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
-Rule	Peru	1994	only	-	Jan	 1	0:00	1:00	S
-Rule	Peru	1994	only	-	Apr	 1	0:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Lima	-5:08:12 -	LMT	1890
-			-5:08:36 -	LMT	1908 Jul 28 # Lima Mean Time?
-			-5:00	Peru	PE%sT	# Peru Time
-
-# South Georgia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/South_Georgia -2:26:08 -	LMT	1890		# Grytviken
-			-2:00	-	GST	# South Georgia Time
-
-# South Sandwich Is
-# uninhabited; scientific personnel have wintered
-
-# Suriname
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Paramaribo	-3:40:40 -	LMT	1911
-			-3:40:52 -	PMT	1935     # Paramaribo Mean Time
-			-3:40:36 -	PMT	1945 Oct # The capital moved?
-			-3:30	-	NEGT	1975 Nov 20 # Dutch Guiana Time
-			-3:30	-	SRT	1984 Oct # Suriname Time
-			-3:00	-	SRT
-
-# Trinidad and Tobago
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
-			-4:00	-	AST
-
-# Uruguay
-# From Paul Eggert (1993-11-18):
-# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
-# From Shanks & Pottenger:
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
-Rule	Uruguay	1923	only	-	Oct	 2	 0:00	0:30	HS
-Rule	Uruguay	1924	1926	-	Apr	 1	 0:00	0	-
-Rule	Uruguay	1924	1925	-	Oct	 1	 0:00	0:30	HS
-Rule	Uruguay	1933	1935	-	Oct	lastSun	 0:00	0:30	HS
-# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
-Rule	Uruguay	1934	1936	-	Mar	Sat>=25	23:30s	0	-
-Rule	Uruguay	1936	only	-	Nov	 1	 0:00	0:30	HS
-Rule	Uruguay	1937	1941	-	Mar	lastSun	 0:00	0	-
-# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
-Rule	Uruguay	1937	1940	-	Oct	lastSun	 0:00	0:30	HS
-# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
-# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.
-Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	HS
-Rule	Uruguay	1942	only	-	Jan	 1	 0:00	0	-
-Rule	Uruguay	1942	only	-	Dec	14	 0:00	1:00	S
-Rule	Uruguay	1943	only	-	Mar	14	 0:00	0	-
-Rule	Uruguay	1959	only	-	May	24	 0:00	1:00	S
-Rule	Uruguay	1959	only	-	Nov	15	 0:00	0	-
-Rule	Uruguay	1960	only	-	Jan	17	 0:00	1:00	S
-Rule	Uruguay	1960	only	-	Mar	 6	 0:00	0	-
-Rule	Uruguay	1965	1967	-	Apr	Sun>=1	 0:00	1:00	S
-Rule	Uruguay	1965	only	-	Sep	26	 0:00	0	-
-Rule	Uruguay	1966	1967	-	Oct	31	 0:00	0	-
-Rule	Uruguay	1968	1970	-	May	27	 0:00	0:30	HS
-Rule	Uruguay	1968	1970	-	Dec	 2	 0:00	0	-
-Rule	Uruguay	1972	only	-	Apr	24	 0:00	1:00	S
-Rule	Uruguay	1972	only	-	Aug	15	 0:00	0	-
-Rule	Uruguay	1974	only	-	Mar	10	 0:00	0:30	HS
-Rule	Uruguay	1974	only	-	Dec	22	 0:00	1:00	S
-Rule	Uruguay	1976	only	-	Oct	 1	 0:00	0	-
-Rule	Uruguay	1977	only	-	Dec	 4	 0:00	1:00	S
-Rule	Uruguay	1978	only	-	Apr	 1	 0:00	0	-
-Rule	Uruguay	1979	only	-	Oct	 1	 0:00	1:00	S
-Rule	Uruguay	1980	only	-	May	 1	 0:00	0	-
-Rule	Uruguay	1987	only	-	Dec	14	 0:00	1:00	S
-Rule	Uruguay	1988	only	-	Mar	14	 0:00	0	-
-Rule	Uruguay	1988	only	-	Dec	11	 0:00	1:00	S
-Rule	Uruguay	1989	only	-	Mar	12	 0:00	0	-
-Rule	Uruguay	1989	only	-	Oct	29	 0:00	1:00	S
-# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
-# and that 1992/3's DST was from 10-25 to 03-01.  Go with IATA.
-Rule	Uruguay	1990	1992	-	Mar	Sun>=1	 0:00	0	-
-Rule	Uruguay	1990	1991	-	Oct	Sun>=21	 0:00	1:00	S
-Rule	Uruguay	1992	only	-	Oct	18	 0:00	1:00	S
-Rule	Uruguay	1993	only	-	Feb	28	 0:00	0	-
-# From Eduardo Cota (2004-09-20):
-# The uruguayan government has decreed a change in the local time....
-# http://www.presidencia.gub.uy/decretos/2004091502.htm
-Rule	Uruguay	2004	only	-	Sep	19	 0:00	1:00	S
-# From Steffen Thorsen (2005-03-11):
-# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
-# save energy ... it was postponed two weeks....
-# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
-Rule	Uruguay	2005	only	-	Mar	27	 2:00	0	-
-# From Eduardo Cota (2005-09-27):
-# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
-# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at
-# 02:00 local time, official time in Uruguay will be at GMT -2.
-Rule	Uruguay	2005	only	-	Oct	 9	 2:00	1:00	S
-Rule	Uruguay	2006	only	-	Mar	12	 2:00	0	-
-# From Jesper Norgaard Welen (2006-09-06):
-# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
-Rule	Uruguay	2006	max	-	Oct	Sun>=1	 2:00	1:00	S
-Rule	Uruguay	2007	max	-	Mar	Sun>=8	 2:00	0	-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Montevideo	-3:44:44 -	LMT	1898 Jun 28
-			-3:44:44 -	MMT	1920 May  1	# Montevideo MT
-			-3:30	Uruguay	UY%sT	1942 Dec 14	# Uruguay Time
-			-3:00	Uruguay	UY%sT
-
-# Venezuela
-#
-# From Kiraz Janicke (2007-09-25), in
-# http://www.venezuelanalysis.com/analysis/2645:
-# The proposal ... involves turning the clock back half an hour from
-# +4.00 Greenwich Mean Time (GMT), to +4.30GMT, the time zone
-# Venezuela had until December 31, 1964, when the current time zone
-# was adopted. The change was due to take place on September 17 and
-# then on September 24, but has since been postponed until December
-# 31, to allow for compliance with international organizations, such
-# as the International Office of Weights and Measures.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Caracas	-4:27:44 -	LMT	1890
-			-4:27:40 -	CMT	1912 Feb 12 # Caracas Mean Time?
-			-4:30	-	VET	1965	     # Venezuela Time
-			-4:00	-	VET	2008
-			-4:30	-	VET
diff --git a/bin/glibc-2.7/timezone/systemv b/bin/glibc-2.7/timezone/systemv
deleted file mode 100644
index 6cf9645d..00000000
--- a/bin/glibc-2.7/timezone/systemv
+++ /dev/null
@@ -1,36 +0,0 @@
-# @(#)systemv	8.1
-
-# Old rules, should the need arise.
-# No attempt is made to handle Newfoundland, since it cannot be expressed
-# using the System V "TZ" scheme (half-hour offset), or anything outside
-# North America (no support for non-standard DST start/end dates), nor
-# the changes in the DST rules in the US after 1976 (which occurred after
-# the old rules were written).
-#
-# If you need the old rules, uncomment ## lines.
-# Compile this *without* leap second correction for true conformance.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	SystemV	min	1973	-	Apr	lastSun	2:00	1:00	D
-Rule	SystemV	min	1973	-	Oct	lastSun	2:00	0	S
-Rule	SystemV	1974	only	-	Jan	6	2:00	1:00	D
-Rule	SystemV	1974	only	-	Nov	lastSun	2:00	0	S
-Rule	SystemV	1975	only	-	Feb	23	2:00	1:00	D
-Rule	SystemV	1975	only	-	Oct	lastSun	2:00	0	S
-Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
-Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-## Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
-## Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
-## Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
-## Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
-## Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
-## Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
-## Zone	SystemV/AST4	-4:00	-		AST
-## Zone	SystemV/EST5	-5:00	-		EST
-## Zone	SystemV/CST6	-6:00	-		CST
-## Zone	SystemV/MST7	-7:00	-		MST
-## Zone	SystemV/PST8	-8:00	-		PST
-## Zone	SystemV/YST9	-9:00	-		YST
-## Zone	SystemV/HST10	-10:00	-		HST
diff --git a/bin/glibc-2.7/timezone/test-tz.c b/bin/glibc-2.7/timezone/test-tz.c
deleted file mode 100644
index 642b45a0..00000000
--- a/bin/glibc-2.7/timezone/test-tz.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include 
-#include 
-#include 
-#include 
-
-struct {
-  const char *	env;
-  time_t	expected;
-} tests[] = {
-  {"MST",	832935315},
-  {"",		832910115},
-  {":UTC",	832910115},
-  {"UTC",	832910115},
-  {"UTC0",	832910115}
-};
-
-
-int
-main (int argc, char ** argv)
-{
-  int errors = 0;
-  struct tm tm;
-  time_t t;
-  unsigned int i;
-
-  memset (&tm, 0, sizeof (tm));
-  tm.tm_isdst = 0;
-  tm.tm_year  = 96;	/* years since 1900 */
-  tm.tm_mon   = 4;
-  tm.tm_mday  = 24;
-  tm.tm_hour  =  3;
-  tm.tm_min   = 55;
-  tm.tm_sec   = 15;
-
-  for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
-    {
-      setenv ("TZ", tests[i].env, 1);
-      t = mktime (&tm);
-      if (t != tests[i].expected)
-	{
-	  printf ("%s: flunked test %u (expected %lu, got %lu)\n",
-		  argv[0], i, (long) tests[i].expected, (long) t);
-	  ++errors;
-	}
-    }
-  if (errors == 0)
-    {
-      puts ("No errors.");
-      return EXIT_SUCCESS;
-    }
-  else
-    {
-      printf ("%d errors.\n", errors);
-      return EXIT_FAILURE;
-    }
-}
diff --git a/bin/glibc-2.7/timezone/tst-timezone.c b/bin/glibc-2.7/timezone/tst-timezone.c
deleted file mode 100644
index 00f899b8..00000000
--- a/bin/glibc-2.7/timezone/tst-timezone.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/* Copyright (C) 1998, 1999, 2000, 2005, 2007 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Andreas Jaeger , 1998.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include 
-#include 
-#include 
-#include 
-#include 
-
-int failed = 0;
-
-struct test_times
-{
-  const char *name;
-  int daylight;
-  int timezone;
-  const char *tzname[2];
-};
-
-static const struct test_times tests[] =
-{
-  { "Europe/Amsterdam", 1, -3600, { "CET", "CEST" }},
-  { "Europe/Berlin", 1, -3600, { "CET", "CEST" }},
-  { "Europe/London", 1, 0, { "GMT", "BST" }},
-  { "Universal", 0, 0, {"UTC", "UTC" }},
-  { "Australia/Melbourne", 1, -36000, { "EST", "EST" }},
-  { "America/Sao_Paulo", 1, 10800, {"BRT", "BRST" }},
-  { "America/Chicago", 1, 21600, {"CST", "CDT" }},
-  { "America/Indiana/Indianapolis", 1, 18000, {"EST", "EDT" }},
-  { "America/Los_Angeles", 1, 28800, {"PST", "PDT" }},
-  { "Pacific/Auckland", 1, -43200, { "NZST", "NZDT" }},
-  { NULL, 0, 0 }
-};
-
-/* This string will be used for `putenv' calls.  */
-char envstring[100];
-
-static void
-print_tzvars (void)
-{
-  printf ("tzname[0]: %s\n", tzname[0]);
-  printf ("tzname[1]: %s\n", tzname[1]);
-  printf ("daylight: %d\n", daylight);
-  printf ("timezone: %ld\n", timezone);
-}
-
-
-static void
-check_tzvars (const char *name, int dayl, int timez, const char *const tznam[])
-{
-  int i;
-
-  if (daylight != dayl)
-    {
-      printf ("*** Timezone: %s, daylight is: %d but should be: %d\n",
-	      name, daylight, dayl);
-      ++failed;
-    }
-  if (timezone != timez)
-    {
-      printf ("*** Timezone: %s, timezone is: %ld but should be: %d\n",
-	      name, timezone, timez);
-      ++failed;
-    }
-  for (i = 0; i <= 1; ++i)
-    if (strcmp (tzname[i], tznam[i]) != 0)
-      {
-	printf ("*** Timezone: %s, tzname[%d] is: %s but should be: %s\n",
-		name, i, tzname[i], tznam[i]);
-	++failed;
-      }
-}
-
-
-int
-main (int argc, char ** argv)
-{
-  time_t t;
-  const struct test_times *pt;
-  char buf[BUFSIZ];
-
-  /* This should be: Fri May 15 01:02:16 1998 (UTC).  */
-  t = 895194136;
-  printf ("We use this date: %s\n", asctime (gmtime (&t)));
-
-  for (pt = tests; pt->name != NULL; ++pt)
-    {
-      /* Start with a known state */
-      printf ("Checking timezone %s\n", pt->name);
-      sprintf (buf, "TZ=%s", pt->name);
-      if (putenv (buf))
-	{
-	  puts ("putenv failed.");
-	  failed = 1;
-	}
-      tzset ();
-      print_tzvars ();
-      check_tzvars (pt->name, pt->daylight, pt->timezone, pt->tzname);
-
-      /* calling localtime shouldn't make a difference */
-      localtime (&t);
-      print_tzvars ();
-      check_tzvars (pt->name, pt->daylight, pt->timezone, pt->tzname);
-    }
-
-  /* From a post of Scott Harrington  to the timezone
-     mailing list.  */
-  {
-    struct tm tmBuf = {0, 0, 0, 10, 3, 98, 0, 0, -1};
-    char buf[200];
-    strcpy (envstring, "TZ=Europe/London");
-    putenv (envstring);
-    t = mktime (&tmBuf);
-    snprintf (buf, sizeof (buf), "TZ=%s %ld %d %d %d %d %d %d %d %d %d",
-	      getenv ("TZ"), t,
-	      tmBuf.tm_sec, tmBuf.tm_min, tmBuf.tm_hour,
-	      tmBuf.tm_mday, tmBuf.tm_mon, tmBuf.tm_year,
-	      tmBuf.tm_wday, tmBuf.tm_yday, tmBuf.tm_isdst);
-    fputs (buf, stdout);
-    puts (" should be");
-    puts ("TZ=Europe/London 892162800 0 0 0 10 3 98 5 99 1");
-    if (strcmp (buf, "TZ=Europe/London 892162800 0 0 0 10 3 98 5 99 1") != 0)
-      {
-	failed = 1;
-	fputs (" FAILED ***", stdout);
-      }
-  }
-
-  printf("\n");
-
-  {
-    struct tm tmBuf = {0, 0, 0, 10, 3, 98, 0, 0, -1};
-    char buf[200];
-    strcpy (envstring, "TZ=GMT");
-    /* No putenv call needed!  */
-    t = mktime (&tmBuf);
-    snprintf (buf, sizeof (buf), "TZ=%s %ld %d %d %d %d %d %d %d %d %d",
-	      getenv ("TZ"), t,
-	      tmBuf.tm_sec, tmBuf.tm_min, tmBuf.tm_hour,
-	      tmBuf.tm_mday, tmBuf.tm_mon, tmBuf.tm_year,
-	      tmBuf.tm_wday, tmBuf.tm_yday, tmBuf.tm_isdst);
-    fputs (buf, stdout);
-    puts (" should be");
-    puts ("TZ=GMT 892166400 0 0 0 10 3 98 5 99 0");
-    if (strcmp (buf, "TZ=GMT 892166400 0 0 0 10 3 98 5 99 0") != 0)
-      {
-	failed = 1;
-	fputs (" FAILED ***", stdout);
-      }
-  }
-
-  return failed ? EXIT_FAILURE : EXIT_SUCCESS;
-}
diff --git a/bin/glibc-2.7/timezone/tzfile.h b/bin/glibc-2.7/timezone/tzfile.h
deleted file mode 100644
index 3a9eee30..00000000
--- a/bin/glibc-2.7/timezone/tzfile.h
+++ /dev/null
@@ -1,180 +0,0 @@
-#ifndef TZFILE_H
-
-#define TZFILE_H
-
-/*
-** This file is in the public domain, so clarified as of
-** 1996-06-05 by Arthur David Olson.
-*/
-
-/*
-** This header is for use ONLY with the time conversion code.
-** There is no guarantee that it will remain unchanged,
-** or that it will remain at all.
-** Do NOT copy it to any system include directory.
-** Thank you!
-*/
-
-/*
-** ID
-*/
-
-#ifndef lint
-#ifndef NOID
-static char	tzfilehid[] = "@(#)tzfile.h	8.1";
-#endif /* !defined NOID */
-#endif /* !defined lint */
-
-/*
-** Information about time zone files.
-*/
-
-#ifndef TZDIR
-#define TZDIR	"/usr/local/etc/zoneinfo" /* Time zone object file directory */
-#endif /* !defined TZDIR */
-
-#ifndef TZDEFAULT
-#define TZDEFAULT	"localtime"
-#endif /* !defined TZDEFAULT */
-
-#ifndef TZDEFRULES
-#define TZDEFRULES	"posixrules"
-#endif /* !defined TZDEFRULES */
-
-/*
-** Each file begins with. . .
-*/
-
-#define	TZ_MAGIC	"TZif"
-
-struct tzhead {
-	char	tzh_magic[4];		/* TZ_MAGIC */
-	char	tzh_version[1];		/* '\0' or '2' as of 2005 */
-	char	tzh_reserved[15];	/* reserved--must be zero */
-	char	tzh_ttisgmtcnt[4];	/* coded number of trans. time flags */
-	char	tzh_ttisstdcnt[4];	/* coded number of trans. time flags */
-	char	tzh_leapcnt[4];		/* coded number of leap seconds */
-	char	tzh_timecnt[4];		/* coded number of transition times */
-	char	tzh_typecnt[4];		/* coded number of local time types */
-	char	tzh_charcnt[4];		/* coded number of abbr. chars */
-};
-
-/*
-** . . .followed by. . .
-**
-**	tzh_timecnt (char [4])s		coded transition times a la time(2)
-**	tzh_timecnt (unsigned char)s	types of local time starting at above
-**	tzh_typecnt repetitions of
-**		one (char [4])		coded UTC offset in seconds
-**		one (unsigned char)	used to set tm_isdst
-**		one (unsigned char)	that's an abbreviation list index
-**	tzh_charcnt (char)s		'\0'-terminated zone abbreviations
-**	tzh_leapcnt repetitions of
-**		one (char [4])		coded leap second transition times
-**		one (char [4])		total correction after above
-**	tzh_ttisstdcnt (char)s		indexed by type; if TRUE, transition
-**					time is standard time, if FALSE,
-**					transition time is wall clock time
-**					if absent, transition times are
-**					assumed to be wall clock time
-**	tzh_ttisgmtcnt (char)s		indexed by type; if TRUE, transition
-**					time is UTC, if FALSE,
-**					transition time is local time
-**					if absent, transition times are
-**					assumed to be local time
-*/
-
-/*
-** If tzh_version is '2' or greater, the above is followed by a second instance
-** of tzhead and a second instance of the data in which each coded transition
-** time uses 8 rather than 4 chars,
-** then a POSIX-TZ-environment-variable-style string for use in handling
-** instants after the last transition time stored in the file
-** (with nothing between the newlines if there is no POSIX representation for
-** such instants).
-*/
-
-/*
-** In the current implementation, "tzset()" refuses to deal with files that
-** exceed any of the limits below.
-*/
-
-#ifndef TZ_MAX_TIMES
-#define TZ_MAX_TIMES	1200
-#endif /* !defined TZ_MAX_TIMES */
-
-#ifndef TZ_MAX_TYPES
-#ifndef NOSOLAR
-#define TZ_MAX_TYPES	256 /* Limited by what (unsigned char)'s can hold */
-#endif /* !defined NOSOLAR */
-#ifdef NOSOLAR
-/*
-** Must be at least 14 for Europe/Riga as of Jan 12 1995,
-** as noted by Earl Chew.
-*/
-#define TZ_MAX_TYPES	20	/* Maximum number of local time types */
-#endif /* !defined NOSOLAR */
-#endif /* !defined TZ_MAX_TYPES */
-
-#ifndef TZ_MAX_CHARS
-#define TZ_MAX_CHARS	50	/* Maximum number of abbreviation characters */
-				/* (limited by what unsigned chars can hold) */
-#endif /* !defined TZ_MAX_CHARS */
-
-#ifndef TZ_MAX_LEAPS
-#define TZ_MAX_LEAPS	50	/* Maximum number of leap second corrections */
-#endif /* !defined TZ_MAX_LEAPS */
-
-#define SECSPERMIN	60
-#define MINSPERHOUR	60
-#define HOURSPERDAY	24
-#define DAYSPERWEEK	7
-#define DAYSPERNYEAR	365
-#define DAYSPERLYEAR	366
-#define SECSPERHOUR	(SECSPERMIN * MINSPERHOUR)
-#define SECSPERDAY	((long) SECSPERHOUR * HOURSPERDAY)
-#define MONSPERYEAR	12
-
-#define TM_SUNDAY	0
-#define TM_MONDAY	1
-#define TM_TUESDAY	2
-#define TM_WEDNESDAY	3
-#define TM_THURSDAY	4
-#define TM_FRIDAY	5
-#define TM_SATURDAY	6
-
-#define TM_JANUARY	0
-#define TM_FEBRUARY	1
-#define TM_MARCH	2
-#define TM_APRIL	3
-#define TM_MAY		4
-#define TM_JUNE		5
-#define TM_JULY		6
-#define TM_AUGUST	7
-#define TM_SEPTEMBER	8
-#define TM_OCTOBER	9
-#define TM_NOVEMBER	10
-#define TM_DECEMBER	11
-
-#define TM_YEAR_BASE	1900
-
-#define EPOCH_YEAR	1970
-#define EPOCH_WDAY	TM_THURSDAY
-
-#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
-
-/*
-** Since everything in isleap is modulo 400 (or a factor of 400), we know that
-**	isleap(y) == isleap(y % 400)
-** and so
-**	isleap(a + b) == isleap((a + b) % 400)
-** or
-**	isleap(a + b) == isleap(a % 400 + b % 400)
-** This is true even if % means modulo rather than Fortran remainder
-** (which is allowed by C89 but not C99).
-** We use this to avoid addition overflow problems.
-*/
-
-#define isleap_sum(a, b)	isleap((a) % 400 + (b) % 400)
-
-#endif /* !defined TZFILE_H */
diff --git a/bin/glibc-2.7/timezone/tzselect.ksh b/bin/glibc-2.7/timezone/tzselect.ksh
deleted file mode 100644
index b99af827..00000000
--- a/bin/glibc-2.7/timezone/tzselect.ksh
+++ /dev/null
@@ -1,308 +0,0 @@
-#! @KSH@
-
-# '@(#)tzselect.ksh	8.1'
-
-# Ask the user about the time zone, and output the resulting TZ value to stdout.
-# Interact with the user via stderr and stdin.
-
-# Contributed by Paul Eggert.
-
-# Porting notes:
-#
-# This script requires several features of the Korn shell.
-# If your host lacks the Korn shell,
-# you can use either of the following free programs instead:
-#
-#	
-#	Bourne-Again shell (bash)
-#	
-#
-#	
-#	Public domain ksh
-#	
-#
-# This script also uses several features of modern awk programs.
-# If your host lacks awk, or has an old awk that does not conform to Posix.2,
-# you can use either of the following free programs instead:
-#
-#	
-#	GNU awk (gawk)
-#	
-#
-#	
-#	mawk
-#	
-
-
-# Specify default values for environment variables if they are unset.
-: ${AWK=awk}
-: ${TZDIR=@TZDIR@}
-
-# Check for awk Posix compliance.
-($AWK -v x=y 'BEGIN { exit 123 }') /dev/null 2>&1
-[ $? = 123 ] || {
-	echo >&2 "$0: Sorry, your \`$AWK' program is not Posix compatible."
-	exit 1
-}
-
-# Make sure the tables are readable.
-TZ_COUNTRY_TABLE=$TZDIR/iso3166.tab
-TZ_ZONE_TABLE=$TZDIR/zone.tab
-for f in $TZ_COUNTRY_TABLE $TZ_ZONE_TABLE
-do
-	<$f || {
-		echo >&2 "$0: time zone files are not set up correctly"
-		exit 1
-	}
-done
-
-newline='
-'
-IFS=$newline
-
-
-# Work around a bug in bash 1.14.7 and earlier, where $PS3 is sent to stdout.
-case $(echo 1 | (select x in x; do break; done) 2>/dev/null) in
-?*) PS3=
-esac
-
-
-# Begin the main loop.  We come back here if the user wants to retry.
-while
-
-	echo >&2 'Please identify a location' \
-		'so that time zone rules can be set correctly.'
-
-	continent=
-	country=
-	region=
-
-
-	# Ask the user for continent or ocean.
-
-	echo >&2 'Please select a continent or ocean.'
-
-	select continent in \
-	    Africa \
-	    Americas \
-	    Antarctica \
-	    'Arctic Ocean' \
-	    Asia \
-	    'Atlantic Ocean' \
-	    Australia \
-	    Europe \
-	    'Indian Ocean' \
-	    'Pacific Ocean' \
-	    'none - I want to specify the time zone using the Posix TZ format.'
-	do
-	    case $continent in
-	    '')
-		echo >&2 'Please enter a number in range.';;
-	    ?*)
-		case $continent in
-		Americas) continent=America;;
-		*' '*) continent=$(expr "$continent" : '\([^ ]*\)')
-		esac
-		break
-	    esac
-	done
-	case $continent in
-	'')
-		exit 1;;
-	none)
-		# Ask the user for a Posix TZ string.  Check that it conforms.
-		while
-			echo >&2 'Please enter the desired value' \
-				'of the TZ environment variable.'
-			echo >&2 'For example, GST-10 is a zone named GST' \
-				'that is 10 hours ahead (east) of UTC.'
-			read TZ
-			$AWK -v TZ="$TZ" 'BEGIN {
-				tzname = "[^-+,0-9][^-+,0-9][^-+,0-9]+"
-				time = "[0-2]?[0-9](:[0-5][0-9](:[0-5][0-9])?)?"
-				offset = "[-+]?" time
-				date = "(J?[0-9]+|M[0-9]+\.[0-9]+\.[0-9]+)"
-				datetime = "," date "(/" time ")?"
-				tzpattern = "^(:.*|" tzname offset "(" tzname \
-				  "(" offset ")?(" datetime datetime ")?)?)$"
-				if (TZ ~ tzpattern) exit 1
-				exit 0
-			}'
-		do
-			echo >&2 "\`$TZ' is not a conforming" \
-				'Posix time zone string.'
-		done
-		TZ_for_date=$TZ;;
-	*)
-		# Get list of names of countries in the continent or ocean.
-		countries=$($AWK -F'\t' \
-			-v continent="$continent" \
-			-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
-		'
-			/^#/ { next }
-			$3 ~ ("^" continent "/") {
-				if (!cc_seen[$1]++) cc_list[++ccs] = $1
-			}
-			END {
-				while (getline &2 'Please select a country.'
-			select country in $countries
-			do
-			    case $country in
-			    '') echo >&2 'Please enter a number in range.';;
-			    ?*) break
-			    esac
-			done
-
-			case $country in
-			'') exit 1
-			esac;;
-		*)
-			country=$countries
-		esac
-
-
-		# Get list of names of time zone rule regions in the country.
-		regions=$($AWK -F'\t' \
-			-v country="$country" \
-			-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
-		'
-			BEGIN {
-				cc = country
-				while (getline &2 'Please select one of the following' \
-				'time zone regions.'
-			select region in $regions
-			do
-				case $region in
-				'') echo >&2 'Please enter a number in range.';;
-				?*) break
-				esac
-			done
-			case $region in
-			'') exit 1
-			esac;;
-		*)
-			region=$regions
-		esac
-
-		# Determine TZ from country and region.
-		TZ=$($AWK -F'\t' \
-			-v country="$country" \
-			-v region="$region" \
-			-v TZ_COUNTRY_TABLE="$TZ_COUNTRY_TABLE" \
-		'
-			BEGIN {
-				cc = country
-				while (getline &2 "$0: time zone files are not set up correctly"
-			exit 1
-		}
-	esac
-
-
-	# Use the proposed TZ to output the current date relative to UTC.
-	# Loop until they agree in seconds.
-	# Give up after 8 unsuccessful tries.
-
-	extra_info=
-	for i in 1 2 3 4 5 6 7 8
-	do
-		TZdate=$(LANG=C TZ="$TZ_for_date" date)
-		UTdate=$(LANG=C TZ=UTC0 date)
-		TZsec=$(expr "$TZdate" : '.*:\([0-5][0-9]\)')
-		UTsec=$(expr "$UTdate" : '.*:\([0-5][0-9]\)')
-		case $TZsec in
-		$UTsec)
-			extra_info="
-Local time is now:	$TZdate.
-Universal Time is now:	$UTdate."
-			break
-		esac
-	done
-
-
-	# Output TZ info and ask the user to confirm.
-
-	echo >&2 ""
-	echo >&2 "The following information has been given:"
-	echo >&2 ""
-	case $country+$region in
-	?*+?*)	echo >&2 "	$country$newline	$region";;
-	?*+)	echo >&2 "	$country";;
-	+)	echo >&2 "	TZ='$TZ'"
-	esac
-	echo >&2 ""
-	echo >&2 "Therefore TZ='$TZ' will be used.$extra_info"
-	echo >&2 "Is the above information OK?"
-
-	ok=
-	select ok in Yes No
-	do
-	    case $ok in
-	    '') echo >&2 'Please enter 1 for Yes, or 2 for No.';;
-	    ?*) break
-	    esac
-	done
-	case $ok in
-	'') exit 1;;
-	Yes) break
-	esac
-do :
-done
-
-case $SHELL in
-*csh) file=.login line="setenv TZ '$TZ'";;
-*) file=.profile line="TZ='$TZ'; export TZ"
-esac
-
-echo >&2 "
-You can make this change permanent for yourself by appending the line
-	$line
-to the file '$file' in your home directory; then log out and log in again.
-
-Here is that TZ value again, this time on standard output so that you
-can use the $0 command in shell scripts:"
-
-echo "$TZ"
diff --git a/bin/glibc-2.7/timezone/yearistype b/bin/glibc-2.7/timezone/yearistype
deleted file mode 100755
index d3a24803..00000000
--- a/bin/glibc-2.7/timezone/yearistype
+++ /dev/null
@@ -1,37 +0,0 @@
-#! /bin/sh
-
-: '@(#)yearistype.sh	7.8'
-
-case $#-$1 in
-	2-|2-0*|2-*[!0-9]*)
-		echo "$0: wild year - $1" >&2
-		exit 1 ;;
-esac
-
-case $#-$2 in
-	2-even)
-		case $1 in
-			*[24680])			exit 0 ;;
-			*)				exit 1 ;;
-		esac ;;
-	2-nonpres|2-nonuspres)
-		case $1 in
-			*[02468][048]|*[13579][26])	exit 1 ;;
-			*)				exit 0 ;;
-		esac ;;
-	2-odd)
-		case $1 in
-			*[13579])			exit 0 ;;
-			*)				exit 1 ;;
-		esac ;;
-	2-uspres)
-		case $1 in
-			*[02468][048]|*[13579][26])	exit 0 ;;
-			*)				exit 1 ;;
-		esac ;;
-	2-*)
-		echo "$0: wild type - $2" >&2 ;;
-esac
-
-echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
-exit 1
diff --git a/bin/glibc-2.7/timezone/zdump.c b/bin/glibc-2.7/timezone/zdump.c
deleted file mode 100644
index 6bf540ae..00000000
--- a/bin/glibc-2.7/timezone/zdump.c
+++ /dev/null
@@ -1,668 +0,0 @@
-static char	elsieid[] = "@(#)zdump.c	8.4";
-
-/*
-** This code has been made independent of the rest of the time
-** conversion package to increase confidence in the verification it provides.
-** You can use this code to help in verifying other implementations.
-*/
-
-#include "stdio.h"	/* for stdout, stderr, perror */
-#include "string.h"	/* for strcpy */
-#include "sys/types.h"	/* for time_t */
-#include "time.h"	/* for struct tm */
-#include "stdlib.h"	/* for exit, malloc, atoi */
-#include "float.h"	/* for FLT_MAX and DBL_MAX */
-#include "ctype.h"	/* for isalpha et al. */
-#ifndef isascii
-#define isascii(x) 1
-#endif /* !defined isascii */
-
-#ifndef ZDUMP_LO_YEAR
-#define ZDUMP_LO_YEAR	(-500)
-#endif /* !defined ZDUMP_LO_YEAR */
-
-#ifndef ZDUMP_HI_YEAR
-#define ZDUMP_HI_YEAR	2500
-#endif /* !defined ZDUMP_HI_YEAR */
-
-#ifndef MAX_STRING_LENGTH
-#define MAX_STRING_LENGTH	1024
-#endif /* !defined MAX_STRING_LENGTH */
-
-#ifndef TRUE
-#define TRUE		1
-#endif /* !defined TRUE */
-
-#ifndef FALSE
-#define FALSE		0
-#endif /* !defined FALSE */
-
-#ifndef EXIT_SUCCESS
-#define EXIT_SUCCESS	0
-#endif /* !defined EXIT_SUCCESS */
-
-#ifndef EXIT_FAILURE
-#define EXIT_FAILURE	1
-#endif /* !defined EXIT_FAILURE */
-
-#ifndef SECSPERMIN
-#define SECSPERMIN	60
-#endif /* !defined SECSPERMIN */
-
-#ifndef MINSPERHOUR
-#define MINSPERHOUR	60
-#endif /* !defined MINSPERHOUR */
-
-#ifndef SECSPERHOUR
-#define SECSPERHOUR	(SECSPERMIN * MINSPERHOUR)
-#endif /* !defined SECSPERHOUR */
-
-#ifndef HOURSPERDAY
-#define HOURSPERDAY	24
-#endif /* !defined HOURSPERDAY */
-
-#ifndef EPOCH_YEAR
-#define EPOCH_YEAR	1970
-#endif /* !defined EPOCH_YEAR */
-
-#ifndef TM_YEAR_BASE
-#define TM_YEAR_BASE	1900
-#endif /* !defined TM_YEAR_BASE */
-
-#ifndef DAYSPERNYEAR
-#define DAYSPERNYEAR	365
-#endif /* !defined DAYSPERNYEAR */
-
-#ifndef isleap
-#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
-#endif /* !defined isleap */
-
-#ifndef isleap_sum
-/*
-** See tzfile.h for details on isleap_sum.
-*/
-#define isleap_sum(a, b)	isleap((a) % 400 + (b) % 400)
-#endif /* !defined isleap_sum */
-
-#define SECSPERDAY	((long) SECSPERHOUR * HOURSPERDAY)
-#define SECSPERNYEAR	(SECSPERDAY * DAYSPERNYEAR)
-#define SECSPERLYEAR	(SECSPERNYEAR + SECSPERDAY)
-
-#if HAVE_GETTEXT
-#include "locale.h"	/* for setlocale */
-#include "libintl.h"
-#endif /* HAVE_GETTEXT */
-
-#ifndef GNUC_or_lint
-#ifdef lint
-#define GNUC_or_lint
-#else /* !defined lint */
-#ifdef __GNUC__
-#define GNUC_or_lint
-#endif /* defined __GNUC__ */
-#endif /* !defined lint */
-#endif /* !defined GNUC_or_lint */
-
-#ifndef INITIALIZE
-#ifdef GNUC_or_lint
-#define INITIALIZE(x)	((x) = 0)
-#else /* !defined GNUC_or_lint */
-#define INITIALIZE(x)
-#endif /* !defined GNUC_or_lint */
-#endif /* !defined INITIALIZE */
-
-/*
-** For the benefit of GNU folk...
-** `_(MSGID)' uses the current locale's message library string for MSGID.
-** The default is to use gettext if available, and use MSGID otherwise.
-*/
-
-#ifndef _
-#if HAVE_GETTEXT
-#define _(msgid) gettext(msgid)
-#else /* !HAVE_GETTEXT */
-#define _(msgid) msgid
-#endif /* !HAVE_GETTEXT */
-#endif /* !defined _ */
-
-#ifndef TZ_DOMAIN
-#define TZ_DOMAIN "tz"
-#endif /* !defined TZ_DOMAIN */
-
-#ifndef P
-#define P(x)	x
-#endif /* !defined P */
-
-extern char **	environ;
-extern int	getopt P((int argc, char * const argv[],
-			const char * options));
-extern char *	optarg;
-extern int	optind;
-extern char *	tzname[2];
-
-static time_t	absolute_min_time;
-static time_t	absolute_max_time;
-static size_t	longest;
-static char *	progname;
-static int	warned;
-
-static char *	abbr P((struct tm * tmp));
-static void	abbrok P((const char * abbrp, const char * zone));
-static long	delta P((struct tm * newp, struct tm * oldp));
-static void	dumptime P((const struct tm * tmp));
-static time_t	hunt P((char * name, time_t lot, time_t	hit));
-static void	setabsolutes P((void));
-static void	show P((char * zone, time_t t, int v));
-static const char *	tformat P((void));
-static time_t	yeartot P((long y));
-
-#ifndef TYPECHECK
-#define my_localtime	localtime
-#else /* !defined TYPECHECK */
-static struct tm *
-my_localtime(tp)
-time_t *	tp;
-{
-	register struct tm *	tmp;
-
-	tmp = localtime(tp);
-	if (tp != NULL && tmp != NULL) {
-		struct tm	tm;
-		register time_t	t;
-
-		tm = *tmp;
-		t = mktime(&tm);
-		if (t - *tp >= 1 || *tp - t >= 1) {
-			(void) fflush(stdout);
-			(void) fprintf(stderr, "\n%s: ", progname);
-			(void) fprintf(stderr, tformat(), *tp);
-			(void) fprintf(stderr, " ->");
-			(void) fprintf(stderr, " year=%d", tmp->tm_year);
-			(void) fprintf(stderr, " mon=%d", tmp->tm_mon);
-			(void) fprintf(stderr, " mday=%d", tmp->tm_mday);
-			(void) fprintf(stderr, " hour=%d", tmp->tm_hour);
-			(void) fprintf(stderr, " min=%d", tmp->tm_min);
-			(void) fprintf(stderr, " sec=%d", tmp->tm_sec);
-			(void) fprintf(stderr, " isdst=%d", tmp->tm_isdst);
-			(void) fprintf(stderr, " -> ");
-			(void) fprintf(stderr, tformat(), t);
-			(void) fprintf(stderr, "\n");
-		}
-	}
-	return tmp;
-}
-#endif /* !defined TYPECHECK */
-
-static void
-abbrok(abbrp, zone)
-const char * const	abbrp;
-const char * const	zone;
-{
-	register const char *	cp;
-	register char *		wp;
-
-	if (warned)
-		return;
-	cp = abbrp;
-	wp = NULL;
-	while (isascii((unsigned char) *cp) && isalpha((unsigned char) *cp))
-		++cp;
-	if (cp - abbrp == 0)
-		wp = _("lacks alphabetic at start");
-	else if (cp - abbrp < 3)
-		wp = _("has fewer than 3 alphabetics");
-	else if (cp - abbrp > 6)
-		wp = _("has more than 6 alphabetics");
-	if (wp == NULL && (*cp == '+' || *cp == '-')) {
-		++cp;
-		if (isascii((unsigned char) *cp) &&
-			isdigit((unsigned char) *cp))
-				if (*cp++ == '1' && *cp >= '0' && *cp <= '4')
-					++cp;
-		if (*cp != '\0')
-			wp = _("differs from POSIX standard");
-	}
-	if (wp == NULL)
-		return;
-	(void) fflush(stdout);
-	(void) fprintf(stderr,
-		_("%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"),
-		progname, zone, abbrp, wp);
-	warned = TRUE;
-}
-
-int
-main(argc, argv)
-int	argc;
-char *	argv[];
-{
-	register int		i;
-	register int		c;
-	register int		vflag;
-	register char *		cutarg;
-	register long		cutloyear = ZDUMP_LO_YEAR;
-	register long		cuthiyear = ZDUMP_HI_YEAR;
-	register time_t		cutlotime;
-	register time_t		cuthitime;
-	register char **	fakeenv;
-	time_t			now;
-	time_t			t;
-	time_t			newt;
-	struct tm		tm;
-	struct tm		newtm;
-	register struct tm *	tmp;
-	register struct tm *	newtmp;
-
-	INITIALIZE(cutlotime);
-	INITIALIZE(cuthitime);
-#if HAVE_GETTEXT
-	(void) setlocale(LC_ALL, "");
-#ifdef TZ_DOMAINDIR
-	(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
-#endif /* defined TEXTDOMAINDIR */
-	(void) textdomain(TZ_DOMAIN);
-#endif /* HAVE_GETTEXT */
-	progname = argv[0];
-	for (i = 1; i < argc; ++i)
-		if (strcmp(argv[i], "--version") == 0) {
-			(void) printf("%s\n", elsieid);
-			exit(EXIT_SUCCESS);
-		}
-	vflag = 0;
-	cutarg = NULL;
-	while ((c = getopt(argc, argv, "c:v")) == 'c' || c == 'v')
-		if (c == 'v')
-			vflag = 1;
-		else	cutarg = optarg;
-	if ((c != EOF && c != -1) ||
-		(optind == argc - 1 && strcmp(argv[optind], "=") == 0)) {
-			(void) fprintf(stderr,
-_("%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"),
-				progname, progname);
-			exit(EXIT_FAILURE);
-	}
-	if (vflag) {
-		if (cutarg != NULL) {
-			long	lo;
-			long	hi;
-			char	dummy;
-
-			if (sscanf(cutarg, "%ld%c", &hi, &dummy) == 1) {
-				cuthiyear = hi;
-			} else if (sscanf(cutarg, "%ld,%ld%c",
-				&lo, &hi, &dummy) == 2) {
-					cutloyear = lo;
-					cuthiyear = hi;
-			} else {
-(void) fprintf(stderr, _("%s: wild -c argument %s\n"),
-					progname, cutarg);
-				exit(EXIT_FAILURE);
-			}
-		}
-		setabsolutes();
-		cutlotime = yeartot(cutloyear);
-		cuthitime = yeartot(cuthiyear);
-	}
-	(void) time(&now);
-	longest = 0;
-	for (i = optind; i < argc; ++i)
-		if (strlen(argv[i]) > longest)
-			longest = strlen(argv[i]);
-	{
-		register int	from;
-		register int	to;
-
-		for (i = 0; environ[i] != NULL; ++i)
-			continue;
-		fakeenv = (char **) malloc((size_t) ((i + 2) *
-			sizeof *fakeenv));
-		if (fakeenv == NULL ||
-			(fakeenv[0] = (char *) malloc(longest + 4)) == NULL) {
-					(void) perror(progname);
-					exit(EXIT_FAILURE);
-		}
-		to = 0;
-		(void) strcpy(fakeenv[to++], "TZ=");
-		for (from = 0; environ[from] != NULL; ++from)
-			if (strncmp(environ[from], "TZ=", 3) != 0)
-				fakeenv[to++] = environ[from];
-		fakeenv[to] = NULL;
-		environ = fakeenv;
-	}
-	for (i = optind; i < argc; ++i) {
-		static char	buf[MAX_STRING_LENGTH];
-
-		(void) strcpy(&fakeenv[0][3], argv[i]);
-		if (!vflag) {
-			show(argv[i], now, FALSE);
-			continue;
-		}
-		warned = FALSE;
-		t = absolute_min_time;
-		show(argv[i], t, TRUE);
-		t += SECSPERHOUR * HOURSPERDAY;
-		show(argv[i], t, TRUE);
-		if (t < cutlotime)
-			t = cutlotime;
-		tmp = my_localtime(&t);
-		if (tmp != NULL) {
-			tm = *tmp;
-			(void) strncpy(buf, abbr(&tm), (sizeof buf) - 1);
-		}
-		for ( ; ; ) {
-			if (t >= cuthitime)
-				break;
-			newt = t + SECSPERHOUR * 12;
-			if (newt >= cuthitime)
-				break;
-			if (newt <= t)
-				break;
-			newtmp = localtime(&newt);
-			if (newtmp != NULL)
-				newtm = *newtmp;
-			if ((tmp == NULL || newtmp == NULL) ? (tmp != newtmp) :
-				(delta(&newtm, &tm) != (newt - t) ||
-				newtm.tm_isdst != tm.tm_isdst ||
-				strcmp(abbr(&newtm), buf) != 0)) {
-					newt = hunt(argv[i], t, newt);
-					newtmp = localtime(&newt);
-					if (newtmp != NULL) {
-						newtm = *newtmp;
-						(void) strncpy(buf,
-							abbr(&newtm),
-							(sizeof buf) - 1);
-					}
-			}
-			t = newt;
-			tm = newtm;
-			tmp = newtmp;
-		}
-		t = absolute_max_time;
-		t -= SECSPERHOUR * HOURSPERDAY;
-		show(argv[i], t, TRUE);
-		t += SECSPERHOUR * HOURSPERDAY;
-		show(argv[i], t, TRUE);
-	}
-	if (fflush(stdout) || ferror(stdout)) {
-		(void) fprintf(stderr, "%s: ", progname);
-		(void) perror(_("Error writing to standard output"));
-		exit(EXIT_FAILURE);
-	}
-	exit(EXIT_SUCCESS);
-	/* If exit fails to exit... */
-	return EXIT_FAILURE;
-}
-
-static void
-setabsolutes()
-{
-	if (0.5 == (time_t) 0.5) {
-		/*
-		** time_t is floating.
-		*/
-		if (sizeof (time_t) == sizeof (float)) {
-			absolute_min_time = (time_t) -FLT_MAX;
-			absolute_max_time = (time_t) FLT_MAX;
-		} else if (sizeof (time_t) == sizeof (double)) {
-			absolute_min_time = (time_t) -DBL_MAX;
-			absolute_max_time = (time_t) DBL_MAX;
-		} else {
-			(void) fprintf(stderr,
-_("%s: use of -v on system with floating time_t other than float or double\n"),
-				progname);
-			exit(EXIT_FAILURE);
-		}
-	} else if (0 > (time_t) -1) {
-		/*
-		** time_t is signed.  Assume overflow wraps around.
-		*/
-		time_t t = 0;
-		time_t t1 = 1;
-
-		while (t < t1) {
-			t = t1;
-			t1 = 2 * t1 + 1;
-		}
-
-		absolute_max_time = t;
-		t = -t;
-		absolute_min_time = t - 1;
-		if (t < absolute_min_time)
-			absolute_min_time = t;
-	} else {
-		/*
-		** time_t is unsigned.
-		*/
-		absolute_min_time = 0;
-		absolute_max_time = absolute_min_time - 1;
-	}
-}
-
-static time_t
-yeartot(y)
-const long	y;
-{
-	register long	myy;
-	register long	seconds;
-	register time_t	t;
-
-	myy = EPOCH_YEAR;
-	t = 0;
-	while (myy != y) {
-		if (myy < y) {
-			seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
-			++myy;
-			if (t > absolute_max_time - seconds) {
-				t = absolute_max_time;
-				break;
-			}
-			t += seconds;
-		} else {
-			--myy;
-			seconds = isleap(myy) ? SECSPERLYEAR : SECSPERNYEAR;
-			if (t < absolute_min_time + seconds) {
-				t = absolute_min_time;
-				break;
-			}
-			t -= seconds;
-		}
-	}
-	return t;
-}
-
-static time_t
-hunt(char *name, time_t lot, time_t hit)
-{
-	time_t			t;
-	long			diff;
-	struct tm		lotm;
-	register struct tm *	lotmp;
-	struct tm		tm;
-	register struct tm *	tmp;
-	char			loab[MAX_STRING_LENGTH];
-
-	lotmp = my_localtime(&lot);
-	if (lotmp != NULL) {
-		lotm = *lotmp;
-		(void) strncpy(loab, abbr(&lotm), (sizeof loab) - 1);
-	}
-	for ( ; ; ) {
-		diff = (long) (hit - lot);
-		if (diff < 2)
-			break;
-		t = lot;
-		t += diff / 2;
-		if (t <= lot)
-			++t;
-		else if (t >= hit)
-			--t;
-		tmp = my_localtime(&t);
-		if (tmp != NULL)
-			tm = *tmp;
-		if ((lotmp == NULL || tmp == NULL) ? (lotmp == tmp) :
-			(delta(&tm, &lotm) == (t - lot) &&
-			tm.tm_isdst == lotm.tm_isdst &&
-			strcmp(abbr(&tm), loab) == 0)) {
-				lot = t;
-				lotm = tm;
-				lotmp = tmp;
-		} else	hit = t;
-	}
-	show(name, lot, TRUE);
-	show(name, hit, TRUE);
-	return hit;
-}
-
-/*
-** Thanks to Paul Eggert for logic used in delta.
-*/
-
-static long
-delta(newp, oldp)
-struct tm *	newp;
-struct tm *	oldp;
-{
-	register long	result;
-	register int	tmy;
-
-	if (newp->tm_year < oldp->tm_year)
-		return -delta(oldp, newp);
-	result = 0;
-	for (tmy = oldp->tm_year; tmy < newp->tm_year; ++tmy)
-		result += DAYSPERNYEAR + isleap_sum(tmy, TM_YEAR_BASE);
-	result += newp->tm_yday - oldp->tm_yday;
-	result *= HOURSPERDAY;
-	result += newp->tm_hour - oldp->tm_hour;
-	result *= MINSPERHOUR;
-	result += newp->tm_min - oldp->tm_min;
-	result *= SECSPERMIN;
-	result += newp->tm_sec - oldp->tm_sec;
-	return result;
-}
-
-static void
-show(char *zone, time_t t, int v)
-{
-	register struct tm *	tmp;
-
-	(void) printf("%-*s  ", (int) longest, zone);
-	if (v) {
-		tmp = gmtime(&t);
-		if (tmp == NULL) {
-			(void) printf(tformat(), t);
-		} else {
-			dumptime(tmp);
-			(void) printf(" UTC");
-		}
-		(void) printf(" = ");
-	}
-	tmp = my_localtime(&t);
-	dumptime(tmp);
-	if (tmp != NULL) {
-		if (*abbr(tmp) != '\0')
-			(void) printf(" %s", abbr(tmp));
-		if (v) {
-			(void) printf(" isdst=%d", tmp->tm_isdst);
-#ifdef TM_GMTOFF
-			(void) printf(" gmtoff=%ld", tmp->TM_GMTOFF);
-#endif /* defined TM_GMTOFF */
-		}
-	}
-	(void) printf("\n");
-	if (tmp != NULL && *abbr(tmp) != '\0')
-		abbrok(abbr(tmp), zone);
-}
-
-static char *
-abbr(tmp)
-struct tm *	tmp;
-{
-	register char *	result;
-	static char	nada;
-
-	if (tmp->tm_isdst != 0 && tmp->tm_isdst != 1)
-		return &nada;
-	result = tzname[tmp->tm_isdst];
-	return (result == NULL) ? &nada : result;
-}
-
-/*
-** The code below can fail on certain theoretical systems;
-** it works on all known real-world systems as of 2004-12-30.
-*/
-
-static const char *
-tformat()
-{
-	if (0.5 == (time_t) 0.5) {	/* floating */
-		if (sizeof (time_t) > sizeof (double))
-			return "%Lg";
-		return "%g";
-	}
-	if (0 > (time_t) -1) {		/* signed */
-		if (sizeof (time_t) > sizeof (long))
-			return "%lld";
-		if (sizeof (time_t) > sizeof (int))
-			return "%ld";
-		return "%d";
-	}
-	if (sizeof (time_t) > sizeof (unsigned long))
-		return "%llu";
-	if (sizeof (time_t) > sizeof (unsigned int))
-		return "%lu";
-	return "%u";
-}
-
-static void
-dumptime(timeptr)
-register const struct tm *	timeptr;
-{
-	static const char	wday_name[][3] = {
-		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
-	};
-	static const char	mon_name[][3] = {
-		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
-		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
-	};
-	register const char *	wn;
-	register const char *	mn;
-	register int		lead;
-	register int		trail;
-
-	if (timeptr == NULL) {
-		(void) printf("NULL");
-		return;
-	}
-	/*
-	** The packaged versions of localtime and gmtime never put out-of-range
-	** values in tm_wday or tm_mon, but since this code might be compiled
-	** with other (perhaps experimental) versions, paranoia is in order.
-	*/
-	if (timeptr->tm_wday < 0 || timeptr->tm_wday >=
-		(int) (sizeof wday_name / sizeof wday_name[0]))
-			wn = "???";
-	else		wn = wday_name[timeptr->tm_wday];
-	if (timeptr->tm_mon < 0 || timeptr->tm_mon >=
-		(int) (sizeof mon_name / sizeof mon_name[0]))
-			mn = "???";
-	else		mn = mon_name[timeptr->tm_mon];
-	(void) printf("%.3s %.3s%3d %.2d:%.2d:%.2d ",
-		wn, mn,
-		timeptr->tm_mday, timeptr->tm_hour,
-		timeptr->tm_min, timeptr->tm_sec);
-#define DIVISOR	10
-	trail = timeptr->tm_year % DIVISOR + TM_YEAR_BASE % DIVISOR;
-	lead = timeptr->tm_year / DIVISOR + TM_YEAR_BASE / DIVISOR +
-		trail / DIVISOR;
-	trail %= DIVISOR;
-	if (trail < 0 && lead > 0) {
-		trail += DIVISOR;
-		--lead;
-	} else if (lead < 0 && trail > 0) {
-		trail -= DIVISOR;
-		++lead;
-	}
-	if (lead == 0)
-		(void) printf("%d", trail);
-	else	(void) printf("%d%d", lead, ((trail < 0) ? -trail : trail));
-}
diff --git a/bin/glibc-2.7/timezone/zic.c b/bin/glibc-2.7/timezone/zic.c
deleted file mode 100644
index 3cb0b171..00000000
--- a/bin/glibc-2.7/timezone/zic.c
+++ /dev/null
@@ -1,2720 +0,0 @@
-/*
-** This file is in the public domain, so clarified as of
-** 2006-07-17 by Arthur David Olson.
-*/
-
-static char	elsieid[] = "@(#)zic.c	8.14";
-
-#include "private.h"
-#include "locale.h"
-#include "tzfile.h"
-
-#define	ZIC_VERSION	'2'
-
-typedef int_fast64_t	zic_t;
-
-#ifndef ZIC_MAX_ABBR_LEN_WO_WARN
-#define ZIC_MAX_ABBR_LEN_WO_WARN	6
-#endif /* !defined ZIC_MAX_ABBR_LEN_WO_WARN */
-
-#if HAVE_SYS_STAT_H
-#include "sys/stat.h"
-#endif
-#ifdef S_IRUSR
-#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
-#else
-#define MKDIR_UMASK 0755
-#endif
-
-/*
-** On some ancient hosts, predicates like `isspace(C)' are defined
-** only if isascii(C) || C == EOF. Modern hosts obey the C Standard,
-** which says they are defined only if C == ((unsigned char) C) || C == EOF.
-** Neither the C Standard nor Posix require that `isascii' exist.
-** For portability, we check both ancient and modern requirements.
-** If isascii is not defined, the isascii check succeeds trivially.
-*/
-#include "ctype.h"
-#ifndef isascii
-#define isascii(x) 1
-#endif
-
-#define OFFSET_STRLEN_MAXIMUM	(7 + INT_STRLEN_MAXIMUM(long))
-#define RULE_STRLEN_MAXIMUM	8	/* "Mdd.dd.d" */
-
-#define end(cp)	(strchr((cp), '\0'))
-
-struct rule {
-	const char *	r_filename;
-	int		r_linenum;
-	const char *	r_name;
-
-	int		r_loyear;	/* for example, 1986 */
-	int		r_hiyear;	/* for example, 1986 */
-	const char *	r_yrtype;
-	int		r_lowasnum;
-	int		r_hiwasnum;
-
-	int		r_month;	/* 0..11 */
-
-	int		r_dycode;	/* see below */
-	int		r_dayofmonth;
-	int		r_wday;
-
-	long		r_tod;		/* time from midnight */
-	int		r_todisstd;	/* above is standard time if TRUE */
-					/* or wall clock time if FALSE */
-	int		r_todisgmt;	/* above is GMT if TRUE */
-					/* or local time if FALSE */
-	long		r_stdoff;	/* offset from standard time */
-	const char *	r_abbrvar;	/* variable part of abbreviation */
-
-	int		r_todo;		/* a rule to do (used in outzone) */
-	zic_t		r_temp;		/* used in outzone */
-};
-
-/*
-**	r_dycode		r_dayofmonth	r_wday
-*/
-
-#define DC_DOM		0	/* 1..31 */	/* unused */
-#define DC_DOWGEQ	1	/* 1..31 */	/* 0..6 (Sun..Sat) */
-#define DC_DOWLEQ	2	/* 1..31 */	/* 0..6 (Sun..Sat) */
-
-struct zone {
-	const char *	z_filename;
-	int		z_linenum;
-
-	const char *	z_name;
-	long		z_gmtoff;
-	const char *	z_rule;
-	const char *	z_format;
-
-	long		z_stdoff;
-
-	struct rule *	z_rules;
-	int		z_nrules;
-
-	struct rule	z_untilrule;
-	zic_t		z_untiltime;
-};
-
-extern int	getopt P((int argc, char * const argv[],
-			const char * options));
-extern int	link P((const char * fromname, const char * toname));
-extern char *	optarg;
-extern int	optind;
-
-static void	addtt P((zic_t starttime, int type));
-static int	addtype P((long gmtoff, const char * abbr, int isdst,
-				int ttisstd, int ttisgmt));
-static void	leapadd P((zic_t t, int positive, int rolling, int count));
-static void	adjleap P((void));
-static void	associate P((void));
-static int	ciequal P((const char * ap, const char * bp));
-static void	convert P((long val, char * buf));
-static void	convert64 P((zic_t val, char * buf));
-static void	dolink P((const char * fromfield, const char * tofield));
-static void	doabbr P((char * abbr, const char * format,
-			const char * letters, int isdst, int doquotes));
-static void	eat P((const char * name, int num));
-static void	eats P((const char * name, int num,
-			const char * rname, int rnum));
-static long	eitol P((int i));
-static void	error P((const char * message));
-static char **	getfields P((char * buf));
-static long	gethms P((const char * string, const char * errstrng,
-			int signable));
-static void	infile P((const char * filename));
-static void	inleap P((char ** fields, int nfields));
-static void	inlink P((char ** fields, int nfields));
-static void	inrule P((char ** fields, int nfields));
-static int	inzcont P((char ** fields, int nfields));
-static int	inzone P((char ** fields, int nfields));
-static int	inzsub P((char ** fields, int nfields, int iscont));
-static int	is32 P((zic_t x));
-static int	itsabbr P((const char * abbr, const char * word));
-static int	itsdir P((const char * name));
-static int	lowerit P((int c));
-static char *	memcheck P((char * tocheck));
-static int	mkdirs P((char * filename));
-static void	newabbr P((const char * abbr));
-static long	oadd P((long t1, long t2));
-static void	outzone P((const struct zone * zp, int ntzones));
-static void	puttzcode P((long code, FILE * fp));
-static void	puttzcode64 P((zic_t code, FILE * fp));
-static int	rcomp P((const void * leftp, const void * rightp));
-static zic_t	rpytime P((const struct rule * rp, int wantedy));
-static void	rulesub P((struct rule * rp,
-			const char * loyearp, const char * hiyearp,
-			const char * typep, const char * monthp,
-			const char * dayp, const char * timep));
-static int 	stringoffset P((char * result, long offset));
-static int	stringrule P((char * result, const struct rule * rp,
-			long dstoff, long gmtoff));
-static void 	stringzone P((char * result,
-			const struct zone * zp, int ntzones));
-static void	setboundaries P((void));
-static zic_t	tadd P((zic_t t1, long t2));
-static void	usage P((void));
-static void	writezone P((const char * name, const char * string));
-static int	yearistype P((int year, const char * type));
-
-#if !HAVE_STRERROR
-static char *	strerror P((int));
-#endif /* !HAVE_STRERROR */
-
-static int		charcnt;
-static int		errors;
-static const char *	filename;
-static int		leapcnt;
-static int		leapseen;
-static int		leapminyear;
-static int		leapmaxyear;
-static int		linenum;
-static int		max_abbrvar_len;
-static int		max_format_len;
-static zic_t		max_time;
-static int		max_year;
-static zic_t		min_time;
-static int		min_year;
-static int		noise;
-static const char *	rfilename;
-static int		rlinenum;
-static const char *	progname;
-static int		timecnt;
-static int		typecnt;
-
-/*
-** Line codes.
-*/
-
-#define LC_RULE		0
-#define LC_ZONE		1
-#define LC_LINK		2
-#define LC_LEAP		3
-
-/*
-** Which fields are which on a Zone line.
-*/
-
-#define ZF_NAME		1
-#define ZF_GMTOFF	2
-#define ZF_RULE		3
-#define ZF_FORMAT	4
-#define ZF_TILYEAR	5
-#define ZF_TILMONTH	6
-#define ZF_TILDAY	7
-#define ZF_TILTIME	8
-#define ZONE_MINFIELDS	5
-#define ZONE_MAXFIELDS	9
-
-/*
-** Which fields are which on a Zone continuation line.
-*/
-
-#define ZFC_GMTOFF	0
-#define ZFC_RULE	1
-#define ZFC_FORMAT	2
-#define ZFC_TILYEAR	3
-#define ZFC_TILMONTH	4
-#define ZFC_TILDAY	5
-#define ZFC_TILTIME	6
-#define ZONEC_MINFIELDS	3
-#define ZONEC_MAXFIELDS	7
-
-/*
-** Which files are which on a Rule line.
-*/
-
-#define RF_NAME		1
-#define RF_LOYEAR	2
-#define RF_HIYEAR	3
-#define RF_COMMAND	4
-#define RF_MONTH	5
-#define RF_DAY		6
-#define RF_TOD		7
-#define RF_STDOFF	8
-#define RF_ABBRVAR	9
-#define RULE_FIELDS	10
-
-/*
-** Which fields are which on a Link line.
-*/
-
-#define LF_FROM		1
-#define LF_TO		2
-#define LINK_FIELDS	3
-
-/*
-** Which fields are which on a Leap line.
-*/
-
-#define LP_YEAR		1
-#define LP_MONTH	2
-#define LP_DAY		3
-#define LP_TIME		4
-#define LP_CORR		5
-#define LP_ROLL		6
-#define LEAP_FIELDS	7
-
-/*
-** Year synonyms.
-*/
-
-#define YR_MINIMUM	0
-#define YR_MAXIMUM	1
-#define YR_ONLY		2
-
-static struct rule *	rules;
-static int		nrules;	/* number of rules */
-
-static struct zone *	zones;
-static int		nzones;	/* number of zones */
-
-struct link {
-	const char *	l_filename;
-	int		l_linenum;
-	const char *	l_from;
-	const char *	l_to;
-};
-
-static struct link *	links;
-static int		nlinks;
-
-struct lookup {
-	const char *	l_word;
-	const int	l_value;
-};
-
-static struct lookup const *	byword P((const char * string,
-					const struct lookup * lp));
-
-static struct lookup const	line_codes[] = {
-	{ "Rule",	LC_RULE },
-	{ "Zone",	LC_ZONE },
-	{ "Link",	LC_LINK },
-	{ "Leap",	LC_LEAP },
-	{ NULL,		0}
-};
-
-static struct lookup const	mon_names[] = {
-	{ "January",	TM_JANUARY },
-	{ "February",	TM_FEBRUARY },
-	{ "March",	TM_MARCH },
-	{ "April",	TM_APRIL },
-	{ "May",	TM_MAY },
-	{ "June",	TM_JUNE },
-	{ "July",	TM_JULY },
-	{ "August",	TM_AUGUST },
-	{ "September",	TM_SEPTEMBER },
-	{ "October",	TM_OCTOBER },
-	{ "November",	TM_NOVEMBER },
-	{ "December",	TM_DECEMBER },
-	{ NULL,		0 }
-};
-
-static struct lookup const	wday_names[] = {
-	{ "Sunday",	TM_SUNDAY },
-	{ "Monday",	TM_MONDAY },
-	{ "Tuesday",	TM_TUESDAY },
-	{ "Wednesday",	TM_WEDNESDAY },
-	{ "Thursday",	TM_THURSDAY },
-	{ "Friday",	TM_FRIDAY },
-	{ "Saturday",	TM_SATURDAY },
-	{ NULL,		0 }
-};
-
-static struct lookup const	lasts[] = {
-	{ "last-Sunday",	TM_SUNDAY },
-	{ "last-Monday",	TM_MONDAY },
-	{ "last-Tuesday",	TM_TUESDAY },
-	{ "last-Wednesday",	TM_WEDNESDAY },
-	{ "last-Thursday",	TM_THURSDAY },
-	{ "last-Friday",	TM_FRIDAY },
-	{ "last-Saturday",	TM_SATURDAY },
-	{ NULL,			0 }
-};
-
-static struct lookup const	begin_years[] = {
-	{ "minimum",	YR_MINIMUM },
-	{ "maximum",	YR_MAXIMUM },
-	{ NULL,		0 }
-};
-
-static struct lookup const	end_years[] = {
-	{ "minimum",	YR_MINIMUM },
-	{ "maximum",	YR_MAXIMUM },
-	{ "only",	YR_ONLY },
-	{ NULL,		0 }
-};
-
-static struct lookup const	leap_types[] = {
-	{ "Rolling",	TRUE },
-	{ "Stationary",	FALSE },
-	{ NULL,		0 }
-};
-
-static const int	len_months[2][MONSPERYEAR] = {
-	{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
-	{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
-};
-
-static const int	len_years[2] = {
-	DAYSPERNYEAR, DAYSPERLYEAR
-};
-
-static struct attype {
-	zic_t		at;
-	unsigned char	type;
-}			attypes[TZ_MAX_TIMES];
-static long		gmtoffs[TZ_MAX_TYPES];
-static char		isdsts[TZ_MAX_TYPES];
-static unsigned char	abbrinds[TZ_MAX_TYPES];
-static char		ttisstds[TZ_MAX_TYPES];
-static char		ttisgmts[TZ_MAX_TYPES];
-static char		chars[TZ_MAX_CHARS];
-static zic_t		trans[TZ_MAX_LEAPS];
-static long		corr[TZ_MAX_LEAPS];
-static char		roll[TZ_MAX_LEAPS];
-
-/*
-** Memory allocation.
-*/
-
-static char *
-memcheck(ptr)
-char * const	ptr;
-{
-	if (ptr == NULL) {
-		const char *e = strerror(errno);
-
-		(void) fprintf(stderr, _("%s: Memory exhausted: %s\n"),
-			progname, e);
-		exit(EXIT_FAILURE);
-	}
-	return ptr;
-}
-
-#define emalloc(size)		memcheck(imalloc(size))
-#define erealloc(ptr, size)	memcheck(irealloc((ptr), (size)))
-#define ecpyalloc(ptr)		memcheck(icpyalloc(ptr))
-#define ecatalloc(oldp, newp)	memcheck(icatalloc((oldp), (newp)))
-
-/*
-** Error handling.
-*/
-
-#if !HAVE_STRERROR
-static char *
-strerror(errnum)
-int	errnum;
-{
-	extern char *	sys_errlist[];
-	extern int	sys_nerr;
-
-	return (errnum > 0 && errnum <= sys_nerr) ?
-		sys_errlist[errnum] : _("Unknown system error");
-}
-#endif /* !HAVE_STRERROR */
-
-static void
-eats(name, num, rname, rnum)
-const char * const	name;
-const int		num;
-const char * const	rname;
-const int		rnum;
-{
-	filename = name;
-	linenum = num;
-	rfilename = rname;
-	rlinenum = rnum;
-}
-
-static void
-eat(name, num)
-const char * const	name;
-const int		num;
-{
-	eats(name, num, (char *) NULL, -1);
-}
-
-static void
-error(string)
-const char * const	string;
-{
-	/*
-	** Match the format of "cc" to allow sh users to
-	**	zic ... 2>&1 | error -t "*" -v
-	** on BSD systems.
-	*/
-	(void) fprintf(stderr, _("\"%s\", line %d: %s"),
-		filename, linenum, string);
-	if (rfilename != NULL)
-		(void) fprintf(stderr, _(" (rule from \"%s\", line %d)"),
-			rfilename, rlinenum);
-	(void) fprintf(stderr, "\n");
-	++errors;
-}
-
-static void
-warning(string)
-const char * const	string;
-{
-	char *	cp;
-
-	cp = ecpyalloc(_("warning: "));
-	cp = ecatalloc(cp, string);
-	error(cp);
-	ifree(cp);
-	--errors;
-}
-
-static void
-usage P((void))
-{
-	(void) fprintf(stderr, _("%s: usage is %s \
-[ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n\
-\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"),
-		progname, progname);
-	exit(EXIT_FAILURE);
-}
-
-static const char *	psxrules;
-static const char *	lcltime;
-static const char *	directory;
-static const char *	leapsec;
-static const char *	yitcommand;
-
-int
-main(argc, argv)
-int	argc;
-char *	argv[];
-{
-	register int	i;
-	register int	j;
-	register int	c;
-
-#ifdef unix
-	(void) umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
-#endif /* defined unix */
-#if HAVE_GETTEXT
-	(void) setlocale(LC_ALL, "");
-#ifdef TZ_DOMAINDIR
-	(void) bindtextdomain(TZ_DOMAIN, TZ_DOMAINDIR);
-#endif /* defined TEXTDOMAINDIR */
-	(void) textdomain(TZ_DOMAIN);
-#endif /* HAVE_GETTEXT */
-	progname = argv[0];
-	if (TYPE_BIT(zic_t) < 64) {
-		(void) fprintf(stderr, "%s: %s\n", progname,
-			_("wild compilation-time specification of zic_t"));
-		exit(EXIT_FAILURE);
-	}
-	for (i = 1; i < argc; ++i)
-		if (strcmp(argv[i], "--version") == 0) {
-			(void) printf("%s\n", elsieid);
-			exit(EXIT_SUCCESS);
-		}
-	while ((c = getopt(argc, argv, "d:l:p:L:vsy:")) != EOF && c != -1)
-		switch (c) {
-			default:
-				usage();
-			case 'd':
-				if (directory == NULL)
-					directory = optarg;
-				else {
-					(void) fprintf(stderr,
-_("%s: More than one -d option specified\n"),
-						progname);
-					exit(EXIT_FAILURE);
-				}
-				break;
-			case 'l':
-				if (lcltime == NULL)
-					lcltime = optarg;
-				else {
-					(void) fprintf(stderr,
-_("%s: More than one -l option specified\n"),
-						progname);
-					exit(EXIT_FAILURE);
-				}
-				break;
-			case 'p':
-				if (psxrules == NULL)
-					psxrules = optarg;
-				else {
-					(void) fprintf(stderr,
-_("%s: More than one -p option specified\n"),
-						progname);
-					exit(EXIT_FAILURE);
-				}
-				break;
-			case 'y':
-				if (yitcommand == NULL)
-					yitcommand = optarg;
-				else {
-					(void) fprintf(stderr,
-_("%s: More than one -y option specified\n"),
-						progname);
-					exit(EXIT_FAILURE);
-				}
-				break;
-			case 'L':
-				if (leapsec == NULL)
-					leapsec = optarg;
-				else {
-					(void) fprintf(stderr,
-_("%s: More than one -L option specified\n"),
-						progname);
-					exit(EXIT_FAILURE);
-				}
-				break;
-			case 'v':
-				noise = TRUE;
-				break;
-			case 's':
-				(void) printf("%s: -s ignored\n", progname);
-				break;
-		}
-	if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
-		usage();	/* usage message by request */
-	if (directory == NULL)
-		directory = TZDIR;
-	if (yitcommand == NULL)
-		yitcommand = "yearistype";
-
-	setboundaries();
-
-	if (optind < argc && leapsec != NULL) {
-		infile(leapsec);
-		adjleap();
-	}
-
-	for (i = optind; i < argc; ++i)
-		infile(argv[i]);
-	if (errors)
-		exit(EXIT_FAILURE);
-	associate();
-	for (i = 0; i < nzones; i = j) {
-		/*
-		** Find the next non-continuation zone entry.
-		*/
-		for (j = i + 1; j < nzones && zones[j].z_name == NULL; ++j)
-			continue;
-		outzone(&zones[i], j - i);
-	}
-	/*
-	** Make links.
-	*/
-	for (i = 0; i < nlinks; ++i) {
-		eat(links[i].l_filename, links[i].l_linenum);
-		dolink(links[i].l_from, links[i].l_to);
-		if (noise)
-			for (j = 0; j < nlinks; ++j)
-				if (strcmp(links[i].l_to,
-					links[j].l_from) == 0)
-						warning(_("link to link"));
-	}
-	if (lcltime != NULL) {
-		eat("command line", 1);
-		dolink(lcltime, TZDEFAULT);
-	}
-	if (psxrules != NULL) {
-		eat("command line", 1);
-		dolink(psxrules, TZDEFRULES);
-	}
-	return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
-
-static void
-dolink(fromfield, tofield)
-const char * const	fromfield;
-const char * const	tofield;
-{
-	register char *	fromname;
-	register char *	toname;
-
-	if (fromfield[0] == '/')
-		fromname = ecpyalloc(fromfield);
-	else {
-		fromname = ecpyalloc(directory);
-		fromname = ecatalloc(fromname, "/");
-		fromname = ecatalloc(fromname, fromfield);
-	}
-	if (tofield[0] == '/')
-		toname = ecpyalloc(tofield);
-	else {
-		toname = ecpyalloc(directory);
-		toname = ecatalloc(toname, "/");
-		toname = ecatalloc(toname, tofield);
-	}
-	/*
-	** We get to be careful here since
-	** there's a fair chance of root running us.
-	*/
-	if (!itsdir(toname))
-		(void) remove(toname);
-	if (link(fromname, toname) != 0) {
-		int	result;
-
-		if (mkdirs(toname) != 0)
-			exit(EXIT_FAILURE);
-
-		result = link(fromname, toname);
-#if HAVE_SYMLINK
-		if (result != 0 &&
-			access(fromname, F_OK) == 0 &&
-			!itsdir(fromname)) {
-				const char *s = tofield;
-				register char * symlinkcontents = NULL;
-
-				while ((s = strchr(s+1, '/')) != NULL)
-					symlinkcontents =
-						ecatalloc(symlinkcontents,
-						"../");
-				symlinkcontents =
-					ecatalloc(symlinkcontents,
-					fromname);
-				result = symlink(symlinkcontents,
-					toname);
-				if (result == 0)
-warning(_("hard link failed, symbolic link used"));
-				ifree(symlinkcontents);
-		}
-#endif /* HAVE_SYMLINK */
-		if (result != 0) {
-			const char *e = strerror(errno);
-
-			(void) fprintf(stderr,
-				_("%s: Can't link from %s to %s: %s\n"),
-				progname, fromname, toname, e);
-			exit(EXIT_FAILURE);
-		}
-	}
-	ifree(fromname);
-	ifree(toname);
-}
-
-#define TIME_T_BITS_IN_FILE	64
-
-static void
-setboundaries P((void))
-{
-	register int	i;
-
-	min_time = -1;
-	for (i = 0; i < TIME_T_BITS_IN_FILE - 1; ++i)
-		min_time *= 2;
-	max_time = -(min_time + 1);
-}
-
-static int
-itsdir(name)
-const char * const	name;
-{
-	register char *	myname;
-	register int	accres;
-
-	myname = ecpyalloc(name);
-	myname = ecatalloc(myname, "/.");
-	accres = access(myname, F_OK);
-	ifree(myname);
-	return accres == 0;
-}
-
-/*
-** Associate sets of rules with zones.
-*/
-
-/*
-** Sort by rule name.
-*/
-
-static int
-rcomp(cp1, cp2)
-const void *	cp1;
-const void *	cp2;
-{
-	return strcmp(((const struct rule *) cp1)->r_name,
-		((const struct rule *) cp2)->r_name);
-}
-
-static void
-associate P((void))
-{
-	register struct zone *	zp;
-	register struct rule *	rp;
-	register int		base, out;
-	register int		i, j;
-
-	if (nrules != 0) {
-		(void) qsort((void *) rules, (size_t) nrules,
-			(size_t) sizeof *rules, rcomp);
-		for (i = 0; i < nrules - 1; ++i) {
-			if (strcmp(rules[i].r_name,
-				rules[i + 1].r_name) != 0)
-					continue;
-			if (strcmp(rules[i].r_filename,
-				rules[i + 1].r_filename) == 0)
-					continue;
-			eat(rules[i].r_filename, rules[i].r_linenum);
-			warning(_("same rule name in multiple files"));
-			eat(rules[i + 1].r_filename, rules[i + 1].r_linenum);
-			warning(_("same rule name in multiple files"));
-			for (j = i + 2; j < nrules; ++j) {
-				if (strcmp(rules[i].r_name,
-					rules[j].r_name) != 0)
-						break;
-				if (strcmp(rules[i].r_filename,
-					rules[j].r_filename) == 0)
-						continue;
-				if (strcmp(rules[i + 1].r_filename,
-					rules[j].r_filename) == 0)
-						continue;
-				break;
-			}
-			i = j - 1;
-		}
-	}
-	for (i = 0; i < nzones; ++i) {
-		zp = &zones[i];
-		zp->z_rules = NULL;
-		zp->z_nrules = 0;
-	}
-	for (base = 0; base < nrules; base = out) {
-		rp = &rules[base];
-		for (out = base + 1; out < nrules; ++out)
-			if (strcmp(rp->r_name, rules[out].r_name) != 0)
-				break;
-		for (i = 0; i < nzones; ++i) {
-			zp = &zones[i];
-			if (strcmp(zp->z_rule, rp->r_name) != 0)
-				continue;
-			zp->z_rules = rp;
-			zp->z_nrules = out - base;
-		}
-	}
-	for (i = 0; i < nzones; ++i) {
-		zp = &zones[i];
-		if (zp->z_nrules == 0) {
-			/*
-			** Maybe we have a local standard time offset.
-			*/
-			eat(zp->z_filename, zp->z_linenum);
-			zp->z_stdoff = gethms(zp->z_rule, _("unruly zone"),
-				TRUE);
-			/*
-			** Note, though, that if there's no rule,
-			** a '%s' in the format is a bad thing.
-			*/
-			if (strchr(zp->z_format, '%') != 0)
-				error(_("%s in ruleless zone"));
-		}
-	}
-	if (errors)
-		exit(EXIT_FAILURE);
-}
-
-static void
-infile(name)
-const char *	name;
-{
-	register FILE *			fp;
-	register char **		fields;
-	register char *			cp;
-	register const struct lookup *	lp;
-	register int			nfields;
-	register int			wantcont;
-	register int			num;
-	char				buf[BUFSIZ];
-
-	if (strcmp(name, "-") == 0) {
-		name = _("standard input");
-		fp = stdin;
-	} else if ((fp = fopen(name, "r")) == NULL) {
-		const char *e = strerror(errno);
-
-		(void) fprintf(stderr, _("%s: Can't open %s: %s\n"),
-			progname, name, e);
-		exit(EXIT_FAILURE);
-	}
-	wantcont = FALSE;
-	for (num = 1; ; ++num) {
-		eat(name, num);
-		if (fgets(buf, (int) sizeof buf, fp) != buf)
-			break;
-		cp = strchr(buf, '\n');
-		if (cp == NULL) {
-			error(_("line too long"));
-			exit(EXIT_FAILURE);
-		}
-		*cp = '\0';
-		fields = getfields(buf);
-		nfields = 0;
-		while (fields[nfields] != NULL) {
-			static char	nada;
-
-			if (strcmp(fields[nfields], "-") == 0)
-				fields[nfields] = &nada;
-			++nfields;
-		}
-		if (nfields == 0) {
-			/* nothing to do */
-		} else if (wantcont) {
-			wantcont = inzcont(fields, nfields);
-		} else {
-			lp = byword(fields[0], line_codes);
-			if (lp == NULL)
-				error(_("input line of unknown type"));
-			else switch ((int) (lp->l_value)) {
-				case LC_RULE:
-					inrule(fields, nfields);
-					wantcont = FALSE;
-					break;
-				case LC_ZONE:
-					wantcont = inzone(fields, nfields);
-					break;
-				case LC_LINK:
-					inlink(fields, nfields);
-					wantcont = FALSE;
-					break;
-				case LC_LEAP:
-					if (name != leapsec)
-						(void) fprintf(stderr,
-_("%s: Leap line in non leap seconds file %s\n"),
-							progname, name);
-					else	inleap(fields, nfields);
-					wantcont = FALSE;
-					break;
-				default:	/* "cannot happen" */
-					(void) fprintf(stderr,
-_("%s: panic: Invalid l_value %d\n"),
-						progname, lp->l_value);
-					exit(EXIT_FAILURE);
-			}
-		}
-		ifree((char *) fields);
-	}
-	if (ferror(fp)) {
-		(void) fprintf(stderr, _("%s: Error reading %s\n"),
-			progname, filename);
-		exit(EXIT_FAILURE);
-	}
-	if (fp != stdin && fclose(fp)) {
-		const char *e = strerror(errno);
-
-		(void) fprintf(stderr, _("%s: Error closing %s: %s\n"),
-			progname, filename, e);
-		exit(EXIT_FAILURE);
-	}
-	if (wantcont)
-		error(_("expected continuation line not found"));
-}
-
-/*
-** Convert a string of one of the forms
-**	h	-h	hh:mm	-hh:mm	hh:mm:ss	-hh:mm:ss
-** into a number of seconds.
-** A null string maps to zero.
-** Call error with errstring and return zero on errors.
-*/
-
-static long
-gethms(string, errstring, signable)
-const char *		string;
-const char * const	errstring;
-const int		signable;
-{
-	long	hh;
-	int	mm, ss, sign;
-
-	if (string == NULL || *string == '\0')
-		return 0;
-	if (!signable)
-		sign = 1;
-	else if (*string == '-') {
-		sign = -1;
-		++string;
-	} else	sign = 1;
-	if (sscanf(string, scheck(string, "%ld"), &hh) == 1)
-		mm = ss = 0;
-	else if (sscanf(string, scheck(string, "%ld:%d"), &hh, &mm) == 2)
-		ss = 0;
-	else if (sscanf(string, scheck(string, "%ld:%d:%d"),
-		&hh, &mm, &ss) != 3) {
-			error(errstring);
-			return 0;
-	}
-	if (hh < 0 ||
-		mm < 0 || mm >= MINSPERHOUR ||
-		ss < 0 || ss > SECSPERMIN) {
-			error(errstring);
-			return 0;
-	}
-	if (LONG_MAX / SECSPERHOUR < hh) {
-		error(_("time overflow"));
-		return 0;
-	}
-	if (noise && hh == HOURSPERDAY && mm == 0 && ss == 0)
-		warning(_("24:00 not handled by pre-1998 versions of zic"));
-	if (noise && (hh > HOURSPERDAY ||
-		(hh == HOURSPERDAY && (mm != 0 || ss != 0))))
-warning(_("values over 24 hours not handled by pre-2007 versions of zic"));
-	return oadd(eitol(sign) * hh * eitol(SECSPERHOUR),
-		    eitol(sign) * (eitol(mm) * eitol(SECSPERMIN) + eitol(ss)));
-}
-
-static void
-inrule(fields, nfields)
-register char ** const	fields;
-const int		nfields;
-{
-	static struct rule	r;
-
-	if (nfields != RULE_FIELDS) {
-		error(_("wrong number of fields on Rule line"));
-		return;
-	}
-	if (*fields[RF_NAME] == '\0') {
-		error(_("nameless rule"));
-		return;
-	}
-	r.r_filename = filename;
-	r.r_linenum = linenum;
-	r.r_stdoff = gethms(fields[RF_STDOFF], _("invalid saved time"), TRUE);
-	rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR], fields[RF_COMMAND],
-		fields[RF_MONTH], fields[RF_DAY], fields[RF_TOD]);
-	r.r_name = ecpyalloc(fields[RF_NAME]);
-	r.r_abbrvar = ecpyalloc(fields[RF_ABBRVAR]);
-	if (max_abbrvar_len < strlen(r.r_abbrvar))
-		max_abbrvar_len = strlen(r.r_abbrvar);
-	rules = (struct rule *) (void *) erealloc((char *) rules,
-		(int) ((nrules + 1) * sizeof *rules));
-	rules[nrules++] = r;
-}
-
-static int
-inzone(fields, nfields)
-register char ** const	fields;
-const int		nfields;
-{
-	register int	i;
-	static char *	buf;
-
-	if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) {
-		error(_("wrong number of fields on Zone line"));
-		return FALSE;
-	}
-	if (strcmp(fields[ZF_NAME], TZDEFAULT) == 0 && lcltime != NULL) {
-		buf = erealloc(buf, (int) (132 + strlen(TZDEFAULT)));
-		(void) sprintf(buf,
-_("\"Zone %s\" line and -l option are mutually exclusive"),
-			TZDEFAULT);
-		error(buf);
-		return FALSE;
-	}
-	if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) {
-		buf = erealloc(buf, (int) (132 + strlen(TZDEFRULES)));
-		(void) sprintf(buf,
-_("\"Zone %s\" line and -p option are mutually exclusive"),
-			TZDEFRULES);
-		error(buf);
-		return FALSE;
-	}
-	for (i = 0; i < nzones; ++i)
-		if (zones[i].z_name != NULL &&
-			strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) {
-				buf = erealloc(buf, (int) (132 +
-					strlen(fields[ZF_NAME]) +
-					strlen(zones[i].z_filename)));
-				(void) sprintf(buf,
-_("duplicate zone name %s (file \"%s\", line %d)"),
-					fields[ZF_NAME],
-					zones[i].z_filename,
-					zones[i].z_linenum);
-				error(buf);
-				return FALSE;
-		}
-	return inzsub(fields, nfields, FALSE);
-}
-
-static int
-inzcont(fields, nfields)
-register char ** const	fields;
-const int		nfields;
-{
-	if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) {
-		error(_("wrong number of fields on Zone continuation line"));
-		return FALSE;
-	}
-	return inzsub(fields, nfields, TRUE);
-}
-
-static int
-inzsub(fields, nfields, iscont)
-register char ** const	fields;
-const int		nfields;
-const int		iscont;
-{
-	register char *		cp;
-	static struct zone	z;
-	register int		i_gmtoff, i_rule, i_format;
-	register int		i_untilyear, i_untilmonth;
-	register int		i_untilday, i_untiltime;
-	register int		hasuntil;
-
-	if (iscont) {
-		i_gmtoff = ZFC_GMTOFF;
-		i_rule = ZFC_RULE;
-		i_format = ZFC_FORMAT;
-		i_untilyear = ZFC_TILYEAR;
-		i_untilmonth = ZFC_TILMONTH;
-		i_untilday = ZFC_TILDAY;
-		i_untiltime = ZFC_TILTIME;
-		z.z_name = NULL;
-	} else {
-		i_gmtoff = ZF_GMTOFF;
-		i_rule = ZF_RULE;
-		i_format = ZF_FORMAT;
-		i_untilyear = ZF_TILYEAR;
-		i_untilmonth = ZF_TILMONTH;
-		i_untilday = ZF_TILDAY;
-		i_untiltime = ZF_TILTIME;
-		z.z_name = ecpyalloc(fields[ZF_NAME]);
-	}
-	z.z_filename = filename;
-	z.z_linenum = linenum;
-	z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UTC offset"), TRUE);
-	if ((cp = strchr(fields[i_format], '%')) != 0) {
-		if (*++cp != 's' || strchr(cp, '%') != 0) {
-			error(_("invalid abbreviation format"));
-			return FALSE;
-		}
-	}
-	z.z_rule = ecpyalloc(fields[i_rule]);
-	z.z_format = ecpyalloc(fields[i_format]);
-	if (max_format_len < strlen(z.z_format))
-		max_format_len = strlen(z.z_format);
-	hasuntil = nfields > i_untilyear;
-	if (hasuntil) {
-		z.z_untilrule.r_filename = filename;
-		z.z_untilrule.r_linenum = linenum;
-		rulesub(&z.z_untilrule,
-			fields[i_untilyear],
-			"only",
-			"",
-			(nfields > i_untilmonth) ?
-			fields[i_untilmonth] : "Jan",
-			(nfields > i_untilday) ? fields[i_untilday] : "1",
-			(nfields > i_untiltime) ? fields[i_untiltime] : "0");
-		z.z_untiltime = rpytime(&z.z_untilrule,
-			z.z_untilrule.r_loyear);
-		if (iscont && nzones > 0 &&
-			z.z_untiltime > min_time &&
-			z.z_untiltime < max_time &&
-			zones[nzones - 1].z_untiltime > min_time &&
-			zones[nzones - 1].z_untiltime < max_time &&
-			zones[nzones - 1].z_untiltime >= z.z_untiltime) {
-				error(_(
-"Zone continuation line end time is not after end time of previous line"
-					));
-				return FALSE;
-		}
-	}
-	zones = (struct zone *) (void *) erealloc((char *) zones,
-		(int) ((nzones + 1) * sizeof *zones));
-	zones[nzones++] = z;
-	/*
-	** If there was an UNTIL field on this line,
-	** there's more information about the zone on the next line.
-	*/
-	return hasuntil;
-}
-
-static void
-inleap(fields, nfields)
-register char ** const	fields;
-const int		nfields;
-{
-	register const char *		cp;
-	register const struct lookup *	lp;
-	register int			i, j;
-	int				year, month, day;
-	long				dayoff, tod;
-	zic_t				t;
-
-	if (nfields != LEAP_FIELDS) {
-		error(_("wrong number of fields on Leap line"));
-		return;
-	}
-	dayoff = 0;
-	cp = fields[LP_YEAR];
-	if (sscanf(cp, scheck(cp, "%d"), &year) != 1) {
-		/*
-		** Leapin' Lizards!
-		*/
-		error(_("invalid leaping year"));
-		return;
-	}
-	if (!leapseen || leapmaxyear < year)
-		leapmaxyear = year;
-	if (!leapseen || leapminyear > year)
-		leapminyear = year;
-	leapseen = TRUE;
-	j = EPOCH_YEAR;
-	while (j != year) {
-		if (year > j) {
-			i = len_years[isleap(j)];
-			++j;
-		} else {
-			--j;
-			i = -len_years[isleap(j)];
-		}
-		dayoff = oadd(dayoff, eitol(i));
-	}
-	if ((lp = byword(fields[LP_MONTH], mon_names)) == NULL) {
-		error(_("invalid month name"));
-		return;
-	}
-	month = lp->l_value;
-	j = TM_JANUARY;
-	while (j != month) {
-		i = len_months[isleap(year)][j];
-		dayoff = oadd(dayoff, eitol(i));
-		++j;
-	}
-	cp = fields[LP_DAY];
-	if (sscanf(cp, scheck(cp, "%d"), &day) != 1 ||
-		day <= 0 || day > len_months[isleap(year)][month]) {
-			error(_("invalid day of month"));
-			return;
-	}
-	dayoff = oadd(dayoff, eitol(day - 1));
-	if (dayoff < 0 && !TYPE_SIGNED(zic_t)) {
-		error(_("time before zero"));
-		return;
-	}
-	if (dayoff < min_time / SECSPERDAY) {
-		error(_("time too small"));
-		return;
-	}
-	if (dayoff > max_time / SECSPERDAY) {
-		error(_("time too large"));
-		return;
-	}
-	t = (zic_t) dayoff * SECSPERDAY;
-	tod = gethms(fields[LP_TIME], _("invalid time of day"), FALSE);
-	cp = fields[LP_CORR];
-	{
-		register int	positive;
-		int		count;
-
-		if (strcmp(cp, "") == 0) { /* infile() turns "-" into "" */
-			positive = FALSE;
-			count = 1;
-		} else if (strcmp(cp, "--") == 0) {
-			positive = FALSE;
-			count = 2;
-		} else if (strcmp(cp, "+") == 0) {
-			positive = TRUE;
-			count = 1;
-		} else if (strcmp(cp, "++") == 0) {
-			positive = TRUE;
-			count = 2;
-		} else {
-			error(_("illegal CORRECTION field on Leap line"));
-			return;
-		}
-		if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
-			error(_(
-				"illegal Rolling/Stationary field on Leap line"
-				));
-			return;
-		}
-		leapadd(tadd(t, tod), positive, lp->l_value, count);
-	}
-}
-
-static void
-inlink(fields, nfields)
-register char ** const	fields;
-const int		nfields;
-{
-	struct link	l;
-
-	if (nfields != LINK_FIELDS) {
-		error(_("wrong number of fields on Link line"));
-		return;
-	}
-	if (*fields[LF_FROM] == '\0') {
-		error(_("blank FROM field on Link line"));
-		return;
-	}
-	if (*fields[LF_TO] == '\0') {
-		error(_("blank TO field on Link line"));
-		return;
-	}
-	l.l_filename = filename;
-	l.l_linenum = linenum;
-	l.l_from = ecpyalloc(fields[LF_FROM]);
-	l.l_to = ecpyalloc(fields[LF_TO]);
-	links = (struct link *) (void *) erealloc((char *) links,
-		(int) ((nlinks + 1) * sizeof *links));
-	links[nlinks++] = l;
-}
-
-static void
-rulesub(rp, loyearp, hiyearp, typep, monthp, dayp, timep)
-register struct rule * const	rp;
-const char * const		loyearp;
-const char * const		hiyearp;
-const char * const		typep;
-const char * const		monthp;
-const char * const		dayp;
-const char * const		timep;
-{
-	register const struct lookup *	lp;
-	register const char *		cp;
-	register char *			dp;
-	register char *			ep;
-
-	if ((lp = byword(monthp, mon_names)) == NULL) {
-		error(_("invalid month name"));
-		return;
-	}
-	rp->r_month = lp->l_value;
-	rp->r_todisstd = FALSE;
-	rp->r_todisgmt = FALSE;
-	dp = ecpyalloc(timep);
-	if (*dp != '\0') {
-		ep = dp + strlen(dp) - 1;
-		switch (lowerit(*ep)) {
-			case 's':	/* Standard */
-				rp->r_todisstd = TRUE;
-				rp->r_todisgmt = FALSE;
-				*ep = '\0';
-				break;
-			case 'w':	/* Wall */
-				rp->r_todisstd = FALSE;
-				rp->r_todisgmt = FALSE;
-				*ep = '\0';
-				break;
-			case 'g':	/* Greenwich */
-			case 'u':	/* Universal */
-			case 'z':	/* Zulu */
-				rp->r_todisstd = TRUE;
-				rp->r_todisgmt = TRUE;
-				*ep = '\0';
-				break;
-		}
-	}
-	rp->r_tod = gethms(dp, _("invalid time of day"), FALSE);
-	ifree(dp);
-	/*
-	** Year work.
-	*/
-	cp = loyearp;
-	lp = byword(cp, begin_years);
-	rp->r_lowasnum = lp == NULL;
-	if (!rp->r_lowasnum) switch ((int) lp->l_value) {
-		case YR_MINIMUM:
-			rp->r_loyear = INT_MIN;
-			break;
-		case YR_MAXIMUM:
-			rp->r_loyear = INT_MAX;
-			break;
-		default:	/* "cannot happen" */
-			(void) fprintf(stderr,
-				_("%s: panic: Invalid l_value %d\n"),
-				progname, lp->l_value);
-			exit(EXIT_FAILURE);
-	} else if (sscanf(cp, scheck(cp, "%d"), &rp->r_loyear) != 1) {
-		error(_("invalid starting year"));
-		return;
-	}
-	cp = hiyearp;
-	lp = byword(cp, end_years);
-	rp->r_hiwasnum = lp == NULL;
-	if (!rp->r_hiwasnum) switch ((int) lp->l_value) {
-		case YR_MINIMUM:
-			rp->r_hiyear = INT_MIN;
-			break;
-		case YR_MAXIMUM:
-			rp->r_hiyear = INT_MAX;
-			break;
-		case YR_ONLY:
-			rp->r_hiyear = rp->r_loyear;
-			break;
-		default:	/* "cannot happen" */
-			(void) fprintf(stderr,
-				_("%s: panic: Invalid l_value %d\n"),
-				progname, lp->l_value);
-			exit(EXIT_FAILURE);
-	} else if (sscanf(cp, scheck(cp, "%d"), &rp->r_hiyear) != 1) {
-		error(_("invalid ending year"));
-		return;
-	}
-	if (rp->r_loyear > rp->r_hiyear) {
-		error(_("starting year greater than ending year"));
-		return;
-	}
-	if (*typep == '\0')
-		rp->r_yrtype = NULL;
-	else {
-		if (rp->r_loyear == rp->r_hiyear) {
-			error(_("typed single year"));
-			return;
-		}
-		rp->r_yrtype = ecpyalloc(typep);
-	}
-	/*
-	** Day work.
-	** Accept things such as:
-	**	1
-	**	last-Sunday
-	**	Sun<=20
-	**	Sun>=7
-	*/
-	dp = ecpyalloc(dayp);
-	if ((lp = byword(dp, lasts)) != NULL) {
-		rp->r_dycode = DC_DOWLEQ;
-		rp->r_wday = lp->l_value;
-		rp->r_dayofmonth = len_months[1][rp->r_month];
-	} else {
-		if ((ep = strchr(dp, '<')) != 0)
-			rp->r_dycode = DC_DOWLEQ;
-		else if ((ep = strchr(dp, '>')) != 0)
-			rp->r_dycode = DC_DOWGEQ;
-		else {
-			ep = dp;
-			rp->r_dycode = DC_DOM;
-		}
-		if (rp->r_dycode != DC_DOM) {
-			*ep++ = 0;
-			if (*ep++ != '=') {
-				error(_("invalid day of month"));
-				ifree(dp);
-				return;
-			}
-			if ((lp = byword(dp, wday_names)) == NULL) {
-				error(_("invalid weekday name"));
-				ifree(dp);
-				return;
-			}
-			rp->r_wday = lp->l_value;
-		}
-		if (sscanf(ep, scheck(ep, "%d"), &rp->r_dayofmonth) != 1 ||
-			rp->r_dayofmonth <= 0 ||
-			(rp->r_dayofmonth > len_months[1][rp->r_month])) {
-				error(_("invalid day of month"));
-				ifree(dp);
-				return;
-		}
-	}
-	ifree(dp);
-}
-
-static void
-convert(val, buf)
-const long	val;
-char * const	buf;
-{
-	register int	i;
-	register int	shift;
-
-	for (i = 0, shift = 24; i < 4; ++i, shift -= 8)
-		buf[i] = val >> shift;
-}
-
-static void
-convert64(val, buf)
-const zic_t	val;
-char * const	buf;
-{
-	register int	i;
-	register int	shift;
-
-	for (i = 0, shift = 56; i < 8; ++i, shift -= 8)
-		buf[i] = val >> shift;
-}
-
-static void
-puttzcode(val, fp)
-const long	val;
-FILE * const	fp;
-{
-	char	buf[4];
-
-	convert(val, buf);
-	(void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp);
-}
-
-static void
-puttzcode64(val, fp)
-const zic_t	val;
-FILE * const	fp;
-{
-	char	buf[8];
-
-	convert64(val, buf);
-	(void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp);
-}
-
-static int
-atcomp(avp, bvp)
-const void *	avp;
-const void *	bvp;
-{
-	const zic_t	a = ((const struct attype *) avp)->at;
-	const zic_t	b = ((const struct attype *) bvp)->at;
-
-	return (a < b) ? -1 : (a > b);
-}
-
-static int
-is32(x)
-const zic_t	x;
-{
-	return INT32_MIN <= x && x <= INT32_MAX;
-}
-
-static void
-writezone(name, string)
-const char * const	name;
-const char * const	string;
-{
-	register FILE *			fp;
-	register int			i, j;
-	register int			leapcnt32, leapi32;
-	register int			timecnt32, timei32;
-	register int			pass;
-	static char *			fullname;
-	static const struct tzhead	tzh0;
-	static struct tzhead		tzh;
-	zic_t				ats[TZ_MAX_TIMES];
-	unsigned char			types[TZ_MAX_TIMES];
-
-	/*
-	** Sort.
-	*/
-	if (timecnt > 1)
-		(void) qsort((void *) attypes, (size_t) timecnt,
-			(size_t) sizeof *attypes, atcomp);
-	/*
-	** Optimize.
-	*/
-	{
-		int	fromi;
-		int	toi;
-
-		toi = 0;
-		fromi = 0;
-		while (fromi < timecnt && attypes[fromi].at < min_time)
-			++fromi;
-		if (isdsts[0] == 0)
-			while (fromi < timecnt && attypes[fromi].type == 0)
-				++fromi;	/* handled by default rule */
-		for ( ; fromi < timecnt; ++fromi) {
-			if (toi != 0 && ((attypes[fromi].at +
-				gmtoffs[attypes[toi - 1].type]) <=
-				(attypes[toi - 1].at + gmtoffs[toi == 1 ? 0
-				: attypes[toi - 2].type]))) {
-					attypes[toi - 1].type =
-						attypes[fromi].type;
-					continue;
-			}
-			if (toi == 0 ||
-				attypes[toi - 1].type != attypes[fromi].type)
-					attypes[toi++] = attypes[fromi];
-		}
-		timecnt = toi;
-	}
-	/*
-	** Transfer.
-	*/
-	for (i = 0; i < timecnt; ++i) {
-		ats[i] = attypes[i].at;
-		types[i] = attypes[i].type;
-	}
-	/*
-	** Correct for leap seconds.
-	*/
-	for (i = 0; i < timecnt; ++i) {
-		j = leapcnt;
-		while (--j >= 0)
-			if (ats[i] > trans[j] - corr[j]) {
-				ats[i] = tadd(ats[i], corr[j]);
-				break;
-			}
-	}
-	/*
-	** Figure out 32-bit-limited starts and counts.
-	*/
-	timecnt32 = timecnt;
-	timei32 = 0;
-	leapcnt32 = leapcnt;
-	leapi32 = 0;
-	while (timecnt32 > 0 && !is32(ats[timecnt32 - 1]))
-		--timecnt32;
-	while (timecnt32 > 0 && !is32(ats[timei32])) {
-		--timecnt32;
-		++timei32;
-	}
-	while (leapcnt32 > 0 && !is32(trans[leapcnt32 - 1]))
-		--leapcnt32;
-	while (leapcnt32 > 0 && !is32(trans[leapi32])) {
-		--leapcnt32;
-		++leapi32;
-	}
-	fullname = erealloc(fullname,
-		(int) (strlen(directory) + 1 + strlen(name) + 1));
-	(void) sprintf(fullname, "%s/%s", directory, name);
-	/*
-	** Remove old file, if any, to snap links.
-	*/
-	if (!itsdir(fullname) && remove(fullname) != 0 && errno != ENOENT) {
-		const char *e = strerror(errno);
-
-		(void) fprintf(stderr, _("%s: Can't remove %s: %s\n"),
-			progname, fullname, e);
-		exit(EXIT_FAILURE);
-	}
-	if ((fp = fopen(fullname, "wb")) == NULL) {
-		if (mkdirs(fullname) != 0)
-			exit(EXIT_FAILURE);
-		if ((fp = fopen(fullname, "wb")) == NULL) {
-			const char *e = strerror(errno);
-
-			(void) fprintf(stderr, _("%s: Can't create %s: %s\n"),
-				progname, fullname, e);
-			exit(EXIT_FAILURE);
-		}
-	}
-	for (pass = 1; pass <= 2; ++pass) {
-		register int	thistimei, thistimecnt;
-		register int	thisleapi, thisleapcnt;
-		register int	thistimelim, thisleaplim;
-		int		writetype[TZ_MAX_TIMES];
-		int		typemap[TZ_MAX_TYPES];
-		register int	thistypecnt;
-		char		thischars[TZ_MAX_CHARS];
-		char		thischarcnt;
-		int 		indmap[TZ_MAX_CHARS];
-
-		if (pass == 1) {
-			thistimei = timei32;
-			thistimecnt = timecnt32;
-			thisleapi = leapi32;
-			thisleapcnt = leapcnt32;
-		} else {
-			thistimei = 0;
-			thistimecnt = timecnt;
-			thisleapi = 0;
-			thisleapcnt = leapcnt;
-		}
-		thistimelim = thistimei + thistimecnt;
-		thisleaplim = thisleapi + thisleapcnt;
-		for (i = 0; i < typecnt; ++i)
-			writetype[i] = thistimecnt == timecnt;
-		if (thistimecnt == 0) {
-			/*
-			** No transition times fall in the current
-			** (32- or 64-bit) window.
-			*/
-			if (typecnt != 0)
-				writetype[typecnt - 1] = TRUE;
-		} else {
-			for (i = thistimei - 1; i < thistimelim; ++i)
-				if (i >= 0)
-					writetype[types[i]] = TRUE;
-			/*
-			** For America/Godthab and Antarctica/Palmer
-			*/
-			if (thistimei == 0)
-				writetype[0] = TRUE;
-		}
-		thistypecnt = 0;
-		for (i = 0; i < typecnt; ++i)
-			typemap[i] = writetype[i] ?  thistypecnt++ : -1;
-		for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i)
-			indmap[i] = -1;
-		thischarcnt = 0;
-		for (i = 0; i < typecnt; ++i) {
-			register char *	thisabbr;
-
-			if (!writetype[i])
-				continue;
-			if (indmap[abbrinds[i]] >= 0)
-				continue;
-			thisabbr = &chars[abbrinds[i]];
-			for (j = 0; j < thischarcnt; ++j)
-				if (strcmp(&thischars[j], thisabbr) == 0)
-					break;
-			if (j == thischarcnt) {
-				(void) strcpy(&thischars[(int) thischarcnt],
-					thisabbr);
-				thischarcnt += strlen(thisabbr) + 1;
-			}
-			indmap[abbrinds[i]] = j;
-		}
-#define DO(field)	(void) fwrite((void *) tzh.field, \
-				(size_t) sizeof tzh.field, (size_t) 1, fp)
-		tzh = tzh0;
-		(void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
-		tzh.tzh_version[0] = ZIC_VERSION;
-		convert(eitol(thistypecnt), tzh.tzh_ttisgmtcnt);
-		convert(eitol(thistypecnt), tzh.tzh_ttisstdcnt);
-		convert(eitol(thisleapcnt), tzh.tzh_leapcnt);
-		convert(eitol(thistimecnt), tzh.tzh_timecnt);
-		convert(eitol(thistypecnt), tzh.tzh_typecnt);
-		convert(eitol(thischarcnt), tzh.tzh_charcnt);
-		DO(tzh_magic);
-		DO(tzh_version);
-		DO(tzh_reserved);
-		DO(tzh_ttisgmtcnt);
-		DO(tzh_ttisstdcnt);
-		DO(tzh_leapcnt);
-		DO(tzh_timecnt);
-		DO(tzh_typecnt);
-		DO(tzh_charcnt);
-#undef DO
-		for (i = thistimei; i < thistimelim; ++i)
-			if (pass == 1)
-				puttzcode((long) ats[i], fp);
-			else	puttzcode64(ats[i], fp);
-		for (i = thistimei; i < thistimelim; ++i) {
-			unsigned char	uc;
-
-			uc = typemap[types[i]];
-			(void) fwrite((void *) &uc,
-				(size_t) sizeof uc,
-				(size_t) 1,
-				fp);
-		}
-		for (i = 0; i < typecnt; ++i)
-			if (writetype[i]) {
-				puttzcode(gmtoffs[i], fp);
-				(void) putc(isdsts[i], fp);
-				(void) putc((unsigned char) indmap[abbrinds[i]], fp);
-			}
-		if (thischarcnt != 0)
-			(void) fwrite((void *) thischars,
-				(size_t) sizeof thischars[0],
-				(size_t) thischarcnt, fp);
-		for (i = thisleapi; i < thisleaplim; ++i) {
-			register zic_t	todo;
-
-			if (roll[i]) {
-				if (timecnt == 0 || trans[i] < ats[0]) {
-					j = 0;
-					while (isdsts[j])
-						if (++j >= typecnt) {
-							j = 0;
-							break;
-						}
-				} else {
-					j = 1;
-					while (j < timecnt &&
-						trans[i] >= ats[j])
-							++j;
-					j = types[j - 1];
-				}
-				todo = tadd(trans[i], -gmtoffs[j]);
-			} else	todo = trans[i];
-			if (pass == 1)
-				puttzcode((long) todo, fp);
-			else	puttzcode64(todo, fp);
-			puttzcode(corr[i], fp);
-		}
-		for (i = 0; i < typecnt; ++i)
-			if (writetype[i])
-				(void) putc(ttisstds[i], fp);
-		for (i = 0; i < typecnt; ++i)
-			if (writetype[i])
-				(void) putc(ttisgmts[i], fp);
-	}
-	(void) fprintf(fp, "\n%s\n", string);
-	if (ferror(fp) || fclose(fp)) {
-		(void) fprintf(stderr, _("%s: Error writing %s\n"),
-			progname, fullname);
-		exit(EXIT_FAILURE);
-	}
-}
-
-static void
-doabbr(abbr, format, letters, isdst, doquotes)
-char * const		abbr;
-const char * const	format;
-const char * const	letters;
-const int		isdst;
-const int		doquotes;
-{
-	register char *	cp;
-	register char *	slashp;
-	register int	len;
-
-	slashp = strchr(format, '/');
-	if (slashp == NULL) {
-		if (letters == NULL)
-			(void) strcpy(abbr, format);
-		else	(void) sprintf(abbr, format, letters);
-	} else if (isdst) {
-		(void) strcpy(abbr, slashp + 1);
-	} else {
-		if (slashp > format)
-			(void) strncpy(abbr, format,
-				(unsigned) (slashp - format));
-		abbr[slashp - format] = '\0';
-	}
-	if (!doquotes)
-		return;
-	for (cp = abbr; *cp != '\0'; ++cp)
-		if (strchr("ABCDEFGHIJKLMNOPQRSTUVWXYZ", *cp) == NULL &&
-			strchr("abcdefghijklmnopqrstuvwxyz", *cp) == NULL)
-				break;
-	len = strlen(abbr);
-	if (len > 0 && *cp == '\0')
-		return;
-	abbr[len + 2] = '\0';
-	abbr[len + 1] = '>';
-	for ( ; len > 0; --len)
-		abbr[len] = abbr[len - 1];
-	abbr[0] = '<';
-}
-
-static void
-updateminmax(x)
-const int	x;
-{
-	if (min_year > x)
-		min_year = x;
-	if (max_year < x)
-		max_year = x;
-}
-
-static int
-stringoffset(result, offset)
-char *	result;
-long	offset;
-{
-	register int	hours;
-	register int	minutes;
-	register int	seconds;
-
-	result[0] = '\0';
-	if (offset < 0) {
-		(void) strcpy(result, "-");
-		offset = -offset;
-	}
-	seconds = offset % SECSPERMIN;
-	offset /= SECSPERMIN;
-	minutes = offset % MINSPERHOUR;
-	offset /= MINSPERHOUR;
-	hours = offset;
-	if (hours >= HOURSPERDAY) {
-		result[0] = '\0';
-		return -1;
-	}
-	(void) sprintf(end(result), "%d", hours);
-	if (minutes != 0 || seconds != 0) {
-		(void) sprintf(end(result), ":%02d", minutes);
-		if (seconds != 0)
-			(void) sprintf(end(result), ":%02d", seconds);
-	}
-	return 0;
-}
-
-static int
-stringrule(result, rp, dstoff, gmtoff)
-char *				result;
-const struct rule * const	rp;
-const long			dstoff;
-const long			gmtoff;
-{
-	register long	tod;
-
-	result = end(result);
-	if (rp->r_dycode == DC_DOM) {
-		register int	month, total;
-
-		if (rp->r_dayofmonth == 29 && rp->r_month == TM_FEBRUARY)
-			return -1;
-		total = 0;
-		for (month = 0; month < rp->r_month; ++month)
-			total += len_months[0][month];
-		(void) sprintf(result, "J%d", total + rp->r_dayofmonth);
-	} else {
-		register int	week;
-
-		if (rp->r_dycode == DC_DOWGEQ) {
-			week = 1 + rp->r_dayofmonth / DAYSPERWEEK;
-			if ((week - 1) * DAYSPERWEEK + 1 != rp->r_dayofmonth)
-				return -1;
-		} else if (rp->r_dycode == DC_DOWLEQ) {
-			if (rp->r_dayofmonth == len_months[1][rp->r_month])
-				week = 5;
-			else {
-				week = 1 + rp->r_dayofmonth / DAYSPERWEEK;
-				if (week * DAYSPERWEEK - 1 != rp->r_dayofmonth)
-					return -1;
-			}
-		} else	return -1;	/* "cannot happen" */
-		(void) sprintf(result, "M%d.%d.%d",
-			rp->r_month + 1, week, rp->r_wday);
-	}
-	tod = rp->r_tod;
-	if (rp->r_todisgmt)
-		tod += gmtoff;
-	if (rp->r_todisstd && rp->r_stdoff == 0)
-		tod += dstoff;
-	if (tod < 0) {
-		result[0] = '\0';
-		return -1;
-	}
-	if (tod != 2 * SECSPERMIN * MINSPERHOUR) {
-		(void) strcat(result, "/");
-		if (stringoffset(end(result), tod) != 0)
-			return -1;
-	}
-	return 0;
-}
-
-static void
-stringzone(result, zpfirst, zonecount)
-char *				result;
-const struct zone * const	zpfirst;
-const int			zonecount;
-{
-	register const struct zone *	zp;
-	register struct rule *		rp;
-	register struct rule *		stdrp;
-	register struct rule *		dstrp;
-	register int			i;
-	register const char *		abbrvar;
-
-	result[0] = '\0';
-	zp = zpfirst + zonecount - 1;
-	stdrp = dstrp = NULL;
-	for (i = 0; i < zp->z_nrules; ++i) {
-		rp = &zp->z_rules[i];
-		if (rp->r_hiwasnum || rp->r_hiyear != INT_MAX)
-			continue;
-		if (rp->r_yrtype != NULL)
-			continue;
-		if (rp->r_stdoff == 0) {
-			if (stdrp == NULL)
-				stdrp = rp;
-			else	return;
-		} else {
-			if (dstrp == NULL)
-				dstrp = rp;
-			else	return;
-		}
-	}
-	if (stdrp == NULL && dstrp == NULL) {
-		/*
-		** There are no rules running through "max".
-		** Let's find the latest rule.
-		*/
-		for (i = 0; i < zp->z_nrules; ++i) {
-			rp = &zp->z_rules[i];
-			if (stdrp == NULL || rp->r_hiyear > stdrp->r_hiyear ||
-				(rp->r_hiyear == stdrp->r_hiyear &&
-				rp->r_month > stdrp->r_month))
-					stdrp = rp;
-		}
-		if (stdrp != NULL && stdrp->r_stdoff != 0)
-			return;	/* We end up in DST (a POSIX no-no). */
-		/*
-		** Horrid special case: if year is 2037,
-		** presume this is a zone handled on a year-by-year basis;
-		** do not try to apply a rule to the zone.
-		*/
-		if (stdrp != NULL && stdrp->r_hiyear == 2037)
-			return;
-	}
-	if (stdrp == NULL && zp->z_nrules != 0)
-		return;
-	abbrvar = (stdrp == NULL) ? "" : stdrp->r_abbrvar;
-	doabbr(result, zp->z_format, abbrvar, FALSE, TRUE);
-	if (stringoffset(end(result), -zp->z_gmtoff) != 0) {
-		result[0] = '\0';
-		return;
-	}
-	if (dstrp == NULL)
-		return;
-	doabbr(end(result), zp->z_format, dstrp->r_abbrvar, TRUE, TRUE);
-	if (dstrp->r_stdoff != SECSPERMIN * MINSPERHOUR)
-		if (stringoffset(end(result),
-			-(zp->z_gmtoff + dstrp->r_stdoff)) != 0) {
-				result[0] = '\0';
-				return;
-		}
-	(void) strcat(result, ",");
-	if (stringrule(result, dstrp, dstrp->r_stdoff, zp->z_gmtoff) != 0) {
-		result[0] = '\0';
-		return;
-	}
-	(void) strcat(result, ",");
-	if (stringrule(result, stdrp, dstrp->r_stdoff, zp->z_gmtoff) != 0) {
-		result[0] = '\0';
-		return;
-	}
-}
-
-static void
-outzone(zpfirst, zonecount)
-const struct zone * const	zpfirst;
-const int			zonecount;
-{
-	register const struct zone *	zp;
-	register struct rule *		rp;
-	register int			i, j;
-	register int			usestart, useuntil;
-	register zic_t			starttime, untiltime;
-	register long			gmtoff;
-	register long			stdoff;
-	register int			year;
-	register long			startoff;
-	register int			startttisstd;
-	register int			startttisgmt;
-	register int			type;
-	register char *			startbuf;
-	register char *			ab;
-	register char *			envvar;
-	register int			max_abbr_len;
-	register int			max_envvar_len;
-
-	max_abbr_len = 2 + max_format_len + max_abbrvar_len;
-	max_envvar_len = 2 * max_abbr_len + 5 * 9;
-	startbuf = emalloc(max_abbr_len + 1);
-	ab = emalloc(max_abbr_len + 1);
-	envvar = emalloc(max_envvar_len + 1);
-	INITIALIZE(untiltime);
-	INITIALIZE(starttime);
-	/*
-	** Now. . .finally. . .generate some useful data!
-	*/
-	timecnt = 0;
-	typecnt = 0;
-	charcnt = 0;
-	/*
-	** Thanks to Earl Chew
-	** for noting the need to unconditionally initialize startttisstd.
-	*/
-	startttisstd = FALSE;
-	startttisgmt = FALSE;
-	min_year = max_year = EPOCH_YEAR;
-	if (leapseen) {
-		updateminmax(leapminyear);
-		updateminmax(leapmaxyear);
-	}
-	for (i = 0; i < zonecount; ++i) {
-		zp = &zpfirst[i];
-		updateminmax(zp->z_untilrule.r_loyear);
-		for (j = 0; j < zp->z_nrules; ++j) {
-			rp = &zp->z_rules[j];
-			if (rp->r_lowasnum)
-				updateminmax(rp->r_loyear);
-			if (rp->r_hiwasnum)
-				updateminmax(rp->r_hiyear);
-		}
-	}
-	/*
-	** Generate lots of data if a rule can't cover all future times.
-	*/
-	stringzone(envvar, zpfirst, zonecount);
-	if (noise && envvar[0] == '\0') {
-		register char *	wp;
-
-wp = ecpyalloc(_("no POSIX environment variable for zone"));
-		wp = ecatalloc(wp, " ");
-		wp = ecatalloc(wp, zpfirst->z_name);
-		warning(wp);
-		ifree(wp);
-	}
-	if (envvar[0] == '\0') {
-		if (min_year >= INT_MIN + YEARSPERREPEAT)
-			min_year -= YEARSPERREPEAT;
-		else	min_year = INT_MIN;
-		if (max_year <= INT_MAX - YEARSPERREPEAT)
-			max_year += YEARSPERREPEAT;
-		else	max_year = INT_MAX;
-	}
-	/*
-	** For the benefit of older systems, generate data through 2037.
-	*/
-	if (max_year < 2037)
-		max_year = 2037;
-	for (i = 0; i < zonecount; ++i) {
-		/*
-		** A guess that may well be corrected later.
-		*/
-		stdoff = 0;
-		zp = &zpfirst[i];
-		usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
-		useuntil = i < (zonecount - 1);
-		if (useuntil && zp->z_untiltime <= min_time)
-			continue;
-		gmtoff = zp->z_gmtoff;
-		eat(zp->z_filename, zp->z_linenum);
-		*startbuf = '\0';
-		startoff = zp->z_gmtoff;
-		if (zp->z_nrules == 0) {
-			stdoff = zp->z_stdoff;
-			doabbr(startbuf, zp->z_format,
-				(char *) NULL, stdoff != 0, FALSE);
-			type = addtype(oadd(zp->z_gmtoff, stdoff),
-				startbuf, stdoff != 0, startttisstd,
-				startttisgmt);
-			if (usestart) {
-				addtt(starttime, type);
-				usestart = FALSE;
-			} else if (stdoff != 0)
-				addtt(min_time, type);
-		} else for (year = min_year; year <= max_year; ++year) {
-			if (useuntil && year > zp->z_untilrule.r_hiyear)
-				break;
-			/*
-			** Mark which rules to do in the current year.
-			** For those to do, calculate rpytime(rp, year);
-			*/
-			for (j = 0; j < zp->z_nrules; ++j) {
-				rp = &zp->z_rules[j];
-				eats(zp->z_filename, zp->z_linenum,
-					rp->r_filename, rp->r_linenum);
-				rp->r_todo = year >= rp->r_loyear &&
-						year <= rp->r_hiyear &&
-						yearistype(year, rp->r_yrtype);
-				if (rp->r_todo)
-					rp->r_temp = rpytime(rp, year);
-			}
-			for ( ; ; ) {
-				register int	k;
-				register zic_t	jtime, ktime;
-				register long	offset;
-
-				INITIALIZE(ktime);
-				if (useuntil) {
-					/*
-					** Turn untiltime into UTC
-					** assuming the current gmtoff and
-					** stdoff values.
-					*/
-					untiltime = zp->z_untiltime;
-					if (!zp->z_untilrule.r_todisgmt)
-						untiltime = tadd(untiltime,
-							-gmtoff);
-					if (!zp->z_untilrule.r_todisstd)
-						untiltime = tadd(untiltime,
-							-stdoff);
-				}
-				/*
-				** Find the rule (of those to do, if any)
-				** that takes effect earliest in the year.
-				*/
-				k = -1;
-				for (j = 0; j < zp->z_nrules; ++j) {
-					rp = &zp->z_rules[j];
-					if (!rp->r_todo)
-						continue;
-					eats(zp->z_filename, zp->z_linenum,
-						rp->r_filename, rp->r_linenum);
-					offset = rp->r_todisgmt ? 0 : gmtoff;
-					if (!rp->r_todisstd)
-						offset = oadd(offset, stdoff);
-					jtime = rp->r_temp;
-					if (jtime == min_time ||
-						jtime == max_time)
-							continue;
-					jtime = tadd(jtime, -offset);
-					if (k < 0 || jtime < ktime) {
-						k = j;
-						ktime = jtime;
-					}
-				}
-				if (k < 0)
-					break;	/* go on to next year */
-				rp = &zp->z_rules[k];
-				rp->r_todo = FALSE;
-				if (useuntil && ktime >= untiltime)
-					break;
-				stdoff = rp->r_stdoff;
-				if (usestart && ktime == starttime)
-					usestart = FALSE;
-				if (usestart) {
-					if (ktime < starttime) {
-						startoff = oadd(zp->z_gmtoff,
-							stdoff);
-						doabbr(startbuf, zp->z_format,
-							rp->r_abbrvar,
-							rp->r_stdoff != 0,
-							FALSE);
-						continue;
-					}
-					if (*startbuf == '\0' &&
-						startoff == oadd(zp->z_gmtoff,
-						stdoff)) {
-							doabbr(startbuf,
-								zp->z_format,
-								rp->r_abbrvar,
-								rp->r_stdoff !=
-								0,
-								FALSE);
-					}
-				}
-				eats(zp->z_filename, zp->z_linenum,
-					rp->r_filename, rp->r_linenum);
-				doabbr(ab, zp->z_format, rp->r_abbrvar,
-					rp->r_stdoff != 0, FALSE);
-				offset = oadd(zp->z_gmtoff, rp->r_stdoff);
-				type = addtype(offset, ab, rp->r_stdoff != 0,
-					rp->r_todisstd, rp->r_todisgmt);
-				addtt(ktime, type);
-			}
-		}
-		if (usestart) {
-			if (*startbuf == '\0' &&
-				zp->z_format != NULL &&
-				strchr(zp->z_format, '%') == NULL &&
-				strchr(zp->z_format, '/') == NULL)
-					(void) strcpy(startbuf, zp->z_format);
-			eat(zp->z_filename, zp->z_linenum);
-			if (*startbuf == '\0')
-error(_("can't determine time zone abbreviation to use just after until time"));
-			else	addtt(starttime,
-					addtype(startoff, startbuf,
-						startoff != zp->z_gmtoff,
-						startttisstd,
-						startttisgmt));
-		}
-		/*
-		** Now we may get to set starttime for the next zone line.
-		*/
-		if (useuntil) {
-			startttisstd = zp->z_untilrule.r_todisstd;
-			startttisgmt = zp->z_untilrule.r_todisgmt;
-			starttime = zp->z_untiltime;
-			if (!startttisstd)
-				starttime = tadd(starttime, -stdoff);
-			if (!startttisgmt)
-				starttime = tadd(starttime, -gmtoff);
-		}
-	}
-	writezone(zpfirst->z_name, envvar);
-	ifree(startbuf);
-	ifree(ab);
-	ifree(envvar);
-}
-
-static void
-addtt(starttime, type)
-const zic_t	starttime;
-int		type;
-{
-	if (starttime <= min_time ||
-		(timecnt == 1 && attypes[0].at < min_time)) {
-		gmtoffs[0] = gmtoffs[type];
-		isdsts[0] = isdsts[type];
-		ttisstds[0] = ttisstds[type];
-		ttisgmts[0] = ttisgmts[type];
-		if (abbrinds[type] != 0)
-			(void) strcpy(chars, &chars[abbrinds[type]]);
-		abbrinds[0] = 0;
-		charcnt = strlen(chars) + 1;
-		typecnt = 1;
-		timecnt = 0;
-		type = 0;
-	}
-	if (timecnt >= TZ_MAX_TIMES) {
-		error(_("too many transitions?!"));
-		exit(EXIT_FAILURE);
-	}
-	attypes[timecnt].at = starttime;
-	attypes[timecnt].type = type;
-	++timecnt;
-}
-
-static int
-addtype(gmtoff, abbr, isdst, ttisstd, ttisgmt)
-const long		gmtoff;
-const char * const	abbr;
-const int		isdst;
-const int		ttisstd;
-const int		ttisgmt;
-{
-	register int	i, j;
-
-	if (isdst != TRUE && isdst != FALSE) {
-		error(_("internal error - addtype called with bad isdst"));
-		exit(EXIT_FAILURE);
-	}
-	if (ttisstd != TRUE && ttisstd != FALSE) {
-		error(_("internal error - addtype called with bad ttisstd"));
-		exit(EXIT_FAILURE);
-	}
-	if (ttisgmt != TRUE && ttisgmt != FALSE) {
-		error(_("internal error - addtype called with bad ttisgmt"));
-		exit(EXIT_FAILURE);
-	}
-	/*
-	** See if there's already an entry for this zone type.
-	** If so, just return its index.
-	*/
-	for (i = 0; i < typecnt; ++i) {
-		if (gmtoff == gmtoffs[i] && isdst == isdsts[i] &&
-			strcmp(abbr, &chars[abbrinds[i]]) == 0 &&
-			ttisstd == ttisstds[i] &&
-			ttisgmt == ttisgmts[i])
-				return i;
-	}
-	/*
-	** There isn't one; add a new one, unless there are already too
-	** many.
-	*/
-	if (typecnt >= TZ_MAX_TYPES) {
-		error(_("too many local time types"));
-		exit(EXIT_FAILURE);
-	}
-	if (! (-1L - 2147483647L <= gmtoff && gmtoff <= 2147483647L)) {
-		error(_("UTC offset out of range"));
-		exit(EXIT_FAILURE);
-	}
-	gmtoffs[i] = gmtoff;
-	isdsts[i] = isdst;
-	ttisstds[i] = ttisstd;
-	ttisgmts[i] = ttisgmt;
-
-	for (j = 0; j < charcnt; ++j)
-		if (strcmp(&chars[j], abbr) == 0)
-			break;
-	if (j == charcnt)
-		newabbr(abbr);
-	abbrinds[i] = j;
-	++typecnt;
-	return i;
-}
-
-static void
-leapadd(t, positive, rolling, count)
-const zic_t	t;
-const int	positive;
-const int	rolling;
-int		count;
-{
-	register int	i, j;
-
-	if (leapcnt + (positive ? count : 1) > TZ_MAX_LEAPS) {
-		error(_("too many leap seconds"));
-		exit(EXIT_FAILURE);
-	}
-	for (i = 0; i < leapcnt; ++i)
-		if (t <= trans[i]) {
-			if (t == trans[i]) {
-				error(_("repeated leap second moment"));
-				exit(EXIT_FAILURE);
-			}
-			break;
-		}
-	do {
-		for (j = leapcnt; j > i; --j) {
-			trans[j] = trans[j - 1];
-			corr[j] = corr[j - 1];
-			roll[j] = roll[j - 1];
-		}
-		trans[i] = t;
-		corr[i] = positive ? 1L : eitol(-count);
-		roll[i] = rolling;
-		++leapcnt;
-	} while (positive && --count != 0);
-}
-
-static void
-adjleap P((void))
-{
-	register int	i;
-	register long	last = 0;
-
-	/*
-	** propagate leap seconds forward
-	*/
-	for (i = 0; i < leapcnt; ++i) {
-		trans[i] = tadd(trans[i], last);
-		last = corr[i] += last;
-	}
-}
-
-static int
-yearistype(year, type)
-const int		year;
-const char * const	type;
-{
-	static char *	buf;
-	int		result;
-
-	if (type == NULL || *type == '\0')
-		return TRUE;
-	buf = erealloc(buf, (int) (132 + strlen(yitcommand) + strlen(type)));
-	(void) sprintf(buf, "%s %d %s", yitcommand, year, type);
-	result = system(buf);
-	if (WIFEXITED(result)) switch (WEXITSTATUS(result)) {
-		case 0:
-			return TRUE;
-		case 1:
-			return FALSE;
-	}
-	error(_("Wild result from command execution"));
-	(void) fprintf(stderr, _("%s: command was '%s', result was %d\n"),
-		progname, buf, result);
-	for ( ; ; )
-		exit(EXIT_FAILURE);
-}
-
-static int
-lowerit(a)
-int	a;
-{
-	a = (unsigned char) a;
-	return (isascii(a) && isupper(a)) ? tolower(a) : a;
-}
-
-static int
-ciequal(ap, bp)		/* case-insensitive equality */
-register const char *	ap;
-register const char *	bp;
-{
-	while (lowerit(*ap) == lowerit(*bp++))
-		if (*ap++ == '\0')
-			return TRUE;
-	return FALSE;
-}
-
-static int
-itsabbr(abbr, word)
-register const char *	abbr;
-register const char *	word;
-{
-	if (lowerit(*abbr) != lowerit(*word))
-		return FALSE;
-	++word;
-	while (*++abbr != '\0')
-		do {
-			if (*word == '\0')
-				return FALSE;
-		} while (lowerit(*word++) != lowerit(*abbr));
-	return TRUE;
-}
-
-static const struct lookup *
-byword(word, table)
-register const char * const		word;
-register const struct lookup * const	table;
-{
-	register const struct lookup *	foundlp;
-	register const struct lookup *	lp;
-
-	if (word == NULL || table == NULL)
-		return NULL;
-	/*
-	** Look for exact match.
-	*/
-	for (lp = table; lp->l_word != NULL; ++lp)
-		if (ciequal(word, lp->l_word))
-			return lp;
-	/*
-	** Look for inexact match.
-	*/
-	foundlp = NULL;
-	for (lp = table; lp->l_word != NULL; ++lp)
-		if (itsabbr(word, lp->l_word)) {
-			if (foundlp == NULL)
-				foundlp = lp;
-			else	return NULL;	/* multiple inexact matches */
-		}
-	return foundlp;
-}
-
-static char **
-getfields(cp)
-register char *	cp;
-{
-	register char *		dp;
-	register char **	array;
-	register int		nsubs;
-
-	if (cp == NULL)
-		return NULL;
-	array = (char **) (void *)
-		emalloc((int) ((strlen(cp) + 1) * sizeof *array));
-	nsubs = 0;
-	for ( ; ; ) {
-		while (isascii((unsigned char) *cp) &&
-			isspace((unsigned char) *cp))
-				++cp;
-		if (*cp == '\0' || *cp == '#')
-			break;
-		array[nsubs++] = dp = cp;
-		do {
-			if ((*dp = *cp++) != '"')
-				++dp;
-			else while ((*dp = *cp++) != '"')
-				if (*dp != '\0')
-					++dp;
-				else {
-					error(_(
-						"Odd number of quotation marks"
-						));
-					exit(1);
-				}
-		} while (*cp != '\0' && *cp != '#' &&
-			(!isascii(*cp) || !isspace((unsigned char) *cp)));
-		if (isascii(*cp) && isspace((unsigned char) *cp))
-			++cp;
-		*dp = '\0';
-	}
-	array[nsubs] = NULL;
-	return array;
-}
-
-static long
-oadd(t1, t2)
-const long	t1;
-const long	t2;
-{
-	register long	t;
-
-	t = t1 + t2;
-	if ((t2 > 0 && t <= t1) || (t2 < 0 && t >= t1)) {
-		error(_("time overflow"));
-		exit(EXIT_FAILURE);
-	}
-	return t;
-}
-
-static zic_t
-tadd(t1, t2)
-const zic_t	t1;
-const long	t2;
-{
-	register zic_t	t;
-
-	if (t1 == max_time && t2 > 0)
-		return max_time;
-	if (t1 == min_time && t2 < 0)
-		return min_time;
-	t = t1 + t2;
-	if ((t2 > 0 && t <= t1) || (t2 < 0 && t >= t1)) {
-		error(_("time overflow"));
-		exit(EXIT_FAILURE);
-	}
-	return t;
-}
-
-/*
-** Given a rule, and a year, compute the date - in seconds since January 1,
-** 1970, 00:00 LOCAL time - in that year that the rule refers to.
-*/
-
-static zic_t
-rpytime(rp, wantedy)
-register const struct rule * const	rp;
-register const int			wantedy;
-{
-	register int	y, m, i;
-	register long	dayoff;			/* with a nod to Margaret O. */
-	register zic_t	t;
-
-	if (wantedy == INT_MIN)
-		return min_time;
-	if (wantedy == INT_MAX)
-		return max_time;
-	dayoff = 0;
-	m = TM_JANUARY;
-	y = EPOCH_YEAR;
-	while (wantedy != y) {
-		if (wantedy > y) {
-			i = len_years[isleap(y)];
-			++y;
-		} else {
-			--y;
-			i = -len_years[isleap(y)];
-		}
-		dayoff = oadd(dayoff, eitol(i));
-	}
-	while (m != rp->r_month) {
-		i = len_months[isleap(y)][m];
-		dayoff = oadd(dayoff, eitol(i));
-		++m;
-	}
-	i = rp->r_dayofmonth;
-	if (m == TM_FEBRUARY && i == 29 && !isleap(y)) {
-		if (rp->r_dycode == DC_DOWLEQ)
-			--i;
-		else {
-			error(_("use of 2/29 in non leap-year"));
-			exit(EXIT_FAILURE);
-		}
-	}
-	--i;
-	dayoff = oadd(dayoff, eitol(i));
-	if (rp->r_dycode == DC_DOWGEQ || rp->r_dycode == DC_DOWLEQ) {
-		register long	wday;
-
-#define LDAYSPERWEEK	((long) DAYSPERWEEK)
-		wday = eitol(EPOCH_WDAY);
-		/*
-		** Don't trust mod of negative numbers.
-		*/
-		if (dayoff >= 0)
-			wday = (wday + dayoff) % LDAYSPERWEEK;
-		else {
-			wday -= ((-dayoff) % LDAYSPERWEEK);
-			if (wday < 0)
-				wday += LDAYSPERWEEK;
-		}
-		while (wday != eitol(rp->r_wday))
-			if (rp->r_dycode == DC_DOWGEQ) {
-				dayoff = oadd(dayoff, (long) 1);
-				if (++wday >= LDAYSPERWEEK)
-					wday = 0;
-				++i;
-			} else {
-				dayoff = oadd(dayoff, (long) -1);
-				if (--wday < 0)
-					wday = LDAYSPERWEEK - 1;
-				--i;
-			}
-		if (i < 0 || i >= len_months[isleap(y)][m]) {
-			if (noise)
-				warning(_("rule goes past start/end of month--\
-will not work with pre-2004 versions of zic"));
-		}
-	}
-	if (dayoff < min_time / SECSPERDAY)
-		return min_time;
-	if (dayoff > max_time / SECSPERDAY)
-		return max_time;
-	t = (zic_t) dayoff * SECSPERDAY;
-	return tadd(t, rp->r_tod);
-}
-
-static void
-newabbr(string)
-const char * const	string;
-{
-	register int	i;
-
-	if (strcmp(string, GRANDPARENTED) != 0) {
-		register const char *	cp;
-		register char *		wp;
-
-		/*
-		** Want one to ZIC_MAX_ABBR_LEN_WO_WARN alphabetics
-		** optionally followed by a + or - and a number from 1 to 14.
-		*/
-		cp = string;
-		wp = NULL;
-		while (isascii((unsigned char) *cp) &&
-			isalpha((unsigned char) *cp))
-				++cp;
-		if (cp - string == 0)
-wp = _("time zone abbreviation lacks alphabetic at start");
-		if (noise && cp - string > 3)
-wp = _("time zone abbreviation has more than 3 alphabetics");
-		if (cp - string > ZIC_MAX_ABBR_LEN_WO_WARN)
-wp = _("time zone abbreviation has too many alphabetics");
-		if (wp == NULL && (*cp == '+' || *cp == '-')) {
-			++cp;
-			if (isascii((unsigned char) *cp) &&
-				isdigit((unsigned char) *cp))
-					if (*cp++ == '1' &&
-						*cp >= '0' && *cp <= '4')
-							++cp;
-		}
-		if (*cp != '\0')
-wp = _("time zone abbreviation differs from POSIX standard");
-		if (wp != NULL) {
-			wp = ecpyalloc(wp);
-			wp = ecatalloc(wp, " (");
-			wp = ecatalloc(wp, string);
-			wp = ecatalloc(wp, ")");
-			warning(wp);
-			ifree(wp);
-		}
-	}
-	i = strlen(string) + 1;
-	if (charcnt + i > TZ_MAX_CHARS) {
-		error(_("too many, or too long, time zone abbreviations"));
-		exit(EXIT_FAILURE);
-	}
-	(void) strcpy(&chars[charcnt], string);
-	charcnt += eitol(i);
-}
-
-static int
-mkdirs(argname)
-char *		argname;
-{
-	register char *	name;
-	register char *	cp;
-
-	if (argname == NULL || *argname == '\0')
-		return 0;
-	cp = name = ecpyalloc(argname);
-	while ((cp = strchr(cp + 1, '/')) != 0) {
-		*cp = '\0';
-#ifndef unix
-		/*
-		** DOS drive specifier?
-		*/
-		if (isalpha((unsigned char) name[0]) &&
-			name[1] == ':' && name[2] == '\0') {
-				*cp = '/';
-				continue;
-		}
-#endif /* !defined unix */
-		if (!itsdir(name)) {
-			/*
-			** It doesn't seem to exist, so we try to create it.
-			** Creation may fail because of the directory being
-			** created by some other multiprocessor, so we get
-			** to do extra checking.
-			*/
-			if (mkdir(name, MKDIR_UMASK) != 0) {
-				const char *e = strerror(errno);
-
-				if (errno != EEXIST || !itsdir(name)) {
-					(void) fprintf(stderr,
-_("%s: Can't create directory %s: %s\n"),
-						progname, name, e);
-					ifree(name);
-					return -1;
-				}
-			}
-		}
-		*cp = '/';
-	}
-	ifree(name);
-	return 0;
-}
-
-static long
-eitol(i)
-const int	i;
-{
-	long	l;
-
-	l = i;
-	if ((i < 0 && l >= 0) || (i == 0 && l != 0) || (i > 0 && l <= 0)) {
-		(void) fprintf(stderr,
-			_("%s: %d did not sign extend correctly\n"),
-			progname, i);
-		exit(EXIT_FAILURE);
-	}
-	return l;
-}
-
-/*
-** UNIX was a registered trademark of The Open Group in 2003.
-*/
diff --git a/bin/glibc-2.7/timezone/zone.tab b/bin/glibc-2.7/timezone/zone.tab
deleted file mode 100644
index 8d4333ad..00000000
--- a/bin/glibc-2.7/timezone/zone.tab
+++ /dev/null
@@ -1,421 +0,0 @@
-# @(#)zone.tab	8.11
-#
-# TZ zone descriptions
-#
-# From Paul Eggert (1996-08-05):
-#
-# This file contains a table with the following columns:
-# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
-# 2.  Latitude and longitude of the zone's principal location
-#     in ISO 6709 sign-degrees-minutes-seconds format,
-#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
-#     first latitude (+ is north), then longitude (+ is east).
-# 3.  Zone name used in value of TZ environment variable.
-# 4.  Comments; present if and only if the country has multiple rows.
-#
-# Columns are separated by a single tab.
-# The table is sorted first by country, then an order within the country that
-# (1) makes some geographical sense, and
-# (2) puts the most populous zones first, where that does not contradict (1).
-#
-# Lines beginning with `#' are comments.
-#
-#country-
-#code	coordinates	TZ			comments
-AD	+4230+00131	Europe/Andorra
-AE	+2518+05518	Asia/Dubai
-AF	+3431+06912	Asia/Kabul
-AG	+1703-06148	America/Antigua
-AI	+1812-06304	America/Anguilla
-AL	+4120+01950	Europe/Tirane
-AM	+4011+04430	Asia/Yerevan
-AN	+1211-06900	America/Curacao
-AO	-0848+01314	Africa/Luanda
-AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
-AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
-AQ	-6734-06808	Antarctica/Rothera	Rothera Station, Adelaide Island
-AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island
-AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
-AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills
-AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
-AQ	-7824+10654	Antarctica/Vostok	Vostok Station, S Magnetic Pole
-AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
-AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
-AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
-AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, LP, MN, NQ, RN, SA, SE, SF, SL)
-AR	-2411-06518	America/Argentina/Jujuy	Jujuy (JY)
-AR	-2649-06513	America/Argentina/Tucuman	Tucuman (TM)
-AR	-2828-06547	America/Argentina/Catamarca	Catamarca (CT), Chubut (CH)
-AR	-2926-06651	America/Argentina/La_Rioja	La Rioja (LR)
-AR	-3132-06831	America/Argentina/San_Juan	San Juan (SJ)
-AR	-3253-06849	America/Argentina/Mendoza	Mendoza (MZ)
-AR	-5138-06913	America/Argentina/Rio_Gallegos	Santa Cruz (SC)
-AR	-5448-06818	America/Argentina/Ushuaia	Tierra del Fuego (TF)
-AS	-1416-17042	Pacific/Pago_Pago
-AT	+4813+01620	Europe/Vienna
-AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island
-AU	-4253+14719	Australia/Hobart	Tasmania - most locations
-AU	-3956+14352	Australia/Currie	Tasmania - King Island
-AU	-3749+14458	Australia/Melbourne	Victoria
-AU	-3352+15113	Australia/Sydney	New South Wales - most locations
-AU	-3157+14127	Australia/Broken_Hill	New South Wales - Yancowinna
-AU	-2728+15302	Australia/Brisbane	Queensland - most locations
-AU	-2016+14900	Australia/Lindeman	Queensland - Holiday Islands
-AU	-3455+13835	Australia/Adelaide	South Australia
-AU	-1228+13050	Australia/Darwin	Northern Territory
-AU	-3157+11551	Australia/Perth	Western Australia - most locations
-AU	-3143+12852	Australia/Eucla	Western Australia - Eucla area
-AW	+1230-06958	America/Aruba
-AX	+6006+01957	Europe/Mariehamn
-AZ	+4023+04951	Asia/Baku
-BA	+4352+01825	Europe/Sarajevo
-BB	+1306-05937	America/Barbados
-BD	+2343+09025	Asia/Dhaka
-BE	+5050+00420	Europe/Brussels
-BF	+1222-00131	Africa/Ouagadougou
-BG	+4241+02319	Europe/Sofia
-BH	+2623+05035	Asia/Bahrain
-BI	-0323+02922	Africa/Bujumbura
-BJ	+0629+00237	Africa/Porto-Novo
-BM	+3217-06446	Atlantic/Bermuda
-BN	+0456+11455	Asia/Brunei
-BO	-1630-06809	America/La_Paz
-BR	-0351-03225	America/Noronha	Atlantic islands
-BR	-0127-04829	America/Belem	Amapa, E Para
-BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)
-BR	-0803-03454	America/Recife	Pernambuco
-BR	-0712-04812	America/Araguaina	Tocantins
-BR	-0940-03543	America/Maceio	Alagoas, Sergipe
-BR	-1259-03831	America/Bahia	Bahia
-BR	-2332-04637	America/Sao_Paulo	S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
-BR	-2027-05437	America/Campo_Grande	Mato Grosso do Sul
-BR	-1535-05605	America/Cuiaba	Mato Grosso
-BR	-0846-06354	America/Porto_Velho	W Para, Rondonia
-BR	+0249-06040	America/Boa_Vista	Roraima
-BR	-0308-06001	America/Manaus	E Amazonas
-BR	-0640-06952	America/Eirunepe	W Amazonas
-BR	-0958-06748	America/Rio_Branco	Acre
-BS	+2505-07721	America/Nassau
-BT	+2728+08939	Asia/Thimphu
-BW	-2545+02555	Africa/Gaborone
-BY	+5354+02734	Europe/Minsk
-BZ	+1730-08812	America/Belize
-CA	+4734-05243	America/St_Johns	Newfoundland Time, including SE Labrador
-CA	+4439-06336	America/Halifax	Atlantic Time - Nova Scotia (most places), PEI
-CA	+4612-05957	America/Glace_Bay	Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
-CA	+4606-06447	America/Moncton	Atlantic Time - New Brunswick
-CA	+5320-06025	America/Goose_Bay	Atlantic Time - Labrador - most locations
-CA	+5125-05707	America/Blanc-Sablon	Atlantic Standard Time - Quebec - Lower North Shore
-CA	+4531-07334	America/Montreal	Eastern Time - Quebec - most locations
-CA	+4339-07923	America/Toronto	Eastern Time - Ontario - most locations
-CA	+4901-08816	America/Nipigon	Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
-CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
-CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
-CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
-CA	+744144-0944945	America/Resolute	Eastern Time - Resolute, Nunavut
-CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
-CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
-CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
-CA	+4843-09434	America/Rainy_River	Central Time - Rainy River & Fort Frances, Ontario
-CA	+5024-10439	America/Regina	Central Standard Time - Saskatchewan - most locations
-CA	+5017-10750	America/Swift_Current	Central Standard Time - Saskatchewan - midwest
-CA	+5333-11328	America/Edmonton	Mountain Time - Alberta, east British Columbia & west Saskatchewan
-CA	+690650-1050310	America/Cambridge_Bay	Mountain Time - west Nunavut
-CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories
-CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories
-CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
-CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia
-CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon
-CA	+6404-13925	America/Dawson	Pacific Time - north Yukon
-CC	-1210+09655	Indian/Cocos
-CD	-0418+01518	Africa/Kinshasa	west Dem. Rep. of Congo
-CD	-1140+02728	Africa/Lubumbashi	east Dem. Rep. of Congo
-CF	+0422+01835	Africa/Bangui
-CG	-0416+01517	Africa/Brazzaville
-CH	+4723+00832	Europe/Zurich
-CI	+0519-00402	Africa/Abidjan
-CK	-2114-15946	Pacific/Rarotonga
-CL	-3327-07040	America/Santiago	most locations
-CL	-2709-10926	Pacific/Easter	Easter Island & Sala y Gomez
-CM	+0403+00942	Africa/Douala
-CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.
-CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin
-CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
-CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang
-CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang
-CO	+0436-07405	America/Bogota
-CR	+0956-08405	America/Costa_Rica
-CU	+2308-08222	America/Havana
-CV	+1455-02331	Atlantic/Cape_Verde
-CX	-1025+10543	Indian/Christmas
-CY	+3510+03322	Asia/Nicosia
-CZ	+5005+01426	Europe/Prague
-DE	+5230+01322	Europe/Berlin
-DJ	+1136+04309	Africa/Djibouti
-DK	+5540+01235	Europe/Copenhagen
-DM	+1518-06124	America/Dominica
-DO	+1828-06954	America/Santo_Domingo
-DZ	+3647+00303	Africa/Algiers
-EC	-0210-07950	America/Guayaquil	mainland
-EC	-0054-08936	Pacific/Galapagos	Galapagos Islands
-EE	+5925+02445	Europe/Tallinn
-EG	+3003+03115	Africa/Cairo
-EH	+2709-01312	Africa/El_Aaiun
-ER	+1520+03853	Africa/Asmara
-ES	+4024-00341	Europe/Madrid	mainland
-ES	+3553-00519	Africa/Ceuta	Ceuta & Melilla
-ES	+2806-01524	Atlantic/Canary	Canary Islands
-ET	+0902+03842	Africa/Addis_Ababa
-FI	+6010+02458	Europe/Helsinki
-FJ	-1808+17825	Pacific/Fiji
-FK	-5142-05751	Atlantic/Stanley
-FM	+0725+15147	Pacific/Truk	Truk (Chuuk) and Yap
-FM	+0658+15813	Pacific/Ponape	Ponape (Pohnpei)
-FM	+0519+16259	Pacific/Kosrae	Kosrae
-FO	+6201-00646	Atlantic/Faroe
-FR	+4852+00220	Europe/Paris
-GA	+0023+00927	Africa/Libreville
-GB	+513030-0000731	Europe/London
-GD	+1203-06145	America/Grenada
-GE	+4143+04449	Asia/Tbilisi
-GF	+0456-05220	America/Cayenne
-GG	+4927-00232	Europe/Guernsey
-GH	+0533-00013	Africa/Accra
-GI	+3608-00521	Europe/Gibraltar
-GL	+6411-05144	America/Godthab	most locations
-GL	+7646-01840	America/Danmarkshavn	east coast, north of Scoresbysund
-GL	+7029-02158	America/Scoresbysund	Scoresbysund / Ittoqqortoormiit
-GL	+7634-06847	America/Thule	Thule / Pituffik
-GM	+1328-01639	Africa/Banjul
-GN	+0931-01343	Africa/Conakry
-GP	+1614-06132	America/Guadeloupe
-GQ	+0345+00847	Africa/Malabo
-GR	+3758+02343	Europe/Athens
-GS	-5416-03632	Atlantic/South_Georgia
-GT	+1438-09031	America/Guatemala
-GU	+1328+14445	Pacific/Guam
-GW	+1151-01535	Africa/Bissau
-GY	+0648-05810	America/Guyana
-HK	+2217+11409	Asia/Hong_Kong
-HN	+1406-08713	America/Tegucigalpa
-HR	+4548+01558	Europe/Zagreb
-HT	+1832-07220	America/Port-au-Prince
-HU	+4730+01905	Europe/Budapest
-ID	-0610+10648	Asia/Jakarta	Java & Sumatra
-ID	-0002+10920	Asia/Pontianak	west & central Borneo
-ID	-0507+11924	Asia/Makassar	east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
-ID	-0232+14042	Asia/Jayapura	Irian Jaya & the Moluccas
-IE	+5320-00615	Europe/Dublin
-IL	+3146+03514	Asia/Jerusalem
-IM	+5409-00428	Europe/Isle_of_Man
-IN	+2232+08822	Asia/Calcutta
-IO	-0720+07225	Indian/Chagos
-IQ	+3321+04425	Asia/Baghdad
-IR	+3540+05126	Asia/Tehran
-IS	+6409-02151	Atlantic/Reykjavik
-IT	+4154+01229	Europe/Rome
-JE	+4912-00207	Europe/Jersey
-JM	+1800-07648	America/Jamaica
-JO	+3157+03556	Asia/Amman
-JP	+353916+1394441	Asia/Tokyo
-KE	-0117+03649	Africa/Nairobi
-KG	+4254+07436	Asia/Bishkek
-KH	+1133+10455	Asia/Phnom_Penh
-KI	+0125+17300	Pacific/Tarawa	Gilbert Islands
-KI	-0308-17105	Pacific/Enderbury	Phoenix Islands
-KI	+0152-15720	Pacific/Kiritimati	Line Islands
-KM	-1141+04316	Indian/Comoro
-KN	+1718-06243	America/St_Kitts
-KP	+3901+12545	Asia/Pyongyang
-KR	+3733+12658	Asia/Seoul
-KW	+2920+04759	Asia/Kuwait
-KY	+1918-08123	America/Cayman
-KZ	+4315+07657	Asia/Almaty	most locations
-KZ	+4448+06528	Asia/Qyzylorda	Qyzylorda (Kyzylorda, Kzyl-Orda)
-KZ	+5017+05710	Asia/Aqtobe	Aqtobe (Aktobe)
-KZ	+4431+05016	Asia/Aqtau	Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
-KZ	+5113+05121	Asia/Oral	West Kazakhstan
-LA	+1758+10236	Asia/Vientiane
-LB	+3353+03530	Asia/Beirut
-LC	+1401-06100	America/St_Lucia
-LI	+4709+00931	Europe/Vaduz
-LK	+0656+07951	Asia/Colombo
-LR	+0618-01047	Africa/Monrovia
-LS	-2928+02730	Africa/Maseru
-LT	+5441+02519	Europe/Vilnius
-LU	+4936+00609	Europe/Luxembourg
-LV	+5657+02406	Europe/Riga
-LY	+3254+01311	Africa/Tripoli
-MA	+3339-00735	Africa/Casablanca
-MC	+4342+00723	Europe/Monaco
-MD	+4700+02850	Europe/Chisinau
-ME	+4226+01916	Europe/Podgorica
-MG	-1855+04731	Indian/Antananarivo
-MH	+0709+17112	Pacific/Majuro	most locations
-MH	+0905+16720	Pacific/Kwajalein	Kwajalein
-MK	+4159+02126	Europe/Skopje
-ML	+1239-00800	Africa/Bamako
-MM	+1647+09610	Asia/Rangoon
-MN	+4755+10653	Asia/Ulaanbaatar	most locations
-MN	+4801+09139	Asia/Hovd	Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
-MN	+4804+11430	Asia/Choibalsan	Dornod, Sukhbaatar
-MO	+2214+11335	Asia/Macau
-MP	+1512+14545	Pacific/Saipan
-MQ	+1436-06105	America/Martinique
-MR	+1806-01557	Africa/Nouakchott
-MS	+1643-06213	America/Montserrat
-MT	+3554+01431	Europe/Malta
-MU	-2010+05730	Indian/Mauritius
-MV	+0410+07330	Indian/Maldives
-MW	-1547+03500	Africa/Blantyre
-MX	+1924-09909	America/Mexico_City	Central Time - most locations
-MX	+2105-08646	America/Cancun	Central Time - Quintana Roo
-MX	+2058-08937	America/Merida	Central Time - Campeche, Yucatan
-MX	+2540-10019	America/Monterrey	Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas
-MX	+2313-10625	America/Mazatlan	Mountain Time - S Baja, Nayarit, Sinaloa
-MX	+2838-10605	America/Chihuahua	Mountain Time - Chihuahua
-MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
-MX	+3232-11701	America/Tijuana	Pacific Time
-MY	+0310+10142	Asia/Kuala_Lumpur	peninsular Malaysia
-MY	+0133+11020	Asia/Kuching	Sabah & Sarawak
-MZ	-2558+03235	Africa/Maputo
-NA	-2234+01706	Africa/Windhoek
-NC	-2216+16530	Pacific/Noumea
-NE	+1331+00207	Africa/Niamey
-NF	-2903+16758	Pacific/Norfolk
-NG	+0627+00324	Africa/Lagos
-NI	+1209-08617	America/Managua
-NL	+5222+00454	Europe/Amsterdam
-NO	+5955+01045	Europe/Oslo
-NP	+2743+08519	Asia/Katmandu
-NR	-0031+16655	Pacific/Nauru
-NU	-1901+16955	Pacific/Niue
-NZ	-3652+17446	Pacific/Auckland	most locations
-NZ	-4357-17633	Pacific/Chatham	Chatham Islands
-OM	+2336+05835	Asia/Muscat
-PA	+0858-07932	America/Panama
-PE	-1203-07703	America/Lima
-PF	-1732-14934	Pacific/Tahiti	Society Islands
-PF	-0900-13930	Pacific/Marquesas	Marquesas Islands
-PF	-2308-13457	Pacific/Gambier	Gambier Islands
-PG	-0930+14710	Pacific/Port_Moresby
-PH	+1435+12100	Asia/Manila
-PK	+2452+06703	Asia/Karachi
-PL	+5215+02100	Europe/Warsaw
-PM	+4703-05620	America/Miquelon
-PN	-2504-13005	Pacific/Pitcairn
-PR	+182806-0660622	America/Puerto_Rico
-PS	+3130+03428	Asia/Gaza
-PT	+3843-00908	Europe/Lisbon	mainland
-PT	+3238-01654	Atlantic/Madeira	Madeira Islands
-PT	+3744-02540	Atlantic/Azores	Azores
-PW	+0720+13429	Pacific/Palau
-PY	-2516-05740	America/Asuncion
-QA	+2517+05132	Asia/Qatar
-RE	-2052+05528	Indian/Reunion
-RO	+4426+02606	Europe/Bucharest
-RS	+4450+02030	Europe/Belgrade
-RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
-RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
-RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
-RU	+5312+05009	Europe/Samara	Moscow+01 - Samara, Udmurtia
-RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
-RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
-RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
-RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
-RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
-RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
-RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
-RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
-RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
-RU	+5301+15839	Asia/Kamchatka	Moscow+09 - Kamchatka
-RU	+6445+17729	Asia/Anadyr	Moscow+10 - Bering Sea
-RW	-0157+03004	Africa/Kigali
-SA	+2438+04643	Asia/Riyadh
-SB	-0932+16012	Pacific/Guadalcanal
-SC	-0440+05528	Indian/Mahe
-SD	+1536+03232	Africa/Khartoum
-SE	+5920+01803	Europe/Stockholm
-SG	+0117+10351	Asia/Singapore
-SH	-1555-00542	Atlantic/St_Helena
-SI	+4603+01431	Europe/Ljubljana
-SJ	+7800+01600	Arctic/Longyearbyen	Svalbard
-SJ	+7059-00805	Atlantic/Jan_Mayen	Jan Mayen
-SK	+4809+01707	Europe/Bratislava
-SL	+0830-01315	Africa/Freetown
-SM	+4355+01228	Europe/San_Marino
-SN	+1440-01726	Africa/Dakar
-SO	+0204+04522	Africa/Mogadishu
-SR	+0550-05510	America/Paramaribo
-ST	+0020+00644	Africa/Sao_Tome
-SV	+1342-08912	America/El_Salvador
-SY	+3330+03618	Asia/Damascus
-SZ	-2618+03106	Africa/Mbabane
-TC	+2128-07108	America/Grand_Turk
-TD	+1207+01503	Africa/Ndjamena
-TF	-492110+0701303	Indian/Kerguelen
-TG	+0608+00113	Africa/Lome
-TH	+1345+10031	Asia/Bangkok
-TJ	+3835+06848	Asia/Dushanbe
-TK	-0922-17114	Pacific/Fakaofo
-TL	-0833+12535	Asia/Dili
-TM	+3757+05823	Asia/Ashgabat
-TN	+3648+01011	Africa/Tunis
-TO	-2110+17510	Pacific/Tongatapu
-TR	+4101+02858	Europe/Istanbul
-TT	+1039-06131	America/Port_of_Spain
-TV	-0831+17913	Pacific/Funafuti
-TW	+2503+12130	Asia/Taipei
-TZ	-0648+03917	Africa/Dar_es_Salaam
-UA	+5026+03031	Europe/Kiev	most locations
-UA	+4837+02218	Europe/Uzhgorod	Ruthenia
-UA	+4750+03510	Europe/Zaporozhye	Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
-UA	+4457+03406	Europe/Simferopol	central Crimea
-UG	+0019+03225	Africa/Kampala
-UM	+1645-16931	Pacific/Johnston	Johnston Atoll
-UM	+2813-17722	Pacific/Midway	Midway Islands
-UM	+1917+16637	Pacific/Wake	Wake Island
-US	+404251-0740023	America/New_York	Eastern Time
-US	+421953-0830245	America/Detroit	Eastern Time - Michigan - most locations
-US	+381515-0854534	America/Kentucky/Louisville	Eastern Time - Kentucky - Louisville area
-US	+364947-0845057	America/Kentucky/Monticello	Eastern Time - Kentucky - Wayne County
-US	+394606-0860929	America/Indiana/Indianapolis	Eastern Time - Indiana - most locations
-US	+384038-0873143	America/Indiana/Vincennes	Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
-US	+411745-0863730	America/Indiana/Knox	Eastern Time - Indiana - Starke County
-US	+410305-0863611	America/Indiana/Winamac	Eastern Time - Indiana - Pulaski County
-US	+382232-0862041	America/Indiana/Marengo	Eastern Time - Indiana - Crawford County
-US	+384452-0850402	America/Indiana/Vevay	Eastern Time - Indiana - Switzerland County
-US	+415100-0873900	America/Chicago	Central Time
-US	+375711-0864541	America/Indiana/Tell_City	Central Time - Indiana - Perry County
-US	+382931-0871643	America/Indiana/Petersburg	Central Time - Indiana - Pike County
-US	+450628-0873651	America/Menominee	Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
-US	+470659-1011757	America/North_Dakota/Center	Central Time - North Dakota - Oliver County
-US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota - Morton County (except Mandan area)
-US	+394421-1045903	America/Denver	Mountain Time
-US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
-US	+364708-1084111	America/Shiprock	Mountain Time - Navajo
-US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona
-US	+340308-1181434	America/Los_Angeles	Pacific Time
-US	+611305-1495401	America/Anchorage	Alaska Time
-US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
-US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck
-US	+643004-1652423	America/Nome	Alaska Time - west Alaska
-US	+515248-1763929	America/Adak	Aleutian Islands
-US	+211825-1575130	Pacific/Honolulu	Hawaii
-UY	-3453-05611	America/Montevideo
-UZ	+3940+06648	Asia/Samarkand	west Uzbekistan
-UZ	+4120+06918	Asia/Tashkent	east Uzbekistan
-VA	+4154+01227	Europe/Vatican
-VC	+1309-06114	America/St_Vincent
-VE	+1030-06656	America/Caracas
-VG	+1827-06437	America/Tortola
-VI	+1821-06456	America/St_Thomas
-VN	+1045+10640	Asia/Saigon
-VU	-1740+16825	Pacific/Efate
-WF	-1318-17610	Pacific/Wallis
-WS	-1350-17144	Pacific/Apia
-YE	+1245+04512	Asia/Aden
-YT	-1247+04514	Indian/Mayotte
-ZA	-2615+02800	Africa/Johannesburg
-ZM	-1525+02817	Africa/Lusaka
-ZW	-1750+03103	Africa/Harare

ncb^P0K`xgJE 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 diff --git a/bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-gcc b/bin/gcc-4.3/bin/x86_64-unknown-linux-gnu-gcc deleted file mode 100755 index 28b4a57b40eb7f2a4d76896925b28f0906dfc909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227304 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