diff --git a/Data/Time/Zones.hs b/Data/Time/Zones.hs
new file mode 100644
--- /dev/null
+++ b/Data/Time/Zones.hs
@@ -0,0 +1,229 @@
+{- |
+Module      : Data.Time.Zones
+Copyright   : (C) 2014 Mihaly Barasz
+License     : Apache-2.0, see LICENSE
+Maintainer  : Mihaly Barasz <klao@nilcons.com>
+Stability   : experimental
+-}
+
+{-# LANGUAGE BangPatterns #-}
+
+module Data.Time.Zones (
+  TZ,
+  utcTZ,
+  -- * Universal -> Local direction
+  diffForPOSIX,
+  timeZoneForPOSIX,
+  timeZoneForUTCTime,
+  utcToLocalTimeTZ,
+  -- * Local -> Universal direction
+  LocalToUTCResult(..),
+  localTimeToUTCFull,
+  localTimeToUTCTZ,
+  -- TODO(klao): do we want to export these?
+  FromLocal(..),
+  localToPOSIX,
+  -- * Acquiring `TZ` information
+  loadTZFromFile,
+  loadTZFromDB,
+  loadSystemTZ,
+  loadLocalTZ,
+  ) where
+
+import Data.Bits (shiftR)
+import Data.Fixed (divMod')
+import Data.Int (Int64)
+import Data.Time
+import qualified Data.Vector as VB
+import qualified Data.Vector.Unboxed as VU
+import Data.Time.Zones.Types
+import Data.Time.Zones.Read
+
+-- | Returns the time difference (in seconds) for TZ at the given
+-- POSIX time.
+diffForPOSIX :: TZ -> Int64 -> Int
+{-# INLINE diffForPOSIX #-}
+diffForPOSIX (TZ trans diffs _) t = VU.unsafeIndex diffs $ binarySearch trans t
+
+timeZoneForIx :: TZ -> Int -> TimeZone
+{-# INLINE timeZoneForIx #-}
+timeZoneForIx (TZ _ diffs infos) i = TimeZone diffMins isDst name
+  where
+    diffMins = VU.unsafeIndex diffs i `div` 60
+    (isDst, name) = VB.unsafeIndex infos i
+
+-- | Returns the `TimeZone` for the `TZ` at the given POSIX time.
+timeZoneForPOSIX :: TZ -> Int64 -> TimeZone
+{-# INLINABLE timeZoneForPOSIX #-}
+timeZoneForPOSIX tz@(TZ trans _ _) t = timeZoneForIx tz i
+  where
+    i = binarySearch trans t
+
+-- | Returns the `TimeZone` for the `TZ` at the given `UTCTime`.
+timeZoneForUTCTime :: TZ -> UTCTime -> TimeZone
+{-# INLINABLE timeZoneForUTCTime #-}
+timeZoneForUTCTime tz (UTCTime day tid)
+  = timeZoneForPOSIX tz $ dayTimeToInt64 day tid
+
+-- | Returns the `LocalTime` corresponding to the given `UTCTime` in `TZ`.
+--
+-- @utcToLocalTimeTZ tz ut@ is equivalent to @`utcToLocalTime`
+-- (`timeZoneForPOSIX` tz ut) ut@ except when the time difference is not
+-- an integral number of minutes
+utcToLocalTimeTZ :: TZ -> UTCTime -> LocalTime
+utcToLocalTimeTZ tz (UTCTime day dtime) = LocalTime day' tod
+  where
+    diff = diffForPOSIX tz $ dayTimeToInt64 day dtime
+    (m', s) = (dtime + fromIntegral diff) `divMod'` 60
+    (h', m) = m' `divMod` 60
+    (d', h) = h' `divMod` 24
+    day' = fromIntegral d' `addDays` day
+    tod = TimeOfDay h m (realToFrac s)
+
+-- | The `TZ` definition for UTC.
+utcTZ :: TZ
+utcTZ = TZ (VU.singleton minBound) (VU.singleton 0) (VB.singleton (False, "UTC"))
+
+-- | Returns the largest index `i` such that `v ! i <= t`.
+--
+-- Assumes that `v` is sorted, has at least one element and `v ! 0 <= t`.
+binarySearch :: (VU.Unbox a, Ord a) => VU.Vector a -> a -> Int
+{-# INLINE binarySearch #-}
+binarySearch v t | n == 1    = 0
+                 | otherwise = t `seq` go 1 n
+  where
+    n = VU.length v
+    go !l !u | l >= u = (l - 1)
+             | VU.unsafeIndex v k <= t  = go (k+1) u
+             | otherwise  = go l k
+      where
+        k = (l + u) `shiftR` 1
+
+--------------------------------------------------------------------------------
+-- LocalTime to UTCTime
+
+-- Representing LocalTimes as Int64s.
+--
+-- We want a simple and convenient mapping of
+-- (year,month,day,hour,minutes,seconds) tuples onto a linear
+-- scale. We adopt the following convention: an Int64 maps to the
+-- tuple that a POSIX time represented by the same number would map in
+-- UTC time zone. That is, 0 maps to '1970-01-01 00:00:00' and
+-- 1395516860 maps to '2014-03-22 19:34:20'.
+--
+-- This is independent and without reference to any particular time
+-- zone, it is completely analogous to LocalTime in that you need a
+-- time zone to be able to interpret this as a point in time. And then
+-- it may refer to an invalid time (spring time forward clock jump) or
+-- two possible times (fall time backward jump).
+--
+-- So, it's basically another representation for LocalTimes (those
+-- that can be represented within an Int64 and ignoring the fractional
+-- seconds), except that LocalTime can contain invalid time-of-day
+-- part (like 27:-05:107) and the Int64 representation can't and is
+-- always unambiguous.
+--
+-- With that in mind, a UTCTime to LocalTime conversion can be seen as
+-- 'TZ -> Int64 -> Int64', where the first Int64 is POSIX time and the
+-- second is this kind of LocalTime representation.
+
+
+-- | Internal representation of LocalTime -> UTCTime conversion result:
+data FromLocal
+  = FLGap    { _flIx :: {-# UNPACK #-} !Int
+             , _flRes :: {-# UNPACK #-} !Int64 }
+  | FLUnique { _flIx :: {-# UNPACK #-} !Int
+             , _flRes :: {-# UNPACK #-} !Int64 }
+  | FLDouble { _flIx :: {-# UNPACK #-} !Int
+             , _flRes1 :: {-# UNPACK #-} !Int64
+             , _flRes2 :: {-# UNPACK #-} !Int64 }
+  deriving (Show)
+
+-- We make the following two assumptions here:
+--
+-- 1. No diff in any time zone is ever bigger than 24 hours.
+--
+-- 2. No two consecutive transitions in any zone file ever fall within
+--    48 hours of each other.
+--
+-- As a consequence, a local time might correspond to two different
+-- points in time, but never three.
+--
+-- TODO(klao): check that these assuptions hold.
+localToPOSIX :: TZ -> Int64 -> FromLocal
+{-# INLINABLE localToPOSIX #-}
+localToPOSIX (TZ trans diffs _) !lTime = res
+  where
+    lBound = lTime - 86400
+    ix = binarySearch trans lBound
+    cand1 = lTime - fromIntegral (VU.unsafeIndex diffs ix)
+    res = if ix == VU.length trans
+          then FLUnique ix cand1 -- TODO(klao): extend when rule handling is added
+          else res'
+               
+    ix' = ix + 1
+    nextTrans = VU.unsafeIndex trans ix'
+    cand2 = lTime - fromIntegral (VU.unsafeIndex diffs ix')
+    res' = case (cand1 < nextTrans, cand2 >= nextTrans) of
+      (False, False) -> FLGap ix cand1
+      (True,  False) -> FLUnique ix cand1
+      (False, True)  -> FLUnique ix' cand2
+      (True,  True)  -> FLDouble ix cand1 cand2
+
+-- | Fully descriptive result of a LocalTime to UTCTime conversion.
+--
+-- In case of LTUAmbiguous the first result is always earlier than the
+-- second one. Generally this only happens during the daylight saving
+-- -> standard time transition (ie. summer -> winter). So, the first
+-- result corresponds to interpreting the LocalTime as a daylight
+-- saving time and the second result as standard time in the given
+-- location.
+--
+-- But, if the location had some kind of administrative time
+-- transition during which the clocks jumped back, then both results
+-- can correspond to standard times (or daylight saving times) just
+-- before and after the transition. You can always inspect the
+-- 'timeZoneSummerOnly' field of the returned 'TimeZone's to get an
+-- idea what kind of transition was taking place.
+--
+-- TODO(klao): document the LTUNone behavior.
+data LocalToUTCResult
+  = LTUNone { _ltuResult :: UTCTime
+            , _ltuZone :: TimeZone }
+  | LTUUnique { _ltuResult :: UTCTime
+              , _ltuZone :: TimeZone }
+  | LTUAmbiguous { _ltuFirst      :: UTCTime
+                 , _ltuSecond     :: UTCTime
+                 , _ltuFirstZone  :: TimeZone
+                 , _ltuSecondZone :: TimeZone
+                 } deriving (Eq, Show)
+
+-- TODO(klao): measure the improvement
+dayTimeToInt64 :: RealFrac a => Day -> a -> Int64
+{-# INLINE dayTimeToInt64 #-}
+dayTimeToInt64 (ModifiedJulianDay d) t = 86400 * (fromIntegral d - unixEpochDay) + floor t
+  where
+    unixEpochDay = 40587
+
+-- TODO(klao): better name
+localTimeToUTCFull :: TZ -> LocalTime -> LocalToUTCResult
+localTimeToUTCFull tz@(TZ _ diffs _) (LocalTime day tod) = res
+  where
+    tid = timeOfDayToTime tod
+    t = dayTimeToInt64 day tid
+    addDiff i = UTCTime (addDays d day) tid'
+      where
+        diff = VU.unsafeIndex diffs i
+        (d, tid') = (tid - fromIntegral diff) `divMod'` 86400
+    res = case localToPOSIX tz t of
+      FLGap i _ -> LTUNone (addDiff i) (timeZoneForIx tz i)
+      FLUnique i _ -> LTUUnique (addDiff i) (timeZoneForIx tz i)
+      FLDouble i _ _ -> LTUAmbiguous (addDiff i) (addDiff (i+1))
+                          (timeZoneForIx tz i) (timeZoneForIx tz (i+1))
+
+localTimeToUTCTZ :: TZ -> LocalTime -> UTCTime
+localTimeToUTCTZ tz lt =
+  case localTimeToUTCFull tz lt of
+    LTUNone ut _ -> ut
+    LTUUnique ut _ -> ut
+    LTUAmbiguous _ ut _ _ -> ut
diff --git a/Data/Time/Zones/Read.hs b/Data/Time/Zones/Read.hs
new file mode 100644
--- /dev/null
+++ b/Data/Time/Zones/Read.hs
@@ -0,0 +1,164 @@
+{- |
+Module      : Data.Time.Zones
+Copyright   : (C) 2014 Mihaly Barasz
+License     : Apache-2.0, see LICENSE
+Maintainer  : Mihaly Barasz <klao@nilcons.com>
+Stability   : experimental
+-}
+
+{-# LANGUAGE OverloadedStrings #-}
+
+module Data.Time.Zones.Read (
+  loadTZFromFile,
+  loadSystemTZ,
+  loadLocalTZ,
+  loadTZFromDB,
+  olsonGet,
+  ) where
+
+import Control.Applicative
+import Control.Monad (unless)
+import Data.Binary
+import Data.Binary.Get
+import qualified Data.ByteString.Char8 as BS
+import qualified Data.ByteString.Lazy.Char8 as BL
+import Data.Maybe
+import Data.Vector.Generic (stream, unstream)
+import qualified Data.Vector.Unboxed as VU
+import qualified Data.Vector as VB
+import Data.Int
+import Data.Time.Zones.Types
+import System.Environment
+import System.IO.Error
+
+import Paths_tz hiding (version)
+
+-- | Reads and parses a time zone information file (in @tzfile(5)@
+-- aka. Olson file format) and returns the corresponding TZ data
+-- structure.
+loadTZFromFile :: FilePath -> IO TZ
+loadTZFromFile fname = runGet olsonGet <$> BL.readFile fname
+
+-- | Looks for the time zone file in the system timezone directory, which is
+-- @\/usr\/share\/zoneinfo@, or if the @TZDIR@ environment variable is
+-- set, then there.
+loadSystemTZ :: String -> IO TZ
+loadSystemTZ tzName = do
+  dir <- fromMaybe "/usr/share/zoneinfo" <$> getEnvMaybe "TZDIR"
+  loadTZFromFile $ dir ++ "/" ++ tzName
+
+
+
+-- | Returns the local `TZ` based on the @TZ@ and @TZDIR@
+-- environment variables.
+--
+-- See @tzset(3)@ for details, but basically:
+--
+-- * If @TZ@ environment variable is unset, we @loadTZFromFile \"\/etc\/localtime\"@.
+--
+-- * If @TZ@ is set, but empty, we @loadSystemTZ \"UTC\"@.
+--
+-- * Otherwise, we just @loadSystemTZ@ it.
+--
+-- Note, this means we don't support POSIX-style @TZ@ variables (like
+-- @\"EST5EDT\"@), only those that are explicitly present in the time
+-- zone database.
+loadLocalTZ :: IO TZ
+loadLocalTZ = do
+  tzEnv <- getEnvMaybe "TZ"
+  case tzEnv of
+    Nothing -> loadTZFromFile "/etc/localtime"
+    Just "" -> loadSystemTZ "UTC"
+    Just z -> loadSystemTZ z
+
+getEnvMaybe :: String -> IO (Maybe String)
+getEnvMaybe var =
+  fmap Just (getEnv var) `catchIOError`
+  (\e -> if isDoesNotExistError e then return Nothing else ioError e)
+
+-- | Reads the corresponding file from the time zone database shipped
+-- with this package.
+loadTZFromDB :: String -> IO TZ
+loadTZFromDB tzName = do
+  -- TODO(klao): this probably won't work on Windows.
+  fn <- getDataFileName $ tzName ++ ".zone"
+  loadTZFromFile fn
+
+olsonGet :: Get TZ
+olsonGet = do
+  version <- olsonHeader
+  case () of
+    () | version == '\0' -> olsonGetWith 4 getTime32
+    () | version `elem` ['2', '3'] -> do
+      skipOlson0
+      _ <- olsonHeader
+      olsonGetWith 8 getTime64
+      -- TODO(klao): read the rule string
+    _ -> fail $ "olsonGet: invalid version character: " ++ show version
+
+olsonHeader :: Get Char
+olsonHeader = do
+  magic <- getByteString 4
+  unless (magic == "TZif") $ fail "olsonHeader: bad magic"
+  version <- toEnum <$> getInt8
+  skip 15
+  return version
+
+skipOlson0 :: Get ()
+skipOlson0 = do
+  tzh_ttisgmtcnt <- getInt32
+  tzh_ttisstdcnt <- getInt32
+  tzh_leapcnt <- getInt32
+  tzh_timecnt <- getInt32
+  tzh_typecnt <- getInt32
+  tzh_charcnt <- getInt32
+  skip $ (4 * tzh_timecnt) + tzh_timecnt + (6 * tzh_typecnt) + tzh_charcnt +
+    (8 * tzh_leapcnt) + tzh_ttisstdcnt + tzh_ttisgmtcnt
+
+olsonGetWith :: Int -> Get Int64 -> Get TZ
+olsonGetWith szTime getTime = do
+  tzh_ttisgmtcnt <- getInt32
+  tzh_ttisstdcnt <- getInt32
+  tzh_leapcnt <- getInt32
+  tzh_timecnt <- getInt32
+  tzh_typecnt <- getInt32
+  tzh_charcnt <- getInt32
+  transitions <- VU.replicateM tzh_timecnt getTime
+  indices <- VU.replicateM tzh_timecnt getInt8
+  infos <- VU.replicateM tzh_typecnt getTTInfo
+  abbrs <- getByteString tzh_charcnt
+  skip $ tzh_leapcnt * (szTime + 4)
+  skip tzh_ttisstdcnt
+  skip tzh_ttisgmtcnt
+  let isDst (_,x,_) = x
+      gmtOff (x,_,_) = x
+      isDstName (_,d,ni) = (d, abbrForInd ni abbrs)
+      lInfos = VU.toList infos
+      first = head $ filter (not . isDst) lInfos ++ lInfos
+      vtrans = VU.cons minBound transitions
+      eInfos = VU.cons first $ VU.map (infos VU.!) indices
+      vdiffs = VU.map gmtOff eInfos
+      vinfos = VB.map isDstName $ unstream $ stream eInfos
+  return $ TZ vtrans vdiffs vinfos
+
+abbrForInd :: Int -> BS.ByteString -> String
+abbrForInd i = BS.unpack . BS.takeWhile (/= '\0') . BS.drop i
+
+getTTInfo :: Get (Int, Bool, Int)  -- (gmtoff, isdst, abbrind)
+getTTInfo = (,,) <$> getInt32 <*> get <*> getInt8
+
+getInt8 :: Get Int
+{-# INLINE getInt8 #-}
+getInt8 = fromIntegral <$> getWord8
+
+getInt32 :: Get Int
+{-# INLINE getInt32 #-}
+getInt32 = (fromIntegral :: Int32 -> Int) . fromIntegral <$> getWord32be
+
+getTime32 :: Get Int64
+{-# INLINE getTime32 #-}
+getTime32 = fromIntegral <$> getInt32
+
+getTime64 :: Get Int64
+{-# INLINE getTime64 #-}
+getTime64 = fromIntegral <$> getWord64be
diff --git a/Data/Time/Zones/Types.hs b/Data/Time/Zones/Types.hs
new file mode 100644
--- /dev/null
+++ b/Data/Time/Zones/Types.hs
@@ -0,0 +1,24 @@
+{- |
+Module      : Data.Time.Zones
+Copyright   : (C) 2014 Mihaly Barasz
+License     : Apache-2.0, see LICENSE
+Maintainer  : Mihaly Barasz <klao@nilcons.com>
+Stability   : experimental
+-}
+
+module Data.Time.Zones.Types (
+  TZ(..),
+  ) where
+
+import Data.Int
+import qualified Data.Vector.Unboxed as VU
+import qualified Data.Vector as VB
+
+data TZ = TZ {
+  _tzTrans :: !(VU.Vector Int64),
+  _tzDiffs :: !(VU.Vector Int),
+  -- TODO(klao): maybe we should store it as a vector of indices and a
+  -- (short) vector of expanded 'TimeZone's, similarly to how it's
+  -- stored?
+  _tzInfos :: !(VB.Vector (Bool, String))   -- (summer, name)
+  } deriving (Eq,Show)
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+haskell-tz
+==========
+
+Haskell package shipping the standard time zone database &amp; library to use with it
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/benchmarks/benchGreg.hs b/benchmarks/benchGreg.hs
new file mode 100644
--- /dev/null
+++ b/benchmarks/benchGreg.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE TemplateHaskell #-}
+
+module Main where
+
+import Criterion.Main
+import Control.Lens
+import Data.Bits
+import Data.Time
+import qualified Data.Thyme.Calendar.OrdinalDate as Th
+import qualified Data.Thyme as Th
+import Data.Time.Calendar.OrdinalDate
+
+data YD = YD {
+  _ydYear :: {-# UNPACK #-} !Int,
+  _ydDay  :: {-# UNPACK #-} !Int
+  } deriving (Show)
+
+makeLenses ''YD
+
+toOrdinalDate' :: Int -> YD
+{-# INLINE toOrdinalDate' #-}
+toOrdinalDate' !day = YD (fromIntegral y) (fromIntegral d)
+  where
+    (!y,!d) = toOrdinalDate $ ModifiedJulianDay $ fromIntegral day
+
+toOrdinalDateTh :: Int -> YD
+{-# INLINE toOrdinalDateTh #-}
+toOrdinalDateTh !day = YD y d
+  where
+    Th.OrdinalDate y d = Th.ModifiedJulianDay day ^. Th.ordinalDate
+
+toOrdinalDateI :: Int -> YD
+toOrdinalDateI !mjd = YD year yd
+  where
+    a = mjd + 678575
+    quadcent = div a 146097
+    b = mod a 146097
+    cent = min (div b 36524) 3
+    c = b - (cent * 36524)
+    quad = div c 1461
+    d = mod c 1461
+    y = min (div d 365) 3
+    yd = d - (y * 365) + 1
+    year = quadcent * 400 + cent * 100 + quad * 4 + y + 1
+
+toOrdinalDateDivMod :: Int -> YD
+{-# NOINLINE toOrdinalDateDivMod #-}
+toOrdinalDateDivMod !mjd = YD year yd
+  where
+    a = mjd + 678575
+    (quadcent,b) = a `divMod` 146097
+    cent = min (b `quot` 36524) 3
+    c = b - (cent * 36524)
+    (!quad,!d) = c `quotRem` 1461
+    y = min (d `quot` 365) 3
+    yd = d - (y * 365) + 1
+    year = quadcent * 400 + cent * 100 + quad * 4 + y + 1
+
+--------------------------------------------------------------------------------
+
+isLeapYearI :: Int -> Bool
+{-# INLINABLE isLeapYearI #-}
+isLeapYearI !y = y .&. 3 == 0  &&  (r100 /= 0 || d100 .&. 3 == 0)
+  where
+    (d100,r100) = y `quotRem` 100
+
+countLeapYears :: Int -> Int
+{-# INLINE countLeapYears #-}
+countLeapYears !ys = ys `shiftR` 2  -  cs  +  cs `shiftR` 2
+  where
+    cs = ys `quot` 100
+
+toOrdinalB0 :: Int -> YD
+{-# INLINE toOrdinalB0 #-}
+toOrdinalB0 b0 = res
+  where
+    (y, r) = (400 * b0) `quotRem` 146097
+    ls = countLeapYears y
+    res = if r < 146097 - 400
+          then YD y (b0 - 365*y - ls)
+          else let y' = if isLeapYearI (y+1) then y else y+1
+               in YD y' (b0 - 365*y' - ls)
+
+toOrdinalPr :: Int -> YD
+{-# INLINABLE toOrdinalPr #-}
+toOrdinalPr !mjd | b0 >= 0 = toOrdinalB0 b0
+                 | otherwise = toOrdinalB0 m & ydYear +~ d * 400
+  where
+    b0 = mjd + 678575
+    (d,m) = b0 `divMod` 146097
+
+test :: Integer -> Int -> Int -> IO ()
+test y m md = do
+  let d = fromIntegral $ toModifiedJulianDay $ fromGregorian y m md
+  print $ d + 678575
+  print $ toOrdinalDate' d
+  let YD y' yd = toOrdinalPr d
+  print $ YD (y'+1) (yd+1)
+
+
+benchmarks :: [Benchmark]
+benchmarks = [
+  bgroup "orig" [
+     bench "toOrdinalDate" $ nf toOrdinalDate d1,
+     bench "toOrdinalDate'" $ whnf toOrdinalDate' d1i
+     ],
+  bgroup "thyme" [
+     bench "toOrdinalDateTh" $ whnf toOrdinalDateTh d1i
+     ],
+  bgroup "optim" [
+     bench "directCopy" $ whnf toOrdinalDateI d1i,
+     bench "divModQuotRem" $ whnf toOrdinalDateDivMod d1i,
+     bench "divModPr" $ whnf toOrdinalPr d1i
+     ]
+  ]
+  where
+    d1 = fromGregorian 2014 3 25
+    d1i = fromIntegral $ toModifiedJulianDay d1
+
+main :: IO ()
+main = do
+  defaultMain benchmarks
diff --git a/benchmarks/benchTZ.hs b/benchmarks/benchTZ.hs
new file mode 100644
--- /dev/null
+++ b/benchmarks/benchTZ.hs
@@ -0,0 +1,114 @@
+module Main (main) where
+
+import Bindings.Posix.Time
+import Criterion.Main
+import Data.Fixed
+import Data.Int
+import Data.Time
+import Data.Time.LocalTime.TimeZone.Olson
+import Data.Time.LocalTime.TimeZone.Series
+import Data.Time.Zones
+import System.Posix.Env
+
+setupTZ :: String -> IO TZ
+setupTZ zoneName = do
+  setEnv "TZ" zoneName True
+  c'tzset
+  loadSystemTZ zoneName
+
+mkLocal :: Integer -> Int -> Int -> Int -> Int -> Pico -> LocalTime
+mkLocal y m d hh mm ss
+  = LocalTime (fromGregorian y m d) (TimeOfDay hh mm ss)
+
+mkUTC :: Integer -> Int -> Int -> Int -> Int -> Pico -> UTCTime
+mkUTC y m d hh mm ss
+  = UTCTime (fromGregorian y m d) (timeOfDayToTime $ TimeOfDay hh mm ss)
+
+utcToLocalNano :: TZ -> Int64 -> Int64
+{-# INLINE utcToLocalNano #-}
+utcToLocalNano tz t = t + 1000000000 * fromIntegral diff
+  where
+    diff = diffForPOSIX tz (t `div` 1000000000)
+
+tzBenchmarks :: TZ -> TimeZoneSeries -> [Benchmark]
+tzBenchmarks tz series = [
+  bgroup "rawDiff" [
+     bench "past" $ whnf (diffForPOSIX tz) (-10000000000), -- Way back in the past
+     bench "epoch" $ whnf (diffForPOSIX tz) 0,
+     bench "now" $ whnf (diffForPOSIX tz) 1395572400,
+     bench "future" $ whnf (diffForPOSIX tz) 10000000000   -- Way in the future
+     ],
+  bgroup "utcToLocalNano" [
+     bench "past" $ whnf (utcToLocalNano tz) (-4000000000000000000),
+     bench "epoch" $ whnf (utcToLocalNano tz) 0,
+     bench "now" $ whnf (utcToLocalNano tz) 1395572400000000000,
+     bench "future" $ whnf (utcToLocalNano tz) 4000000000000000000
+     ],
+  bgroup "rawDiffUTC" [
+     bench "now" $ whnf (diffForPOSIX utcTZ) 1395572400
+     ],
+  bgroup "basicUTCToLocalTime" [
+    bench "past" $ nf (utcToLocalTime cetTZ) ut0,
+    bench "now" $ nf (utcToLocalTime cetTZ) ut1,
+    bench "future" $ nf (utcToLocalTime cetTZ) ut2
+    ],
+  bgroup "utcToLocalTimeTZ" [
+    bench "past" $ nf (utcToLocalTimeTZ tz) ut0,
+    bench "now" $ nf (utcToLocalTimeTZ tz) ut1,
+    bench "future" $ nf (utcToLocalTimeTZ tz) ut2
+    ],
+  bgroup "utcToLocalTimeSeries" [
+    bench "past" $ nf (utcToLocalTime' series) ut0,
+    bench "now" $ nf (utcToLocalTime' series) ut1,
+    bench "future" $ nf (utcToLocalTime' series) ut2
+    ],
+  bgroup "timeZoneForPOSIX" [
+    bench "past" $ nf (timeZoneForPOSIX tz) (-10000000000),
+    bench "now" $ nf (timeZoneForPOSIX tz) 1395572400,
+    bench "future" $ nf (timeZoneForPOSIX tz) 10000000000
+    ],
+  bgroup "timeZoneForUTCTime" [
+    bench "past" $ nf (timeZoneForUTCTime tz) ut0,
+    bench "now" $ nf (timeZoneForUTCTime tz) ut1,
+    bench "future" $ nf (timeZoneForUTCTime tz) ut2
+    ],
+  bgroup "timeZoneFromSeries" [
+    bench "past" $ nf (timeZoneFromSeries series) ut0,
+    bench "now" $ nf (timeZoneFromSeries series) ut1,
+    bench "future" $ nf (timeZoneFromSeries series) ut2
+    ],
+  bgroup "localToPOSIX" [
+    bench "past" $ whnf (localToPOSIX tz) (-10000000000),
+    bench "now" $ whnf (localToPOSIX tz) 1396142115,
+    bench "future" $ whnf (localToPOSIX tz) 10000000000
+    ],
+  bgroup "basicLocalTimeToUTC" [
+    bench "past" $ nf (localTimeToUTC cetTZ) lt0,
+    bench "now" $ nf (localTimeToUTC cetTZ) lt1,
+    bench "future" $ nf (localTimeToUTC cetTZ) lt2
+    ],
+  bgroup "localTimeToUTCTZ" [
+    bench "past" $ nf (localTimeToUTCTZ tz) lt0,
+    bench "now" $ nf (localTimeToUTCTZ tz) lt1,
+    bench "future" $ nf (localTimeToUTCTZ tz) lt2
+    ],
+  bgroup "localTimeToUTCSeries" [
+    bench "past" $ nf (localTimeToUTC' series) lt0,
+    bench "now" $ nf (localTimeToUTC' series) lt1,
+    bench "future" $ nf (localTimeToUTC' series) lt2
+    ]
+  ]
+  where
+    cetTZ = TimeZone 60 False "CET"
+    ut0 = mkUTC 1500 07 07  07 07 07
+    ut1 = mkUTC 2014 03 23  15 15 15
+    ut2 = mkUTC 2222 10 10  10 10 10
+    lt0 = mkLocal 1500 07 07  07 07 07
+    lt1 = mkLocal 2014 03 30  03 15 15
+    lt2 = mkLocal 2222 10 10  10 10 10
+
+main :: IO ()
+main = do
+  tzBudapest <- setupTZ "Europe/Budapest"
+  seriesBudapest <- getTimeZoneSeriesFromOlsonFile "/usr/share/zoneinfo/Europe/Budapest"
+  defaultMain $ tzBenchmarks tzBudapest seriesBudapest
diff --git a/benchmarks/bench_c_localtime.hs b/benchmarks/bench_c_localtime.hs
new file mode 100644
--- /dev/null
+++ b/benchmarks/bench_c_localtime.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE ViewPatterns #-}
+
+module Main (main) where
+
+import Bindings.Posix.Time
+import Bindings.Posix.Sys.Types
+import Criterion.Main
+import Foreign.Safe
+import Foreign.C
+import System.Posix.Env
+
+setupTZ :: String -> IO ()
+setupTZ zoneName = do
+  setEnv "TZ" zoneName True
+  c'tzset
+
+data C_tm = C_tm {
+  _tm_sec    :: {-# UNPACK #-} !CInt,
+  _tm_min    :: {-# UNPACK #-} !CInt,
+  _tm_hour   :: {-# UNPACK #-} !CInt,
+  _tm_mday   :: {-# UNPACK #-} !CInt,
+  _tm_mon    :: {-# UNPACK #-} !CInt,
+  _tm_year   :: {-# UNPACK #-} !CInt,
+  _tm_wday   :: {-# UNPACK #-} !CInt,
+  _tm_yday   :: {-# UNPACK #-} !CInt,
+  _tm_isdst  :: {-# UNPACK #-} !CInt
+  -- _tm_gmtoff :: {-# UNPACK #-} !CInt
+  -- _tm_zone :: {-# UNPACK #-} !Ptr CString (??)
+  } deriving (Show)
+
+instance Storable C_tm where
+  -- Overestimate; it's 10 or 11 based on architecture.
+  sizeOf _ = 16 * sizeOf (undefined :: CInt)
+  alignment _ = alignment (undefined :: CLong)
+  peek (castPtr -> p) = do
+    s <- peekElemOff p 0
+    mi <- peekElemOff p 1
+    h <- peekElemOff p 2
+    d <- peekElemOff p 3
+    m <- peekElemOff p 4
+    y <- peekElemOff p 5
+    wd <- peekElemOff p 6
+    yd <- peekElemOff p 7
+    idst <- peekElemOff p 8
+    return $ C_tm s mi h d m y wd yd idst
+  poke (castPtr -> p) (C_tm s mi h d m y wd yd idst) = do
+    pokeElemOff p 0 s
+    pokeElemOff p 1 mi
+    pokeElemOff p 2 h
+    pokeElemOff p 3 d
+    pokeElemOff p 4 m
+    pokeElemOff p 5 y
+    pokeElemOff p 6 wd
+    pokeElemOff p 7 yd
+    pokeElemOff p 8 idst
+
+foreign import ccall unsafe "time.h localtime_r" c_localtime_r
+  :: Ptr C'time_t -> Ptr C_tm -> IO (Ptr C_tm)
+
+localtime :: Int -> IO C_tm
+localtime t = with (fromIntegral t) $ \ptime ->
+  alloca $ \ptm -> do
+    res <- c_localtime_r ptime ptm
+    if res /= nullPtr
+      then peek res
+      else fail "c_localtime_r failed"
+
+-- This just wraps the binding from Bindings.Posix.Time.
+--
+-- Because it's foreign import ccall _safe_, it's more than two times
+-- slower!
+localtime' :: Int -> IO C'tm
+localtime' t = with (fromIntegral t) $ \ptime ->
+  alloca $ \ptm -> do
+    res <- c'localtime_r ptime ptm
+    if res /= nullPtr
+      then peek res
+      else fail "c'localtime_r failed"
+
+benchmarks :: [Benchmark]
+benchmarks = [
+  bgroup "c'localtime_r" [
+     bench "past" $ whnfIO $ localtime' (-2100000000),
+     bench "epoch" $ whnfIO $ localtime' 0,
+     bench "now" $ whnfIO $ localtime' 1395572400,
+     bench "future" $ whnfIO $ localtime' 2100000000
+     ],
+  bgroup "our_localtime_r" [
+     bench "past" $ whnfIO $ localtime (-2100000000),
+     bench "epoch" $ whnfIO $ localtime 0,
+     bench "now" $ whnfIO $ localtime 1395572400,
+     bench "future" $ whnfIO $ localtime 2100000000
+     ]
+  ]
+
+main :: IO ()
+main = do
+  setupTZ "Europe/Budapest"
+  defaultMain benchmarks
diff --git a/tests/testTZ.hs b/tests/testTZ.hs
new file mode 100644
--- /dev/null
+++ b/tests/testTZ.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+
+module Main (main) where
+
+import Bindings.Posix.Time
+import Data.Bits
+import Data.Int
+import Data.IORef
+import Data.Time
+import Data.Time.Clock.POSIX
+import Data.Time.Zones
+import Test.Framework.Providers.HUnit
+import Test.Framework.Providers.QuickCheck2
+import Test.Framework.TH
+import Test.HUnit hiding (Test, assert)
+import Test.QuickCheck
+import Test.QuickCheck.Monadic
+import System.Posix.Env
+import System.IO.Unsafe
+
+setupTZ :: String -> IO TZ
+setupTZ zoneName = do
+  setEnv "TZ" zoneName True
+  c'tzset
+  loadSystemTZ zoneName
+
+onceIO :: IO a -> IO a
+{-# NOINLINE onceIO #-}
+onceIO op = opWrap
+  where
+    {-# NOINLINE var #-}
+    var = unsafePerformIO $ newIORef Nothing
+    opWrap = do
+      v <- readIORef var
+      case v of
+        Just x -> return x
+        Nothing -> do
+          x <- op
+          atomicWriteIORef var $ Just x
+          return x
+
+-- On the Int32 range of POSIX times we should replicate the behavior
+-- perfectly.
+--
+-- * After year 2038 we normally run into a range where the
+-- envvar-like "rule" part of the TZif should be interpreted, which we
+-- don't do yet.
+--
+-- * And below around -2^55 the localtime_r C function starts failing
+-- with "value too large".
+checkTimeZone :: String -> Int32 -> Property
+checkTimeZone zoneName = prop
+  where
+    setup = onceIO $ setupTZ zoneName
+    prop ut = monadicIO $ do
+      tz <- run $ setup
+      run $ print ut
+      timeZone <- run $ getTimeZone $ posixSecondsToUTCTime $ fromIntegral ut
+      run $ timeZoneForPOSIX tz (fromIntegral ut) @?= timeZone
+
+-- See comment for the checkTimeZone.
+checkTimeZone64 :: String -> Property
+checkTimeZone64 zoneName = prop
+  where
+    setup = onceIO $ setupTZ zoneName
+    two31 = 2147483647
+    prop = monadicIO $ do
+      tz <- run $ setup
+      ut <- pick $ oneof [arbitrary, choose (-two31, two31)]
+      pre $ ut < two31 && ut > -(1 `shiftL` 55)
+      -- This is important. On 32 bit machines we want to limit
+      -- testing to the Int range.
+      pre $ ut > fromIntegral (minBound :: Int)
+      timeZone <- run $ getTimeZone $ posixSecondsToUTCTime $ fromIntegral ut
+      run $ timeZoneForPOSIX tz ut @?= timeZone
+
+-- On the Int32 range of POSIX times we should mostly replicate the
+-- behavior.
+--
+-- * After year 2038 we normally run into a range where the
+-- envvar-like "rule" part of the TZif should be interpreted, which we
+-- don't do yet.
+--
+-- * And the very first time diff in most of the TZif files is usually
+-- the "Local Mean Time", which is generally a fractional number of
+-- minutes, so we would get difference with getTimeZone too. Most of
+-- the locations switch to some more standard time zone before or
+-- around 1900, which happens to be less than -2^31 POSIX time.  But
+-- in some locations this transition falls within the Int32 range
+-- (eg. China), so we can supply another lower bound.
+checkLocalTime :: String -> Maybe Int32 -> Int32 -> Property
+checkLocalTime zoneName mLower = prop
+  where
+    setup = onceIO $ setupTZ zoneName
+    prop ut = monadicIO $ do
+      case mLower of
+        Nothing -> return ()
+        Just lower -> pre $ ut > lower
+      tz <- run $ setup
+      let utcTime = posixSecondsToUTCTime $ fromIntegral ut
+      timeZone <- run $ getTimeZone utcTime
+      run $ utcToLocalTimeTZ tz utcTime @?= utcToLocalTime timeZone utcTime
+
+
+case_utcTZ_is_utc = timeZoneForPOSIX utcTZ 0 @?= utc
+
+case_utcTZ_zero_diff = diffForPOSIX utcTZ 0 @?= 0
+
+prop_Budapest_correct_TimeZone = checkTimeZone64 "Europe/Budapest"
+prop_New_York_correct_TimeZone = checkTimeZone64 "America/New_York"
+prop_Los_Angeles_correct_TimeZone = checkTimeZone64 "America/Los_Angeles"
+prop_Shanghai_correct_TimeZone = checkTimeZone64 "Asia/Shanghai"
+prop_Jerusalem_correct_TimeZone = checkTimeZone64 "Asia/Jerusalem"
+prop_Antarctica_Palmer_correct_TimeZone = checkTimeZone64 "Antarctica/Palmer"
+prop_Melbourne_correct_TimeZone = checkTimeZone64 "Australia/Melbourne"
+
+prop_Budapest_correct_LocalTime = checkLocalTime "Europe/Budapest" Nothing
+prop_New_York_correct_LocalTime = checkLocalTime "America/New_York" Nothing
+prop_Los_Angeles_correct_LocalTime = checkLocalTime "America/Los_Angeles" Nothing
+prop_Shanghai_correct_LocalTime = checkLocalTime "Asia/Shanghai" $ Just (-1325491558)
+prop_Jerusalem_correct_LocalTime = checkLocalTime "Asia/Jerusalem" $ Just (-1641003641)
+prop_Antarctica_Palmer_correct_LocalTime = checkLocalTime "Antarctica/Palmer" Nothing
+prop_Melbourne_correct_LocalTime = checkLocalTime "Australia/Melbourne" Nothing
+
+case_DB_utc_is_utc = do
+  tz <- loadTZFromDB "UTC"
+  tz @?= utcTZ
+
+mkLocal y m d hh mm ss
+  = LocalTime (fromGregorian y m d) (TimeOfDay hh mm ss)
+
+mkUTC y m d hh mm ss
+  = UTCTime (fromGregorian y m d) (timeOfDayToTime $ TimeOfDay hh mm ss)
+
+case_Budapest_LocalToUTC = do
+  tz <- loadTZFromDB "Europe/Budapest"
+  let zWinter = TimeZone 60 False "CET"
+      zSummer = TimeZone 120 True "CEST"
+  -- Handle std times:
+  localTimeToUTCFull tz (mkLocal 1970 01 01  01 00 00) @?=
+    LTUUnique (mkUTC 1970 01 01  00 00 00) zWinter
+  localTimeToUTCFull tz (mkLocal 2014 03 23  00 15 15.15) @?=
+    LTUUnique (mkUTC 2014 03 22  23 15 15.15) zWinter
+
+  -- Handle time in winter->summer transition:
+  localTimeToUTCFull tz (mkLocal 2014 03 30  02 15 15) @?=
+    LTUNone (mkUTC 2014 03 30  01 15 15) zWinter
+  -- That utc time is acually in dst already:
+  localTimeToUTCFull tz (mkLocal 2014 03 30  03 15 15) @?=
+    LTUUnique (mkUTC 2014 03 30  01 15 15) zSummer
+
+  -- Handle dst times:
+  localTimeToUTCFull tz (mkLocal 2014 04 05  06 07 08.987654321999) @?=
+    LTUUnique (mkUTC 2014 04 05  04 07 08.987654321999) zSummer
+
+  -- Handle time in summer->winter transition:
+  localTimeToUTCFull tz (mkLocal 2013 10 27  02 15 15) @?=
+    LTUAmbiguous (mkUTC 2013 10 27  00 15 15) (mkUTC 2013 10 27  01 15 15)
+      zSummer zWinter
+
+main :: IO ()
+main = do
+  -- When we are running 'cabal test' the package is not yet
+  -- installed, so we want to use the data directory from within the
+  -- sources.
+  setEnv "tz_datadir" "./tzdata" True
+  $defaultMainGenerator
diff --git a/tz.cabal b/tz.cabal
new file mode 100644
--- /dev/null
+++ b/tz.cabal
@@ -0,0 +1,118 @@
+Name: tz
+Version: 0.0.0.1
+License: Apache-2.0
+License-File: LICENSE
+Author: Mihaly Barasz, Gergely Risko
+Maintainer: Mihaly Barasz <klao@nilcons.com>, Gergely Risko <errge@nilcons.com>
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Category: Data
+Stability: experimental
+Homepage: https://github.com/nilcons/haskell-tz
+Bug-Reports: https://github.com/nilcons/haskell-tz/issues
+Synopsis: Time zones database and library
+Description:
+  This package has two main goals:
+  .
+  * To distribute the standard time zone database in a cabal package,
+    so that it can be used in Haskell programs uniformly on all
+    platforms.
+  .
+  * To provide a library that can read time zone info files
+    (aka. Olson files), and does time zone conversions in a /pure/ and
+    /efficient/ way.
+  .
+  The current version ships the @2014b@ version of the time zone
+  database. See: <http://www.iana.org/time-zones> for more info.
+  .
+  The package is currently in a draft phase, I'm still experimenting
+  with different ideas wrt. scope\/API\/implementation\/etc. All comments
+  are welcome!
+
+Data-Dir: tzdata
+-- We have to explicitly list all the directories because of Cabal's limitations.
+Data-Files: *.tab *.zone Chile/*.zone Etc/*.zone Canada/*.zone Indian/*.zone Africa/*.zone Asia/*.zone Antarctica/*.zone Europe/*.zone America/*.zone America/Kentucky/*.zone America/North_Dakota/*.zone America/Argentina/*.zone America/Indiana/*.zone Mexico/*.zone Brazil/*.zone Atlantic/*.zone Arctic/*.zone Australia/*.zone Pacific/*.zone US/*.zone
+
+Extra-Source-Files:
+  README.md
+
+Source-Repository head
+  Type: git
+  Location: https://github.com/nilcons/haskell-tz.git
+
+Library
+  Exposed-Modules:
+    Data.Time.Zones,
+    Data.Time.Zones.Types,
+    Data.Time.Zones.Read
+  Other-Modules: Paths_tz
+  Default-Language: Haskell2010
+  GHC-Options: -Wall
+  Build-Depends:
+    base               >= 4        && < 5,
+    binary             >= 0.5      && < 0.8,
+    bytestring         >= 0.9      && < 0.11,
+    time               >= 1.2      && < 1.5,
+    vector             >= 0.9      && < 0.11
+
+Test-Suite tests
+  Default-Language: Haskell2010
+  Type: exitcode-stdio-1.0
+  HS-Source-Dirs: tests
+  Main-Is: testTZ.hs
+  GHC-Options: -Wall
+  Build-Depends:
+    tz,
+    base                       >= 4       && < 5,
+    bindings-posix             >= 1.2     && < 2,
+    HUnit                      >= 1.2     && < 1.3,
+    QuickCheck                 >= 2.4     && < 3,
+    test-framework             >= 0.4     && < 1,
+    test-framework-hunit       >= 0.2     && < 0.4,
+    test-framework-quickcheck2 >= 0.2     && < 0.4,
+    test-framework-th          >= 0.2     && < 0.4,
+    time                       >= 1.2     && < 1.5,
+    unix                       >= 2.6     && < 3
+
+Benchmark bench
+  Default-Language: Haskell2010
+  Type: exitcode-stdio-1.0
+  HS-Source-Dirs: benchmarks
+  Main-Is: benchTZ.hs
+  GHC-Options: -Wall -O2
+  Build-Depends:
+    tz,
+    base                       >= 4       && < 5,
+    bindings-posix             >= 1.2     && < 2,
+    criterion                  >= 0.8     && < 0.9,
+    time                       >= 1.2     && < 1.5,
+    timezone-olson,
+    timezone-series,
+    unix                       >= 2.6     && < 3
+
+Benchmark bench_c
+  Default-Language: Haskell2010
+  Type: exitcode-stdio-1.0
+  HS-Source-Dirs: benchmarks
+  Main-Is: bench_c_localtime.hs
+  GHC-Options: -Wall -O2
+  Build-Depends:
+    tz,
+    base                       >= 4       && < 5,
+    bindings-posix             >= 1.2     && < 2,
+    criterion                  >= 0.8     && < 0.9,
+    unix                       >= 2.6     && < 3
+
+Benchmark bench_greg
+  Default-Language: Haskell2010
+  Type: exitcode-stdio-1.0
+  HS-Source-Dirs: benchmarks
+  Main-Is: benchGreg.hs
+  GHC-Options: -Wall -O2
+  Build-Depends:
+    tz,
+    base                       >= 4       && < 5,
+    criterion                  >= 0.8     && < 0.9,
+    lens,
+    thyme,
+    time
diff --git a/tzdata/Africa/Abidjan.zone b/tzdata/Africa/Abidjan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Abidjan.zone differ
diff --git a/tzdata/Africa/Accra.zone b/tzdata/Africa/Accra.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Accra.zone differ
diff --git a/tzdata/Africa/Addis_Ababa.zone b/tzdata/Africa/Addis_Ababa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Addis_Ababa.zone differ
diff --git a/tzdata/Africa/Algiers.zone b/tzdata/Africa/Algiers.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Algiers.zone differ
diff --git a/tzdata/Africa/Asmara.zone b/tzdata/Africa/Asmara.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Asmara.zone differ
diff --git a/tzdata/Africa/Asmera.zone b/tzdata/Africa/Asmera.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Asmera.zone differ
diff --git a/tzdata/Africa/Bamako.zone b/tzdata/Africa/Bamako.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Bamako.zone differ
diff --git a/tzdata/Africa/Bangui.zone b/tzdata/Africa/Bangui.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Bangui.zone differ
diff --git a/tzdata/Africa/Banjul.zone b/tzdata/Africa/Banjul.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Banjul.zone differ
diff --git a/tzdata/Africa/Bissau.zone b/tzdata/Africa/Bissau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Bissau.zone differ
diff --git a/tzdata/Africa/Blantyre.zone b/tzdata/Africa/Blantyre.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Blantyre.zone differ
diff --git a/tzdata/Africa/Brazzaville.zone b/tzdata/Africa/Brazzaville.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Brazzaville.zone differ
diff --git a/tzdata/Africa/Bujumbura.zone b/tzdata/Africa/Bujumbura.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Bujumbura.zone differ
diff --git a/tzdata/Africa/Cairo.zone b/tzdata/Africa/Cairo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Cairo.zone differ
diff --git a/tzdata/Africa/Casablanca.zone b/tzdata/Africa/Casablanca.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Casablanca.zone differ
diff --git a/tzdata/Africa/Ceuta.zone b/tzdata/Africa/Ceuta.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Ceuta.zone differ
diff --git a/tzdata/Africa/Conakry.zone b/tzdata/Africa/Conakry.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Conakry.zone differ
diff --git a/tzdata/Africa/Dakar.zone b/tzdata/Africa/Dakar.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Dakar.zone differ
diff --git a/tzdata/Africa/Dar_es_Salaam.zone b/tzdata/Africa/Dar_es_Salaam.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Dar_es_Salaam.zone differ
diff --git a/tzdata/Africa/Djibouti.zone b/tzdata/Africa/Djibouti.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Djibouti.zone differ
diff --git a/tzdata/Africa/Douala.zone b/tzdata/Africa/Douala.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Douala.zone differ
diff --git a/tzdata/Africa/El_Aaiun.zone b/tzdata/Africa/El_Aaiun.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/El_Aaiun.zone differ
diff --git a/tzdata/Africa/Freetown.zone b/tzdata/Africa/Freetown.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Freetown.zone differ
diff --git a/tzdata/Africa/Gaborone.zone b/tzdata/Africa/Gaborone.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Gaborone.zone differ
diff --git a/tzdata/Africa/Harare.zone b/tzdata/Africa/Harare.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Harare.zone differ
diff --git a/tzdata/Africa/Johannesburg.zone b/tzdata/Africa/Johannesburg.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Johannesburg.zone differ
diff --git a/tzdata/Africa/Juba.zone b/tzdata/Africa/Juba.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Juba.zone differ
diff --git a/tzdata/Africa/Kampala.zone b/tzdata/Africa/Kampala.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Kampala.zone differ
diff --git a/tzdata/Africa/Khartoum.zone b/tzdata/Africa/Khartoum.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Khartoum.zone differ
diff --git a/tzdata/Africa/Kigali.zone b/tzdata/Africa/Kigali.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Kigali.zone differ
diff --git a/tzdata/Africa/Kinshasa.zone b/tzdata/Africa/Kinshasa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Kinshasa.zone differ
diff --git a/tzdata/Africa/Lagos.zone b/tzdata/Africa/Lagos.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Lagos.zone differ
diff --git a/tzdata/Africa/Libreville.zone b/tzdata/Africa/Libreville.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Libreville.zone differ
diff --git a/tzdata/Africa/Lome.zone b/tzdata/Africa/Lome.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Lome.zone differ
diff --git a/tzdata/Africa/Luanda.zone b/tzdata/Africa/Luanda.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Luanda.zone differ
diff --git a/tzdata/Africa/Lubumbashi.zone b/tzdata/Africa/Lubumbashi.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Lubumbashi.zone differ
diff --git a/tzdata/Africa/Lusaka.zone b/tzdata/Africa/Lusaka.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Lusaka.zone differ
diff --git a/tzdata/Africa/Malabo.zone b/tzdata/Africa/Malabo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Malabo.zone differ
diff --git a/tzdata/Africa/Maputo.zone b/tzdata/Africa/Maputo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Maputo.zone differ
diff --git a/tzdata/Africa/Maseru.zone b/tzdata/Africa/Maseru.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Maseru.zone differ
diff --git a/tzdata/Africa/Mbabane.zone b/tzdata/Africa/Mbabane.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Mbabane.zone differ
diff --git a/tzdata/Africa/Mogadishu.zone b/tzdata/Africa/Mogadishu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Mogadishu.zone differ
diff --git a/tzdata/Africa/Monrovia.zone b/tzdata/Africa/Monrovia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Monrovia.zone differ
diff --git a/tzdata/Africa/Nairobi.zone b/tzdata/Africa/Nairobi.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Nairobi.zone differ
diff --git a/tzdata/Africa/Ndjamena.zone b/tzdata/Africa/Ndjamena.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Ndjamena.zone differ
diff --git a/tzdata/Africa/Niamey.zone b/tzdata/Africa/Niamey.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Niamey.zone differ
diff --git a/tzdata/Africa/Nouakchott.zone b/tzdata/Africa/Nouakchott.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Nouakchott.zone differ
diff --git a/tzdata/Africa/Ouagadougou.zone b/tzdata/Africa/Ouagadougou.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Ouagadougou.zone differ
diff --git a/tzdata/Africa/Porto-Novo.zone b/tzdata/Africa/Porto-Novo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Porto-Novo.zone differ
diff --git a/tzdata/Africa/Sao_Tome.zone b/tzdata/Africa/Sao_Tome.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Sao_Tome.zone differ
diff --git a/tzdata/Africa/Timbuktu.zone b/tzdata/Africa/Timbuktu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Timbuktu.zone differ
diff --git a/tzdata/Africa/Tripoli.zone b/tzdata/Africa/Tripoli.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Tripoli.zone differ
diff --git a/tzdata/Africa/Tunis.zone b/tzdata/Africa/Tunis.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Tunis.zone differ
diff --git a/tzdata/Africa/Windhoek.zone b/tzdata/Africa/Windhoek.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Africa/Windhoek.zone differ
diff --git a/tzdata/America/Adak.zone b/tzdata/America/Adak.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Adak.zone differ
diff --git a/tzdata/America/Anchorage.zone b/tzdata/America/Anchorage.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Anchorage.zone differ
diff --git a/tzdata/America/Anguilla.zone b/tzdata/America/Anguilla.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Anguilla.zone differ
diff --git a/tzdata/America/Antigua.zone b/tzdata/America/Antigua.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Antigua.zone differ
diff --git a/tzdata/America/Araguaina.zone b/tzdata/America/Araguaina.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Araguaina.zone differ
diff --git a/tzdata/America/Argentina/Buenos_Aires.zone b/tzdata/America/Argentina/Buenos_Aires.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Buenos_Aires.zone differ
diff --git a/tzdata/America/Argentina/Catamarca.zone b/tzdata/America/Argentina/Catamarca.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Catamarca.zone differ
diff --git a/tzdata/America/Argentina/ComodRivadavia.zone b/tzdata/America/Argentina/ComodRivadavia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/ComodRivadavia.zone differ
diff --git a/tzdata/America/Argentina/Cordoba.zone b/tzdata/America/Argentina/Cordoba.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Cordoba.zone differ
diff --git a/tzdata/America/Argentina/Jujuy.zone b/tzdata/America/Argentina/Jujuy.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Jujuy.zone differ
diff --git a/tzdata/America/Argentina/La_Rioja.zone b/tzdata/America/Argentina/La_Rioja.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/La_Rioja.zone differ
diff --git a/tzdata/America/Argentina/Mendoza.zone b/tzdata/America/Argentina/Mendoza.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Mendoza.zone differ
diff --git a/tzdata/America/Argentina/Rio_Gallegos.zone b/tzdata/America/Argentina/Rio_Gallegos.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Rio_Gallegos.zone differ
diff --git a/tzdata/America/Argentina/Salta.zone b/tzdata/America/Argentina/Salta.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Salta.zone differ
diff --git a/tzdata/America/Argentina/San_Juan.zone b/tzdata/America/Argentina/San_Juan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/San_Juan.zone differ
diff --git a/tzdata/America/Argentina/San_Luis.zone b/tzdata/America/Argentina/San_Luis.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/San_Luis.zone differ
diff --git a/tzdata/America/Argentina/Tucuman.zone b/tzdata/America/Argentina/Tucuman.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Tucuman.zone differ
diff --git a/tzdata/America/Argentina/Ushuaia.zone b/tzdata/America/Argentina/Ushuaia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Argentina/Ushuaia.zone differ
diff --git a/tzdata/America/Aruba.zone b/tzdata/America/Aruba.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Aruba.zone differ
diff --git a/tzdata/America/Asuncion.zone b/tzdata/America/Asuncion.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Asuncion.zone differ
diff --git a/tzdata/America/Atikokan.zone b/tzdata/America/Atikokan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Atikokan.zone differ
diff --git a/tzdata/America/Atka.zone b/tzdata/America/Atka.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Atka.zone differ
diff --git a/tzdata/America/Bahia.zone b/tzdata/America/Bahia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Bahia.zone differ
diff --git a/tzdata/America/Bahia_Banderas.zone b/tzdata/America/Bahia_Banderas.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Bahia_Banderas.zone differ
diff --git a/tzdata/America/Barbados.zone b/tzdata/America/Barbados.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Barbados.zone differ
diff --git a/tzdata/America/Belem.zone b/tzdata/America/Belem.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Belem.zone differ
diff --git a/tzdata/America/Belize.zone b/tzdata/America/Belize.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Belize.zone differ
diff --git a/tzdata/America/Blanc-Sablon.zone b/tzdata/America/Blanc-Sablon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Blanc-Sablon.zone differ
diff --git a/tzdata/America/Boa_Vista.zone b/tzdata/America/Boa_Vista.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Boa_Vista.zone differ
diff --git a/tzdata/America/Bogota.zone b/tzdata/America/Bogota.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Bogota.zone differ
diff --git a/tzdata/America/Boise.zone b/tzdata/America/Boise.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Boise.zone differ
diff --git a/tzdata/America/Buenos_Aires.zone b/tzdata/America/Buenos_Aires.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Buenos_Aires.zone differ
diff --git a/tzdata/America/Cambridge_Bay.zone b/tzdata/America/Cambridge_Bay.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Cambridge_Bay.zone differ
diff --git a/tzdata/America/Campo_Grande.zone b/tzdata/America/Campo_Grande.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Campo_Grande.zone differ
diff --git a/tzdata/America/Cancun.zone b/tzdata/America/Cancun.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Cancun.zone differ
diff --git a/tzdata/America/Caracas.zone b/tzdata/America/Caracas.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Caracas.zone differ
diff --git a/tzdata/America/Catamarca.zone b/tzdata/America/Catamarca.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Catamarca.zone differ
diff --git a/tzdata/America/Cayenne.zone b/tzdata/America/Cayenne.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Cayenne.zone differ
diff --git a/tzdata/America/Cayman.zone b/tzdata/America/Cayman.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Cayman.zone differ
diff --git a/tzdata/America/Chicago.zone b/tzdata/America/Chicago.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Chicago.zone differ
diff --git a/tzdata/America/Chihuahua.zone b/tzdata/America/Chihuahua.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Chihuahua.zone differ
diff --git a/tzdata/America/Coral_Harbour.zone b/tzdata/America/Coral_Harbour.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Coral_Harbour.zone differ
diff --git a/tzdata/America/Cordoba.zone b/tzdata/America/Cordoba.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Cordoba.zone differ
diff --git a/tzdata/America/Costa_Rica.zone b/tzdata/America/Costa_Rica.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Costa_Rica.zone differ
diff --git a/tzdata/America/Creston.zone b/tzdata/America/Creston.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Creston.zone differ
diff --git a/tzdata/America/Cuiaba.zone b/tzdata/America/Cuiaba.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Cuiaba.zone differ
diff --git a/tzdata/America/Curacao.zone b/tzdata/America/Curacao.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Curacao.zone differ
diff --git a/tzdata/America/Danmarkshavn.zone b/tzdata/America/Danmarkshavn.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Danmarkshavn.zone differ
diff --git a/tzdata/America/Dawson.zone b/tzdata/America/Dawson.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Dawson.zone differ
diff --git a/tzdata/America/Dawson_Creek.zone b/tzdata/America/Dawson_Creek.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Dawson_Creek.zone differ
diff --git a/tzdata/America/Denver.zone b/tzdata/America/Denver.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Denver.zone differ
diff --git a/tzdata/America/Detroit.zone b/tzdata/America/Detroit.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Detroit.zone differ
diff --git a/tzdata/America/Dominica.zone b/tzdata/America/Dominica.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Dominica.zone differ
diff --git a/tzdata/America/Edmonton.zone b/tzdata/America/Edmonton.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Edmonton.zone differ
diff --git a/tzdata/America/Eirunepe.zone b/tzdata/America/Eirunepe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Eirunepe.zone differ
diff --git a/tzdata/America/El_Salvador.zone b/tzdata/America/El_Salvador.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/El_Salvador.zone differ
diff --git a/tzdata/America/Ensenada.zone b/tzdata/America/Ensenada.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Ensenada.zone differ
diff --git a/tzdata/America/Fort_Wayne.zone b/tzdata/America/Fort_Wayne.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Fort_Wayne.zone differ
diff --git a/tzdata/America/Fortaleza.zone b/tzdata/America/Fortaleza.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Fortaleza.zone differ
diff --git a/tzdata/America/Glace_Bay.zone b/tzdata/America/Glace_Bay.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Glace_Bay.zone differ
diff --git a/tzdata/America/Godthab.zone b/tzdata/America/Godthab.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Godthab.zone differ
diff --git a/tzdata/America/Goose_Bay.zone b/tzdata/America/Goose_Bay.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Goose_Bay.zone differ
diff --git a/tzdata/America/Grand_Turk.zone b/tzdata/America/Grand_Turk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Grand_Turk.zone differ
diff --git a/tzdata/America/Grenada.zone b/tzdata/America/Grenada.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Grenada.zone differ
diff --git a/tzdata/America/Guadeloupe.zone b/tzdata/America/Guadeloupe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Guadeloupe.zone differ
diff --git a/tzdata/America/Guatemala.zone b/tzdata/America/Guatemala.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Guatemala.zone differ
diff --git a/tzdata/America/Guayaquil.zone b/tzdata/America/Guayaquil.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Guayaquil.zone differ
diff --git a/tzdata/America/Guyana.zone b/tzdata/America/Guyana.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Guyana.zone differ
diff --git a/tzdata/America/Halifax.zone b/tzdata/America/Halifax.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Halifax.zone differ
diff --git a/tzdata/America/Havana.zone b/tzdata/America/Havana.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Havana.zone differ
diff --git a/tzdata/America/Hermosillo.zone b/tzdata/America/Hermosillo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Hermosillo.zone differ
diff --git a/tzdata/America/Indiana/Indianapolis.zone b/tzdata/America/Indiana/Indianapolis.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Indianapolis.zone differ
diff --git a/tzdata/America/Indiana/Knox.zone b/tzdata/America/Indiana/Knox.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Knox.zone differ
diff --git a/tzdata/America/Indiana/Marengo.zone b/tzdata/America/Indiana/Marengo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Marengo.zone differ
diff --git a/tzdata/America/Indiana/Petersburg.zone b/tzdata/America/Indiana/Petersburg.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Petersburg.zone differ
diff --git a/tzdata/America/Indiana/Tell_City.zone b/tzdata/America/Indiana/Tell_City.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Tell_City.zone differ
diff --git a/tzdata/America/Indiana/Vevay.zone b/tzdata/America/Indiana/Vevay.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Vevay.zone differ
diff --git a/tzdata/America/Indiana/Vincennes.zone b/tzdata/America/Indiana/Vincennes.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Vincennes.zone differ
diff --git a/tzdata/America/Indiana/Winamac.zone b/tzdata/America/Indiana/Winamac.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indiana/Winamac.zone differ
diff --git a/tzdata/America/Indianapolis.zone b/tzdata/America/Indianapolis.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Indianapolis.zone differ
diff --git a/tzdata/America/Inuvik.zone b/tzdata/America/Inuvik.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Inuvik.zone differ
diff --git a/tzdata/America/Iqaluit.zone b/tzdata/America/Iqaluit.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Iqaluit.zone differ
diff --git a/tzdata/America/Jamaica.zone b/tzdata/America/Jamaica.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Jamaica.zone differ
diff --git a/tzdata/America/Jujuy.zone b/tzdata/America/Jujuy.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Jujuy.zone differ
diff --git a/tzdata/America/Juneau.zone b/tzdata/America/Juneau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Juneau.zone differ
diff --git a/tzdata/America/Kentucky/Louisville.zone b/tzdata/America/Kentucky/Louisville.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Kentucky/Louisville.zone differ
diff --git a/tzdata/America/Kentucky/Monticello.zone b/tzdata/America/Kentucky/Monticello.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Kentucky/Monticello.zone differ
diff --git a/tzdata/America/Knox_IN.zone b/tzdata/America/Knox_IN.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Knox_IN.zone differ
diff --git a/tzdata/America/Kralendijk.zone b/tzdata/America/Kralendijk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Kralendijk.zone differ
diff --git a/tzdata/America/La_Paz.zone b/tzdata/America/La_Paz.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/La_Paz.zone differ
diff --git a/tzdata/America/Lima.zone b/tzdata/America/Lima.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Lima.zone differ
diff --git a/tzdata/America/Los_Angeles.zone b/tzdata/America/Los_Angeles.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Los_Angeles.zone differ
diff --git a/tzdata/America/Louisville.zone b/tzdata/America/Louisville.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Louisville.zone differ
diff --git a/tzdata/America/Lower_Princes.zone b/tzdata/America/Lower_Princes.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Lower_Princes.zone differ
diff --git a/tzdata/America/Maceio.zone b/tzdata/America/Maceio.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Maceio.zone differ
diff --git a/tzdata/America/Managua.zone b/tzdata/America/Managua.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Managua.zone differ
diff --git a/tzdata/America/Manaus.zone b/tzdata/America/Manaus.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Manaus.zone differ
diff --git a/tzdata/America/Marigot.zone b/tzdata/America/Marigot.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Marigot.zone differ
diff --git a/tzdata/America/Martinique.zone b/tzdata/America/Martinique.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Martinique.zone differ
diff --git a/tzdata/America/Matamoros.zone b/tzdata/America/Matamoros.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Matamoros.zone differ
diff --git a/tzdata/America/Mazatlan.zone b/tzdata/America/Mazatlan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Mazatlan.zone differ
diff --git a/tzdata/America/Mendoza.zone b/tzdata/America/Mendoza.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Mendoza.zone differ
diff --git a/tzdata/America/Menominee.zone b/tzdata/America/Menominee.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Menominee.zone differ
diff --git a/tzdata/America/Merida.zone b/tzdata/America/Merida.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Merida.zone differ
diff --git a/tzdata/America/Metlakatla.zone b/tzdata/America/Metlakatla.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Metlakatla.zone differ
diff --git a/tzdata/America/Mexico_City.zone b/tzdata/America/Mexico_City.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Mexico_City.zone differ
diff --git a/tzdata/America/Miquelon.zone b/tzdata/America/Miquelon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Miquelon.zone differ
diff --git a/tzdata/America/Moncton.zone b/tzdata/America/Moncton.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Moncton.zone differ
diff --git a/tzdata/America/Monterrey.zone b/tzdata/America/Monterrey.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Monterrey.zone differ
diff --git a/tzdata/America/Montevideo.zone b/tzdata/America/Montevideo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Montevideo.zone differ
diff --git a/tzdata/America/Montreal.zone b/tzdata/America/Montreal.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Montreal.zone differ
diff --git a/tzdata/America/Montserrat.zone b/tzdata/America/Montserrat.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Montserrat.zone differ
diff --git a/tzdata/America/Nassau.zone b/tzdata/America/Nassau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Nassau.zone differ
diff --git a/tzdata/America/New_York.zone b/tzdata/America/New_York.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/New_York.zone differ
diff --git a/tzdata/America/Nipigon.zone b/tzdata/America/Nipigon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Nipigon.zone differ
diff --git a/tzdata/America/Nome.zone b/tzdata/America/Nome.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Nome.zone differ
diff --git a/tzdata/America/Noronha.zone b/tzdata/America/Noronha.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Noronha.zone differ
diff --git a/tzdata/America/North_Dakota/Beulah.zone b/tzdata/America/North_Dakota/Beulah.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/North_Dakota/Beulah.zone differ
diff --git a/tzdata/America/North_Dakota/Center.zone b/tzdata/America/North_Dakota/Center.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/North_Dakota/Center.zone differ
diff --git a/tzdata/America/North_Dakota/New_Salem.zone b/tzdata/America/North_Dakota/New_Salem.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/North_Dakota/New_Salem.zone differ
diff --git a/tzdata/America/Ojinaga.zone b/tzdata/America/Ojinaga.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Ojinaga.zone differ
diff --git a/tzdata/America/Panama.zone b/tzdata/America/Panama.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Panama.zone differ
diff --git a/tzdata/America/Pangnirtung.zone b/tzdata/America/Pangnirtung.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Pangnirtung.zone differ
diff --git a/tzdata/America/Paramaribo.zone b/tzdata/America/Paramaribo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Paramaribo.zone differ
diff --git a/tzdata/America/Phoenix.zone b/tzdata/America/Phoenix.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Phoenix.zone differ
diff --git a/tzdata/America/Port-au-Prince.zone b/tzdata/America/Port-au-Prince.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Port-au-Prince.zone differ
diff --git a/tzdata/America/Port_of_Spain.zone b/tzdata/America/Port_of_Spain.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Port_of_Spain.zone differ
diff --git a/tzdata/America/Porto_Acre.zone b/tzdata/America/Porto_Acre.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Porto_Acre.zone differ
diff --git a/tzdata/America/Porto_Velho.zone b/tzdata/America/Porto_Velho.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Porto_Velho.zone differ
diff --git a/tzdata/America/Puerto_Rico.zone b/tzdata/America/Puerto_Rico.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Puerto_Rico.zone differ
diff --git a/tzdata/America/Rainy_River.zone b/tzdata/America/Rainy_River.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Rainy_River.zone differ
diff --git a/tzdata/America/Rankin_Inlet.zone b/tzdata/America/Rankin_Inlet.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Rankin_Inlet.zone differ
diff --git a/tzdata/America/Recife.zone b/tzdata/America/Recife.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Recife.zone differ
diff --git a/tzdata/America/Regina.zone b/tzdata/America/Regina.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Regina.zone differ
diff --git a/tzdata/America/Resolute.zone b/tzdata/America/Resolute.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Resolute.zone differ
diff --git a/tzdata/America/Rio_Branco.zone b/tzdata/America/Rio_Branco.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Rio_Branco.zone differ
diff --git a/tzdata/America/Rosario.zone b/tzdata/America/Rosario.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Rosario.zone differ
diff --git a/tzdata/America/Santa_Isabel.zone b/tzdata/America/Santa_Isabel.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Santa_Isabel.zone differ
diff --git a/tzdata/America/Santarem.zone b/tzdata/America/Santarem.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Santarem.zone differ
diff --git a/tzdata/America/Santiago.zone b/tzdata/America/Santiago.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Santiago.zone differ
diff --git a/tzdata/America/Santo_Domingo.zone b/tzdata/America/Santo_Domingo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Santo_Domingo.zone differ
diff --git a/tzdata/America/Sao_Paulo.zone b/tzdata/America/Sao_Paulo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Sao_Paulo.zone differ
diff --git a/tzdata/America/Scoresbysund.zone b/tzdata/America/Scoresbysund.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Scoresbysund.zone differ
diff --git a/tzdata/America/Shiprock.zone b/tzdata/America/Shiprock.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Shiprock.zone differ
diff --git a/tzdata/America/Sitka.zone b/tzdata/America/Sitka.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Sitka.zone differ
diff --git a/tzdata/America/St_Barthelemy.zone b/tzdata/America/St_Barthelemy.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/St_Barthelemy.zone differ
diff --git a/tzdata/America/St_Johns.zone b/tzdata/America/St_Johns.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/St_Johns.zone differ
diff --git a/tzdata/America/St_Kitts.zone b/tzdata/America/St_Kitts.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/St_Kitts.zone differ
diff --git a/tzdata/America/St_Lucia.zone b/tzdata/America/St_Lucia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/St_Lucia.zone differ
diff --git a/tzdata/America/St_Thomas.zone b/tzdata/America/St_Thomas.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/St_Thomas.zone differ
diff --git a/tzdata/America/St_Vincent.zone b/tzdata/America/St_Vincent.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/St_Vincent.zone differ
diff --git a/tzdata/America/Swift_Current.zone b/tzdata/America/Swift_Current.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Swift_Current.zone differ
diff --git a/tzdata/America/Tegucigalpa.zone b/tzdata/America/Tegucigalpa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Tegucigalpa.zone differ
diff --git a/tzdata/America/Thule.zone b/tzdata/America/Thule.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Thule.zone differ
diff --git a/tzdata/America/Thunder_Bay.zone b/tzdata/America/Thunder_Bay.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Thunder_Bay.zone differ
diff --git a/tzdata/America/Tijuana.zone b/tzdata/America/Tijuana.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Tijuana.zone differ
diff --git a/tzdata/America/Toronto.zone b/tzdata/America/Toronto.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Toronto.zone differ
diff --git a/tzdata/America/Tortola.zone b/tzdata/America/Tortola.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Tortola.zone differ
diff --git a/tzdata/America/Vancouver.zone b/tzdata/America/Vancouver.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Vancouver.zone differ
diff --git a/tzdata/America/Virgin.zone b/tzdata/America/Virgin.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Virgin.zone differ
diff --git a/tzdata/America/Whitehorse.zone b/tzdata/America/Whitehorse.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Whitehorse.zone differ
diff --git a/tzdata/America/Winnipeg.zone b/tzdata/America/Winnipeg.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Winnipeg.zone differ
diff --git a/tzdata/America/Yakutat.zone b/tzdata/America/Yakutat.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Yakutat.zone differ
diff --git a/tzdata/America/Yellowknife.zone b/tzdata/America/Yellowknife.zone
new file mode 100644
Binary files /dev/null and b/tzdata/America/Yellowknife.zone differ
diff --git a/tzdata/Antarctica/Casey.zone b/tzdata/Antarctica/Casey.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Casey.zone differ
diff --git a/tzdata/Antarctica/Davis.zone b/tzdata/Antarctica/Davis.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Davis.zone differ
diff --git a/tzdata/Antarctica/DumontDUrville.zone b/tzdata/Antarctica/DumontDUrville.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/DumontDUrville.zone differ
diff --git a/tzdata/Antarctica/Macquarie.zone b/tzdata/Antarctica/Macquarie.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Macquarie.zone differ
diff --git a/tzdata/Antarctica/Mawson.zone b/tzdata/Antarctica/Mawson.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Mawson.zone differ
diff --git a/tzdata/Antarctica/McMurdo.zone b/tzdata/Antarctica/McMurdo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/McMurdo.zone differ
diff --git a/tzdata/Antarctica/Palmer.zone b/tzdata/Antarctica/Palmer.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Palmer.zone differ
diff --git a/tzdata/Antarctica/Rothera.zone b/tzdata/Antarctica/Rothera.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Rothera.zone differ
diff --git a/tzdata/Antarctica/South_Pole.zone b/tzdata/Antarctica/South_Pole.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/South_Pole.zone differ
diff --git a/tzdata/Antarctica/Syowa.zone b/tzdata/Antarctica/Syowa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Syowa.zone differ
diff --git a/tzdata/Antarctica/Troll.zone b/tzdata/Antarctica/Troll.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Troll.zone differ
diff --git a/tzdata/Antarctica/Vostok.zone b/tzdata/Antarctica/Vostok.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Antarctica/Vostok.zone differ
diff --git a/tzdata/Arctic/Longyearbyen.zone b/tzdata/Arctic/Longyearbyen.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Arctic/Longyearbyen.zone differ
diff --git a/tzdata/Asia/Aden.zone b/tzdata/Asia/Aden.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Aden.zone differ
diff --git a/tzdata/Asia/Almaty.zone b/tzdata/Asia/Almaty.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Almaty.zone differ
diff --git a/tzdata/Asia/Amman.zone b/tzdata/Asia/Amman.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Amman.zone differ
diff --git a/tzdata/Asia/Anadyr.zone b/tzdata/Asia/Anadyr.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Anadyr.zone differ
diff --git a/tzdata/Asia/Aqtau.zone b/tzdata/Asia/Aqtau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Aqtau.zone differ
diff --git a/tzdata/Asia/Aqtobe.zone b/tzdata/Asia/Aqtobe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Aqtobe.zone differ
diff --git a/tzdata/Asia/Ashgabat.zone b/tzdata/Asia/Ashgabat.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ashgabat.zone differ
diff --git a/tzdata/Asia/Ashkhabad.zone b/tzdata/Asia/Ashkhabad.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ashkhabad.zone differ
diff --git a/tzdata/Asia/Baghdad.zone b/tzdata/Asia/Baghdad.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Baghdad.zone differ
diff --git a/tzdata/Asia/Bahrain.zone b/tzdata/Asia/Bahrain.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Bahrain.zone differ
diff --git a/tzdata/Asia/Baku.zone b/tzdata/Asia/Baku.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Baku.zone differ
diff --git a/tzdata/Asia/Bangkok.zone b/tzdata/Asia/Bangkok.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Bangkok.zone differ
diff --git a/tzdata/Asia/Beirut.zone b/tzdata/Asia/Beirut.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Beirut.zone differ
diff --git a/tzdata/Asia/Bishkek.zone b/tzdata/Asia/Bishkek.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Bishkek.zone differ
diff --git a/tzdata/Asia/Brunei.zone b/tzdata/Asia/Brunei.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Brunei.zone differ
diff --git a/tzdata/Asia/Calcutta.zone b/tzdata/Asia/Calcutta.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Calcutta.zone differ
diff --git a/tzdata/Asia/Choibalsan.zone b/tzdata/Asia/Choibalsan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Choibalsan.zone differ
diff --git a/tzdata/Asia/Chongqing.zone b/tzdata/Asia/Chongqing.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Chongqing.zone differ
diff --git a/tzdata/Asia/Chungking.zone b/tzdata/Asia/Chungking.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Chungking.zone differ
diff --git a/tzdata/Asia/Colombo.zone b/tzdata/Asia/Colombo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Colombo.zone differ
diff --git a/tzdata/Asia/Dacca.zone b/tzdata/Asia/Dacca.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Dacca.zone differ
diff --git a/tzdata/Asia/Damascus.zone b/tzdata/Asia/Damascus.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Damascus.zone differ
diff --git a/tzdata/Asia/Dhaka.zone b/tzdata/Asia/Dhaka.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Dhaka.zone differ
diff --git a/tzdata/Asia/Dili.zone b/tzdata/Asia/Dili.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Dili.zone differ
diff --git a/tzdata/Asia/Dubai.zone b/tzdata/Asia/Dubai.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Dubai.zone differ
diff --git a/tzdata/Asia/Dushanbe.zone b/tzdata/Asia/Dushanbe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Dushanbe.zone differ
diff --git a/tzdata/Asia/Gaza.zone b/tzdata/Asia/Gaza.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Gaza.zone differ
diff --git a/tzdata/Asia/Harbin.zone b/tzdata/Asia/Harbin.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Harbin.zone differ
diff --git a/tzdata/Asia/Hebron.zone b/tzdata/Asia/Hebron.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Hebron.zone differ
diff --git a/tzdata/Asia/Ho_Chi_Minh.zone b/tzdata/Asia/Ho_Chi_Minh.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ho_Chi_Minh.zone differ
diff --git a/tzdata/Asia/Hong_Kong.zone b/tzdata/Asia/Hong_Kong.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Hong_Kong.zone differ
diff --git a/tzdata/Asia/Hovd.zone b/tzdata/Asia/Hovd.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Hovd.zone differ
diff --git a/tzdata/Asia/Irkutsk.zone b/tzdata/Asia/Irkutsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Irkutsk.zone differ
diff --git a/tzdata/Asia/Istanbul.zone b/tzdata/Asia/Istanbul.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Istanbul.zone differ
diff --git a/tzdata/Asia/Jakarta.zone b/tzdata/Asia/Jakarta.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Jakarta.zone differ
diff --git a/tzdata/Asia/Jayapura.zone b/tzdata/Asia/Jayapura.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Jayapura.zone differ
diff --git a/tzdata/Asia/Jerusalem.zone b/tzdata/Asia/Jerusalem.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Jerusalem.zone differ
diff --git a/tzdata/Asia/Kabul.zone b/tzdata/Asia/Kabul.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kabul.zone differ
diff --git a/tzdata/Asia/Kamchatka.zone b/tzdata/Asia/Kamchatka.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kamchatka.zone differ
diff --git a/tzdata/Asia/Karachi.zone b/tzdata/Asia/Karachi.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Karachi.zone differ
diff --git a/tzdata/Asia/Kashgar.zone b/tzdata/Asia/Kashgar.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kashgar.zone differ
diff --git a/tzdata/Asia/Kathmandu.zone b/tzdata/Asia/Kathmandu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kathmandu.zone differ
diff --git a/tzdata/Asia/Katmandu.zone b/tzdata/Asia/Katmandu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Katmandu.zone differ
diff --git a/tzdata/Asia/Khandyga.zone b/tzdata/Asia/Khandyga.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Khandyga.zone differ
diff --git a/tzdata/Asia/Kolkata.zone b/tzdata/Asia/Kolkata.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kolkata.zone differ
diff --git a/tzdata/Asia/Krasnoyarsk.zone b/tzdata/Asia/Krasnoyarsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Krasnoyarsk.zone differ
diff --git a/tzdata/Asia/Kuala_Lumpur.zone b/tzdata/Asia/Kuala_Lumpur.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kuala_Lumpur.zone differ
diff --git a/tzdata/Asia/Kuching.zone b/tzdata/Asia/Kuching.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kuching.zone differ
diff --git a/tzdata/Asia/Kuwait.zone b/tzdata/Asia/Kuwait.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Kuwait.zone differ
diff --git a/tzdata/Asia/Macao.zone b/tzdata/Asia/Macao.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Macao.zone differ
diff --git a/tzdata/Asia/Macau.zone b/tzdata/Asia/Macau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Macau.zone differ
diff --git a/tzdata/Asia/Magadan.zone b/tzdata/Asia/Magadan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Magadan.zone differ
diff --git a/tzdata/Asia/Makassar.zone b/tzdata/Asia/Makassar.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Makassar.zone differ
diff --git a/tzdata/Asia/Manila.zone b/tzdata/Asia/Manila.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Manila.zone differ
diff --git a/tzdata/Asia/Muscat.zone b/tzdata/Asia/Muscat.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Muscat.zone differ
diff --git a/tzdata/Asia/Nicosia.zone b/tzdata/Asia/Nicosia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Nicosia.zone differ
diff --git a/tzdata/Asia/Novokuznetsk.zone b/tzdata/Asia/Novokuznetsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Novokuznetsk.zone differ
diff --git a/tzdata/Asia/Novosibirsk.zone b/tzdata/Asia/Novosibirsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Novosibirsk.zone differ
diff --git a/tzdata/Asia/Omsk.zone b/tzdata/Asia/Omsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Omsk.zone differ
diff --git a/tzdata/Asia/Oral.zone b/tzdata/Asia/Oral.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Oral.zone differ
diff --git a/tzdata/Asia/Phnom_Penh.zone b/tzdata/Asia/Phnom_Penh.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Phnom_Penh.zone differ
diff --git a/tzdata/Asia/Pontianak.zone b/tzdata/Asia/Pontianak.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Pontianak.zone differ
diff --git a/tzdata/Asia/Pyongyang.zone b/tzdata/Asia/Pyongyang.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Pyongyang.zone differ
diff --git a/tzdata/Asia/Qatar.zone b/tzdata/Asia/Qatar.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Qatar.zone differ
diff --git a/tzdata/Asia/Qyzylorda.zone b/tzdata/Asia/Qyzylorda.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Qyzylorda.zone differ
diff --git a/tzdata/Asia/Rangoon.zone b/tzdata/Asia/Rangoon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Rangoon.zone differ
diff --git a/tzdata/Asia/Riyadh.zone b/tzdata/Asia/Riyadh.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Riyadh.zone differ
diff --git a/tzdata/Asia/Saigon.zone b/tzdata/Asia/Saigon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Saigon.zone differ
diff --git a/tzdata/Asia/Sakhalin.zone b/tzdata/Asia/Sakhalin.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Sakhalin.zone differ
diff --git a/tzdata/Asia/Samarkand.zone b/tzdata/Asia/Samarkand.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Samarkand.zone differ
diff --git a/tzdata/Asia/Seoul.zone b/tzdata/Asia/Seoul.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Seoul.zone differ
diff --git a/tzdata/Asia/Shanghai.zone b/tzdata/Asia/Shanghai.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Shanghai.zone differ
diff --git a/tzdata/Asia/Singapore.zone b/tzdata/Asia/Singapore.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Singapore.zone differ
diff --git a/tzdata/Asia/Taipei.zone b/tzdata/Asia/Taipei.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Taipei.zone differ
diff --git a/tzdata/Asia/Tashkent.zone b/tzdata/Asia/Tashkent.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Tashkent.zone differ
diff --git a/tzdata/Asia/Tbilisi.zone b/tzdata/Asia/Tbilisi.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Tbilisi.zone differ
diff --git a/tzdata/Asia/Tehran.zone b/tzdata/Asia/Tehran.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Tehran.zone differ
diff --git a/tzdata/Asia/Tel_Aviv.zone b/tzdata/Asia/Tel_Aviv.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Tel_Aviv.zone differ
diff --git a/tzdata/Asia/Thimbu.zone b/tzdata/Asia/Thimbu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Thimbu.zone differ
diff --git a/tzdata/Asia/Thimphu.zone b/tzdata/Asia/Thimphu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Thimphu.zone differ
diff --git a/tzdata/Asia/Tokyo.zone b/tzdata/Asia/Tokyo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Tokyo.zone differ
diff --git a/tzdata/Asia/Ujung_Pandang.zone b/tzdata/Asia/Ujung_Pandang.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ujung_Pandang.zone differ
diff --git a/tzdata/Asia/Ulaanbaatar.zone b/tzdata/Asia/Ulaanbaatar.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ulaanbaatar.zone differ
diff --git a/tzdata/Asia/Ulan_Bator.zone b/tzdata/Asia/Ulan_Bator.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ulan_Bator.zone differ
diff --git a/tzdata/Asia/Urumqi.zone b/tzdata/Asia/Urumqi.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Urumqi.zone differ
diff --git a/tzdata/Asia/Ust-Nera.zone b/tzdata/Asia/Ust-Nera.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Ust-Nera.zone differ
diff --git a/tzdata/Asia/Vientiane.zone b/tzdata/Asia/Vientiane.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Vientiane.zone differ
diff --git a/tzdata/Asia/Vladivostok.zone b/tzdata/Asia/Vladivostok.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Vladivostok.zone differ
diff --git a/tzdata/Asia/Yakutsk.zone b/tzdata/Asia/Yakutsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Yakutsk.zone differ
diff --git a/tzdata/Asia/Yekaterinburg.zone b/tzdata/Asia/Yekaterinburg.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Yekaterinburg.zone differ
diff --git a/tzdata/Asia/Yerevan.zone b/tzdata/Asia/Yerevan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Asia/Yerevan.zone differ
diff --git a/tzdata/Atlantic/Azores.zone b/tzdata/Atlantic/Azores.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Azores.zone differ
diff --git a/tzdata/Atlantic/Bermuda.zone b/tzdata/Atlantic/Bermuda.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Bermuda.zone differ
diff --git a/tzdata/Atlantic/Canary.zone b/tzdata/Atlantic/Canary.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Canary.zone differ
diff --git a/tzdata/Atlantic/Cape_Verde.zone b/tzdata/Atlantic/Cape_Verde.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Cape_Verde.zone differ
diff --git a/tzdata/Atlantic/Faeroe.zone b/tzdata/Atlantic/Faeroe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Faeroe.zone differ
diff --git a/tzdata/Atlantic/Faroe.zone b/tzdata/Atlantic/Faroe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Faroe.zone differ
diff --git a/tzdata/Atlantic/Jan_Mayen.zone b/tzdata/Atlantic/Jan_Mayen.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Jan_Mayen.zone differ
diff --git a/tzdata/Atlantic/Madeira.zone b/tzdata/Atlantic/Madeira.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Madeira.zone differ
diff --git a/tzdata/Atlantic/Reykjavik.zone b/tzdata/Atlantic/Reykjavik.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Reykjavik.zone differ
diff --git a/tzdata/Atlantic/South_Georgia.zone b/tzdata/Atlantic/South_Georgia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/South_Georgia.zone differ
diff --git a/tzdata/Atlantic/St_Helena.zone b/tzdata/Atlantic/St_Helena.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/St_Helena.zone differ
diff --git a/tzdata/Atlantic/Stanley.zone b/tzdata/Atlantic/Stanley.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Atlantic/Stanley.zone differ
diff --git a/tzdata/Australia/ACT.zone b/tzdata/Australia/ACT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/ACT.zone differ
diff --git a/tzdata/Australia/Adelaide.zone b/tzdata/Australia/Adelaide.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Adelaide.zone differ
diff --git a/tzdata/Australia/Brisbane.zone b/tzdata/Australia/Brisbane.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Brisbane.zone differ
diff --git a/tzdata/Australia/Broken_Hill.zone b/tzdata/Australia/Broken_Hill.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Broken_Hill.zone differ
diff --git a/tzdata/Australia/Canberra.zone b/tzdata/Australia/Canberra.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Canberra.zone differ
diff --git a/tzdata/Australia/Currie.zone b/tzdata/Australia/Currie.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Currie.zone differ
diff --git a/tzdata/Australia/Darwin.zone b/tzdata/Australia/Darwin.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Darwin.zone differ
diff --git a/tzdata/Australia/Eucla.zone b/tzdata/Australia/Eucla.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Eucla.zone differ
diff --git a/tzdata/Australia/Hobart.zone b/tzdata/Australia/Hobart.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Hobart.zone differ
diff --git a/tzdata/Australia/LHI.zone b/tzdata/Australia/LHI.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/LHI.zone differ
diff --git a/tzdata/Australia/Lindeman.zone b/tzdata/Australia/Lindeman.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Lindeman.zone differ
diff --git a/tzdata/Australia/Lord_Howe.zone b/tzdata/Australia/Lord_Howe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Lord_Howe.zone differ
diff --git a/tzdata/Australia/Melbourne.zone b/tzdata/Australia/Melbourne.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Melbourne.zone differ
diff --git a/tzdata/Australia/NSW.zone b/tzdata/Australia/NSW.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/NSW.zone differ
diff --git a/tzdata/Australia/North.zone b/tzdata/Australia/North.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/North.zone differ
diff --git a/tzdata/Australia/Perth.zone b/tzdata/Australia/Perth.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Perth.zone differ
diff --git a/tzdata/Australia/Queensland.zone b/tzdata/Australia/Queensland.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Queensland.zone differ
diff --git a/tzdata/Australia/South.zone b/tzdata/Australia/South.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/South.zone differ
diff --git a/tzdata/Australia/Sydney.zone b/tzdata/Australia/Sydney.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Sydney.zone differ
diff --git a/tzdata/Australia/Tasmania.zone b/tzdata/Australia/Tasmania.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Tasmania.zone differ
diff --git a/tzdata/Australia/Victoria.zone b/tzdata/Australia/Victoria.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Victoria.zone differ
diff --git a/tzdata/Australia/West.zone b/tzdata/Australia/West.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/West.zone differ
diff --git a/tzdata/Australia/Yancowinna.zone b/tzdata/Australia/Yancowinna.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Australia/Yancowinna.zone differ
diff --git a/tzdata/Brazil/Acre.zone b/tzdata/Brazil/Acre.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Brazil/Acre.zone differ
diff --git a/tzdata/Brazil/DeNoronha.zone b/tzdata/Brazil/DeNoronha.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Brazil/DeNoronha.zone differ
diff --git a/tzdata/Brazil/East.zone b/tzdata/Brazil/East.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Brazil/East.zone differ
diff --git a/tzdata/Brazil/West.zone b/tzdata/Brazil/West.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Brazil/West.zone differ
diff --git a/tzdata/CET.zone b/tzdata/CET.zone
new file mode 100644
Binary files /dev/null and b/tzdata/CET.zone differ
diff --git a/tzdata/CST6CDT.zone b/tzdata/CST6CDT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/CST6CDT.zone differ
diff --git a/tzdata/Canada/Atlantic.zone b/tzdata/Canada/Atlantic.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Atlantic.zone differ
diff --git a/tzdata/Canada/Central.zone b/tzdata/Canada/Central.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Central.zone differ
diff --git a/tzdata/Canada/East-Saskatchewan.zone b/tzdata/Canada/East-Saskatchewan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/East-Saskatchewan.zone differ
diff --git a/tzdata/Canada/Eastern.zone b/tzdata/Canada/Eastern.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Eastern.zone differ
diff --git a/tzdata/Canada/Mountain.zone b/tzdata/Canada/Mountain.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Mountain.zone differ
diff --git a/tzdata/Canada/Newfoundland.zone b/tzdata/Canada/Newfoundland.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Newfoundland.zone differ
diff --git a/tzdata/Canada/Pacific.zone b/tzdata/Canada/Pacific.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Pacific.zone differ
diff --git a/tzdata/Canada/Saskatchewan.zone b/tzdata/Canada/Saskatchewan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Saskatchewan.zone differ
diff --git a/tzdata/Canada/Yukon.zone b/tzdata/Canada/Yukon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Canada/Yukon.zone differ
diff --git a/tzdata/Chile/Continental.zone b/tzdata/Chile/Continental.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Chile/Continental.zone differ
diff --git a/tzdata/Chile/EasterIsland.zone b/tzdata/Chile/EasterIsland.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Chile/EasterIsland.zone differ
diff --git a/tzdata/Cuba.zone b/tzdata/Cuba.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Cuba.zone differ
diff --git a/tzdata/EET.zone b/tzdata/EET.zone
new file mode 100644
Binary files /dev/null and b/tzdata/EET.zone differ
diff --git a/tzdata/EST.zone b/tzdata/EST.zone
new file mode 100644
Binary files /dev/null and b/tzdata/EST.zone differ
diff --git a/tzdata/EST5EDT.zone b/tzdata/EST5EDT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/EST5EDT.zone differ
diff --git a/tzdata/Egypt.zone b/tzdata/Egypt.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Egypt.zone differ
diff --git a/tzdata/Eire.zone b/tzdata/Eire.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Eire.zone differ
diff --git a/tzdata/Etc/GMT+0.zone b/tzdata/Etc/GMT+0.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+0.zone differ
diff --git a/tzdata/Etc/GMT+1.zone b/tzdata/Etc/GMT+1.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+1.zone differ
diff --git a/tzdata/Etc/GMT+10.zone b/tzdata/Etc/GMT+10.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+10.zone differ
diff --git a/tzdata/Etc/GMT+11.zone b/tzdata/Etc/GMT+11.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+11.zone differ
diff --git a/tzdata/Etc/GMT+12.zone b/tzdata/Etc/GMT+12.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+12.zone differ
diff --git a/tzdata/Etc/GMT+2.zone b/tzdata/Etc/GMT+2.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+2.zone differ
diff --git a/tzdata/Etc/GMT+3.zone b/tzdata/Etc/GMT+3.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+3.zone differ
diff --git a/tzdata/Etc/GMT+4.zone b/tzdata/Etc/GMT+4.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+4.zone differ
diff --git a/tzdata/Etc/GMT+5.zone b/tzdata/Etc/GMT+5.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+5.zone differ
diff --git a/tzdata/Etc/GMT+6.zone b/tzdata/Etc/GMT+6.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+6.zone differ
diff --git a/tzdata/Etc/GMT+7.zone b/tzdata/Etc/GMT+7.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+7.zone differ
diff --git a/tzdata/Etc/GMT+8.zone b/tzdata/Etc/GMT+8.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+8.zone differ
diff --git a/tzdata/Etc/GMT+9.zone b/tzdata/Etc/GMT+9.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT+9.zone differ
diff --git a/tzdata/Etc/GMT-0.zone b/tzdata/Etc/GMT-0.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-0.zone differ
diff --git a/tzdata/Etc/GMT-1.zone b/tzdata/Etc/GMT-1.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-1.zone differ
diff --git a/tzdata/Etc/GMT-10.zone b/tzdata/Etc/GMT-10.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-10.zone differ
diff --git a/tzdata/Etc/GMT-11.zone b/tzdata/Etc/GMT-11.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-11.zone differ
diff --git a/tzdata/Etc/GMT-12.zone b/tzdata/Etc/GMT-12.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-12.zone differ
diff --git a/tzdata/Etc/GMT-13.zone b/tzdata/Etc/GMT-13.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-13.zone differ
diff --git a/tzdata/Etc/GMT-14.zone b/tzdata/Etc/GMT-14.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-14.zone differ
diff --git a/tzdata/Etc/GMT-2.zone b/tzdata/Etc/GMT-2.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-2.zone differ
diff --git a/tzdata/Etc/GMT-3.zone b/tzdata/Etc/GMT-3.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-3.zone differ
diff --git a/tzdata/Etc/GMT-4.zone b/tzdata/Etc/GMT-4.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-4.zone differ
diff --git a/tzdata/Etc/GMT-5.zone b/tzdata/Etc/GMT-5.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-5.zone differ
diff --git a/tzdata/Etc/GMT-6.zone b/tzdata/Etc/GMT-6.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-6.zone differ
diff --git a/tzdata/Etc/GMT-7.zone b/tzdata/Etc/GMT-7.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-7.zone differ
diff --git a/tzdata/Etc/GMT-8.zone b/tzdata/Etc/GMT-8.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-8.zone differ
diff --git a/tzdata/Etc/GMT-9.zone b/tzdata/Etc/GMT-9.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT-9.zone differ
diff --git a/tzdata/Etc/GMT.zone b/tzdata/Etc/GMT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT.zone differ
diff --git a/tzdata/Etc/GMT0.zone b/tzdata/Etc/GMT0.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/GMT0.zone differ
diff --git a/tzdata/Etc/Greenwich.zone b/tzdata/Etc/Greenwich.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/Greenwich.zone differ
diff --git a/tzdata/Etc/UCT.zone b/tzdata/Etc/UCT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/UCT.zone differ
diff --git a/tzdata/Etc/UTC.zone b/tzdata/Etc/UTC.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/UTC.zone differ
diff --git a/tzdata/Etc/Universal.zone b/tzdata/Etc/Universal.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/Universal.zone differ
diff --git a/tzdata/Etc/Zulu.zone b/tzdata/Etc/Zulu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Etc/Zulu.zone differ
diff --git a/tzdata/Europe/Amsterdam.zone b/tzdata/Europe/Amsterdam.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Amsterdam.zone differ
diff --git a/tzdata/Europe/Andorra.zone b/tzdata/Europe/Andorra.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Andorra.zone differ
diff --git a/tzdata/Europe/Athens.zone b/tzdata/Europe/Athens.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Athens.zone differ
diff --git a/tzdata/Europe/Belfast.zone b/tzdata/Europe/Belfast.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Belfast.zone differ
diff --git a/tzdata/Europe/Belgrade.zone b/tzdata/Europe/Belgrade.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Belgrade.zone differ
diff --git a/tzdata/Europe/Berlin.zone b/tzdata/Europe/Berlin.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Berlin.zone differ
diff --git a/tzdata/Europe/Bratislava.zone b/tzdata/Europe/Bratislava.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Bratislava.zone differ
diff --git a/tzdata/Europe/Brussels.zone b/tzdata/Europe/Brussels.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Brussels.zone differ
diff --git a/tzdata/Europe/Bucharest.zone b/tzdata/Europe/Bucharest.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Bucharest.zone differ
diff --git a/tzdata/Europe/Budapest.zone b/tzdata/Europe/Budapest.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Budapest.zone differ
diff --git a/tzdata/Europe/Busingen.zone b/tzdata/Europe/Busingen.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Busingen.zone differ
diff --git a/tzdata/Europe/Chisinau.zone b/tzdata/Europe/Chisinau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Chisinau.zone differ
diff --git a/tzdata/Europe/Copenhagen.zone b/tzdata/Europe/Copenhagen.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Copenhagen.zone differ
diff --git a/tzdata/Europe/Dublin.zone b/tzdata/Europe/Dublin.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Dublin.zone differ
diff --git a/tzdata/Europe/Gibraltar.zone b/tzdata/Europe/Gibraltar.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Gibraltar.zone differ
diff --git a/tzdata/Europe/Guernsey.zone b/tzdata/Europe/Guernsey.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Guernsey.zone differ
diff --git a/tzdata/Europe/Helsinki.zone b/tzdata/Europe/Helsinki.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Helsinki.zone differ
diff --git a/tzdata/Europe/Isle_of_Man.zone b/tzdata/Europe/Isle_of_Man.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Isle_of_Man.zone differ
diff --git a/tzdata/Europe/Istanbul.zone b/tzdata/Europe/Istanbul.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Istanbul.zone differ
diff --git a/tzdata/Europe/Jersey.zone b/tzdata/Europe/Jersey.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Jersey.zone differ
diff --git a/tzdata/Europe/Kaliningrad.zone b/tzdata/Europe/Kaliningrad.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Kaliningrad.zone differ
diff --git a/tzdata/Europe/Kiev.zone b/tzdata/Europe/Kiev.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Kiev.zone differ
diff --git a/tzdata/Europe/Lisbon.zone b/tzdata/Europe/Lisbon.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Lisbon.zone differ
diff --git a/tzdata/Europe/Ljubljana.zone b/tzdata/Europe/Ljubljana.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Ljubljana.zone differ
diff --git a/tzdata/Europe/London.zone b/tzdata/Europe/London.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/London.zone differ
diff --git a/tzdata/Europe/Luxembourg.zone b/tzdata/Europe/Luxembourg.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Luxembourg.zone differ
diff --git a/tzdata/Europe/Madrid.zone b/tzdata/Europe/Madrid.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Madrid.zone differ
diff --git a/tzdata/Europe/Malta.zone b/tzdata/Europe/Malta.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Malta.zone differ
diff --git a/tzdata/Europe/Mariehamn.zone b/tzdata/Europe/Mariehamn.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Mariehamn.zone differ
diff --git a/tzdata/Europe/Minsk.zone b/tzdata/Europe/Minsk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Minsk.zone differ
diff --git a/tzdata/Europe/Monaco.zone b/tzdata/Europe/Monaco.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Monaco.zone differ
diff --git a/tzdata/Europe/Moscow.zone b/tzdata/Europe/Moscow.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Moscow.zone differ
diff --git a/tzdata/Europe/Nicosia.zone b/tzdata/Europe/Nicosia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Nicosia.zone differ
diff --git a/tzdata/Europe/Oslo.zone b/tzdata/Europe/Oslo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Oslo.zone differ
diff --git a/tzdata/Europe/Paris.zone b/tzdata/Europe/Paris.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Paris.zone differ
diff --git a/tzdata/Europe/Podgorica.zone b/tzdata/Europe/Podgorica.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Podgorica.zone differ
diff --git a/tzdata/Europe/Prague.zone b/tzdata/Europe/Prague.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Prague.zone differ
diff --git a/tzdata/Europe/Riga.zone b/tzdata/Europe/Riga.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Riga.zone differ
diff --git a/tzdata/Europe/Rome.zone b/tzdata/Europe/Rome.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Rome.zone differ
diff --git a/tzdata/Europe/Samara.zone b/tzdata/Europe/Samara.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Samara.zone differ
diff --git a/tzdata/Europe/San_Marino.zone b/tzdata/Europe/San_Marino.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/San_Marino.zone differ
diff --git a/tzdata/Europe/Sarajevo.zone b/tzdata/Europe/Sarajevo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Sarajevo.zone differ
diff --git a/tzdata/Europe/Simferopol.zone b/tzdata/Europe/Simferopol.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Simferopol.zone differ
diff --git a/tzdata/Europe/Skopje.zone b/tzdata/Europe/Skopje.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Skopje.zone differ
diff --git a/tzdata/Europe/Sofia.zone b/tzdata/Europe/Sofia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Sofia.zone differ
diff --git a/tzdata/Europe/Stockholm.zone b/tzdata/Europe/Stockholm.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Stockholm.zone differ
diff --git a/tzdata/Europe/Tallinn.zone b/tzdata/Europe/Tallinn.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Tallinn.zone differ
diff --git a/tzdata/Europe/Tirane.zone b/tzdata/Europe/Tirane.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Tirane.zone differ
diff --git a/tzdata/Europe/Tiraspol.zone b/tzdata/Europe/Tiraspol.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Tiraspol.zone differ
diff --git a/tzdata/Europe/Uzhgorod.zone b/tzdata/Europe/Uzhgorod.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Uzhgorod.zone differ
diff --git a/tzdata/Europe/Vaduz.zone b/tzdata/Europe/Vaduz.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Vaduz.zone differ
diff --git a/tzdata/Europe/Vatican.zone b/tzdata/Europe/Vatican.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Vatican.zone differ
diff --git a/tzdata/Europe/Vienna.zone b/tzdata/Europe/Vienna.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Vienna.zone differ
diff --git a/tzdata/Europe/Vilnius.zone b/tzdata/Europe/Vilnius.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Vilnius.zone differ
diff --git a/tzdata/Europe/Volgograd.zone b/tzdata/Europe/Volgograd.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Volgograd.zone differ
diff --git a/tzdata/Europe/Warsaw.zone b/tzdata/Europe/Warsaw.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Warsaw.zone differ
diff --git a/tzdata/Europe/Zagreb.zone b/tzdata/Europe/Zagreb.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Zagreb.zone differ
diff --git a/tzdata/Europe/Zaporozhye.zone b/tzdata/Europe/Zaporozhye.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Zaporozhye.zone differ
diff --git a/tzdata/Europe/Zurich.zone b/tzdata/Europe/Zurich.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Europe/Zurich.zone differ
diff --git a/tzdata/Factory.zone b/tzdata/Factory.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Factory.zone differ
diff --git a/tzdata/GB-Eire.zone b/tzdata/GB-Eire.zone
new file mode 100644
Binary files /dev/null and b/tzdata/GB-Eire.zone differ
diff --git a/tzdata/GB.zone b/tzdata/GB.zone
new file mode 100644
Binary files /dev/null and b/tzdata/GB.zone differ
diff --git a/tzdata/GMT+0.zone b/tzdata/GMT+0.zone
new file mode 100644
Binary files /dev/null and b/tzdata/GMT+0.zone differ
diff --git a/tzdata/GMT-0.zone b/tzdata/GMT-0.zone
new file mode 100644
Binary files /dev/null and b/tzdata/GMT-0.zone differ
diff --git a/tzdata/GMT.zone b/tzdata/GMT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/GMT.zone differ
diff --git a/tzdata/GMT0.zone b/tzdata/GMT0.zone
new file mode 100644
Binary files /dev/null and b/tzdata/GMT0.zone differ
diff --git a/tzdata/Greenwich.zone b/tzdata/Greenwich.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Greenwich.zone differ
diff --git a/tzdata/HST.zone b/tzdata/HST.zone
new file mode 100644
Binary files /dev/null and b/tzdata/HST.zone differ
diff --git a/tzdata/Hongkong.zone b/tzdata/Hongkong.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Hongkong.zone differ
diff --git a/tzdata/Iceland.zone b/tzdata/Iceland.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Iceland.zone differ
diff --git a/tzdata/Indian/Antananarivo.zone b/tzdata/Indian/Antananarivo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Antananarivo.zone differ
diff --git a/tzdata/Indian/Chagos.zone b/tzdata/Indian/Chagos.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Chagos.zone differ
diff --git a/tzdata/Indian/Christmas.zone b/tzdata/Indian/Christmas.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Christmas.zone differ
diff --git a/tzdata/Indian/Cocos.zone b/tzdata/Indian/Cocos.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Cocos.zone differ
diff --git a/tzdata/Indian/Comoro.zone b/tzdata/Indian/Comoro.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Comoro.zone differ
diff --git a/tzdata/Indian/Kerguelen.zone b/tzdata/Indian/Kerguelen.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Kerguelen.zone differ
diff --git a/tzdata/Indian/Mahe.zone b/tzdata/Indian/Mahe.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Mahe.zone differ
diff --git a/tzdata/Indian/Maldives.zone b/tzdata/Indian/Maldives.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Maldives.zone differ
diff --git a/tzdata/Indian/Mauritius.zone b/tzdata/Indian/Mauritius.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Mauritius.zone differ
diff --git a/tzdata/Indian/Mayotte.zone b/tzdata/Indian/Mayotte.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Mayotte.zone differ
diff --git a/tzdata/Indian/Reunion.zone b/tzdata/Indian/Reunion.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Indian/Reunion.zone differ
diff --git a/tzdata/Iran.zone b/tzdata/Iran.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Iran.zone differ
diff --git a/tzdata/Israel.zone b/tzdata/Israel.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Israel.zone differ
diff --git a/tzdata/Jamaica.zone b/tzdata/Jamaica.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Jamaica.zone differ
diff --git a/tzdata/Japan.zone b/tzdata/Japan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Japan.zone differ
diff --git a/tzdata/Kwajalein.zone b/tzdata/Kwajalein.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Kwajalein.zone differ
diff --git a/tzdata/Libya.zone b/tzdata/Libya.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Libya.zone differ
diff --git a/tzdata/MET.zone b/tzdata/MET.zone
new file mode 100644
Binary files /dev/null and b/tzdata/MET.zone differ
diff --git a/tzdata/MST.zone b/tzdata/MST.zone
new file mode 100644
Binary files /dev/null and b/tzdata/MST.zone differ
diff --git a/tzdata/MST7MDT.zone b/tzdata/MST7MDT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/MST7MDT.zone differ
diff --git a/tzdata/Mexico/BajaNorte.zone b/tzdata/Mexico/BajaNorte.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Mexico/BajaNorte.zone differ
diff --git a/tzdata/Mexico/BajaSur.zone b/tzdata/Mexico/BajaSur.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Mexico/BajaSur.zone differ
diff --git a/tzdata/Mexico/General.zone b/tzdata/Mexico/General.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Mexico/General.zone differ
diff --git a/tzdata/NZ-CHAT.zone b/tzdata/NZ-CHAT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/NZ-CHAT.zone differ
diff --git a/tzdata/NZ.zone b/tzdata/NZ.zone
new file mode 100644
Binary files /dev/null and b/tzdata/NZ.zone differ
diff --git a/tzdata/Navajo.zone b/tzdata/Navajo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Navajo.zone differ
diff --git a/tzdata/PRC.zone b/tzdata/PRC.zone
new file mode 100644
Binary files /dev/null and b/tzdata/PRC.zone differ
diff --git a/tzdata/PST8PDT.zone b/tzdata/PST8PDT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/PST8PDT.zone differ
diff --git a/tzdata/Pacific/Apia.zone b/tzdata/Pacific/Apia.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Apia.zone differ
diff --git a/tzdata/Pacific/Auckland.zone b/tzdata/Pacific/Auckland.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Auckland.zone differ
diff --git a/tzdata/Pacific/Chatham.zone b/tzdata/Pacific/Chatham.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Chatham.zone differ
diff --git a/tzdata/Pacific/Chuuk.zone b/tzdata/Pacific/Chuuk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Chuuk.zone differ
diff --git a/tzdata/Pacific/Easter.zone b/tzdata/Pacific/Easter.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Easter.zone differ
diff --git a/tzdata/Pacific/Efate.zone b/tzdata/Pacific/Efate.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Efate.zone differ
diff --git a/tzdata/Pacific/Enderbury.zone b/tzdata/Pacific/Enderbury.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Enderbury.zone differ
diff --git a/tzdata/Pacific/Fakaofo.zone b/tzdata/Pacific/Fakaofo.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Fakaofo.zone differ
diff --git a/tzdata/Pacific/Fiji.zone b/tzdata/Pacific/Fiji.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Fiji.zone differ
diff --git a/tzdata/Pacific/Funafuti.zone b/tzdata/Pacific/Funafuti.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Funafuti.zone differ
diff --git a/tzdata/Pacific/Galapagos.zone b/tzdata/Pacific/Galapagos.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Galapagos.zone differ
diff --git a/tzdata/Pacific/Gambier.zone b/tzdata/Pacific/Gambier.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Gambier.zone differ
diff --git a/tzdata/Pacific/Guadalcanal.zone b/tzdata/Pacific/Guadalcanal.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Guadalcanal.zone differ
diff --git a/tzdata/Pacific/Guam.zone b/tzdata/Pacific/Guam.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Guam.zone differ
diff --git a/tzdata/Pacific/Honolulu.zone b/tzdata/Pacific/Honolulu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Honolulu.zone differ
diff --git a/tzdata/Pacific/Johnston.zone b/tzdata/Pacific/Johnston.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Johnston.zone differ
diff --git a/tzdata/Pacific/Kiritimati.zone b/tzdata/Pacific/Kiritimati.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Kiritimati.zone differ
diff --git a/tzdata/Pacific/Kosrae.zone b/tzdata/Pacific/Kosrae.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Kosrae.zone differ
diff --git a/tzdata/Pacific/Kwajalein.zone b/tzdata/Pacific/Kwajalein.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Kwajalein.zone differ
diff --git a/tzdata/Pacific/Majuro.zone b/tzdata/Pacific/Majuro.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Majuro.zone differ
diff --git a/tzdata/Pacific/Marquesas.zone b/tzdata/Pacific/Marquesas.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Marquesas.zone differ
diff --git a/tzdata/Pacific/Midway.zone b/tzdata/Pacific/Midway.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Midway.zone differ
diff --git a/tzdata/Pacific/Nauru.zone b/tzdata/Pacific/Nauru.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Nauru.zone differ
diff --git a/tzdata/Pacific/Niue.zone b/tzdata/Pacific/Niue.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Niue.zone differ
diff --git a/tzdata/Pacific/Norfolk.zone b/tzdata/Pacific/Norfolk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Norfolk.zone differ
diff --git a/tzdata/Pacific/Noumea.zone b/tzdata/Pacific/Noumea.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Noumea.zone differ
diff --git a/tzdata/Pacific/Pago_Pago.zone b/tzdata/Pacific/Pago_Pago.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Pago_Pago.zone differ
diff --git a/tzdata/Pacific/Palau.zone b/tzdata/Pacific/Palau.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Palau.zone differ
diff --git a/tzdata/Pacific/Pitcairn.zone b/tzdata/Pacific/Pitcairn.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Pitcairn.zone differ
diff --git a/tzdata/Pacific/Pohnpei.zone b/tzdata/Pacific/Pohnpei.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Pohnpei.zone differ
diff --git a/tzdata/Pacific/Ponape.zone b/tzdata/Pacific/Ponape.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Ponape.zone differ
diff --git a/tzdata/Pacific/Port_Moresby.zone b/tzdata/Pacific/Port_Moresby.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Port_Moresby.zone differ
diff --git a/tzdata/Pacific/Rarotonga.zone b/tzdata/Pacific/Rarotonga.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Rarotonga.zone differ
diff --git a/tzdata/Pacific/Saipan.zone b/tzdata/Pacific/Saipan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Saipan.zone differ
diff --git a/tzdata/Pacific/Samoa.zone b/tzdata/Pacific/Samoa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Samoa.zone differ
diff --git a/tzdata/Pacific/Tahiti.zone b/tzdata/Pacific/Tahiti.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Tahiti.zone differ
diff --git a/tzdata/Pacific/Tarawa.zone b/tzdata/Pacific/Tarawa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Tarawa.zone differ
diff --git a/tzdata/Pacific/Tongatapu.zone b/tzdata/Pacific/Tongatapu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Tongatapu.zone differ
diff --git a/tzdata/Pacific/Truk.zone b/tzdata/Pacific/Truk.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Truk.zone differ
diff --git a/tzdata/Pacific/Wake.zone b/tzdata/Pacific/Wake.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Wake.zone differ
diff --git a/tzdata/Pacific/Wallis.zone b/tzdata/Pacific/Wallis.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Wallis.zone differ
diff --git a/tzdata/Pacific/Yap.zone b/tzdata/Pacific/Yap.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Pacific/Yap.zone differ
diff --git a/tzdata/Poland.zone b/tzdata/Poland.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Poland.zone differ
diff --git a/tzdata/Portugal.zone b/tzdata/Portugal.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Portugal.zone differ
diff --git a/tzdata/ROC.zone b/tzdata/ROC.zone
new file mode 100644
Binary files /dev/null and b/tzdata/ROC.zone differ
diff --git a/tzdata/ROK.zone b/tzdata/ROK.zone
new file mode 100644
Binary files /dev/null and b/tzdata/ROK.zone differ
diff --git a/tzdata/Singapore.zone b/tzdata/Singapore.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Singapore.zone differ
diff --git a/tzdata/Turkey.zone b/tzdata/Turkey.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Turkey.zone differ
diff --git a/tzdata/UCT.zone b/tzdata/UCT.zone
new file mode 100644
Binary files /dev/null and b/tzdata/UCT.zone differ
diff --git a/tzdata/US/Alaska.zone b/tzdata/US/Alaska.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Alaska.zone differ
diff --git a/tzdata/US/Aleutian.zone b/tzdata/US/Aleutian.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Aleutian.zone differ
diff --git a/tzdata/US/Arizona.zone b/tzdata/US/Arizona.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Arizona.zone differ
diff --git a/tzdata/US/Central.zone b/tzdata/US/Central.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Central.zone differ
diff --git a/tzdata/US/East-Indiana.zone b/tzdata/US/East-Indiana.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/East-Indiana.zone differ
diff --git a/tzdata/US/Eastern.zone b/tzdata/US/Eastern.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Eastern.zone differ
diff --git a/tzdata/US/Hawaii.zone b/tzdata/US/Hawaii.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Hawaii.zone differ
diff --git a/tzdata/US/Indiana-Starke.zone b/tzdata/US/Indiana-Starke.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Indiana-Starke.zone differ
diff --git a/tzdata/US/Michigan.zone b/tzdata/US/Michigan.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Michigan.zone differ
diff --git a/tzdata/US/Mountain.zone b/tzdata/US/Mountain.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Mountain.zone differ
diff --git a/tzdata/US/Pacific-New.zone b/tzdata/US/Pacific-New.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Pacific-New.zone differ
diff --git a/tzdata/US/Pacific.zone b/tzdata/US/Pacific.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Pacific.zone differ
diff --git a/tzdata/US/Samoa.zone b/tzdata/US/Samoa.zone
new file mode 100644
Binary files /dev/null and b/tzdata/US/Samoa.zone differ
diff --git a/tzdata/UTC.zone b/tzdata/UTC.zone
new file mode 100644
Binary files /dev/null and b/tzdata/UTC.zone differ
diff --git a/tzdata/Universal.zone b/tzdata/Universal.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Universal.zone differ
diff --git a/tzdata/W-SU.zone b/tzdata/W-SU.zone
new file mode 100644
Binary files /dev/null and b/tzdata/W-SU.zone differ
diff --git a/tzdata/WET.zone b/tzdata/WET.zone
new file mode 100644
Binary files /dev/null and b/tzdata/WET.zone differ
diff --git a/tzdata/Zulu.zone b/tzdata/Zulu.zone
new file mode 100644
Binary files /dev/null and b/tzdata/Zulu.zone differ
diff --git a/tzdata/iso3166.tab b/tzdata/iso3166.tab
new file mode 100644
--- /dev/null
+++ b/tzdata/iso3166.tab
@@ -0,0 +1,275 @@
+# ISO 3166 alpha-2 country codes
+#
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+#
+# From Paul Eggert (2013-05-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 VI-15 (2013-05-10).  See: Updates on ISO 3166
+#   http://www.iso.org/iso/home/standards/country_codes/updates_on_iso_3166.htm
+# 2.  The usual English name for the coded region,
+#     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.
+#
+# This table is intended as an aid for users, to help them select time
+# zone data appropriate for their practical needs.  It is not intended
+# to take or endorse any position on legal or territorial claims.
+#
+#country-
+#code	name of country, territory, area, or subdivision
+AD	Andorra
+AE	United Arab Emirates
+AF	Afghanistan
+AG	Antigua & Barbuda
+AI	Anguilla
+AL	Albania
+AM	Armenia
+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
+BL	St Barthelemy
+BM	Bermuda
+BN	Brunei
+BO	Bolivia
+BQ	Caribbean Netherlands
+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
+CW	Curacao
+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
+MF	St Martin (French part)
+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
+SS	South Sudan
+ST	Sao Tome & Principe
+SV	El Salvador
+SX	St Maarten (Dutch part)
+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/tzdata/zone.tab b/tzdata/zone.tab
new file mode 100644
--- /dev/null
+++ b/tzdata/zone.tab
@@ -0,0 +1,452 @@
+# TZ zone descriptions
+#
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+#
+# From Paul Eggert (2013-08-14):
+#
+# This file contains a table where each row stands for an area that is
+# the intersection of a region identified by a country code and of a
+# zone where civil clocks have agreed since 1970.  The columns of the
+# table are as follows:
+#
+# 1.  ISO 3166 2-character country code.  See the file 'iso3166.tab'.
+# 2.  Latitude and longitude of the area'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.
+#     Please see the 'Theory' file for how zone names are chosen.
+#     If multiple zones overlap a country, each has a row in the
+#     table, with column 1 being duplicated.
+# 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 areas first, where that does not contradict (1).
+#
+# Lines beginning with '#' are comments.
+#
+# This table is intended as an aid for users, to help them select time
+# zone data appropriate for their practical needs.  It is not intended
+# to take or endorse any position on legal or territorial claims.
+#
+#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
+AO	-0848+01314	Africa/Luanda
+AQ	-7750+16636	Antarctica/McMurdo	McMurdo, South Pole, Scott (New Zealand time)
+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, Lake Vostok
+AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
+AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
+AQ	-720041+0023206	Antarctica/Troll	Troll Station, Queen Maud Land
+AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
+AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)
+AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)
+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	-3319-06621	America/Argentina/San_Luis	San Luis (SL)
+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	-5430+15857	Antarctica/Macquarie	Macquarie 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
+BL	+1753-06251	America/St_Barthelemy
+BM	+3217-06446	Atlantic/Bermuda
+BN	+0456+11455	Asia/Brunei
+BO	-1630-06809	America/La_Paz
+BQ	+120903-0681636	America/Kralendijk
+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	-0226-05452	America/Santarem	W Para
+BR	-0846-06354	America/Porto_Velho	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	-2439+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	+4339-07923	America/Toronto	Eastern Time - Ontario & Quebec - 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	Central Standard 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	+4906-11631	America/Creston	Mountain Standard Time - Creston, British Columbia
+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
+CW	+1211-06900	America/Curacao
+CX	-1025+10543	Indian/Christmas
+CY	+3510+03322	Asia/Nicosia
+CZ	+5005+01426	Europe/Prague
+DE	+5230+01322	Europe/Berlin	most locations
+DE	+4742+00841	Europe/Busingen	Busingen
+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/Chuuk	Chuuk (Truk) and Yap
+FM	+0658+15813	Pacific/Pohnpei	Pohnpei (Ponape)
+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, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor
+ID	-0232+14042	Asia/Jayapura	west New Guinea (Irian Jaya) & Malukus (Moluccas)
+IE	+5320-00615	Europe/Dublin
+IL	+314650+0351326	Asia/Jerusalem
+IM	+5409-00428	Europe/Isle_of_Man
+IN	+2232+08822	Asia/Kolkata
+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	+175805-0764736	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
+MF	+1804-06305	America/Marigot
+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	Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border
+MX	+2550-09730	America/Matamoros	US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border
+MX	+2313-10625	America/Mazatlan	Mountain Time - S Baja, Nayarit, Sinaloa
+MX	+2838-10605	America/Chihuahua	Mexican Mountain Time - Chihuahua away from US border
+MX	+2934-10425	America/Ojinaga	US Mountain Time - Chihuahua near US border
+MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora
+MX	+3232-11701	America/Tijuana	US Pacific Time - Baja California near US border
+MX	+3018-11452	America/Santa_Isabel	Mexican Pacific Time - Baja California away from US border
+MX	+2048-10515	America/Bahia_Banderas	Mexican Central Time - Bahia de Banderas
+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+16627	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/Kathmandu
+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	Gaza Strip
+PS	+313200+0350542	Asia/Hebron	West Bank
+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+00 - Samara, Udmurtia
+RU	+4457+03406	Europe/Simferopol	Moscow+00 - Crimea
+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	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk
+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	+623923+1353314	Asia/Khandyga	Moscow+06 - Tomponsky, Ust-Maysky
+RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
+RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
+RU	+643337+1431336	Asia/Ust-Nera	Moscow+07 - Oymyakonsky
+RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
+RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
+RU	+6445+17729	Asia/Anadyr	Moscow+08 - 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
+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
+SS	+0451+03136	Africa/Juba
+ST	+0020+00644	Africa/Sao_Tome
+SV	+1342-08912	America/El_Salvador
+SX	+180305-0630250	America/Lower_Princes
+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
+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	+410305-0863611	America/Indiana/Winamac	Eastern Time - Indiana - Pulaski County
+US	+382232-0862041	America/Indiana/Marengo	Eastern Time - Indiana - Crawford County
+US	+382931-0871643	America/Indiana/Petersburg	Eastern Time - Indiana - Pike 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	+411745-0863730	America/Indiana/Knox	Central Time - Indiana - Starke 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	+471551-1014640	America/North_Dakota/Beulah	Central Time - North Dakota - Mercer County
+US	+394421-1045903	America/Denver	Mountain Time
+US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
+US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona (except Navajo)
+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	+571035-1351807	America/Sitka	Alaska Time - southeast 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	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island
+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	+415408+0122711	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/Ho_Chi_Minh
+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
