[CalendarServer-changes] [13630] CalendarServer/branches/users/gaya/groupsharee

source_changes at macosforge.org source_changes at macosforge.org
Tue Jun 10 20:50:42 PDT 2014


Revision: 13630
          http://trac.calendarserver.org//changeset/13630
Author:   gaya at apple.com
Date:     2014-06-10 20:50:42 -0700 (Tue, 10 Jun 2014)
Log Message:
-----------
merge from trunk to r13629

Revision Links:
--------------
    http://trac.calendarserver.org//changeset/13629

Modified Paths:
--------------
    CalendarServer/branches/users/gaya/groupsharee/bin/pyflakes
    CalendarServer/branches/users/gaya/groupsharee/bin/python
    CalendarServer/branches/users/gaya/groupsharee/bin/sim
    CalendarServer/branches/users/gaya/groupsharee/bin/test
    CalendarServer/branches/users/gaya/groupsharee/bin/trial
    CalendarServer/branches/users/gaya/groupsharee/bin/twistd
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/dashboard_service.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/provision/root.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/caldav.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/test/test_caldav.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/calverify.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/cmdline.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/dashboard.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/gateway.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/managetimezones.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/migrate_verify.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/resources.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_gateway.py
    CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_principals.py
    CalendarServer/branches/users/gaya/groupsharee/conf/auth/generate_test_accounts.py
    CalendarServer/branches/users/gaya/groupsharee/conf/caldavd-apple.plist
    CalendarServer/branches/users/gaya/groupsharee/contrib/tools/monitoranalysis.py
    CalendarServer/branches/users/gaya/groupsharee/requirements-dev.txt
    CalendarServer/branches/users/gaya/groupsharee/requirements-stable.txt
    CalendarServer/branches/users/gaya/groupsharee/support/_cache_deps
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directory/util.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directorybackedaddressbook.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/ical.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/memcacheclient.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/resource.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/scheduling_store/caldav/resource.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/sharing.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/stdconfig.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/storebridge.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_icalendar.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_resource.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/timezonestdservice.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/upgrade.py
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/links.txt
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/timezones.xml
    CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/base.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/sql.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/base.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_sql.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_xattr.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/file.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/icaldiff.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/work.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/sql.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_implicit.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql_sharing.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/icalendarstore.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/file.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/query/filter.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/sql.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/file.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql_external.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/test/accounts/accounts.xml
    CalendarServer/branches/users/gaya/groupsharee/txdav/dps/client.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/dps/commands.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/dps/json.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/dps/server.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/dps/test/test_client.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/who/augment.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/who/directory.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/who/opendirectory.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/who/test/support.py
    CalendarServer/branches/users/gaya/groupsharee/txdav/who/vcard.py
    CalendarServer/branches/users/gaya/groupsharee/txweb2/dav/method/report_expand.py

Added Paths:
-----------
    CalendarServer/branches/users/gaya/groupsharee/contrib/od/
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Central Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Eastern Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Afghanistan Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Alaskan Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arab Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabian Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabic Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Argentina Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Atlantic Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azerbaijan Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azores Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bahia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bangladesh Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Canada Central Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cape Verde Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Caucasus Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cen. Australia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central America Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Asia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Brazilian Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Europe Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central European Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Pacific Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time (Mexico).ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/China Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Dateline Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Africa Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Australia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. South America Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Eastern Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Egypt Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ekaterinburg Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/FLE Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Fiji Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GMT Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GTB Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Georgian Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenland Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenwich Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Hawaiian Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/India Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Iran Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Israel Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Jordan Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Kaliningrad Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Korea Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Libya Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Magadan Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mauritius Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Middle East Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Montevideo Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Morocco Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time (Mexico).ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Myanmar Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/N. Central Asia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Namibia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Nepal Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/New Zealand Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Newfoundland Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia East Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific SA Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time (Mexico).ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pakistan Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Paraguay Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Romance Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Russian Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Eastern Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Pacific Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Western Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SE Asia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Samoa Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Singapore Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/South Africa Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Sri Lanka Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Syria Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Taipei Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tasmania Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tokyo Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tonga Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Turkey Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Eastern Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Mountain Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC+12.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-02.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-11.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ulaanbaatar Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Venezuela Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Vladivostok Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Australia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Central Africa Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Europe Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Asia Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Pacific Standard Time.ics
    CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Yakutsk Standard Time.ics

Modified: CalendarServer/branches/users/gaya/groupsharee/bin/pyflakes
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/bin/pyflakes	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/bin/pyflakes	2014-06-11 03:50:42 UTC (rev 13630)
@@ -24,7 +24,8 @@
 
 . "${wd}/bin/_build.sh";
 
-init_build > /dev/null;
+do_setup="false";
+develop > /dev/null;
 
 if [ $# -eq 0 ]; then
   set - calendarserver contrib twisted twistedcaldav txdav txweb2;

Modified: CalendarServer/branches/users/gaya/groupsharee/bin/python
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/bin/python	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/bin/python	2014-06-11 03:50:42 UTC (rev 13630)
@@ -25,7 +25,6 @@
 . "${wd}/bin/_build.sh";
 
 do_setup="false";
-
 develop > /dev/null;
 
 exec "${python}" "$@";

Modified: CalendarServer/branches/users/gaya/groupsharee/bin/sim
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/bin/sim	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/bin/sim	2014-06-11 03:50:42 UTC (rev 13630)
@@ -24,7 +24,6 @@
 
 . "${wd}/bin/_build.sh";
 
-init_build > /dev/null;
 do_setup="false";
 develop > /dev/null;
 

Modified: CalendarServer/branches/users/gaya/groupsharee/bin/test
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/bin/test	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/bin/test	2014-06-11 03:50:42 UTC (rev 13630)
@@ -96,8 +96,7 @@
 # Dependencies
 #
 
-c_dependencies >> "${dev_home}/setup.log";
-py_dependencies >> "${dev_home}/setup.log";
+develop > /dev/null "${dev_home}/setup.log";
 
 
 

Modified: CalendarServer/branches/users/gaya/groupsharee/bin/trial
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/bin/trial	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/bin/trial	2014-06-11 03:50:42 UTC (rev 13630)
@@ -24,7 +24,6 @@
 
 . "${wd}/bin/_build.sh";
 
-init_build > /dev/null;
 do_setup="false";
 develop > /dev/null;
 

Modified: CalendarServer/branches/users/gaya/groupsharee/bin/twistd
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/bin/twistd	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/bin/twistd	2014-06-11 03:50:42 UTC (rev 13630)
@@ -24,7 +24,8 @@
 
 . "${wd}/bin/_build.sh";
 
-init_build > /dev/null;
+do_setup="false";
+develop > /dev/null;
 
 exec "${python}" \
   -c "\

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/dashboard_service.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/dashboard_service.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/dashboard_service.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -28,6 +28,7 @@
 a server admin or developer would like to keep an eye on.
 """
 
+
 class DashboardProtocol (LineReceiver):
     """
     A protocol that receives a line containing a JSON object representing a request,
@@ -153,7 +154,21 @@
         return succeed({"workers": loads, "level": level})
 
 
+    def data_directory(self):
+        """
+        Return a summary of directory service calls.
 
+        @return: the JSON result.
+        @rtype: L{str}
+        """
+        directory = self.factory.store.directoryService()
+        if hasattr(directory, "stats"):
+            return succeed(directory.stats())
+        else:
+            return succeed({})
+
+
+
 class DashboardServer(Factory):
 
     protocol = DashboardProtocol

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/provision/root.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/provision/root.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/provision/root.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -364,12 +364,7 @@
                             .format(agent)
                         ))
 
-        if (
-            config.EnableResponseCache and
-            request.method == "PROPFIND" and
-            not getattr(request, "notInCache", False) and
-            len(segments) > 1
-        ):
+        if not hasattr(request, "authzUser"):
             try:
                 authnUser, authzUser = yield self.authenticate(request)
                 request.authnUser = authnUser
@@ -381,6 +376,13 @@
                 )
                 raise HTTPError(response)
 
+        if (
+            config.EnableResponseCache and
+            request.method == "PROPFIND" and
+            not getattr(request, "notInCache", False) and
+            len(segments) > 1
+        ):
+
             try:
                 if not getattr(request, "checkingCache", False):
                     request.checkingCache = True

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/caldav.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/caldav.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/caldav.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -38,6 +38,8 @@
 
 from zope.interface import implements
 
+from twistedcaldav.stdconfig import config
+
 from twisted.python.log import FileLogObserver, ILogObserver
 from twisted.python.logfile import LogFile
 from twisted.python.usage import Options, UsageError
@@ -70,6 +72,7 @@
 from twext.enterprise.jobqueue import WorkerFactory as QueueWorkerFactory
 from twext.application.service import ReExecService
 from txdav.who.groups import GroupCacherPollingWork
+from calendarserver.tools.purge import PrincipalPurgePollingWork
 
 from txweb2.channel.http import (
     LimitingHTTPFactory, SSLRedirectRequest, HTTPChannel
@@ -96,7 +99,7 @@
 from txdav.who.groups import GroupCacher
 
 from twistedcaldav import memcachepool
-from twistedcaldav.config import config, ConfigurationError
+from twistedcaldav.config import ConfigurationError
 from twistedcaldav.localization import processLocalizationFiles
 from twistedcaldav.stdconfig import DEFAULT_CONFIG, DEFAULT_CONFIG_FILE
 from twistedcaldav.upgrade import (
@@ -566,7 +569,7 @@
     """
     log = Logger()
 
-    def __init__(self, store, doImip, doGroupCaching):
+    def __init__(self, store, doImip, doGroupCaching, doPrincipalPurging):
         """
         @param store: the Store to use for enqueuing work
         @param doImip: whether to schedule imip polling
@@ -577,6 +580,7 @@
         self.store = store
         self.doImip = doImip
         self.doGroupCaching = doGroupCaching
+        self.doPrincipalPurging = doPrincipalPurging
 
 
     @inlineCallbacks
@@ -595,6 +599,11 @@
                 self.store,
                 int(config.LogID) if config.LogID else 5
             )
+        if self.doPrincipalPurging:
+            yield PrincipalPurgePollingWork.initialSchedule(
+                self.store,
+                int(config.LogID) if config.LogID else 5
+            )
         yield FindMinValidRevisionWork.initialSchedule(
             self.store,
             int(config.LogID) if config.LogID else 5
@@ -604,15 +613,8 @@
             int(config.LogID) if config.LogID else 5
         )
 
-        # FIXME: uncomment this when purge is working
-        # from calendarserver.tools.purge import scheduleNextPrincipalPurgeUpdate
-        # yield PrincipalPurgePollingWork.initialSchedule(
-        #     self.store,
-        #     int(config.LogID) if config.LogID else 5
-        # )
 
 
-
 class PreProcessingService(Service):
     """
     A Service responsible for running any work that needs to be finished prior
@@ -1098,7 +1100,8 @@
         WorkSchedulingService(
             store,
             config.Scheduling.iMIP.Enabled,
-            (config.GroupCaching.Enabled and config.GroupCaching.EnableUpdater)
+            (config.GroupCaching.Enabled and config.GroupCaching.EnableUpdater),
+            config.AutomaticPurging.Enabled
         ).setServiceParent(service)
 
         # For calendarserver.tap.test

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/test/test_caldav.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/test/test_caldav.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tap/test/test_caldav.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -1284,8 +1284,8 @@
         deferred = Deferred()
         proc = reactor.spawnProcess(
             CapturingProcessProtocol(deferred, None),
-            twistd,
-            [twistd, reactorArg, '-n', '-y', tacFilePath],
+            sys.executable,
+            [sys.executable, twistd, reactorArg, '-n', '-y', tacFilePath],
             env=os.environ
         )
         reactor.callLater(3, proc.signalProcess, "HUP")

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/calverify.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/calverify.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/calverify.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -44,7 +44,7 @@
 import sys
 import time
 import traceback
-import uuid
+from uuid import uuid4
 
 from calendarserver.tools import tables
 from calendarserver.tools.cmdline import utilityMain, WorkerService
@@ -1851,7 +1851,7 @@
                 _ignore_homeID, calendarID = yield self.getAllResourceInfoForResourceID(attresid)
                 calendar = yield home.childWithID(calendarID)
                 calendarObj = yield calendar.objectResourceWithID(attresid)
-                calendarObj.scheduleTag = str(uuid.uuid4())
+                calendarObj.scheduleTag = str(uuid4())
                 yield calendarObj._setComponentInternal(attendee_calendar, internal_state=ComponentUpdateState.RAW)
                 self.results.setdefault("Fix change event", set()).add((home.name(), calendar.name(), attendee_calendar.resourceUID(),))
 
@@ -1862,7 +1862,7 @@
                 defaultCalendar = (yield self.defaultCalendarForAttendee(home))
                 if defaultCalendar is None:
                     raise ValueError("Cannot find suitable default calendar")
-                new_name = str(uuid.uuid4()) + ".ics"
+                new_name = str(uuid4()) + ".ics"
                 calendarObj = (yield defaultCalendar._createCalendarObjectWithNameInternal(new_name, attendee_calendar, internal_state=ComponentUpdateState.RAW, options=self.metadata))
                 self.results.setdefault("Fix add event", set()).add((home.name(), defaultCalendar.name(), attendee_calendar.resourceUID(),))
 
@@ -1879,7 +1879,7 @@
             details["title"] = instance.component.propertyValue("SUMMARY")
 
             # Write new itip message to attendee inbox
-            yield inbox.createCalendarObjectWithName(str(uuid.uuid4()) + ".ics", itipmsg, options=self.metadata_inbox)
+            yield inbox.createCalendarObjectWithName(str(uuid4()) + ".ics", itipmsg, options=self.metadata_inbox)
             self.results.setdefault("Fix add inbox", set()).add((home.name(), itipmsg.resourceUID(),))
 
             yield self.txn.commit()

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/cmdline.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/cmdline.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/cmdline.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -18,7 +18,6 @@
 Shared main-point between utilities.
 """
 
-from calendarserver.tap.caldav import CalDAVServiceMaker, CalDAVOptions
 from calendarserver.tap.util import checkDirectories
 from calendarserver.tools.util import loadConfig, autoDisableMemcached
 
@@ -36,7 +35,10 @@
 # TODO: direct unit tests for these functions.
 
 
-def utilityMain(configFileName, serviceClass, reactor=None, serviceMaker=CalDAVServiceMaker, patchConfig=None, onShutdown=None, verbose=False):
+def utilityMain(
+    configFileName, serviceClass, reactor=None, serviceMaker=None,
+    patchConfig=None, onShutdown=None, verbose=False
+):
     """
     Shared main-point for utilities.
 
@@ -68,6 +70,10 @@
         will be imported and used.
     """
 
+    from calendarserver.tap.caldav import CalDAVServiceMaker, CalDAVOptions
+    if serviceMaker is None:
+        serviceMaker = CalDAVServiceMaker
+
     # We want to validate that the actual service is always an instance of WorkerService, so wrap the
     # service maker callback inside a function that does that check
     def _makeValidService(store):

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/dashboard.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/dashboard.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/dashboard.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -201,7 +201,7 @@
                     self.windows
                 ):
                     window.update()
-        except Exception as e: #@UnusedVariable
+        except Exception:
             #print(str(e))
             pass
         if not self.usesCurses:
@@ -738,10 +738,12 @@
 
         s = " {:<12}{:>8}{:>16}".format(
             "Total:",
-            sum([
-                record["unacknowledged"] + record["acknowledged"]
-                for record in records
-            ]),
+            sum(
+                [
+                    record["unacknowledged"] + record["acknowledged"]
+                    for record in records
+                ]
+            ),
             sum([record["total"] for record in records]),
         )
         if self.usesCurses:
@@ -919,11 +921,103 @@
         self.lastResult = records
 
 
+class DirectoryStatsWindow(BaseWindow):
+    """
+    Displays the status of the server's directory service calls
+    """
+
+    help = "display directory service stats"
+    clientItem = "directory"
+    FORMAT_WIDTH = 89
+
+
+    def makeWindow(self, top=0, left=0):
+        nlines = len(defaultIfNone(self.readItem("directory"), {}))
+        self.rowCount = nlines
+        self._createWindow(
+            "Directory Service", self.rowCount + 6, ncols=self.FORMAT_WIDTH,
+            begin_y=top, begin_x=left
+        )
+        return self
+
+
+    def update(self):
+        records = defaultIfNone(self.clientData(), {})
+        if len(records) != self.rowCount:
+            self.needsReset = True
+            return
+
+        self.iter += 1
+
+        if self.usesCurses:
+            self.window.erase()
+            self.window.border()
+            self.window.addstr(0, 2, self.title + " {} ({})".format(len(records), self.iter,))
+
+        x = 1
+        y = 1
+        s1 = " {:<40}{:>15}{:>15}{:>15} ".format(
+            "Method", "Calls", "Total", "Average"
+        )
+        s2 = " {:<40}{:>15}{:>15}{:>15} ".format(
+            "", "", "(sec)", "(sec)"
+        )
+        if self.usesCurses:
+            self.window.addstr(y, x, s1, curses.A_REVERSE)
+            self.window.addstr(y + 1, x, s2, curses.A_REVERSE)
+        else:
+            print(s1)
+            print(s2)
+        y += 2
+
+        overallCount = 0
+        overallTimeSpent = 0.0
+
+        for methodName, (count, timeSpent) in sorted(records.items(), key=lambda x: x[0]):
+            overallCount += count
+            overallTimeSpent += timeSpent
+
+            s = " {:<40}{:>15d}{:>15.1f}{:>15.5f} ".format(
+                methodName,
+                count,
+                timeSpent,
+                timeSpent / count,
+            )
+            try:
+                if self.usesCurses:
+                    self.window.addstr(y, x, s)
+                else:
+                    print(s)
+            except curses.error:
+                pass
+            y += 1
+
+
+        s = " {:<40}{:>15d}{:>15.1f}{:>15.5f} ".format(
+            "Total:",
+            overallCount,
+            overallTimeSpent,
+            safeDivision(overallTimeSpent, overallCount, 1.0)
+        )
+        if self.usesCurses:
+            self.window.hline(y, x, "-", self.FORMAT_WIDTH - 2)
+            y += 1
+            self.window.addstr(y, x, s)
+        else:
+            print(s)
+        y += 1
+
+        if self.usesCurses:
+            self.window.refresh()
+
+
+
 Dashboard.registerWindow(SystemWindow, "s")
 Dashboard.registerWindow(RequestStatsWindow, "r")
 Dashboard.registerWindow(JobsWindow, "j")
 Dashboard.registerWindow(AssignmentsWindow, "w")
 Dashboard.registerWindow(HTTPSlotsWindow, "c")
+Dashboard.registerWindow(DirectoryStatsWindow, "d")
 Dashboard.registerWindow(HelpWindow, "h")
 
 

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/gateway.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/gateway.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/gateway.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -25,11 +25,18 @@
 import xml
 
 from calendarserver.tools.cmdline import utilityMain
-from calendarserver.tools.config import WRITABLE_CONFIG_KEYS, setKeyPath, getKeyPath, flattenDictionary, WritableConfig
+from calendarserver.tools.config import (
+    WRITABLE_CONFIG_KEYS, setKeyPath, getKeyPath, flattenDictionary,
+    WritableConfig
+)
 from calendarserver.tools.principals import (
     getProxies, setProxies
 )
-from calendarserver.tools.purge import WorkerService, PurgeOldEventsService, DEFAULT_BATCH_SIZE, DEFAULT_RETAIN_DAYS
+from calendarserver.tools.purge import (
+    WorkerService, PurgeOldEventsService,
+    DEFAULT_BATCH_SIZE, DEFAULT_RETAIN_DAYS,
+    PrincipalPurgeWork
+)
 from calendarserver.tools.util import (
     recordForPrincipalID, autoDisableMemcached
 )
@@ -412,14 +419,26 @@
         self.respondWithRecordsOfTypes(self.dir, command, [typeName])
 
 
+    @inlineCallbacks
     def command_deleteLocation(self, command):
-        return self._delete("locations", command)
+        txn = self.store.newTransaction()
+        uid = command['GeneratedUID']
+        yield txn.enqueue(PrincipalPurgeWork, uid=uid)
+        yield txn.commit()
 
+        yield self._delete("locations", command)
 
+
+    @inlineCallbacks
     def command_deleteResource(self, command):
-        return self._delete("resources", command)
+        txn = self.store.newTransaction()
+        uid = command['GeneratedUID']
+        yield txn.enqueue(PrincipalPurgeWork, uid=uid)
+        yield txn.commit()
 
+        yield self._delete("resources", command)
 
+
     def command_deleteAddress(self, command):
         return self._delete("addresses", command)
 

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/managetimezones.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/managetimezones.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/managetimezones.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -105,7 +105,16 @@
     for file in zonefiles:
         parser.parse(os.path.join(zonedir, file))
 
-    parser.generateZoneinfoFiles(os.path.join(rootdir, "zoneinfo"), startYear, endYear, filterzones=())
+    # Check for windows aliases
+    print("Downloading latest data from unicode.org")
+    path = "http://unicode.org/repos/cldr/tags/latest/common/supplemental/windowsZones.xml"
+    data = urllib.urlretrieve(path)
+    wpath = data[0]
+
+    # Generate the iCalendar data
+    print("Generating iCalendar data")
+    parser.generateZoneinfoFiles(os.path.join(rootdir, "zoneinfo"), startYear, endYear, windowsAliases=wpath, filterzones=())
+
     print("Copy new zoneinfo to destination: %s" % (tzpath,))
     z = FilePath(os.path.join(rootdir, "zoneinfo"))
     tz = FilePath(tzpath)
@@ -251,7 +260,8 @@
 Description:
     This utility will create, update, or list an XML timezone database
     summary file, or refresh iCalendar timezone from IANA (Olson). It can
-    also be used to update the server's own zoneinfo database from IANA.
+    also be used to update the server's own zoneinfo database from IANA. It
+    also creates aliases for the unicode.org windowsZones.
 
 """)
 

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/migrate_verify.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/migrate_verify.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/migrate_verify.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -193,7 +193,7 @@
                 self.badPaths.append(line)
 
         # Remove any invalid GUIDs that actuall were valid
-        invalidGUIDs = [guid for guid in invalidGUIDs if guid not in self.pathsByGUID]
+        invalidGUIDs = [pguid for pguid in invalidGUIDs if pguid not in self.pathsByGUID]
 
         self.output.write("\nTotal lines read: %d\n" % (total,))
         self.output.write("Total guids: valid: %d  invalid: %d  overall: %d\n" % (

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/resources.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/resources.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/resources.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -31,7 +31,7 @@
 from twisted.internet.defer import inlineCallbacks, returnValue
 from txdav.who.directory import CalendarDirectoryRecordMixin
 from twext.who.directory import DirectoryRecord as BaseDirectoryRecord
-from txdav.who.opendirectory import RecordType
+from txdav.who.idirectory import RecordType
 
 
 log = Logger()
@@ -42,7 +42,7 @@
     @inlineCallbacks
     def doWork(self):
         try:
-            from twext.who.opendirectory import (
+            from txdav.who.opendirectory import (
                 DirectoryService as OpenDirectoryService
             )
         except ImportError:
@@ -115,8 +115,8 @@
     destRecords = []
 
     for recordType in (
-        sourceService.recordType.resource,
-        sourceService.recordType.location,
+        RecordType.resource,
+        RecordType.location,
     ):
         records = yield sourceService.recordsWithRecordType(recordType)
         for sourceRecord in records:

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_gateway.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_gateway.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_gateway.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -20,12 +20,12 @@
 import plistlib
 import xml
 
+from twistedcaldav.stdconfig import config
 from twext.python.filepath import CachingFilePath as FilePath
 from twisted.internet import reactor
 from twisted.internet.defer import inlineCallbacks, Deferred, returnValue
 from twisted.trial.unittest import TestCase
 from twistedcaldav import memcacher
-from twistedcaldav.config import config
 from twistedcaldav.memcacheclient import ClientFactory
 from twistedcaldav.test.util import CapturingProcessProtocol
 from txdav.common.datastore.test.util import (

Modified: CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_principals.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_principals.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/calendarserver/tools/test/test_principals.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -16,6 +16,7 @@
 
 import os
 
+from twistedcaldav.stdconfig import config
 from calendarserver.tools.principals import (
     parseCreationArgs, matchStrings,
     recordForPrincipalID, getProxies, setProxies
@@ -23,7 +24,6 @@
 from twext.python.filepath import CachingFilePath as FilePath
 from twisted.internet import reactor
 from twisted.internet.defer import inlineCallbacks, Deferred, returnValue
-from twistedcaldav.config import config
 from twistedcaldav.test.util import (
     TestCase, StoreTestCase, CapturingProcessProtocol, ErrorOutput
 )

Modified: CalendarServer/branches/users/gaya/groupsharee/conf/auth/generate_test_accounts.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/conf/auth/generate_test_accounts.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/conf/auth/generate_test_accounts.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -220,7 +220,7 @@
   <short-name>il1</short-name>
   <full-name>IL1</full-name>
   <street-address>1 Infinite Loop, Cupertino, CA 95014</street-address>
-  <geographic-location>37.331741,-122.030333</geographic-location>
+  <geographic-location>geo:37.331741,-122.030333</geographic-location>
 </record>
 <record type="location">
   <uid>fantastic</uid>
@@ -233,7 +233,7 @@
   <short-name>il2</short-name>
   <full-name>IL2</full-name>
   <street-address>2 Infinite Loop, Cupertino, CA 95014</street-address>
-  <geographic-location>37.332633,-122.030502</geographic-location>
+  <geographic-location>geo:37.332633,-122.030502</geographic-location>
 </record>
 <record type="location">
   <uid>delegatedroom</uid>

Modified: CalendarServer/branches/users/gaya/groupsharee/conf/caldavd-apple.plist
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/conf/caldavd-apple.plist	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/conf/caldavd-apple.plist	2014-06-11 03:50:42 UTC (rev 13630)
@@ -528,19 +528,29 @@
     <!-- Directory searching -->
     <key>DirectoryAddressBook</key>
     <dict>
-	<key>Enabled</key>
-	<true/>
-        <key>params</key>
-        <dict>
-            <key>queryUserRecords</key>
-            <false/>
-            <key>queryPeopleRecords</key>
-            <false/>
-        </dict>
+	    <key>Enabled</key>
+	    <true/>
+      <key>params</key>
+      <dict>
+        <key>queryUserRecords</key>
+        <false/>
+        <key>queryPeopleRecords</key>
+        <false/>
+      </dict>
     </dict>
+
     <key>EnableSearchAddressBook</key>
     <false/>
 
+
+    <!-- Automatic purging of data for principals no longer in the directory
+      -->
+    <key>AutomaticPurging</key>
+    <dict>
+      <key>Enabled</key>
+      <true/>
+    </dict>
+
     <key>Includes</key>
     <array>
         <string>/Library/Preferences/com.apple.servermgr_calendar.plist</string>

Modified: CalendarServer/branches/users/gaya/groupsharee/contrib/tools/monitoranalysis.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/contrib/tools/monitoranalysis.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/contrib/tools/monitoranalysis.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -106,7 +106,7 @@
     y2 = []
     x3 = []
     y3 = []
-    for datetime, reqs, resp, lq, _ignore_cpu in data:
+    for _ignore_dt, reqs, resp, lq, _ignore_cpu in data:
         if lq == 0:
             x1.append(reqs)
             y1.append(resp)
@@ -134,7 +134,7 @@
 
     x = [[], [], [], []]
     y = [[], [], [], []]
-    for datetime, reqs, resp, _ignore_lq, cpu in data:
+    for _ignore_dt, reqs, resp, _ignore_lq, cpu in data:
         if cpu > 75:
             x[0].append(reqs)
             y[0].append(resp)

Modified: CalendarServer/branches/users/gaya/groupsharee/requirements-dev.txt
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/requirements-dev.txt	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/requirements-dev.txt	2014-06-11 03:50:42 UTC (rev 13630)
@@ -7,4 +7,4 @@
 mockldap
 q
 --editable svn+http://svn.calendarserver.org/repository/calendarserver/CalDAVClientLibrary/trunk@13420#egg=CalDAVClientLibrary
---editable svn+http://svn.calendarserver.org/repository/calendarserver/CalDAVTester/trunk@13547#egg=CalDAVTester
+--editable svn+http://svn.calendarserver.org/repository/calendarserver/CalDAVTester/trunk@13624#egg=CalDAVTester

Modified: CalendarServer/branches/users/gaya/groupsharee/requirements-stable.txt
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/requirements-stable.txt	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/requirements-stable.txt	2014-06-11 03:50:42 UTC (rev 13630)
@@ -5,9 +5,9 @@
 # For CalendarServer development, don't try to get these projects from PyPI; use svn.
 
 -e .
--e svn+http://svn.calendarserver.org/repository/calendarserver/twext/trunk@13580#egg=twextpy
+-e svn+http://svn.calendarserver.org/repository/calendarserver/twext/trunk@13610#egg=twextpy
 -e svn+http://svn.calendarserver.org/repository/calendarserver/PyKerberos/trunk@13420#egg=kerberos
--e svn+http://svn.calendarserver.org/repository/calendarserver/PyCalendar/trunk@13576#egg=pycalendar
+-e svn+http://svn.calendarserver.org/repository/calendarserver/PyCalendar/trunk@13621#egg=pycalendar
 
 # Specify specific versions of our dependencies so that we're all testing the same config.
 

Modified: CalendarServer/branches/users/gaya/groupsharee/support/_cache_deps
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/support/_cache_deps	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/support/_cache_deps	2014-06-11 03:50:42 UTC (rev 13630)
@@ -76,7 +76,7 @@
 rev="$(grep egg=CalDAVTester "${wd}/requirements-dev.txt" | sed 's|^.*svn+[^@#]*@\([0-9]*\).*$|\1|')";
 
 svn export -r "${rev}" "${url}@${rev}" "${wd}/CalDAVTester";
-tar -C "${wd}" -cvzf "${wd}/CalDAVTester.tgz" CalDAVTester; 
+tar -C "${wd}" -cvzf "${wd}/CalDAVTester.tgz" CalDAVTester;
 rm -r CalDAVTester;
 
 
@@ -85,7 +85,7 @@
 # Remove .exe files from arvhives
 #
 
-for archive in $(find "${wd}/.develop" -type f -name '*.tgz'); do
+for archive in $(find "${wd}/.develop" -type f -name '*.tgz' -or -name '*.tar.gz'); do
   if tar -tvzf "${archive}" "*.exe" > /dev/null 2>&1; then
     ruler "Removing binaries from ${archive}";
     tmp="$(mktemp -t ccsXXXXX)";

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directory/util.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directory/util.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directory/util.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -92,7 +92,11 @@
     """
     transaction = getattr(request, TRANSACTION_KEY, None)
     if transaction is None:
-        transaction = newStore.newTransaction(repr(request))
+        if hasattr(request, "authzUser") and request.authzUser is not None:
+            authz_uid = request.authzUser.record.uid
+        else:
+            authz_uid = None
+        transaction = newStore.newTransaction(repr(request), authz_uid=authz_uid)
         def abortIfUncommitted(request, response):
             try:
                 # TODO: missing 'yield' here.  For formal correctness as per

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directorybackedaddressbook.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directorybackedaddressbook.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/directorybackedaddressbook.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -182,48 +182,72 @@
         }
 
         propNames, expression = expressionFromABFilter(
-            addressBookFilter, vcardPropToRecordFieldMap, vCardConstantProperties
+            addressBookFilter, vcardPropToRecordFieldMap, vCardConstantProperties,
         )
 
         if expression:
-            if defaultKind and "KIND" not in propNames:
-                defaultRecordExpression = MatchExpression(
-                    FieldName.recordType,
-                    vCardKindToRecordTypeMap[defaultKind],
-                    MatchType.equals
-                )
-                if expression is True:
-                    expression = defaultRecordExpression
-                else:
-                    expression = CompoundExpression(
-                        (expression, defaultRecordExpression,),
-                        Operand.AND
+
+            queryRecordType = None
+            if "KIND" not in propNames:
+                queryRecordType = vCardKindToRecordTypeMap.get(defaultKind)
+
+            # if CompoundExpression of MatchExpression: recordsWithFieldValue() else recordsMatchingType()
+            fields = []
+            if expression is not True:
+
+                def fieldForMatchExpression(match):
+                    return (
+                        match.fieldName.name,
+                        match.fieldValue,
+                        match.flags,
+                        match.matchType,
                     )
-            elif expression is True: # True means all records
-                allowedRecordTypes = set(self.directory.recordTypes()) & set(recordTypeToVCardKindMap.keys())
-                expression = CompoundExpression(
-                    [
-                        MatchExpression(FieldName.recordType, recordType, MatchType.equals)
-                            for recordType in allowedRecordTypes
-                    ], Operand.OR
-                )
 
+                if isinstance(expression, CompoundExpression):
+                    operand = expression.operand
+                    for match in expression.expressions:
+                        if isinstance(match, MatchExpression):
+                            if match.fieldName != FieldName.recordType:
+                                fields.append(fieldForMatchExpression(match))
+                            # else optimize: collect record type list for query
+                        else:
+                            # do all record types query
+                            fields = []
+                            break
+                elif isinstance(expression, MatchExpression):
+                    operand = Operand.OR
+                    if expression.fieldName != FieldName.recordType:
+                        fields.append(fieldForMatchExpression(expression))
+                    else:
+                        recordType = expression.fieldValue
+
             maxRecords = int(maxResults * 1.2)
 
             # keep trying query till we get results based on filter.  Especially when doing "all results" query
             while True:
+                queryLimited = False
 
                 log.debug("doAddressBookDirectoryQuery: expression={expression!r}, propNames={propNames}", expression=expression, propNames=propNames)
 
-                records = yield self.directory.recordsFromExpression(expression)
-                log.debug("doAddressBookDirectoryQuery: #records={n}, records={records!r}", n=len(records), records=records)
-                queryLimited = False
+                allRecords = set()
+                if fields:
+                    records = yield self.directory.recordsMatchingFields(fields, operand, queryRecordType)
+                    log.debug("doAddressBookDirectoryQuery: recordsMatchingFields({f}, {o}): #records={n}, records={records!r}",
+                              f=fields, o=operand, n=len(records), records=records)
+                    allRecords = set(records)
+                else:
+                    recordTypes = set([queryRecordType]) if queryRecordType else set(self.directory.recordTypes()) & set(recordTypeToVCardKindMap.keys())
+                    for recordType in recordTypes:
+                        records = yield self.directory.recordsWithRecordType(recordType)
+                        log.debug("doAddressBookDirectoryQuery: #records={n}, records={records!r}", n=len(records), records=records)
+                        allRecords |= set(records)
 
-                vCardsResults = [(yield ABDirectoryQueryResult(self).generate(record)) for record in records]
+                vCardsResults = [(yield ABDirectoryQueryResult(self).generate(record)) for record in allRecords]
 
                 filteredResults = set()
                 for vCardResult in vCardsResults:
                     if addressBookFilter.match(vCardResult.vCard()):
+                        log.debug("doAddressBookDirectoryQuery: vCard did match filter:\n{vcard}", vcard=vCardResult.vCard())
                         filteredResults.add(vCardResult)
                     else:
                         log.debug("doAddressBookDirectoryQuery: vCard did not match filter:\n{vcard}", vcard=vCardResult.vCard())
@@ -266,9 +290,9 @@
     propertyNames = []
     if addressBookQuery.qname() == ("DAV:", "prop"):
 
-        for property in addressBookQuery.children:
-            if isinstance(property, carddavxml.AddressData):
-                for addressProperty in property.children:
+        for prop in addressBookQuery.children:
+            if isinstance(prop, carddavxml.AddressData):
+                for addressProperty in prop.children:
                     if isinstance(addressProperty, carddavxml.Property):
                         propertyNames.append(addressProperty.attributes["name"])
 
@@ -360,7 +384,7 @@
 
 
             def definedExpression(defined, allOf):
-                if constant or propFilter.filter_name in ("N" , "FN", "UID", "SOURCE", "KIND",):
+                if constant or propFilter.filter_name in ("N" , "FN", "UID", "KIND",):
                     return defined  # all records have this property so no records do not have it
                 else:
                     # FIXME: The startsWith expression below, which works with LDAP and OD. is not currently supported
@@ -386,11 +410,11 @@
                 params = vCardPropToParamMap.get(propFilter.filter_name.upper())
                 defined = params and paramFilterElement.filter_name.upper() in params
 
-                #defined test
+                # defined test
                 if defined != paramFilterElement.defined:
                     return False
 
-                #parameter value text match
+                # parameter value text match
                 if defined and paramFilterElement.filters:
                     paramValues = params[paramFilterElement.filter_name.upper()]
                     if paramValues and paramFilterElement.filters[0].text.upper() not in paramValues:
@@ -401,10 +425,10 @@
 
             def textMatchElementExpression(propFilterAllOf, textMatchElement):
 
-                # pre process text match strings for ds query
+                # preprocess text match strings for ds query
                 def getMatchStrings(propFilter, matchString):
 
-                    if propFilter.filter_name in ("REV" , "BDAY",):
+                    if propFilter.filter_name in ("REV", "BDAY",):
                         rawString = matchString
                         matchString = ""
                         for c in rawString:

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/ical.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/ical.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/ical.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -1063,11 +1063,16 @@
         """
         result = set()
 
-        for property in self.properties():
-            tzid = property.parameterValue("TZID")
-            if tzid is not None:
-                result.add(tzid)
-                break
+        if self.name() == "VCALENDAR":
+            for component in self.subcomponents():
+                if component.name() != "VTIMEZONE":
+                    result.update(component.timezoneIDs())
+        else:
+            for property in self.properties():
+                tzid = property.parameterValue("TZID")
+                if tzid is not None:
+                    result.add(tzid)
+                    break
 
         return result
 
@@ -2032,6 +2037,12 @@
                     "Timezone {0} is not referenced by any non-timezone component".format(timezone,)
                 )
 
+        # TZIDs without a VTIMEZONE must be available in the server's TZ database
+        missing_timezones = timezone_refs - timezones
+        for tzid in missing_timezones:
+            # Will raise TimezoneException if tzid not present in server's database
+            hasTZ(tzid)
+
         # Control character check - only HTAB, CR, LF allowed for characters in the range 0x00-0x1F
         s = str(self)
         if len(s.translate(None, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F")) != len(s):

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/memcacheclient.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/memcacheclient.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/memcacheclient.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -1417,7 +1417,6 @@
             print("FAIL", end="")
         else:
             print("OK", end="")
-        import pickle
         s = pickle.loads('V\\u4f1a\np0\n.')
         try:
             x = mc.set((s*SERVER_MAX_KEY_LENGTH).encode('utf-8'), 1)

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/resource.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/resource.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/resource.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -858,7 +858,7 @@
         Return the DAV:owner property value (MUST be a DAV:href or None).
         """
 
-        if hasattr(self, "_newStoreObject"):
+        if getattr(self, "_newStoreObject", None) is not None:
             if not hasattr(self._newStoreObject, "ownerHome"):
                 home = self._newStoreObject.parentCollection().ownerHome()
             else:
@@ -2635,11 +2635,16 @@
         if config.EnableProxyPrincipals:
             # Server may be read only
             if config.EnableReadOnlyServer:
-                rw_proxy_privs = (
+                ro_proxy_privs = rw_proxy_privs = (
                     element.Privilege(element.Read()),
                     element.Privilege(element.ReadCurrentUserPrivilegeSet()),
                 )
             else:
+                ro_proxy_privs = (
+                    element.Privilege(element.Read()),
+                    element.Privilege(element.ReadCurrentUserPrivilegeSet()),
+                    element.Privilege(element.WriteProperties()),
+                )
                 rw_proxy_privs = (
                     element.Privilege(element.Read()),
                     element.Privilege(element.ReadCurrentUserPrivilegeSet()),
@@ -2650,10 +2655,7 @@
                 # DAV:read/DAV:read-current-user-privilege-set access for this principal's calendar-proxy-read users.
                 element.ACE(
                     element.Principal(element.HRef(joinURL(myPrincipal.principalURL(), "calendar-proxy-read/"))),
-                    element.Grant(
-                        element.Privilege(element.Read()),
-                        element.Privilege(element.ReadCurrentUserPrivilegeSet()),
-                    ),
+                    element.Grant(*ro_proxy_privs),
                     element.Protected(),
                     TwistedACLInheritable(),
                 ),

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/scheduling_store/caldav/resource.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/scheduling_store/caldav/resource.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/scheduling_store/caldav/resource.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -419,17 +419,6 @@
         originator = (yield self.loadOriginatorFromRequestDetails(request))
         recipients = self.loadRecipientsFromCalendarData(calendar)
 
-        # storeComponent needs to know who the auth'd user is for access control
-        # TODO: this needs to be done in a better way - ideally when the txn is created for the request,
-        # we should set a txn.authzid attribute.
-        authz = None
-        authz_principal = self.parent.currentPrincipal(request).children[0]
-        if isinstance(authz_principal, davxml.HRef):
-            principalURL = str(authz_principal)
-            if principalURL:
-                authz = (yield request.locateResource(principalURL))
-                self._associatedTransaction._authz_uid = authz.record.uid
-
         # Log extended item
         if not hasattr(request, "extendedLogItems"):
             request.extendedLogItems = {}

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/sharing.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/sharing.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/sharing.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -383,6 +383,7 @@
                     element.Grant(
                         element.Privilege(element.Read()),
                         element.Privilege(element.ReadCurrentUserPrivilegeSet()),
+                        element.Privilege(element.WriteProperties()),
                     ),
                     element.Protected(),
                     TwistedACLInheritable(),
@@ -557,6 +558,13 @@
 
     @inlineCallbacks
     def _xmlHandleInvite(self, request, docroot):
+        # Sharing must be enabled for this collection
+        if not self.canBeShared():
+            raise HTTPError(ErrorResponse(
+                responsecode.FORBIDDEN,
+                (customxml.calendarserver_namespace, "valid-request"),
+                "Sharing not supported on this resource",
+            ))
         yield self.authorize(request, (element.Read(), element.Write()))
         result = (yield self._handleInvite(request, docroot))
         returnValue(result)
@@ -702,6 +710,13 @@
 
     @inlineCallbacks
     def _xmlHandleInviteReply(self, request, docroot):
+        # Sharing must be enabled for this collection
+        if not self.canShare():
+            raise HTTPError(ErrorResponse(
+                responsecode.FORBIDDEN,
+                (customxml.calendarserver_namespace, "valid-request"),
+                "Sharing not supported on this resource",
+            ))
         yield self.authorize(request, (element.Read(), element.Write()))
         result = (yield self._handleInviteReply(request, docroot))
         returnValue(result)

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/stdconfig.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/stdconfig.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/stdconfig.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -280,9 +280,9 @@
 
     "UseDatabase": True, # True: database; False: files
 
-    "TransactionTimeoutSeconds": 0, # Timeout transactions that take longer than
+    "TransactionTimeoutSeconds": 300, # Timeout transactions that take longer than
                               # the specified number of seconds. Zero means
-                              # no timeouts
+                              # no timeouts. 5 minute default.
 
     "DBType": "", # 2 possible values: empty, meaning 'spawn postgres
                            # yourself', or 'postgres', meaning 'connect to a
@@ -606,9 +606,31 @@
             "IgnorePerUserProperties" : [
                 "X-APPLE-STRUCTURED-LOCATION",
             ],
+            "CollectionProperties": {
+                "Shadowable": [
+                    "{urn:ietf:params:xml:ns:caldav}calendar-description",
+                ],
+                "ProxyOverride": [
+                    "{urn:ietf:params:xml:ns:caldav}calendar-description",
+                    "{com.apple.ical:}calendarcolor",
+                    "{http://apple.com/ns/ical/}calendar-color",
+                    "{http://apple.com/ns/ical/}calendar-order",
+                ],
+                "Global": [
+                ],
+            },
         },
         "AddressBooks" : {
             "Enabled"         : False, # Address Books on/off switch
+            "CollectionProperties": {
+                "Shadowable": [
+                    "{urn:ietf:params:xml:ns:carddav}addressbook-description",
+                ],
+                "ProxyOverride": [
+                ],
+                "Global": [
+                ],
+            },
         },
     },
 

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/storebridge.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/storebridge.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/storebridge.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -60,7 +60,7 @@
     InvalidPerUserDataMerge,
     AttendeeAllowedError, ResourceDeletedError, InvalidAttachmentOperation,
     ShareeAllowedError, DuplicatePrivateCommentsError, InvalidSplit
-, AttachmentSizeTooLarge)
+, AttachmentSizeTooLarge, UnknownTimezone)
 from txdav.carddav.iaddressbookstore import (
     KindChangeNotAllowedError, GroupWithUnsharedAddressNotAllowedError
 )
@@ -1318,6 +1318,10 @@
         returnValue(result)
 
 
+    def canBeShared(self):
+        return config.Sharing.Enabled and config.Sharing.Calendars.Enabled
+
+
     @inlineCallbacks
     def storeResourceData(self, newchild, component, returnChangedData=False):
 
@@ -1684,37 +1688,38 @@
             proxyprivs.remove(davxml.Privilege(davxml.ReadACL()))
 
             principal = yield self.principalForUID(invite.shareeUID)
-            aces += (
-                # Inheritable specific access for the resource's associated principal.
-                davxml.ACE(
-                    davxml.Principal(davxml.HRef(principal.principalURL())),
-                    davxml.Grant(*userprivs),
-                    davxml.Protected(),
-                    TwistedACLInheritable(),
-                ),
-            )
-
-            if config.EnableProxyPrincipals:
+            if principal is not None:
                 aces += (
-                    # DAV:read/DAV:read-current-user-privilege-set access for this principal's calendar-proxy-read users.
+                    # Inheritable specific access for the resource's associated principal.
                     davxml.ACE(
-                        davxml.Principal(davxml.HRef(joinURL(principal.principalURL(), "calendar-proxy-read/"))),
-                        davxml.Grant(
-                            davxml.Privilege(davxml.Read()),
-                            davxml.Privilege(davxml.ReadCurrentUserPrivilegeSet()),
-                        ),
+                        davxml.Principal(davxml.HRef(principal.principalURL())),
+                        davxml.Grant(*userprivs),
                         davxml.Protected(),
                         TwistedACLInheritable(),
                     ),
-                    # DAV:read/DAV:read-current-user-privilege-set/DAV:write access for this principal's calendar-proxy-write users.
-                    davxml.ACE(
-                        davxml.Principal(davxml.HRef(joinURL(principal.principalURL(), "calendar-proxy-write/"))),
-                        davxml.Grant(*proxyprivs),
-                        davxml.Protected(),
-                        TwistedACLInheritable(),
-                    ),
                 )
 
+                if config.EnableProxyPrincipals:
+                    aces += (
+                        # DAV:read/DAV:read-current-user-privilege-set access for this principal's calendar-proxy-read users.
+                        davxml.ACE(
+                            davxml.Principal(davxml.HRef(joinURL(principal.principalURL(), "calendar-proxy-read/"))),
+                            davxml.Grant(
+                                davxml.Privilege(davxml.Read()),
+                                davxml.Privilege(davxml.ReadCurrentUserPrivilegeSet()),
+                            ),
+                            davxml.Protected(),
+                            TwistedACLInheritable(),
+                        ),
+                        # DAV:read/DAV:read-current-user-privilege-set/DAV:write access for this principal's calendar-proxy-write users.
+                        davxml.ACE(
+                            davxml.Principal(davxml.HRef(joinURL(principal.principalURL(), "calendar-proxy-write/"))),
+                            davxml.Grant(*proxyprivs),
+                            davxml.Protected(),
+                            TwistedACLInheritable(),
+                        ),
+                    )
+
         returnValue(aces)
 
 
@@ -2729,6 +2734,7 @@
         ShareeAllowedError: (_CommonObjectResource._storeExceptionError, (calendarserver_namespace, "sharee-privilege-needed",),),
         DuplicatePrivateCommentsError: (_CommonObjectResource._storeExceptionError, (calendarserver_namespace, "no-duplicate-private-comments",),),
         LockTimeout: (_CommonObjectResource._storeExceptionUnavailable, "Lock timed out.",),
+        UnknownTimezone: (_CommonObjectResource._storeExceptionError, (caldav_namespace, "valid-timezone"),),
     }
 
     StoreMoveExceptionsErrors = {
@@ -2823,6 +2829,10 @@
         returnValue(response)
 
 
+    def canBeShared(self):
+        return False
+
+
     @inlineCallbacks
     def http_PUT(self, request):
 
@@ -2873,17 +2883,6 @@
                     "Can't parse calendar data: %s" % (str(e),)
                 ))
 
-            # storeComponent needs to know who the auth'd user is for access control
-            # TODO: this needs to be done in a better way - ideally when the txn is created for the request,
-            # we should set a txn.authzid attribute.
-            authz = None
-            authz_principal = self._parentResource.currentPrincipal(request).children[0]
-            if isinstance(authz_principal, davxml.HRef):
-                principalURL = str(authz_principal)
-                if principalURL:
-                    authz = (yield request.locateResource(principalURL))
-                    self._parentResource._newStoreObject._txn._authz_uid = authz.record.uid
-
             try:
                 response = (yield self.storeComponent(component, smart_merge=schedule_tag_match))
             except ResourceDeletedError:
@@ -3296,6 +3295,10 @@
         return carddavxml.AddressData
 
 
+    def canBeShared(self):
+        return config.Sharing.Enabled and config.Sharing.AddressBooks.Enabled
+
+
     @inlineCallbacks
     def storeResourceData(self, newchild, component, returnChangedData=False):
 
@@ -3566,6 +3569,10 @@
         returnValue(response)
 
 
+    def canBeShared(self):
+        return config.Sharing.Enabled and config.Sharing.AddressBooks.Enabled
+
+
     @inlineCallbacks
     def http_PUT(self, request):
 
@@ -3606,17 +3613,6 @@
                     "Could not parse vCard",
                 ))
 
-            # storeComponent needs to know who the auth'd user is for access control
-            # TODO: this needs to be done in a better way - ideally when the txn is created for the request,
-            # we should set a txn.authzid attribute.
-            authz = None
-            authz_principal = self._parentResource.currentPrincipal(request).children[0]
-            if isinstance(authz_principal, davxml.HRef):
-                principalURL = str(authz_principal)
-                if principalURL:
-                    authz = (yield request.locateResource(principalURL))
-                    self._parentResource._newStoreObject._txn._authz_uid = authz.record.uid
-
             try:
                 response = (yield self.storeComponent(component))
             except ResourceDeletedError:

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_icalendar.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_icalendar.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_icalendar.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -21,16 +21,17 @@
 from twisted.trial.unittest import SkipTest
 from twisted.internet.defer import inlineCallbacks, succeed
 
+from twistedcaldav.dateops import normalizeForExpand
 from twistedcaldav.ical import Component, Property, InvalidICalendarDataError, \
     normalizeCUAddress, normalize_iCalStr
+from twistedcaldav.ical import iCalendarProductID
 from twistedcaldav.instance import InvalidOverriddenInstanceError
 import twistedcaldav.test.util
+from twistedcaldav.timezones import TimezoneException
 
 from pycalendar.datetime import DateTime
 from pycalendar.timezone import Timezone
-from twistedcaldav.ical import iCalendarProductID
 from pycalendar.duration import Duration
-from twistedcaldav.dateops import normalizeForExpand
 from pycalendar.value import Value
 
 
@@ -654,9 +655,27 @@
             self.assertEqual(end, DateTime(2004, 11, 27))
             break
 
-    # test_component_timerange.todo = "recurrence expansion should give us no end date here"
 
+    def test_component_timezone_validate(self):
+        """
+        CalDAV resource validation.
+        """
+        data = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:12345-67890
+DTSTART;TZID=BOGUS:20130806T000000
+DURATION:PT1H
+DTSTAMP:20051222T210507Z
+SUMMARY:1
+END:VEVENT
+END:VCALENDAR
+"""
+        calendar = Component.fromString(data)
+        self.failUnlessRaises(TimezoneException, calendar.validCalendarForCalDAV, False)
 
+
     def test_parse_date(self):
         """
         parse_date()
@@ -5235,8 +5254,8 @@
 
         for title, calendar, tests in data:
             ical = Component.fromString(calendar)
-            rids = set([rid for rid, result in tests])
-            expected_results = set([rid for rid, result in tests if result == True])
+            rids = set([trid for trid, _ignore_tresult in tests])
+            expected_results = set([trid for trid, tresult in tests if tresult == True])
             actual_results = ical.validInstances(rids)
             self.assertEqual(actual_results, expected_results, "Failed comparison: %s %s" % (title, actual_results,))
 

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_resource.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_resource.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/test/test_resource.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -160,6 +160,26 @@
 
 
     @inlineCallbacks
+    def test_isOwnerYes_noStoreObject(self):
+        """
+        L{CalDAVResource.isOwner} returns C{True} for authenticated requests
+        with a principal that matches the resource's owner.
+        """
+        site = None
+        request = SimpleRequest(site, "GET", "/not/a/real/url/")
+        request.authzUser = request.authnUser = StubPrincipal("/yes-i-am-the-owner/")
+        parent = CalDAVResource()
+        parent.owner = lambda igreq: HRef("/yes-i-am-the-owner/")
+        rsrc = CalDAVResource()
+        rsrc._newStoreObject = None
+
+        request._rememberResource(parent, "/not/a/real/")
+        request._rememberResource(rsrc, "/not/a/real/url/")
+
+        self.assertEquals((yield rsrc.isOwner(request)), True)
+
+
+    @inlineCallbacks
     def test_isOwnerAdmin(self):
         """
         L{CalDAVResource.isOwner} returns C{True} for authenticated requests

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/timezonestdservice.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/timezonestdservice.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/timezonestdservice.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -663,7 +663,7 @@
 
         try:
             for alias in aliases.splitlines():
-                alias_from, alias_to = alias.split()
+                alias_from, alias_to = alias.split("\t")
                 tzinfo = self.timezones.get(alias_to)
                 if tzinfo:
                     if alias_from != alias_to:

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/upgrade.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/upgrade.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/upgrade.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -775,7 +775,7 @@
 
     if didUpdate:
         property = caldavxml.CalendarFreeBusySet(
-            *[element.HRef(href) for href in fbset]
+            *[element.HRef(fbhref) for fbhref in fbset]
         )
         value = compress(property.toxml())
         returnValue(value)

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Central Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/AUS Central Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Central Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Central Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,48 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:AUS Central Standard Time
+X-LIC-LOCATION:AUS Central Standard Time
+BEGIN:STANDARD
+DTSTART:18950201T000000
+RDATE:18950201T000000
+TZNAME:CST
+TZOFFSETFROM:+084320
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:18990501T000000
+RDATE:18990501T000000
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170101T000100
+RDATE:19170101T000100
+RDATE:19420101T020000
+RDATE:19420927T020000
+RDATE:19431003T020000
+TZNAME:CST
+TZOFFSETFROM:+0930
+TZOFFSETTO:+1030
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170325T020000
+RDATE:19170325T020000
+RDATE:19420329T020000
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430328T020000
+RRULE:FREQ=YEARLY;UNTIL=19440325T153000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Eastern Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/AUS Eastern Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Eastern Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/AUS Eastern Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,124 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:AUS Eastern Standard Time
+X-LIC-LOCATION:AUS Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:18950201T000000
+RDATE:18950201T000000
+TZNAME:EST
+TZOFFSETFROM:+100452
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170101T000100
+RDATE:19170101T000100
+RDATE:19420101T020000
+RDATE:19420927T020000
+RDATE:19431003T020000
+RDATE:19861019T020000
+RDATE:20000827T020000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170325T020000
+RDATE:19170325T020000
+RDATE:19420329T020000
+RDATE:19720227T030000
+RDATE:19820404T030000
+RDATE:20060402T030000
+RDATE:20070325T030000
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430328T020000
+RRULE:FREQ=YEARLY;UNTIL=19440325T150000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19710101T000000
+RDATE:19710101T000000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19711031T020000
+RRULE:FREQ=YEARLY;UNTIL=19851026T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19730304T030000
+RRULE:FREQ=YEARLY;UNTIL=19810228T160000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19830306T030000
+RRULE:FREQ=YEARLY;UNTIL=19850302T160000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19860316T030000
+RRULE:FREQ=YEARLY;UNTIL=19890318T160000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19871025T020000
+RRULE:FREQ=YEARLY;UNTIL=19991030T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19900304T030000
+RRULE:FREQ=YEARLY;UNTIL=19950304T160000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19960331T030000
+RRULE:FREQ=YEARLY;UNTIL=20050326T160000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20011028T020000
+RRULE:FREQ=YEARLY;UNTIL=20071027T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20080406T030000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20081005T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Afghanistan Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Afghanistan Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Afghanistan Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Afghanistan Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,23 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Afghanistan Standard Time
+X-LIC-LOCATION:Afghanistan Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:AFT
+TZOFFSETFROM:+043648
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19450101T000000
+RDATE:19450101T000000
+TZNAME:AFT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0430
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Alaskan Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Alaskan Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Alaskan Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Alaskan Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,137 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Alaskan Standard Time
+X-LIC-LOCATION:Alaskan Standard Time
+BEGIN:STANDARD
+DTSTART:19000820T120000
+RDATE:19000820T120000
+TZNAME:CAT
+TZOFFSETFROM:-095936
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420101T000000
+RDATE:19420101T000000
+TZNAME:CAT/CAWT
+TZOFFSETFROM:-1000
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:CAT/CAWT
+TZOFFSETFROM:-1000
+TZOFFSETTO:-0900
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T140000
+RDATE:19450814T140000
+TZNAME:CAT/CAPT
+TZOFFSETFROM:-0900
+TZOFFSETTO:-0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19450930T020000
+RDATE:19450930T020000
+TZNAME:CAT/CAPT
+TZOFFSETFROM:-0900
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+TZNAME:CAT
+TZOFFSETFROM:-1000
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19670401T000000
+RDATE:19670401T000000
+RDATE:19690101T000000
+TZNAME:AHST
+TZOFFSETFROM:-1000
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19690427T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T120000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:AHDT
+TZOFFSETFROM:-1000
+TZOFFSETTO:-0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19691026T020000
+RRULE:FREQ=YEARLY;UNTIL=19821031T110000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:AHST
+TZOFFSETFROM:-0900
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19740106T020000
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:AHDT
+TZOFFSETFROM:-1000
+TZOFFSETTO:-0900
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19830424T120000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:AHDT
+TZOFFSETFROM:-1000
+TZOFFSETTO:-0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19831030T020000
+RDATE:19831030T020000
+TZNAME:YST
+TZOFFSETFROM:-0900
+TZOFFSETTO:-0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19831130T000000
+RDATE:19831130T000000
+TZNAME:AKST
+TZOFFSETFROM:-0900
+TZOFFSETTO:-0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19840429T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T110000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:AKDT
+TZOFFSETFROM:-0900
+TZOFFSETTO:-0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19841028T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T100000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:AKST
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T110000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:AKDT
+TZOFFSETFROM:-0900
+TZOFFSETTO:-0800
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:AKDT
+TZOFFSETFROM:-0900
+TZOFFSETTO:-0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:AKST
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0900
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arab Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Arab Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arab Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arab Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Arab Standard Time
+X-LIC-LOCATION:Arab Standard Time
+BEGIN:STANDARD
+DTSTART:19500101T000000
+RDATE:19500101T000000
+TZNAME:AST
+TZOFFSETFROM:+030652
+TZOFFSETTO:+0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabian Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Arabian Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabian Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabian Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Arabian Standard Time
+X-LIC-LOCATION:Arabian Standard Time
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+TZNAME:GST
+TZOFFSETFROM:+034112
+TZOFFSETTO:+0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabic Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Arabic Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabic Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Arabic Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,73 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Arabic Standard Time
+X-LIC-LOCATION:Arabic Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:BMT
+TZOFFSETFROM:+025740
+TZOFFSETTO:+025736
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19180101T000000
+RDATE:19180101T000000
+TZNAME:AST
+TZOFFSETFROM:+025736
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19820501T000000
+RDATE:19820501T000000
+RDATE:19830331T000000
+TZNAME:ADT
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19821001T000000
+RRULE:FREQ=YEARLY;UNTIL=19840930T200000Z;BYMONTH=10
+TZNAME:AST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19840401T000000
+RRULE:FREQ=YEARLY;UNTIL=19850331T210000Z;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19850929T020000
+RRULE:FREQ=YEARLY;UNTIL=19900929T220000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19860330T010000
+RRULE:FREQ=YEARLY;UNTIL=19900324T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:ADT
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19910401T030000
+RRULE:FREQ=YEARLY;UNTIL=20070401T000000Z;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19911001T040000
+RRULE:FREQ=YEARLY;UNTIL=20071001T000000Z;BYMONTH=10
+TZNAME:AST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Argentina Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Argentina Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Argentina Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Argentina Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,143 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Argentina Standard Time
+X-LIC-LOCATION:Argentina Standard Time
+BEGIN:STANDARD
+DTSTART:18941031T000000
+RDATE:18941031T000000
+TZNAME:CMT
+TZOFFSETFROM:-035348
+TZOFFSETTO:-041648
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200501T000000
+RDATE:19200501T000000
+TZNAME:ART
+TZOFFSETFROM:-041648
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19301201T000000
+RDATE:19301201T000000
+RDATE:19311015T000000
+RDATE:19400701T000000
+RDATE:19411015T000000
+RDATE:19431015T000000
+RDATE:19461001T000000
+RDATE:19631215T000000
+TZNAME:ARST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19310401T000000
+RDATE:19310401T000000
+RDATE:19410615T000000
+RDATE:19430801T000000
+RDATE:19460301T000000
+RDATE:19631001T000000
+RDATE:19670402T000000
+TZNAME:ART
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19320301T000000
+RRULE:FREQ=YEARLY;UNTIL=19400301T030000Z;BYMONTH=3
+TZNAME:ART
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19321101T000000
+RRULE:FREQ=YEARLY;UNTIL=19391101T040000Z;BYMONTH=11
+TZNAME:ARST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19640301T000000
+RRULE:FREQ=YEARLY;UNTIL=19660301T030000Z;BYMONTH=3
+TZNAME:ART
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19641015T000000
+RRULE:FREQ=YEARLY;UNTIL=19661015T040000Z;BYMONTH=10
+TZNAME:ARST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19671001T000000
+RRULE:FREQ=YEARLY;UNTIL=19681006T040000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:ARST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19680407T000000
+RRULE:FREQ=YEARLY;UNTIL=19690406T030000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:ART
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19691005T000000
+RDATE:19691005T000000
+TZNAME:ARST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19740123T000000
+RDATE:19740123T000000
+RDATE:19881201T000000
+RDATE:20071230T000000
+RDATE:20081019T000000
+TZNAME:ARST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19740501T000000
+RDATE:19740501T000000
+TZNAME:ART
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19890305T000000
+RRULE:FREQ=YEARLY;UNTIL=19930307T020000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:ART
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19891015T000000
+RRULE:FREQ=YEARLY;UNTIL=19921018T030000Z;BYDAY=3SU;BYMONTH=10
+TZNAME:ARST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19991003T000000
+RDATE:19991003T000000
+RDATE:20000303T000000
+TZNAME:ARST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20080316T000000
+RRULE:FREQ=YEARLY;UNTIL=20090315T020000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:ART
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Atlantic Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Atlantic Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Atlantic Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Atlantic Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,221 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Atlantic Standard Time
+X-LIC-LOCATION:Atlantic Standard Time
+BEGIN:STANDARD
+DTSTART:19020615T000000
+RDATE:19020615T000000
+TZNAME:AST
+TZOFFSETFROM:-041424
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160401T000000
+RDATE:19160401T000000
+RDATE:19180414T020000
+RDATE:19200509T000000
+RDATE:19210506T000000
+RDATE:19220430T000000
+RDATE:19260516T000000
+RDATE:19270501T000000
+RDATE:19320501T000000
+RDATE:19330430T000000
+RDATE:19340520T000000
+RDATE:19350602T000000
+RDATE:19360601T000000
+RDATE:19390528T000000
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T000000
+RDATE:19161001T000000
+RDATE:19181027T020000
+RDATE:19200829T000000
+RDATE:19230904T000000
+RDATE:19240915T000000
+RDATE:19250928T000000
+RDATE:19260913T000000
+RDATE:19270926T000000
+RDATE:19280909T000000
+RDATE:19290903T000000
+RDATE:19300915T000000
+RDATE:19331002T000000
+RDATE:19340916T000000
+RDATE:19350930T000000
+RDATE:19360914T000000
+RDATE:19450930T020000
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19180101T000000
+RDATE:19180101T000000
+RDATE:19190101T000000
+RDATE:19460101T000000
+RDATE:19740101T000000
+TZNAME:AST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19210905T000000
+RRULE:FREQ=YEARLY;UNTIL=19220905T030000Z;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19230506T000000
+RRULE:FREQ=YEARLY;UNTIL=19250503T040000Z;BYDAY=1SU;BYMONTH=5
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19280513T000000
+RRULE:FREQ=YEARLY;UNTIL=19310510T040000Z;BYDAY=2SU;BYMONTH=5
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19310928T000000
+RRULE:FREQ=YEARLY;UNTIL=19320926T030000Z;BYDAY=-1MO;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19370502T000000
+RRULE:FREQ=YEARLY;UNTIL=19380501T040000Z;BYDAY=1SU;BYMONTH=5
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19370927T000000
+RRULE:FREQ=YEARLY;UNTIL=19410929T030000Z;BYDAY=-1MO;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19400505T000000
+RRULE:FREQ=YEARLY;UNTIL=19410504T040000Z;BYDAY=1SU;BYMONTH=5
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:AWT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T200000
+RDATE:19450814T200000
+TZNAME:APT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19460428T020000
+RRULE:FREQ=YEARLY;UNTIL=19490424T060000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460929T020000
+RRULE:FREQ=YEARLY;UNTIL=19490925T050000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19510429T020000
+RRULE:FREQ=YEARLY;UNTIL=19540425T060000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19510930T020000
+RRULE:FREQ=YEARLY;UNTIL=19540926T050000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19560429T020000
+RRULE:FREQ=YEARLY;UNTIL=19590426T060000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19560930T020000
+RRULE:FREQ=YEARLY;UNTIL=19590927T050000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19620429T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T060000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19621028T020000
+RRULE:FREQ=YEARLY;UNTIL=19731028T050000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19740428T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T060000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19741027T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T050000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T060000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:ADT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:AST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azerbaijan Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Azerbaijan Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azerbaijan Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azerbaijan Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,116 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Azerbaijan Standard Time
+X-LIC-LOCATION:Azerbaijan Standard Time
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:BAKT
+TZOFFSETFROM:+031924
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19570301T000000
+RDATE:19570301T000000
+TZNAME:BAKST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T200000Z;BYMONTH=4
+TZNAME:BAKST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T190000Z;BYMONTH=10
+TZNAME:BAKT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T220000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:BAKT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BAKST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:BAKST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910830T000000
+RDATE:19910830T000000
+RDATE:19960101T000000
+RDATE:19970101T000000
+TZNAME:AZST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:AZT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:AZST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:AZT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19960331T050000
+RDATE:19960331T050000
+TZNAME:AZST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T060000
+RDATE:19961027T060000
+TZNAME:AZT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19970330T040000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:AZST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19971026T050000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:AZT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azores Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Azores Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azores Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Azores Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,266 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Azores Standard Time
+X-LIC-LOCATION:Azores Standard Time
+BEGIN:STANDARD
+DTSTART:18840101T000000
+RDATE:18840101T000000
+TZNAME:HMT
+TZOFFSETFROM:-014240
+TZOFFSETTO:-015432
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19110524T000000
+RDATE:19110524T000000
+TZNAME:AZOST
+TZOFFSETFROM:-015432
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160617T230000
+RDATE:19160617T230000
+RDATE:19170228T230000
+RDATE:19180301T230000
+RDATE:19190228T230000
+RDATE:19200229T230000
+RDATE:19210228T230000
+RDATE:19240416T230000
+RDATE:19260417T230000
+RDATE:19270409T230000
+RDATE:19280414T230000
+RDATE:19290420T230000
+RDATE:19310418T230000
+RDATE:19320402T230000
+RDATE:19340407T230000
+RDATE:19350330T230000
+RDATE:19360418T230000
+RDATE:19370403T230000
+RDATE:19380326T230000
+RDATE:19390415T230000
+RDATE:19400224T230000
+RDATE:19410405T230000
+RDATE:19460406T230000
+TZNAME:AZOST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161101T010000
+RDATE:19161101T010000
+RDATE:19241015T000000
+RDATE:19391119T000000
+RDATE:19461006T000000
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19171015T000000
+RRULE:FREQ=YEARLY;UNTIL=19211015T010000Z;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19261003T000000
+RRULE:FREQ=YEARLY;UNTIL=19291006T010000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19311004T000000
+RRULE:FREQ=YEARLY;UNTIL=19321002T010000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19341007T000000
+RRULE:FREQ=YEARLY;UNTIL=19381002T010000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19401006T000000
+RRULE:FREQ=YEARLY;UNTIL=19411006T010000Z;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420314T230000
+RRULE:FREQ=YEARLY;UNTIL=19450311T010000Z;BYDAY=2SA;BYMONTH=3
+TZNAME:AZOST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19420425T230000
+RDATE:19420425T230000
+RDATE:19430417T230000
+TZNAME:AZOMT
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19420816T000000
+RDATE:19420816T000000
+TZNAME:AZOST
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19421025T000000
+RRULE:FREQ=YEARLY;UNTIL=19451028T010000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19430829T000000
+RRULE:FREQ=YEARLY;UNTIL=19450826T000000Z;BYDAY=SU;BYMONTHDAY=26,27,28,29,3
+ 0,31;BYMONTH=8
+TZNAME:AZOST
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19440422T230000
+RRULE:FREQ=YEARLY;UNTIL=19450422T000000Z;BYDAY=SA;BYMONTHDAY=21,22,23,24,2
+ 5,26,27;BYMONTH=4
+TZNAME:AZOMT
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19470406T020000
+RRULE:FREQ=YEARLY;UNTIL=19490403T040000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:AZOST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19471005T030000
+RRULE:FREQ=YEARLY;UNTIL=19491002T040000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19510401T020000
+RRULE:FREQ=YEARLY;UNTIL=19650404T040000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:AZOST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19511007T030000
+RRULE:FREQ=YEARLY;UNTIL=19651003T040000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19660403T020000
+RDATE:19660403T020000
+TZNAME:AZOST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19770327T000000
+RDATE:19770327T000000
+RDATE:19800330T000000
+RDATE:19830327T020000
+TZNAME:AZOST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19770925T010000
+RDATE:19770925T010000
+RDATE:19781001T010000
+TZNAME:AZOT
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19780402T000000
+RRULE:FREQ=YEARLY;UNTIL=19790401T010000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:AZOST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19790930T020000
+RRULE:FREQ=YEARLY;UNTIL=19820926T020000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AZOT
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T010000
+RRULE:FREQ=YEARLY;UNTIL=19820328T020000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:AZOST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19830925T020000
+RRULE:FREQ=YEARLY;UNTIL=19910929T020000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AZOT
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19840325T010000
+RRULE:FREQ=YEARLY;UNTIL=19920329T020000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:AZOST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920927T020000
+RDATE:19920927T020000
+TZNAME:WEST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T010000
+RDATE:19930328T010000
+TZNAME:AZOST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T010000
+RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AZOT
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19940327T000000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:AZOST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T010000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:AZOT
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bahia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Bahia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bahia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bahia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,136 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Bahia Standard Time
+X-LIC-LOCATION:Bahia Standard Time
+BEGIN:STANDARD
+DTSTART:19140101T000000
+RDATE:19140101T000000
+TZNAME:BRST
+TZOFFSETFROM:-023404
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19311003T110000
+RDATE:19311003T110000
+RDATE:19321003T000000
+RDATE:19631209T000000
+RDATE:19650131T000000
+RDATE:19651201T000000
+RDATE:19851102T000000
+RDATE:19861025T000000
+RDATE:19871025T000000
+RDATE:19881016T000000
+RDATE:19891015T000000
+RDATE:19901021T000000
+RDATE:19911020T000000
+RDATE:19921025T000000
+RDATE:19961006T000000
+RDATE:19971006T000000
+RDATE:19981011T000000
+RDATE:19991003T000000
+RDATE:20021103T000000
+RDATE:20111016T000000
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19320401T000000
+RRULE:FREQ=YEARLY;UNTIL=19330401T020000Z;BYMONTH=4
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19491201T000000
+RRULE:FREQ=YEARLY;UNTIL=19521201T030000Z;BYMONTH=12
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19500416T010000
+RDATE:19500416T010000
+RDATE:19530301T000000
+RDATE:19640301T000000
+RDATE:19650331T000000
+RDATE:19860315T000000
+RDATE:19870214T000000
+RDATE:19880207T000000
+RDATE:19890129T000000
+RDATE:19900211T000000
+RDATE:19910217T000000
+RDATE:19920209T000000
+RDATE:19930131T000000
+RDATE:19960211T000000
+RDATE:19970216T000000
+RDATE:19980301T000000
+RDATE:19990221T000000
+RDATE:20000227T000000
+RDATE:20120226T000000
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19510401T000000
+RRULE:FREQ=YEARLY;UNTIL=19520401T020000Z;BYMONTH=4
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19660301T000000
+RRULE:FREQ=YEARLY;UNTIL=19680301T020000Z;BYMONTH=3
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19661101T000000
+RRULE:FREQ=YEARLY;UNTIL=19671101T030000Z;BYMONTH=11
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19931017T000000
+RRULE:FREQ=YEARLY;UNTIL=19951015T030000Z;BYDAY=-3SU;BYMONTH=10
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19940220T000000
+RRULE:FREQ=YEARLY;UNTIL=19950219T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20001008T000000
+RRULE:FREQ=YEARLY;UNTIL=20011014T030000Z;BYDAY=2SU;BYMONTH=10
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20010218T000000
+RRULE:FREQ=YEARLY;UNTIL=20030216T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20030924T000000
+RDATE:20030924T000000
+RDATE:20121021T000000
+TZNAME:BRT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bangladesh Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Bangladesh Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bangladesh Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Bangladesh Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,72 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Bangladesh Standard Time
+X-LIC-LOCATION:Bangladesh Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:HMT
+TZOFFSETFROM:+060140
+TZOFFSETTO:+055320
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19411001T000000
+RDATE:19411001T000000
+TZNAME:BURT
+TZOFFSETFROM:+055320
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420515T000000
+RDATE:19420515T000000
+TZNAME:IST
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420901T000000
+RDATE:19420901T000000
+TZNAME:BURT
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19510930T000000
+RDATE:19510930T000000
+TZNAME:DACT
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19710326T000000
+RDATE:19710326T000000
+TZNAME:BDT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20090101T000000
+RDATE:20090101T000000
+TZNAME:BDST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20090619T230000
+RDATE:20090619T230000
+TZNAME:BDST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20091231T235900
+RDATE:20091231T235900
+TZNAME:BDT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Canada Central Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Canada Central Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Canada Central Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Canada Central Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,100 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Canada Central Standard Time
+X-LIC-LOCATION:Canada Central Standard Time
+BEGIN:STANDARD
+DTSTART:19050901T000000
+RDATE:19050901T000000
+TZNAME:MST
+TZOFFSETFROM:-065836
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180414T020000
+RDATE:19180414T020000
+RDATE:19460414T020000
+RDATE:19590426T020000
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RDATE:19181027T020000
+RDATE:19371010T000000
+RDATE:19381002T000000
+RDATE:19450930T020000
+RDATE:19461013T020000
+RDATE:19591025T020000
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19300504T000000
+RRULE:FREQ=YEARLY;UNTIL=19340506T070000Z;BYDAY=1SU;BYMONTH=5
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19301005T000000
+RRULE:FREQ=YEARLY;UNTIL=19341007T060000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19370411T000000
+RRULE:FREQ=YEARLY;UNTIL=19410413T070000Z;BYDAY=2SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19391008T000000
+RRULE:FREQ=YEARLY;UNTIL=19411012T060000Z;BYDAY=2SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:MWT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T170000
+RDATE:19450814T170000
+TZNAME:MPT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19470427T020000
+RRULE:FREQ=YEARLY;UNTIL=19570428T090000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19470928T020000
+RRULE:FREQ=YEARLY;UNTIL=19570929T080000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19600424T020000
+RDATE:19600424T020000
+TZNAME:CST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cape Verde Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Cape Verde Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cape Verde Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cape Verde Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Cape Verde Standard Time
+X-LIC-LOCATION:Cape Verde Standard Time
+BEGIN:STANDARD
+DTSTART:19070101T000000
+RDATE:19070101T000000
+TZNAME:CVT
+TZOFFSETFROM:-013404
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420901T000000
+RDATE:19420901T000000
+TZNAME:CVST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19451015T000000
+RDATE:19451015T000000
+TZNAME:CVT
+TZOFFSETFROM:-0100
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19751125T020000
+RDATE:19751125T020000
+TZNAME:CVT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Caucasus Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Caucasus Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Caucasus Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Caucasus Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,117 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Caucasus Standard Time
+X-LIC-LOCATION:Caucasus Standard Time
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:YERT
+TZOFFSETFROM:+0258
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19570301T000000
+RDATE:19570301T000000
+TZNAME:YERST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T200000Z;BYMONTH=4
+TZNAME:YERST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T190000Z;BYMONTH=10
+TZNAME:YERT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T220000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:YERT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:YERST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:YERST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910923T000000
+RDATE:19910923T000000
+RDATE:19970101T000000
+TZNAME:AMST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+RDATE:19920926T230000
+TZNAME:AMT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:AMST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=19950325T230000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:AMST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19940924T230000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:AMT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19950924T030000
+RDATE:19950924T030000
+RDATE:20120325T020000
+TZNAME:AMT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19970330T020000
+RRULE:FREQ=YEARLY;UNTIL=20110326T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:AMST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19971026T030000
+RRULE:FREQ=YEARLY;UNTIL=20111029T220000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:AMT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cen. Australia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Cen. Australia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cen. Australia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Cen. Australia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,112 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Cen. Australia Standard Time
+X-LIC-LOCATION:Cen. Australia Standard Time
+BEGIN:STANDARD
+DTSTART:18950201T000000
+RDATE:18950201T000000
+TZNAME:CST
+TZOFFSETFROM:+091420
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:18990501T000000
+RDATE:18990501T000000
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170101T000100
+RDATE:19170101T000100
+RDATE:19420101T020000
+RDATE:19420927T020000
+RDATE:19431003T020000
+RDATE:19861019T020000
+TZNAME:CST
+TZOFFSETFROM:+0930
+TZOFFSETTO:+1030
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170325T020000
+RDATE:19170325T020000
+RDATE:19420329T020000
+RDATE:19720227T030000
+RDATE:19910303T030000
+RDATE:19920322T030000
+RDATE:19930307T030000
+RDATE:19940320T030000
+RDATE:20060402T030000
+RDATE:20070325T030000
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430328T020000
+RRULE:FREQ=YEARLY;UNTIL=19440325T153000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19710101T000000
+RDATE:19710101T000000
+TZNAME:CST
+TZOFFSETFROM:+0930
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19711031T020000
+RRULE:FREQ=YEARLY;UNTIL=19851026T163000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0930
+TZOFFSETTO:+1030
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19730304T030000
+RRULE:FREQ=YEARLY;UNTIL=19850302T163000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19860316T030000
+RRULE:FREQ=YEARLY;UNTIL=19900317T163000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19871025T020000
+RRULE:FREQ=YEARLY;UNTIL=20071027T163000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0930
+TZOFFSETTO:+1030
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19950326T030000
+RRULE:FREQ=YEARLY;UNTIL=20050326T163000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20080406T030000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:CST
+TZOFFSETFROM:+1030
+TZOFFSETTO:+0930
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20081005T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0930
+TZOFFSETTO:+1030
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central America Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central America Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central America Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central America Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,36 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central America Standard Time
+X-LIC-LOCATION:Central America Standard Time
+BEGIN:STANDARD
+DTSTART:19181005T000000
+RDATE:19181005T000000
+TZNAME:CST
+TZOFFSETFROM:-060204
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19731125T000000
+RDATE:19731125T000000
+RDATE:19830521T000000
+RDATE:19910323T000000
+RDATE:20060430T000000
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19740224T000000
+RDATE:19740224T000000
+RDATE:19830922T000000
+RDATE:19910907T000000
+RDATE:20061001T000000
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Asia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central Asia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Asia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Asia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,101 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central Asia Standard Time
+X-LIC-LOCATION:Central Asia Standard Time
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:ALMT
+TZOFFSETFROM:+050748
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+TZNAME:ALMST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T180000Z;BYMONTH=4
+TZNAME:ALMST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T170000Z;BYMONTH=10
+TZNAME:ALMT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T200000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:ALMT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T200000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:ALMST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910101T000000
+RDATE:19910101T000000
+RDATE:20050315T000000
+TZNAME:ALMT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19920101T000000
+RDATE:19920101T000000
+TZNAME:ALMST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:ALMST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:ALMT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20040327T200000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:ALMST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T200000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:ALMT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20041030T200000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:ALMT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Brazilian Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central Brazilian Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Brazilian Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Brazilian Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,183 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central Brazilian Standard Time
+X-LIC-LOCATION:Central Brazilian Standard Time
+BEGIN:STANDARD
+DTSTART:19140101T000000
+RDATE:19140101T000000
+TZNAME:AMST
+TZOFFSETFROM:-034420
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19311003T110000
+RDATE:19311003T110000
+RDATE:19321003T000000
+RDATE:19631209T000000
+RDATE:19650131T000000
+RDATE:19651201T000000
+RDATE:19851102T000000
+RDATE:19861025T000000
+RDATE:19871025T000000
+RDATE:19881016T000000
+RDATE:19891015T000000
+RDATE:19901021T000000
+RDATE:19911020T000000
+RDATE:19921025T000000
+RDATE:19961006T000000
+RDATE:19971006T000000
+RDATE:19981011T000000
+RDATE:19991003T000000
+RDATE:20021103T000000
+RDATE:20041102T000000
+RDATE:20051016T000000
+RDATE:20061105T000000
+RDATE:20071014T000000
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19320401T000000
+RRULE:FREQ=YEARLY;UNTIL=19330401T030000Z;BYMONTH=4
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19491201T000000
+RRULE:FREQ=YEARLY;UNTIL=19521201T040000Z;BYMONTH=12
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19500416T010000
+RDATE:19500416T010000
+RDATE:19530301T000000
+RDATE:19640301T000000
+RDATE:19650331T000000
+RDATE:19860315T000000
+RDATE:19870214T000000
+RDATE:19880207T000000
+RDATE:19890129T000000
+RDATE:19900211T000000
+RDATE:19910217T000000
+RDATE:19920209T000000
+RDATE:19930131T000000
+RDATE:19960211T000000
+RDATE:19970216T000000
+RDATE:19980301T000000
+RDATE:19990221T000000
+RDATE:20000227T000000
+RDATE:20070225T000000
+RDATE:20120226T000000
+RDATE:20150222T000000
+RDATE:20230226T000000
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19510401T000000
+RRULE:FREQ=YEARLY;UNTIL=19520401T030000Z;BYMONTH=4
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19660301T000000
+RRULE:FREQ=YEARLY;UNTIL=19680301T030000Z;BYMONTH=3
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19661101T000000
+RRULE:FREQ=YEARLY;UNTIL=19671101T040000Z;BYMONTH=11
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19931017T000000
+RRULE:FREQ=YEARLY;UNTIL=19951015T040000Z;BYDAY=-3SU;BYMONTH=10
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19940220T000000
+RRULE:FREQ=YEARLY;UNTIL=19950219T030000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20001008T000000
+RRULE:FREQ=YEARLY;UNTIL=20011014T040000Z;BYDAY=2SU;BYMONTH=10
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20010218T000000
+RRULE:FREQ=YEARLY;UNTIL=20030216T030000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20030924T000000
+RDATE:20030924T000000
+TZNAME:AMT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20041001T000000
+RDATE:20041001T000000
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20050220T000000
+RRULE:FREQ=YEARLY;UNTIL=20060219T030000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20080217T000000
+RRULE:FREQ=YEARLY;UNTIL=20110220T030000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20081019T000000
+RRULE:FREQ=YEARLY;BYDAY=3SU;BYMONTH=10
+TZNAME:AMST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20130217T000000
+RRULE:FREQ=YEARLY;UNTIL=20140216T030000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20160221T000000
+RRULE:FREQ=YEARLY;UNTIL=20220220T030000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:AMT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Europe Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central Europe Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Europe Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Europe Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,118 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central Europe Standard Time
+X-LIC-LOCATION:Central Europe Standard Time
+BEGIN:STANDARD
+DTSTART:18901001T000000
+RDATE:18901001T000000
+TZNAME:CEST
+TZOFFSETFROM:+011620
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160430T230000
+RDATE:19160430T230000
+RDATE:19170416T020000
+RDATE:19180401T030000
+RDATE:19190415T030000
+RDATE:19200405T030000
+RDATE:19430329T020000
+RDATE:19440403T020000
+RDATE:19450501T230000
+RDATE:19460331T020000
+RDATE:19500417T020000
+RDATE:19560603T000000
+RDATE:19570602T010000
+RDATE:19800406T010000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T010000
+RDATE:19161001T010000
+RDATE:19170917T030000
+RDATE:19180929T030000
+RDATE:19190915T030000
+RDATE:19200930T030000
+RDATE:19421102T030000
+RDATE:19431004T030000
+RDATE:19441002T030000
+RDATE:19451103T000000
+RDATE:19501023T030000
+RDATE:19560930T000000
+RDATE:19570929T030000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19180101T000000
+RDATE:19180101T000000
+RDATE:19450101T000000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19410406T020000
+RDATE:19410406T020000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19461006T030000
+RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19470406T020000
+RRULE:FREQ=YEARLY;UNTIL=19490410T010000Z;BYDAY=SU;BYMONTHDAY=4,5,6,7,8,9,1
+ 0;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19540523T000000
+RRULE:FREQ=YEARLY;UNTIL=19550522T230000Z;BYMONTH=5
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19541003T000000
+RRULE:FREQ=YEARLY;UNTIL=19551002T220000Z;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19800928T030000
+RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central European Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central European Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central European Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central European Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,190 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central European Standard Time
+X-LIC-LOCATION:Central European Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:WMT
+TZOFFSETFROM:+0124
+TZOFFSETTO:+0124
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19150805T000000
+RDATE:19150805T000000
+TZNAME:CEST
+TZOFFSETFROM:+0124
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160430T230000
+RDATE:19160430T230000
+RDATE:19430329T020000
+RDATE:19440403T020000
+RDATE:19450429T000000
+RDATE:19460414T000000
+RDATE:19470504T020000
+RDATE:19480418T020000
+RDATE:19490410T020000
+RDATE:19570602T010000
+RDATE:19580330T010000
+RDATE:19590531T010000
+RDATE:19600403T010000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T010000
+RDATE:19161001T010000
+RDATE:19170917T030000
+RDATE:19421102T030000
+RDATE:19431004T030000
+RDATE:19441004T020000
+RDATE:19451101T000000
+RDATE:19461007T030000
+RDATE:19770925T020000
+RDATE:19781001T020000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170416T020000
+RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYDAY=3MO;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19180916T030000
+RDATE:19180916T030000
+TZNAME:EET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19190415T020000
+RDATE:19190415T020000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19190916T030000
+RRULE:FREQ=YEARLY;UNTIL=19190916T000000Z;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19220601T000000
+RDATE:19220601T000000
+TZNAME:CEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19400623T020000
+RDATE:19400623T020000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19441001T000000
+RDATE:19441001T000000
+TZNAME:CEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19471005T030000
+RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19570929T020000
+RRULE:FREQ=YEARLY;UNTIL=19580928T000000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19591004T020000
+RRULE:FREQ=YEARLY;UNTIL=19611001T000000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19610528T010000
+RRULE:FREQ=YEARLY;UNTIL=19640531T000000Z;BYDAY=-1SU;BYMONTH=5
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19620930T020000
+RRULE:FREQ=YEARLY;UNTIL=19640927T000000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19770101T000000
+RDATE:19770101T000000
+RDATE:19880101T000000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19770403T010000
+RRULE:FREQ=YEARLY;UNTIL=19800406T000000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19790930T020000
+RRULE:FREQ=YEARLY;UNTIL=19870927T000000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T010000
+RRULE:FREQ=YEARLY;UNTIL=19870329T000000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19880327T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19880925T030000
+RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Pacific Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central Pacific Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Pacific Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Pacific Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central Pacific Standard Time
+X-LIC-LOCATION:Central Pacific Standard Time
+BEGIN:STANDARD
+DTSTART:19121001T000000
+RDATE:19121001T000000
+TZNAME:SBT
+TZOFFSETFROM:+103948
+TZOFFSETTO:+1100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time (Mexico).ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central Standard Time (Mexico).ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time (Mexico).ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time (Mexico).ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,96 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central Standard Time (Mexico)
+X-LIC-LOCATION:Central Standard Time (Mexico)
+BEGIN:STANDARD
+DTSTART:19220101T002324
+RDATE:19220101T002324
+TZNAME:MST
+TZOFFSETFROM:-063636
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19270610T230000
+RDATE:19270610T230000
+RDATE:19310501T230000
+RDATE:19320401T000000
+TZNAME:CST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19301115T000000
+RDATE:19301115T000000
+RDATE:19311001T000000
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19390205T000000
+RDATE:19390205T000000
+RDATE:19401209T000000
+RDATE:19500212T000000
+RDATE:20010506T020000
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19390625T000000
+RDATE:19390625T000000
+RDATE:19410401T000000
+RDATE:19440501T000000
+RDATE:19500730T000000
+RDATE:20010930T020000
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19431216T000000
+RDATE:19431216T000000
+TZNAME:CWT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19960407T020000
+RRULE:FREQ=YEARLY;UNTIL=20000402T080000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;UNTIL=20001029T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20020220T000000
+RDATE:20020220T000000
+TZNAME:CST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20020407T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20021027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Central Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Central Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,177 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Central Standard Time
+X-LIC-LOCATION:Central Standard Time
+BEGIN:STANDARD
+DTSTART:18831118T120924
+RDATE:18831118T120924
+TZNAME:CST
+TZOFFSETFROM:-055036
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T080000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+RDATE:19420101T000000
+RDATE:19460101T000000
+RDATE:19670101T000000
+TZNAME:CST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200613T020000
+RDATE:19200613T020000
+RDATE:19210327T020000
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201031T020000
+RRULE:FREQ=YEARLY;UNTIL=19211030T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19220430T020000
+RRULE:FREQ=YEARLY;UNTIL=19350428T080000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19220924T020000
+RRULE:FREQ=YEARLY;UNTIL=19350929T070000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19360301T020000
+RDATE:19360301T020000
+TZNAME:EST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19361115T020000
+RDATE:19361115T020000
+RDATE:19450930T020000
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19370425T020000
+RRULE:FREQ=YEARLY;UNTIL=19410427T080000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19370926T020000
+RRULE:FREQ=YEARLY;UNTIL=19410928T070000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:CWT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T180000
+RDATE:19450814T180000
+TZNAME:CPT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19460428T020000
+RRULE:FREQ=YEARLY;UNTIL=19660424T080000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460929T020000
+RRULE:FREQ=YEARLY;UNTIL=19540926T070000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19551030T020000
+RRULE:FREQ=YEARLY;UNTIL=19661030T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T080000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19671029T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T080000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T080000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/China Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/China Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/China Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/China Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,54 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:China Standard Time
+X-LIC-LOCATION:China Standard Time
+BEGIN:STANDARD
+DTSTART:19280101T000000
+RDATE:19280101T000000
+TZNAME:CST
+TZOFFSETFROM:+080557
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19400603T000000
+RDATE:19400603T000000
+RDATE:19410316T000000
+RDATE:19860504T000000
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19401001T000000
+RRULE:FREQ=YEARLY;UNTIL=19410930T150000Z;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19490101T000000
+RDATE:19490101T000000
+TZNAME:CST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19860914T000000
+RRULE:FREQ=YEARLY;UNTIL=19910914T150000Z;BYDAY=SU;BYMONTHDAY=11,12,13,14,1
+ 5,16,17;BYMONTH=9
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19870412T000000
+RRULE:FREQ=YEARLY;UNTIL=19910413T160000Z;BYDAY=-3SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Dateline Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Dateline Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Dateline Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Dateline Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Dateline Standard Time
+X-LIC-LOCATION:Dateline Standard Time
+BEGIN:STANDARD
+DTSTART:18000101T000000
+RDATE:18000101T000000
+TZNAME:GMT+12
+TZOFFSETFROM:-1200
+TZOFFSETTO:-1200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Africa Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/E. Africa Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Africa Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Africa Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:E. Africa Standard Time
+X-LIC-LOCATION:E. Africa Standard Time
+BEGIN:STANDARD
+DTSTART:19280701T000000
+RDATE:19280701T000000
+TZNAME:EAT
+TZOFFSETFROM:+022716
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300101T000000
+RDATE:19300101T000000
+TZNAME:BEAT
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0230
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19400101T000000
+RDATE:19400101T000000
+TZNAME:BEAUT
+TZOFFSETFROM:+0230
+TZOFFSETTO:+0245
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19600101T000000
+RDATE:19600101T000000
+TZNAME:EAT
+TZOFFSETFROM:+0245
+TZOFFSETTO:+0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Australia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/E. Australia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Australia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. Australia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,64 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:E. Australia Standard Time
+X-LIC-LOCATION:E. Australia Standard Time
+BEGIN:STANDARD
+DTSTART:18950101T000000
+RDATE:18950101T000000
+TZNAME:EST
+TZOFFSETFROM:+101208
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170101T000100
+RDATE:19170101T000100
+RDATE:19420101T020000
+RDATE:19420927T020000
+RDATE:19431003T020000
+RDATE:19711031T020000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170325T020000
+RDATE:19170325T020000
+RDATE:19420329T020000
+RDATE:19720227T030000
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430328T020000
+RRULE:FREQ=YEARLY;UNTIL=19440325T150000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19710101T000000
+RDATE:19710101T000000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19891029T020000
+RRULE:FREQ=YEARLY;UNTIL=19911026T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19900304T030000
+RRULE:FREQ=YEARLY;UNTIL=19920229T160000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. South America Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/E. South America Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. South America Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/E. South America Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,176 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:E. South America Standard Time
+X-LIC-LOCATION:E. South America Standard Time
+BEGIN:STANDARD
+DTSTART:19140101T000000
+RDATE:19140101T000000
+TZNAME:BRST
+TZOFFSETFROM:-030628
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19311003T110000
+RDATE:19311003T110000
+RDATE:19321003T000000
+RDATE:19650131T000000
+RDATE:19651201T000000
+RDATE:19851102T000000
+RDATE:19861025T000000
+RDATE:19871025T000000
+RDATE:19881016T000000
+RDATE:19891015T000000
+RDATE:19901021T000000
+RDATE:19911020T000000
+RDATE:19921025T000000
+RDATE:19961006T000000
+RDATE:19971006T000000
+RDATE:19981011T000000
+RDATE:19991003T000000
+RDATE:20021103T000000
+RDATE:20031019T000000
+RDATE:20041102T000000
+RDATE:20051016T000000
+RDATE:20061105T000000
+RDATE:20071014T000000
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19320401T000000
+RRULE:FREQ=YEARLY;UNTIL=19330401T020000Z;BYMONTH=4
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19491201T000000
+RRULE:FREQ=YEARLY;UNTIL=19521201T030000Z;BYMONTH=12
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19500416T010000
+RDATE:19500416T010000
+RDATE:19530301T000000
+RDATE:19640301T000000
+RDATE:19650331T000000
+RDATE:19860315T000000
+RDATE:19870214T000000
+RDATE:19880207T000000
+RDATE:19890129T000000
+RDATE:19900211T000000
+RDATE:19910217T000000
+RDATE:19920209T000000
+RDATE:19930131T000000
+RDATE:19960211T000000
+RDATE:19970216T000000
+RDATE:19980301T000000
+RDATE:19990221T000000
+RDATE:20000227T000000
+RDATE:20070225T000000
+RDATE:20120226T000000
+RDATE:20150222T000000
+RDATE:20230226T000000
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19510401T000000
+RRULE:FREQ=YEARLY;UNTIL=19520401T020000Z;BYMONTH=4
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19631023T000000
+RDATE:19631023T000000
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19640101T000000
+RDATE:19640101T000000
+TZNAME:BRST
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19660301T000000
+RRULE:FREQ=YEARLY;UNTIL=19680301T020000Z;BYMONTH=3
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19661101T000000
+RRULE:FREQ=YEARLY;UNTIL=19671101T030000Z;BYMONTH=11
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19931017T000000
+RRULE:FREQ=YEARLY;UNTIL=19951015T030000Z;BYDAY=-3SU;BYMONTH=10
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19940220T000000
+RRULE:FREQ=YEARLY;UNTIL=19950219T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20001008T000000
+RRULE:FREQ=YEARLY;UNTIL=20011014T030000Z;BYDAY=2SU;BYMONTH=10
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20010218T000000
+RRULE:FREQ=YEARLY;UNTIL=20060219T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20080217T000000
+RRULE:FREQ=YEARLY;UNTIL=20110220T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20081019T000000
+RRULE:FREQ=YEARLY;BYDAY=3SU;BYMONTH=10
+TZNAME:BRST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20130217T000000
+RRULE:FREQ=YEARLY;UNTIL=20140216T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20160221T000000
+RRULE:FREQ=YEARLY;UNTIL=20220220T020000Z;BYDAY=3SU;BYMONTH=2
+TZNAME:BRT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Eastern Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Eastern Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Eastern Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Eastern Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,148 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Eastern Standard Time
+X-LIC-LOCATION:Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:18831118T120358
+RDATE:18831118T120358
+TZNAME:EST
+TZOFFSETFROM:-045602
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T070000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+RDATE:19420101T000000
+RDATE:19460101T000000
+RDATE:19670101T000000
+TZNAME:EST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200328T020000
+RDATE:19200328T020000
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201031T020000
+RDATE:19201031T020000
+RDATE:19450930T020000
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19210424T020000
+RRULE:FREQ=YEARLY;UNTIL=19410427T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19210925T020000
+RRULE:FREQ=YEARLY;UNTIL=19410928T060000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:EWT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T190000
+RDATE:19450814T190000
+TZNAME:EPT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19460428T020000
+RRULE:FREQ=YEARLY;UNTIL=19660424T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460929T020000
+RRULE:FREQ=YEARLY;UNTIL=19540926T060000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19551030T020000
+RRULE:FREQ=YEARLY;UNTIL=19661030T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19671029T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T070000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Egypt Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Egypt Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Egypt Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Egypt Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,148 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Egypt Standard Time
+X-LIC-LOCATION:Egypt Standard Time
+BEGIN:STANDARD
+DTSTART:19001001T000000
+RDATE:19001001T000000
+TZNAME:EEST
+TZOFFSETFROM:+020509
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19400715T000000
+RDATE:19400715T000000
+RDATE:19410415T000000
+RDATE:19450416T000000
+RDATE:19570510T000000
+RDATE:19580501T000000
+RDATE:19820725T010000
+RDATE:19830712T010000
+RDATE:19890506T010000
+RDATE:20100910T000000
+RDATE:20140515T235959
+RDATE:20140729T000000
+RDATE:20150718T000000
+RDATE:20160707T000000
+RDATE:20170626T000000
+RDATE:20180615T000000
+RDATE:20190605T000000
+RDATE:20200524T000000
+RDATE:20210513T000000
+RDATE:20220503T000000
+RDATE:20230428T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19401001T000000
+RDATE:19401001T000000
+RDATE:19410916T000000
+RDATE:19421027T000000
+RDATE:20060922T000000
+RDATE:20070907T000000
+RDATE:20080829T000000
+RDATE:20090821T000000
+RDATE:20100811T000000
+RDATE:20101001T000000
+RDATE:20140629T010000
+RDATE:20150618T010000
+RDATE:20160607T010000
+RDATE:20170527T010000
+RDATE:20180516T010000
+RDATE:20190506T010000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420401T000000
+RRULE:FREQ=YEARLY;UNTIL=19440331T220000Z;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19431101T000000
+RRULE:FREQ=YEARLY;UNTIL=19451031T210000Z;BYMONTH=11
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19571001T000000
+RRULE:FREQ=YEARLY;UNTIL=19580930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19590501T010000
+RRULE:FREQ=YEARLY;UNTIL=19810430T230000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19590930T030000
+RRULE:FREQ=YEARLY;UNTIL=19650930T000000Z;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19661001T030000
+RRULE:FREQ=YEARLY;UNTIL=19941001T000000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19840501T010000
+RRULE:FREQ=YEARLY;UNTIL=19880430T230000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19900501T010000
+RRULE:FREQ=YEARLY;UNTIL=19940430T230000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19950428T000000
+RRULE:FREQ=YEARLY;UNTIL=20100429T220000Z;BYDAY=-1FR;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19950929T000000
+RRULE:FREQ=YEARLY;UNTIL=20050929T210000Z;BYDAY=FR;BYYEARDAY=-92,-93,-94,-9
+ 5,-96,-97,-98
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20140926T000000
+RRULE:FREQ=YEARLY;BYDAY=FR;BYYEARDAY=-92,-93,-94,-95,-96,-97,-98
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20150424T000000
+RRULE:FREQ=YEARLY;UNTIL=20190425T220000Z;BYDAY=-1FR;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ekaterinburg Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Ekaterinburg Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ekaterinburg Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ekaterinburg Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,114 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Ekaterinburg Standard Time
+X-LIC-LOCATION:Ekaterinburg Standard Time
+BEGIN:STANDARD
+DTSTART:19190715T040000
+RDATE:19190715T040000
+TZNAME:SVET
+TZOFFSETFROM:+040224
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+TZNAME:SVEST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T190000Z;BYMONTH=4
+TZNAME:SVEST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T180000Z;BYMONTH=10
+TZNAME:SVET
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T210000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:SVET
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T210000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:SVEST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:SVEST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:SVET
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19920119T020000
+RDATE:19920119T020000
+TZNAME:YEKST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:YEKST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:YEKT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T210000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:YEKST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T210000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:YEKT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T210000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:YEKT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:YEKT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/FLE Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/FLE Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/FLE Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/FLE Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,143 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:FLE Standard Time
+X-LIC-LOCATION:FLE Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:KMT
+TZOFFSETFROM:+020204
+TZOFFSETTO:+020204
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:EET
+TZOFFSETFROM:+020204
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+TZNAME:MSK
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19410920T000000
+RDATE:19410920T000000
+TZNAME:CEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19421102T030000
+RDATE:19421102T030000
+RDATE:19431004T030000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19430329T020000
+RDATE:19430329T020000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19431106T000000
+RDATE:19431106T000000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T210000Z;BYMONTH=4
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T200000Z;BYMONTH=10
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19890923T230000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T230000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19900701T020000
+RDATE:19900701T020000
+TZNAME:EEST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:EEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920329T000000
+RRULE:FREQ=YEARLY;UNTIL=19940326T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920927T000000
+RRULE:FREQ=YEARLY;UNTIL=19940924T210000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19950101T000000
+RDATE:19950101T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19950326T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19950924T040000
+RDATE:19950924T040000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T040000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Fiji Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Fiji Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Fiji Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Fiji Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,66 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Fiji Standard Time
+X-LIC-LOCATION:Fiji Standard Time
+BEGIN:STANDARD
+DTSTART:19151026T000000
+RDATE:19151026T000000
+TZNAME:FJST
+TZOFFSETFROM:+115544
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19981101T020000
+RRULE:FREQ=YEARLY;UNTIL=19991106T140000Z;BYDAY=1SU;BYMONTH=11
+TZNAME:FJST
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19990228T030000
+RRULE:FREQ=YEARLY;UNTIL=20000226T140000Z;BYDAY=-1SU;BYMONTH=2
+TZNAME:FJT
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20091129T020000
+RDATE:20091129T020000
+TZNAME:FJST
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20100328T030000
+RDATE:20100328T030000
+RDATE:20110306T030000
+TZNAME:FJT
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20101024T020000
+RRULE:FREQ=YEARLY;BYDAY=SU;BYMONTHDAY=21,22,23,24,25,26,27;BYMONTH=10
+TZNAME:FJST
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20120122T030000
+RRULE:FREQ=YEARLY;UNTIL=20130119T140000Z;BYDAY=-2SU;BYMONTH=1
+TZNAME:FJT
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20140119T020000
+RRULE:FREQ=YEARLY;BYDAY=-2SU;BYMONTH=1
+TZNAME:FJT
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GMT Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/GMT Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GMT Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GMT Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,291 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:GMT Standard Time
+X-LIC-LOCATION:GMT Standard Time
+BEGIN:STANDARD
+DTSTART:18471201T000000
+RDATE:18471201T000000
+TZNAME:S
+TZOFFSETFROM:-000115
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160521T020000
+RDATE:19160521T020000
+RDATE:19170408T020000
+RDATE:19180324T020000
+RDATE:19190330T020000
+RDATE:19200328T020000
+RDATE:19210403T020000
+RDATE:19220326T020000
+RDATE:19230422T020000
+RDATE:19240413T020000
+RDATE:19270410T020000
+RDATE:19300413T020000
+RDATE:19330409T020000
+RDATE:19340422T020000
+RDATE:19350414T020000
+RDATE:19380410T020000
+RDATE:19390416T020000
+RDATE:19400225T020000
+RDATE:19460414T020000
+RDATE:19470316T020000
+RDATE:19480314T020000
+RDATE:19490403T020000
+RDATE:19530419T020000
+RDATE:19540411T020000
+RDATE:19570414T020000
+RDATE:19600410T020000
+RDATE:19680218T020000
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T030000
+RDATE:19161001T030000
+RDATE:19170917T030000
+RDATE:19180930T030000
+RDATE:19190929T030000
+RDATE:19201025T030000
+RDATE:19211003T030000
+RDATE:19221008T030000
+RDATE:19391119T030000
+RDATE:19471102T030000
+RDATE:19481031T030000
+RDATE:19491030T030000
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19230916T030000
+RRULE:FREQ=YEARLY;UNTIL=19240921T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=9
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19250419T020000
+RRULE:FREQ=YEARLY;UNTIL=19260418T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19251004T030000
+RRULE:FREQ=YEARLY;UNTIL=19381002T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19280422T020000
+RRULE:FREQ=YEARLY;UNTIL=19290421T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19310419T020000
+RRULE:FREQ=YEARLY;UNTIL=19320417T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19360419T020000
+RRULE:FREQ=YEARLY;UNTIL=19370418T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19410504T020000
+RDATE:19410504T020000
+RDATE:19450402T020000
+RDATE:19470413T020000
+TZNAME:BDST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19410810T030000
+RRULE:FREQ=YEARLY;UNTIL=19430815T010000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=8
+TZNAME:BST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19420405T020000
+RRULE:FREQ=YEARLY;UNTIL=19440402T010000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=4
+TZNAME:BDST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19440917T030000
+RDATE:19440917T030000
+RDATE:19450715T030000
+RDATE:19470810T030000
+TZNAME:BST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19451007T030000
+RRULE:FREQ=YEARLY;UNTIL=19461006T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19500416T020000
+RRULE:FREQ=YEARLY;UNTIL=19520420T020000Z;BYDAY=SU;BYMONTHDAY=14,15,16,17,1
+ 8,19,20;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19501022T030000
+RRULE:FREQ=YEARLY;UNTIL=19521026T020000Z;BYDAY=SU;BYMONTHDAY=21,22,23,24,2
+ 5,26,27;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19531004T030000
+RRULE:FREQ=YEARLY;UNTIL=19601002T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19550417T020000
+RRULE:FREQ=YEARLY;UNTIL=19560422T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19580420T020000
+RRULE:FREQ=YEARLY;UNTIL=19590419T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19610326T020000
+RRULE:FREQ=YEARLY;UNTIL=19630331T020000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19611029T030000
+RRULE:FREQ=YEARLY;UNTIL=19671029T020000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19640322T020000
+RRULE:FREQ=YEARLY;UNTIL=19670319T020000Z;BYDAY=SU;BYMONTHDAY=19,20,21,22,2
+ 3,24,25;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19681027T000000
+RDATE:19681027T000000
+TZNAME:BST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19711031T030000
+RDATE:19711031T030000
+TZNAME:S
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19720319T020000
+RRULE:FREQ=YEARLY;UNTIL=19800316T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19721029T030000
+RRULE:FREQ=YEARLY;UNTIL=19801026T020000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T010000
+RRULE:FREQ=YEARLY;UNTIL=19950326T010000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811025T020000
+RRULE:FREQ=YEARLY;UNTIL=19891029T010000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19901028T020000
+RRULE:FREQ=YEARLY;UNTIL=19951022T010000Z;BYDAY=4SU;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19960101T000000
+RDATE:19960101T000000
+TZNAME:GMT/BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19960331T010000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:GMT/BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:GMT/BST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GTB Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/GTB Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GTB Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/GTB Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,121 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:GTB Standard Time
+X-LIC-LOCATION:GTB Standard Time
+BEGIN:STANDARD
+DTSTART:18911001T000000
+RDATE:18911001T000000
+TZNAME:BMT
+TZOFFSETFROM:+014424
+TZOFFSETTO:+014424
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19310724T000000
+RDATE:19310724T000000
+TZNAME:EEST
+TZOFFSETFROM:+014424
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19320521T000000
+RDATE:19320521T000000
+RDATE:19790527T000000
+RDATE:19800405T230000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19321002T010000
+RRULE:FREQ=YEARLY;UNTIL=19390930T220000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19330402T000000
+RRULE:FREQ=YEARLY;UNTIL=19390401T220000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19790930T000000
+RDATE:19790930T000000
+RDATE:19800928T010000
+RDATE:19961027T000000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T020000
+RRULE:FREQ=YEARLY;UNTIL=19900325T000000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19810927T030000
+RRULE:FREQ=YEARLY;UNTIL=19900930T000000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910101T000000
+RDATE:19910101T000000
+RDATE:19940101T000000
+RDATE:19970101T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19910331T000000
+RRULE:FREQ=YEARLY;UNTIL=19930327T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910929T010000
+RRULE:FREQ=YEARLY;UNTIL=19930925T220000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19940327T000000
+RRULE:FREQ=YEARLY;UNTIL=19960330T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19940925T000000
+RRULE:FREQ=YEARLY;UNTIL=19950923T210000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19970330T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19971026T040000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Georgian Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Georgian Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Georgian Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Georgian Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,152 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Georgian Standard Time
+X-LIC-LOCATION:Georgian Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:TBMT
+TZOFFSETFROM:+025916
+TZOFFSETTO:+025916
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:TBIT
+TZOFFSETFROM:+025916
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19570301T000000
+RDATE:19570301T000000
+TZNAME:TBIST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T200000Z;BYMONTH=4
+TZNAME:TBIST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T190000Z;BYMONTH=10
+TZNAME:TBIT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T220000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:TBIT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T220000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:TBIST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:TBIST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910409T000000
+RDATE:19910409T000000
+RDATE:19940925T000000
+TZNAME:GEST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+RDATE:20041031T030000
+TZNAME:GET
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19920101T000000
+RDATE:19920101T000000
+TZNAME:GEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920329T000000
+RRULE:FREQ=YEARLY;UNTIL=19940326T210000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:GEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920927T000000
+RRULE:FREQ=YEARLY;UNTIL=19930925T200000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:GET
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19950326T000000
+RRULE:FREQ=YEARLY;UNTIL=19960330T200000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:GEST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19950924T000000
+RDATE:19950924T000000
+TZNAME:GET
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T000000
+RDATE:19961027T000000
+RDATE:19970330T000000
+TZNAME:GEST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19971026T000000
+RRULE:FREQ=YEARLY;UNTIL=20031025T190000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:GET
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19980329T000000
+RRULE:FREQ=YEARLY;UNTIL=20040327T200000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:GEST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20040627T000000
+RDATE:20040627T000000
+TZNAME:GEST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20050327T020000
+RDATE:20050327T020000
+TZNAME:GET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenland Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Greenland Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenland Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenland Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,45 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Greenland Standard Time
+X-LIC-LOCATION:Greenland Standard Time
+BEGIN:STANDARD
+DTSTART:19160728T000000
+RDATE:19160728T000000
+TZNAME:WGT
+TZOFFSETFROM:-032656
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19800406T020000
+RDATE:19800406T020000
+TZNAME:WGST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19800927T230000
+RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=SA;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=9
+TZNAME:WGT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810328T220000
+RRULE:FREQ=YEARLY;BYDAY=SA;BYMONTHDAY=24,25,26,27,28,29,30;BYMONTH=3
+TZNAME:WGST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961026T230000
+RRULE:FREQ=YEARLY;BYDAY=SA;BYMONTHDAY=24,25,26,27,28,29,30;BYMONTH=10
+TZNAME:WGT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenwich Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Greenwich Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenwich Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Greenwich Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,89 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Greenwich Standard Time
+X-LIC-LOCATION:Greenwich Standard Time
+BEGIN:STANDARD
+DTSTART:18370101T000000
+RDATE:18370101T000000
+TZNAME:RMT
+TZOFFSETFROM:-012724
+TZOFFSETTO:-012748
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19080101T000000
+RDATE:19080101T000000
+TZNAME:ISST
+TZOFFSETFROM:-012748
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170219T230000
+RRULE:FREQ=YEARLY;UNTIL=19180220T000000Z;BYMONTH=2
+TZNAME:ISST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19171021T010000
+RDATE:19171021T010000
+RDATE:19181116T010000
+RDATE:19391129T020000
+RDATE:19401103T020000
+RDATE:19411102T020000
+RDATE:19421025T020000
+RDATE:19491030T020000
+RDATE:19671029T020000
+TZNAME:IST
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19390429T230000
+RDATE:19390429T230000
+RDATE:19400225T020000
+RDATE:19410302T010000
+RDATE:19420308T010000
+TZNAME:ISST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19430307T010000
+RRULE:FREQ=YEARLY;UNTIL=19460303T020000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:ISST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19431024T020000
+RRULE:FREQ=YEARLY;UNTIL=19481024T020000Z;BYDAY=4SU;BYMONTH=10
+TZNAME:IST
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19470406T010000
+RRULE:FREQ=YEARLY;UNTIL=19670402T020000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:ISST
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19501022T020000
+RRULE:FREQ=YEARLY;UNTIL=19661023T020000Z;BYDAY=4SU;BYMONTH=10
+TZNAME:IST
+TZOFFSETFROM:+0000
+TZOFFSETTO:-0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19680407T010000
+RDATE:19680407T010000
+TZNAME:GMT
+TZOFFSETFROM:-0100
+TZOFFSETTO:+0000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Hawaiian Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Hawaiian Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Hawaiian Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Hawaiian Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,39 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Hawaiian Standard Time
+X-LIC-LOCATION:Hawaiian Standard Time
+BEGIN:STANDARD
+DTSTART:18960113T120000
+RDATE:18960113T120000
+TZNAME:HST
+TZOFFSETFROM:-103126
+TZOFFSETTO:-1030
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19330430T020000
+RDATE:19330430T020000
+RDATE:19420209T020000
+TZNAME:HDT
+TZOFFSETFROM:-1030
+TZOFFSETTO:-0930
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19330521T120000
+RDATE:19330521T120000
+RDATE:19450930T020000
+TZNAME:HST
+TZOFFSETFROM:-0930
+TZOFFSETTO:-1030
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19470608T020000
+RDATE:19470608T020000
+TZNAME:HST
+TZOFFSETFROM:-1030
+TZOFFSETTO:-1000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/India Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/India Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/India Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/India Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,38 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:India Standard Time
+X-LIC-LOCATION:India Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:HMT
+TZOFFSETFROM:+055328
+TZOFFSETTO:+055320
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19411001T000000
+RDATE:19411001T000000
+TZNAME:BURT
+TZOFFSETFROM:+055320
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420515T000000
+RDATE:19420515T000000
+RDATE:19451015T000000
+TZNAME:IST
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420901T000000
+RDATE:19420901T000000
+TZNAME:IST
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0630
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Iran Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Iran Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Iran Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Iran Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,187 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Iran Standard Time
+X-LIC-LOCATION:Iran Standard Time
+BEGIN:STANDARD
+DTSTART:19160101T000000
+RDATE:19160101T000000
+TZNAME:TMT
+TZOFFSETFROM:+032544
+TZOFFSETTO:+032544
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+TZNAME:IRST
+TZOFFSETFROM:+032544
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19771101T000000
+RDATE:19771101T000000
+TZNAME:IRST
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19780321T000000
+RDATE:19780321T000000
+TZNAME:IRDT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19781021T000000
+RDATE:19781021T000000
+TZNAME:IRST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19790101T000000
+RDATE:19790101T000000
+TZNAME:IRST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19790321T000000
+RRULE:FREQ=YEARLY;UNTIL=19800320T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19790919T000000
+RDATE:19790919T000000
+RDATE:19800923T000000
+RDATE:19960921T000000
+RDATE:20000921T000000
+RDATE:20040921T000000
+RDATE:20050922T000000
+RDATE:20080921T000000
+RDATE:20120921T000000
+RDATE:20160921T000000
+RDATE:20200921T000000
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19910503T000000
+RDATE:19910503T000000
+RDATE:19960321T000000
+RDATE:20000321T000000
+RDATE:20040321T000000
+RDATE:20050322T000000
+RDATE:20080321T000000
+RDATE:20120321T000000
+RDATE:20160321T000000
+RDATE:20200321T000000
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910922T000000
+RRULE:FREQ=YEARLY;UNTIL=19950921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920322T000000
+RRULE:FREQ=YEARLY;UNTIL=19950321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19970322T000000
+RRULE:FREQ=YEARLY;UNTIL=19990321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19970922T000000
+RRULE:FREQ=YEARLY;UNTIL=19990921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20010322T000000
+RRULE:FREQ=YEARLY;UNTIL=20030321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20010922T000000
+RRULE:FREQ=YEARLY;UNTIL=20030921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20090322T000000
+RRULE:FREQ=YEARLY;UNTIL=20110321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20090922T000000
+RRULE:FREQ=YEARLY;UNTIL=20110921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20130322T000000
+RRULE:FREQ=YEARLY;UNTIL=20150321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20130922T000000
+RRULE:FREQ=YEARLY;UNTIL=20150921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20170322T000000
+RRULE:FREQ=YEARLY;UNTIL=20190321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20170922T000000
+RRULE:FREQ=YEARLY;UNTIL=20190921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20210322T000000
+RRULE:FREQ=YEARLY;UNTIL=20230321T203000Z;BYMONTH=3
+TZNAME:IRDT
+TZOFFSETFROM:+0330
+TZOFFSETTO:+0430
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20210922T000000
+RRULE:FREQ=YEARLY;UNTIL=20230921T193000Z;BYMONTH=9
+TZNAME:IRST
+TZOFFSETFROM:+0430
+TZOFFSETTO:+0330
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Israel Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Israel Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Israel Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Israel Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,164 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Israel Standard Time
+X-LIC-LOCATION:Israel Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:JMT
+TZOFFSETFROM:+022054
+TZOFFSETTO:+022040
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19180101T000000
+RDATE:19180101T000000
+TZNAME:IST
+TZOFFSETFROM:+022040
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19400601T000000
+RDATE:19400601T000000
+RDATE:19430401T020000
+RDATE:19440401T000000
+RDATE:19450416T000000
+RDATE:19460416T020000
+RDATE:19490501T000000
+RDATE:19500416T000000
+RDATE:19510401T000000
+RDATE:19520420T020000
+RDATE:19530412T020000
+RDATE:19540613T000000
+RDATE:19550611T020000
+RDATE:19560603T000000
+RDATE:19570429T020000
+RDATE:19740707T000000
+RDATE:19750420T000000
+RDATE:19850414T000000
+RDATE:19860518T000000
+RDATE:19870415T000000
+RDATE:19880410T000000
+RDATE:19890430T000000
+RDATE:19900325T000000
+RDATE:19910324T000000
+RDATE:19920329T000000
+RDATE:19930402T000000
+RDATE:19940401T000000
+RDATE:19950331T000000
+RDATE:19960315T000000
+RDATE:19970321T000000
+RDATE:19980320T000000
+RDATE:19990402T020000
+RDATE:20000414T020000
+RDATE:20010409T010000
+RDATE:20020329T010000
+RDATE:20030328T010000
+RDATE:20040407T010000
+RDATE:20050401T020000
+RDATE:20110401T020000
+RDATE:20120330T020000
+TZNAME:IDT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19421101T000000
+RRULE:FREQ=YEARLY;UNTIL=19441031T210000Z;BYMONTH=11
+TZNAME:IST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19451101T020000
+RDATE:19451101T020000
+RDATE:19461101T000000
+RDATE:19500915T030000
+RDATE:19511111T030000
+RDATE:19521019T030000
+RDATE:19530913T030000
+RDATE:19540912T000000
+RDATE:19550911T000000
+RDATE:19560930T030000
+RDATE:19570922T000000
+RDATE:19741013T000000
+RDATE:19750831T000000
+RDATE:19850915T000000
+RDATE:19860907T000000
+RDATE:19870913T000000
+RDATE:19880904T000000
+RDATE:19890903T000000
+RDATE:19900826T000000
+RDATE:19910901T000000
+RDATE:19920906T000000
+RDATE:19930905T000000
+RDATE:19940828T000000
+RDATE:19950903T000000
+RDATE:19960916T000000
+RDATE:19970914T000000
+RDATE:19980906T000000
+RDATE:19990903T020000
+RDATE:20001006T010000
+RDATE:20010924T010000
+RDATE:20021007T010000
+RDATE:20031003T010000
+RDATE:20040922T010000
+RDATE:20051009T020000
+RDATE:20061001T020000
+RDATE:20070916T020000
+RDATE:20081005T020000
+RDATE:20090927T020000
+RDATE:20100912T020000
+RDATE:20111002T020000
+RDATE:20120923T020000
+TZNAME:IST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19480523T000000
+RDATE:19480523T000000
+TZNAME:IDDT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19480901T000000
+RDATE:19480901T000000
+TZNAME:IDT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19481101T020000
+RRULE:FREQ=YEARLY;UNTIL=19491031T230000Z;BYMONTH=11
+TZNAME:IST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20060331T020000
+RRULE:FREQ=YEARLY;UNTIL=20100326T000000Z;BYDAY=FR;BYMONTHDAY=26,27,28,29,3
+ 0,31;BYMONTH=3
+TZNAME:IDT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20130329T020000
+RRULE:FREQ=YEARLY;BYDAY=FR;BYMONTHDAY=23,24,25,26,27,28,29;BYMONTH=3
+TZNAME:IDT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20131027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:IST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Jordan Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Jordan Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Jordan Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Jordan Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,137 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Jordan Standard Time
+X-LIC-LOCATION:Jordan Standard Time
+BEGIN:STANDARD
+DTSTART:19310101T000000
+RDATE:19310101T000000
+TZNAME:EEST
+TZOFFSETFROM:+022344
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19730606T000000
+RDATE:19730606T000000
+RDATE:19780430T000000
+RDATE:19850401T000000
+RDATE:19890508T000000
+RDATE:19900427T000000
+RDATE:19910417T000000
+RDATE:19920410T000000
+RDATE:19990701T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19731001T000000
+RRULE:FREQ=YEARLY;UNTIL=19750930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19740501T000000
+RRULE:FREQ=YEARLY;UNTIL=19770430T220000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19761101T000000
+RDATE:19761101T000000
+RDATE:19771001T000000
+RDATE:19780930T000000
+RDATE:19851001T000000
+RDATE:19910927T000000
+RDATE:19940916T000000
+RDATE:20031024T010000
+RDATE:20041015T010000
+RDATE:20050930T010000
+RDATE:20131220T000000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19860404T000000
+RRULE:FREQ=YEARLY;UNTIL=19880331T220000Z;BYDAY=1FR;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19861003T000000
+RRULE:FREQ=YEARLY;UNTIL=19901004T210000Z;BYDAY=1FR;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19921002T000000
+RRULE:FREQ=YEARLY;UNTIL=19930930T210000Z;BYDAY=1FR;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930402T000000
+RRULE:FREQ=YEARLY;UNTIL=19980402T220000Z;BYDAY=1FR;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19950915T010000
+RRULE:FREQ=YEARLY;UNTIL=19980917T220000Z;BYDAY=3FR;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19990924T010000
+RRULE:FREQ=YEARLY;UNTIL=20020926T220000Z;BYDAY=-1FR;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000330T000000
+RRULE:FREQ=YEARLY;UNTIL=20010328T220000Z;BYDAY=-1TH;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20020328T235959
+RRULE:FREQ=YEARLY;UNTIL=20120329T215959Z;BYDAY=-1TH;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20061027T010000
+RRULE:FREQ=YEARLY;UNTIL=20111027T220000Z;BYDAY=-1FR;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20140327T235959
+RRULE:FREQ=YEARLY;BYDAY=-1TH;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20141031T010000
+RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Kaliningrad Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Kaliningrad Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Kaliningrad Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Kaliningrad Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,156 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Kaliningrad Standard Time
+X-LIC-LOCATION:Kaliningrad Standard Time
+BEGIN:STANDARD
+DTSTART:18930401T000000
+RDATE:18930401T000000
+TZNAME:CEST
+TZOFFSETFROM:+0122
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160430T230000
+RDATE:19160430T230000
+RDATE:19400401T020000
+RDATE:19430329T020000
+RDATE:19440403T020000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T010000
+RDATE:19161001T010000
+RDATE:19421102T030000
+RDATE:19431004T030000
+RDATE:19441002T030000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170416T020000
+RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYDAY=3MO;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170917T030000
+RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYDAY=3MO;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19450101T000000
+RDATE:19450101T000000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19450429T000000
+RDATE:19450429T000000
+TZNAME:CEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19451101T000000
+RDATE:19451101T000000
+TZNAME:CET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T210000Z;BYMONTH=4
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T200000Z;BYMONTH=10
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T230000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T230000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:EEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+RDATE:19920926T230000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100328T000000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950924T000000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101031T000000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:FET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Korea Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Korea Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Korea Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Korea Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,68 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Korea Standard Time
+X-LIC-LOCATION:Korea Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:KST
+TZOFFSETFROM:+082752
+TZOFFSETTO:+0830
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19041201T000000
+RDATE:19041201T000000
+RDATE:19320101T000000
+RDATE:19681001T000000
+TZNAME:KST
+TZOFFSETFROM:+0830
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19280101T000000
+RDATE:19280101T000000
+TZNAME:KST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0830
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19540321T000000
+RDATE:19540321T000000
+RDATE:19600913T000000
+TZNAME:KST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19600515T000000
+RDATE:19600515T000000
+TZNAME:KDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19610810T000000
+RDATE:19610810T000000
+TZNAME:KST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0830
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19870510T000000
+RRULE:FREQ=YEARLY;UNTIL=19880507T150000Z;BYDAY=2SU;BYMONTH=5
+TZNAME:KDT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19871011T000000
+RRULE:FREQ=YEARLY;UNTIL=19881008T140000Z;BYDAY=2SU;BYMONTH=10
+TZNAME:KST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Libya Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Libya Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Libya Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Libya Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,92 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Libya Standard Time
+X-LIC-LOCATION:Libya Standard Time
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+TZNAME:CEST
+TZOFFSETFROM:+005244
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19511014T020000
+RDATE:19511014T020000
+RDATE:19531009T020000
+RDATE:19550930T000000
+RDATE:19850406T000000
+RDATE:19860404T000000
+RDATE:19970404T000000
+RDATE:20130329T010000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19520101T000000
+RDATE:19520101T000000
+RDATE:19540101T000000
+RDATE:19560101T000000
+RDATE:19861003T000000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19590101T000000
+RDATE:19590101T000000
+RDATE:19900504T000000
+TZNAME:EET
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19820101T000000
+RDATE:19820101T000000
+RDATE:19960930T000000
+RDATE:20121110T020000
+TZNAME:CEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19820401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T230000Z;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19821001T000000
+RRULE:FREQ=YEARLY;UNTIL=19850930T220000Z;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19870401T000000
+RRULE:FREQ=YEARLY;UNTIL=19890331T230000Z;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19871001T000000
+RRULE:FREQ=YEARLY;UNTIL=19890930T220000Z;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19971004T000000
+RDATE:19971004T000000
+RDATE:20131025T020000
+TZNAME:EET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Magadan Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Magadan Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Magadan Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Magadan Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,108 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Magadan Standard Time
+X-LIC-LOCATION:Magadan Standard Time
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:MAGT
+TZOFFSETFROM:+100312
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:MAGST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T130000Z;BYMONTH=4
+TZNAME:MAGST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T120000Z;BYMONTH=10
+TZNAME:MAGT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T150000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MAGT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T150000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MAGST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:MAGST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:MAGT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:MAGST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:MAGT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T150000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MAGST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T150000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MAGT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T150000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MAGT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:MAGT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mauritius Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Mauritius Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mauritius Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mauritius Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,32 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Mauritius Standard Time
+X-LIC-LOCATION:Mauritius Standard Time
+BEGIN:STANDARD
+DTSTART:19070101T000000
+RDATE:19070101T000000
+TZNAME:MUST
+TZOFFSETFROM:+0350
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19821010T000000
+RDATE:19821010T000000
+RDATE:20081026T020000
+TZNAME:MUST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19830321T000000
+RDATE:19830321T000000
+RDATE:20090329T020000
+TZNAME:MUT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Middle East Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Middle East Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Middle East Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Middle East Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,112 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Middle East Standard Time
+X-LIC-LOCATION:Middle East Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:EEST
+TZOFFSETFROM:+0222
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200328T000000
+RDATE:19200328T000000
+RDATE:19210403T000000
+RDATE:19220326T000000
+RDATE:19230422T000000
+RDATE:19720622T000000
+RDATE:19780430T000000
+RDATE:19880601T000000
+RDATE:19890510T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201025T000000
+RDATE:19201025T000000
+RDATE:19211003T000000
+RDATE:19221008T000000
+RDATE:19230916T000000
+RDATE:19780930T000000
+RDATE:19921004T000000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19570501T000000
+RRULE:FREQ=YEARLY;UNTIL=19610430T220000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19571001T000000
+RRULE:FREQ=YEARLY;UNTIL=19610930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19721001T000000
+RRULE:FREQ=YEARLY;UNTIL=19770930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19730501T000000
+RRULE:FREQ=YEARLY;UNTIL=19770430T220000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19840501T000000
+RRULE:FREQ=YEARLY;UNTIL=19870430T220000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19841016T000000
+RRULE:FREQ=YEARLY;UNTIL=19911015T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19900501T000000
+RRULE:FREQ=YEARLY;UNTIL=19920430T220000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19930328T000000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T000000
+RRULE:FREQ=YEARLY;UNTIL=19980926T210000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19991031T000000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Montevideo Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Montevideo Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Montevideo Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Montevideo Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,196 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Montevideo Standard Time
+X-LIC-LOCATION:Montevideo Standard Time
+BEGIN:STANDARD
+DTSTART:18980628T000000
+RDATE:18980628T000000
+TZNAME:MMT
+TZOFFSETFROM:-034444
+TZOFFSETTO:-034444
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200501T000000
+RDATE:19200501T000000
+TZNAME:UYST
+TZOFFSETFROM:-034444
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19231002T000000
+RDATE:19231002T000000
+RDATE:19361101T000000
+RDATE:19410801T000000
+TZNAME:UYHST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19240401T000000
+RRULE:FREQ=YEARLY;UNTIL=19260401T030000Z;BYMONTH=4
+TZNAME:UYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19241001T000000
+RRULE:FREQ=YEARLY;UNTIL=19251001T033000Z;BYMONTH=10
+TZNAME:UYHST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19331029T000000
+RRULE:FREQ=YEARLY;UNTIL=19351027T033000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:UYHST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19340401T000000
+RRULE:FREQ=YEARLY;UNTIL=19360329T030000Z;BYDAY=SU;BYMONTHDAY=26,27,28,29,3
+ 0,31;BYMONTH=3
+TZNAME:UYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19370328T000000
+RRULE:FREQ=YEARLY;UNTIL=19410330T030000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:UYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19371031T000000
+RRULE:FREQ=YEARLY;UNTIL=19401027T033000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:UYHST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19420101T000000
+RDATE:19420101T000000
+TZNAME:UYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19421214T000000
+RDATE:19421214T000000
+TZNAME:UYST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430314T000000
+RDATE:19430314T000000
+RDATE:19591115T000000
+RDATE:19600306T000000
+RDATE:19650926T000000
+RDATE:19720815T000000
+RDATE:19761001T000000
+RDATE:19780401T000000
+RDATE:19800501T000000
+RDATE:19880314T000000
+RDATE:19890312T000000
+RDATE:19930228T000000
+RDATE:20050327T020000
+RDATE:20060312T020000
+TZNAME:UYT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19590524T000000
+RDATE:19590524T000000
+RDATE:19600117T000000
+RDATE:19720424T000000
+RDATE:19771204T000000
+RDATE:19791001T000000
+RDATE:19871214T000000
+RDATE:19881211T000000
+RDATE:19891029T000000
+RDATE:19921018T000000
+RDATE:20040919T000000
+RDATE:20051009T020000
+TZNAME:UYST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19650404T000000
+RRULE:FREQ=YEARLY;UNTIL=19670402T030000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:UYST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19661031T000000
+RRULE:FREQ=YEARLY;UNTIL=19671031T020000Z;BYMONTH=10
+TZNAME:UYT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19680527T000000
+RRULE:FREQ=YEARLY;UNTIL=19700527T030000Z;BYMONTH=5
+TZNAME:UYHST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19681202T000000
+RRULE:FREQ=YEARLY;UNTIL=19701202T023000Z;BYMONTH=12
+TZNAME:UYT
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19740310T000000
+RDATE:19740310T000000
+TZNAME:UYHST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19741222T000000
+RDATE:19741222T000000
+TZNAME:UYST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19900304T000000
+RRULE:FREQ=YEARLY;UNTIL=19920301T020000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:UYT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19901021T000000
+RRULE:FREQ=YEARLY;UNTIL=19911027T030000Z;BYDAY=SU;BYMONTHDAY=21,22,23,24,2
+ 5,26,27;BYMONTH=10
+TZNAME:UYST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20061001T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
+TZNAME:UYST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:UYT
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Morocco Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Morocco Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Morocco Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Morocco Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,116 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Morocco Standard Time
+X-LIC-LOCATION:Morocco Standard Time
+BEGIN:STANDARD
+DTSTART:19131026T000000
+RDATE:19131026T000000
+TZNAME:WEST
+TZOFFSETFROM:-003020
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19390912T000000
+RDATE:19390912T000000
+RDATE:19400225T000000
+RDATE:19500611T000000
+RDATE:19670603T120000
+RDATE:19740624T000000
+RDATE:19780601T000000
+RDATE:20080601T000000
+RDATE:20090601T000000
+RDATE:20100502T000000
+RDATE:20110403T000000
+RDATE:20120820T020000
+RDATE:20130810T020000
+RDATE:20140729T020000
+RDATE:20150718T020000
+RDATE:20160707T020000
+RDATE:20170626T020000
+RDATE:20180615T020000
+RDATE:20190605T020000
+RDATE:20200524T020000
+RDATE:20210513T020000
+RDATE:20220503T020000
+RDATE:20230422T020000
+TZNAME:WEST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19391119T000000
+RDATE:19391119T000000
+RDATE:19451118T000000
+RDATE:19501029T000000
+RDATE:19671001T000000
+RDATE:19740901T000000
+RDATE:19760801T000000
+RDATE:19770928T000000
+RDATE:19780804T000000
+RDATE:20080901T000000
+RDATE:20090821T000000
+RDATE:20100808T000000
+RDATE:20110731T000000
+RDATE:20120720T030000
+RDATE:20120930T030000
+RDATE:20130707T030000
+RDATE:20140629T030000
+RDATE:20150618T030000
+RDATE:20160607T030000
+RDATE:20170527T030000
+RDATE:20180516T030000
+RDATE:20190506T030000
+RDATE:20200424T030000
+RDATE:20210413T030000
+RDATE:20220403T030000
+TZNAME:WET
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760501T000000
+RRULE:FREQ=YEARLY;UNTIL=19770501T000000Z;BYMONTH=5
+TZNAME:WEST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19840316T000000
+RDATE:19840316T000000
+TZNAME:CET
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19860101T000000
+RDATE:19860101T000000
+TZNAME:WEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20120429T020000
+RRULE:FREQ=YEARLY;UNTIL=20130428T020000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:WEST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20131027T030000
+RRULE:FREQ=YEARLY;UNTIL=20231029T020000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:WET
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20140330T020000
+RRULE:FREQ=YEARLY;UNTIL=20220327T020000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:WEST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time (Mexico).ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Mountain Standard Time (Mexico).ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time (Mexico).ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time (Mexico).ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,98 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Mountain Standard Time (Mexico)
+X-LIC-LOCATION:Mountain Standard Time (Mexico)
+BEGIN:STANDARD
+DTSTART:19211231T235540
+RDATE:19211231T235540
+TZNAME:MST
+TZOFFSETFROM:-070420
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19270610T230000
+RDATE:19270610T230000
+RDATE:19310501T230000
+RDATE:19320401T000000
+TZNAME:CST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19301115T000000
+RDATE:19301115T000000
+RDATE:19311001T000000
+RDATE:20010930T020000
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19960101T000000
+RDATE:19960101T000000
+RDATE:19980101T000000
+TZNAME:CST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19960407T020000
+RRULE:FREQ=YEARLY;UNTIL=19970406T080000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;UNTIL=19971026T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19980405T030000
+RDATE:19980405T030000
+TZNAME:MDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19981025T020000
+RRULE:FREQ=YEARLY;UNTIL=20001029T080000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19990404T020000
+RRULE:FREQ=YEARLY;UNTIL=20000402T090000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20010506T020000
+RDATE:20010506T020000
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20020407T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20021027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Mountain Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Mountain Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,134 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Mountain Standard Time
+X-LIC-LOCATION:Mountain Standard Time
+BEGIN:STANDARD
+DTSTART:18831118T120004
+RDATE:18831118T120004
+TZNAME:MST
+TZOFFSETFROM:-065956
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T090000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T080000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+RDATE:19420101T000000
+RDATE:19460101T000000
+RDATE:19670101T000000
+TZNAME:MST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200328T020000
+RRULE:FREQ=YEARLY;UNTIL=19210327T090000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201031T020000
+RDATE:19201031T020000
+RDATE:19210522T020000
+RDATE:19450930T020000
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:MWT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T170000
+RDATE:19450814T170000
+TZNAME:MPT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19650425T020000
+RRULE:FREQ=YEARLY;UNTIL=19660424T090000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19651031T020000
+RRULE:FREQ=YEARLY;UNTIL=19661030T080000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T090000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19671029T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T080000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19740106T020000
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T090000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T090000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Myanmar Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Myanmar Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Myanmar Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Myanmar Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Myanmar Standard Time
+X-LIC-LOCATION:Myanmar Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:RMT
+TZOFFSETFROM:+062440
+TZOFFSETTO:+062440
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+TZNAME:BURT
+TZOFFSETFROM:+062440
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420501T000000
+RDATE:19420501T000000
+TZNAME:JST
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19450503T000000
+RDATE:19450503T000000
+TZNAME:MMT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0630
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/N. Central Asia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/N. Central Asia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/N. Central Asia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/N. Central Asia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,116 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:N. Central Asia Standard Time
+X-LIC-LOCATION:N. Central Asia Standard Time
+BEGIN:STANDARD
+DTSTART:19191214T060000
+RDATE:19191214T060000
+TZNAME:NOVT
+TZOFFSETFROM:+053140
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:NOVST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T170000Z;BYMONTH=4
+TZNAME:NOVST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T160000Z;BYMONTH=10
+TZNAME:NOVT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T190000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:NOVT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T190000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:NOVST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:NOVST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:NOVT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+RDATE:19930328T020000
+TZNAME:NOVST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:NOVT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19930523T000000
+RDATE:19930523T000000
+TZNAME:NOVST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T200000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:NOVT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19940327T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T200000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:NOVST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T200000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:NOVT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:NOVT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Namibia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Namibia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Namibia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Namibia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,65 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Namibia Standard Time
+X-LIC-LOCATION:Namibia Standard Time
+BEGIN:STANDARD
+DTSTART:18920208T000000
+RDATE:18920208T000000
+TZNAME:SWAT
+TZOFFSETFROM:+010824
+TZOFFSETTO:+0130
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19030301T000000
+RDATE:19030301T000000
+TZNAME:SAST
+TZOFFSETFROM:+0130
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420920T020000
+RDATE:19420920T020000
+TZNAME:SAST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430321T020000
+RDATE:19430321T020000
+TZNAME:SAST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19900321T000000
+RDATE:19900321T000000
+TZNAME:CAT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19940403T000000
+RDATE:19940403T000000
+TZNAME:WAST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19940904T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=9
+TZNAME:WAST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19950402T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:WAT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Nepal Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Nepal Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Nepal Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Nepal Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,23 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Nepal Standard Time
+X-LIC-LOCATION:Nepal Standard Time
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+TZNAME:IST
+TZOFFSETFROM:+054116
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19860101T000000
+RDATE:19860101T000000
+TZNAME:NPT
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0545
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/New Zealand Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/New Zealand Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/New Zealand Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/New Zealand Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,122 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:New Zealand Standard Time
+X-LIC-LOCATION:New Zealand Standard Time
+BEGIN:STANDARD
+DTSTART:18681102T000000
+RDATE:18681102T000000
+TZNAME:NZST
+TZOFFSETFROM:+113904
+TZOFFSETTO:+1130
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19271106T020000
+RDATE:19271106T020000
+TZNAME:NZST
+TZOFFSETFROM:+1130
+TZOFFSETTO:+1230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19280304T020000
+RDATE:19280304T020000
+TZNAME:NZMT
+TZOFFSETFROM:+1230
+TZOFFSETTO:+1130
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19281014T020000
+RRULE:FREQ=YEARLY;UNTIL=19331007T143000Z;BYDAY=2SU;BYMONTH=10
+TZNAME:NZST
+TZOFFSETFROM:+1130
+TZOFFSETTO:+1200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19290317T020000
+RRULE:FREQ=YEARLY;UNTIL=19330318T140000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:NZMT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1130
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19340429T020000
+RRULE:FREQ=YEARLY;UNTIL=19400427T140000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:NZMT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1130
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19340930T020000
+RRULE:FREQ=YEARLY;UNTIL=19400928T143000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:NZST
+TZOFFSETFROM:+1130
+TZOFFSETTO:+1200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+TZNAME:NZST
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19741103T020000
+RDATE:19741103T020000
+RDATE:19891008T020000
+TZNAME:NZDT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19750223T030000
+RDATE:19750223T030000
+TZNAME:NZST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19751026T020000
+RRULE:FREQ=YEARLY;UNTIL=19881029T140000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:NZDT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19760307T030000
+RRULE:FREQ=YEARLY;UNTIL=19890304T140000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:NZST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19900318T030000
+RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:NZST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19901007T020000
+RRULE:FREQ=YEARLY;UNTIL=20060930T140000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:NZDT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070930T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9
+TZNAME:NZDT
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20080406T030000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:NZST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Newfoundland Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Newfoundland Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Newfoundland Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Newfoundland Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,210 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Newfoundland Standard Time
+X-LIC-LOCATION:Newfoundland Standard Time
+BEGIN:STANDARD
+DTSTART:18840101T000000
+RDATE:18840101T000000
+RDATE:19180101T000000
+RDATE:19190101T000000
+TZNAME:NST
+TZOFFSETFROM:-033052
+TZOFFSETTO:-033052
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170408T020000
+RDATE:19170408T020000
+RDATE:19180414T020000
+RDATE:19190505T230000
+TZNAME:NDT
+TZOFFSETFROM:-033052
+TZOFFSETTO:-023052
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170917T020000
+RDATE:19170917T020000
+RDATE:19181027T020000
+RDATE:19190812T230000
+TZNAME:NST
+TZOFFSETFROM:-023052
+TZOFFSETTO:-033052
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200502T230000
+RRULE:FREQ=YEARLY;UNTIL=19340507T023052Z;BYDAY=1SU;BYMONTH=5
+TZNAME:NDT
+TZOFFSETFROM:-033052
+TZOFFSETTO:-023052
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201031T230000
+RRULE:FREQ=YEARLY;UNTIL=19341029T013052Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:NST
+TZOFFSETFROM:-023052
+TZOFFSETTO:-033052
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19350330T000000
+RDATE:19350330T000000
+TZNAME:NST
+TZOFFSETFROM:-033052
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19350505T230000
+RDATE:19350505T230000
+RDATE:19870405T000100
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19351027T230000
+RDATE:19351027T230000
+RDATE:19450930T020000
+RDATE:19871025T000100
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19360511T000000
+RRULE:FREQ=YEARLY;UNTIL=19410512T033000Z;BYDAY=MO;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=5
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19361005T000000
+RRULE:FREQ=YEARLY;UNTIL=19411006T023000Z;BYDAY=MO;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420511T000000
+RDATE:19420511T000000
+TZNAME:NST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19450814T203000
+RDATE:19450814T203000
+TZNAME:NPT
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+TZNAME:NST
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19460512T020000
+RRULE:FREQ=YEARLY;UNTIL=19500514T053000Z;BYDAY=2SU;BYMONTH=5
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19461006T020000
+RRULE:FREQ=YEARLY;UNTIL=19501008T043000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19510429T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T053000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19510930T020000
+RRULE:FREQ=YEARLY;UNTIL=19590927T043000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19601030T020000
+RRULE:FREQ=YEARLY;UNTIL=19861026T043000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19880403T000100
+RDATE:19880403T000100
+TZNAME:NDDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0130
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19881030T000100
+RDATE:19881030T000100
+TZNAME:NST
+TZOFFSETFROM:-0130
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19890402T000100
+RRULE:FREQ=YEARLY;UNTIL=20060402T033100Z;BYDAY=1SU;BYMONTH=4
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19891029T000100
+RRULE:FREQ=YEARLY;UNTIL=20061029T023100Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20070311T000100
+RRULE:FREQ=YEARLY;UNTIL=20110313T033100Z;BYDAY=2SU;BYMONTH=3
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T000100
+RRULE:FREQ=YEARLY;UNTIL=20101107T023100Z;BYDAY=1SU;BYMONTH=11
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20111101T000000
+RDATE:20111101T000000
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0230
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20111106T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:NST
+TZOFFSETFROM:-0230
+TZOFFSETTO:-0330
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20120311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:NDT
+TZOFFSETFROM:-0330
+TZOFFSETTO:-0230
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia East Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/North Asia East Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia East Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia East Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,115 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:North Asia East Standard Time
+X-LIC-LOCATION:North Asia East Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:IMT
+TZOFFSETFROM:+065720
+TZOFFSETTO:+065720
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200125T000000
+RDATE:19200125T000000
+TZNAME:IRKT
+TZOFFSETFROM:+065720
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:IRKST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T160000Z;BYMONTH=4
+TZNAME:IRKST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T150000Z;BYMONTH=10
+TZNAME:IRKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T180000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:IRKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T180000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:IRKST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:IRKST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:IRKT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:IRKST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:IRKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T180000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:IRKST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T180000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:IRKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T180000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:IRKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:IRKT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/North Asia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/North Asia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,108 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:North Asia Standard Time
+X-LIC-LOCATION:North Asia Standard Time
+BEGIN:STANDARD
+DTSTART:19200106T000000
+RDATE:19200106T000000
+TZNAME:KRAT
+TZOFFSETFROM:+061120
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:KRAST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T170000Z;BYMONTH=4
+TZNAME:KRAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T160000Z;BYMONTH=10
+TZNAME:KRAT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T190000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:KRAT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T190000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:KRAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:KRAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:KRAT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:KRAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:KRAT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T190000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:KRAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T190000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:KRAT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T190000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:KRAT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:KRAT
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific SA Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Pacific SA Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific SA Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific SA Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,211 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Pacific SA Standard Time
+X-LIC-LOCATION:Pacific SA Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:SMT
+TZOFFSETFROM:-044246
+TZOFFSETTO:-044246
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19100101T000000
+RDATE:19100101T000000
+TZNAME:CLT
+TZOFFSETFROM:-044246
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19160701T000000
+RDATE:19160701T000000
+TZNAME:SMT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-044246
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19180901T000000
+RDATE:19180901T000000
+TZNAME:CLT
+TZOFFSETFROM:-044246
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19190701T000000
+RDATE:19190701T000000
+TZNAME:SMT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-044246
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19270901T000000
+RDATE:19270901T000000
+TZNAME:CLST
+TZOFFSETFROM:-044246
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19280401T000000
+RRULE:FREQ=YEARLY;UNTIL=19320401T040000Z;BYMONTH=4
+TZNAME:CLT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19280901T000000
+RRULE:FREQ=YEARLY;UNTIL=19320901T050000Z;BYMONTH=9
+TZNAME:CLST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19420601T000000
+RDATE:19420601T000000
+RDATE:19460831T230000
+TZNAME:CLT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420801T000000
+RDATE:19420801T000000
+TZNAME:CLST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19460715T000000
+RDATE:19460715T000000
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19470331T230000
+RDATE:19470331T230000
+TZNAME:CLT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19470522T000000
+RDATE:19470522T000000
+TZNAME:CLST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19681103T000000
+RDATE:19681103T000000
+RDATE:19691123T000000
+RDATE:19730930T000000
+RDATE:19881002T000000
+RDATE:19891015T000000
+RDATE:19900916T000000
+RDATE:19980927T000000
+RDATE:20110821T000000
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19690330T000000
+RDATE:19690330T000000
+RDATE:19700329T000000
+RDATE:19710314T000000
+RDATE:19870412T000000
+RDATE:19900318T000000
+RDATE:19970330T000000
+RDATE:19980315T000000
+RDATE:19990404T000000
+RDATE:20080330T000000
+RDATE:20090315T000000
+RDATE:20100404T000000
+RDATE:20110508T000000
+TZNAME:CLT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19701011T000000
+RRULE:FREQ=YEARLY;UNTIL=19721015T040000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=10
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19720312T000000
+RRULE:FREQ=YEARLY;UNTIL=19860309T030000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=3
+TZNAME:CLT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19741013T000000
+RRULE:FREQ=YEARLY;UNTIL=19871011T040000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=10
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19880313T000000
+RRULE:FREQ=YEARLY;UNTIL=19890312T030000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=3
+TZNAME:CLT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910310T000000
+RRULE:FREQ=YEARLY;UNTIL=19960310T030000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=3
+TZNAME:CLT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19911013T000000
+RRULE:FREQ=YEARLY;UNTIL=19971012T040000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=10
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19991010T000000
+RRULE:FREQ=YEARLY;UNTIL=20101010T040000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=10
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20000312T000000
+RRULE:FREQ=YEARLY;UNTIL=20070311T030000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=3
+TZNAME:CLT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20120429T000000
+RRULE:FREQ=YEARLY;BYDAY=SU;BYMONTHDAY=23,24,25,26,27,28,29;BYMONTH=4
+TZNAME:CLT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20120902T000000
+RRULE:FREQ=YEARLY;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8;BYMONTH=9
+TZNAME:CLST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time (Mexico).ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Pacific Standard Time (Mexico).ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time (Mexico).ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time (Mexico).ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,139 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Pacific Standard Time (Mexico)
+X-LIC-LOCATION:Pacific Standard Time (Mexico)
+BEGIN:STANDARD
+DTSTART:19220101T002032
+RDATE:19220101T002032
+TZNAME:MST
+TZOFFSETFROM:-073928
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19240101T000000
+RDATE:19240101T000000
+RDATE:19301115T000000
+RDATE:19310930T000000
+RDATE:19451112T000000
+RDATE:19490114T000000
+RDATE:20011028T020000
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19270610T230000
+RDATE:19270610T230000
+TZNAME:MST
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19310401T000000
+RDATE:19310401T000000
+RDATE:19480405T000000
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420424T000000
+RDATE:19420424T000000
+TZNAME:PWT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19450814T160000
+RDATE:19450814T160000
+TZNAME:PPT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19540101T000000
+RDATE:19540101T000000
+RDATE:19610101T000000
+RDATE:19760101T000000
+RDATE:19960101T000000
+RDATE:20010101T000000
+RDATE:20020220T000000
+TZNAME:PST
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19540425T020000
+RRULE:FREQ=YEARLY;UNTIL=19600424T100000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19540926T020000
+RRULE:FREQ=YEARLY;UNTIL=19600925T090000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19761031T020000
+RRULE:FREQ=YEARLY;UNTIL=19951029T090000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=19950402T100000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19960407T020000
+RRULE:FREQ=YEARLY;UNTIL=20000402T100000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;UNTIL=20001029T090000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20010401T020000
+RDATE:20010401T020000
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20020407T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20021027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Pacific Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pacific Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,132 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Pacific Standard Time
+X-LIC-LOCATION:Pacific Standard Time
+BEGIN:STANDARD
+DTSTART:18831118T120702
+RDATE:18831118T120702
+TZNAME:PST
+TZOFFSETFROM:-075258
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T100000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T090000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:PWT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T160000
+RDATE:19450814T160000
+TZNAME:PPT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19450930T020000
+RDATE:19450930T020000
+RDATE:19490101T020000
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+RDATE:19670101T000000
+TZNAME:PST
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19480314T020000
+RDATE:19480314T020000
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19500430T020000
+RRULE:FREQ=YEARLY;UNTIL=19660424T100000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19500924T020000
+RRULE:FREQ=YEARLY;UNTIL=19610924T090000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19621028T020000
+RRULE:FREQ=YEARLY;UNTIL=19661030T090000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T100000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19671029T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T090000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T100000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T100000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:PDT
+TZOFFSETFROM:-0800
+TZOFFSETTO:-0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:PST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0800
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pakistan Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Pakistan Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pakistan Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Pakistan Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,62 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Pakistan Standard Time
+X-LIC-LOCATION:Pakistan Standard Time
+BEGIN:STANDARD
+DTSTART:19070101T000000
+RDATE:19070101T000000
+TZNAME:IST
+TZOFFSETFROM:+042812
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420901T000000
+RDATE:19420901T000000
+TZNAME:IST
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19451015T000000
+RDATE:19451015T000000
+TZNAME:IST
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19510930T000000
+RDATE:19510930T000000
+TZNAME:KART
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19710326T000000
+RDATE:19710326T000000
+TZNAME:PKST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20020407T000100
+RDATE:20020407T000100
+RDATE:20080601T000000
+RDATE:20090415T000000
+TZNAME:PKST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20021006T000100
+RDATE:20021006T000100
+RDATE:20081101T000000
+RDATE:20091101T000000
+TZNAME:PKT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Paraguay Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Paraguay Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Paraguay Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Paraguay Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,162 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Paraguay Standard Time
+X-LIC-LOCATION:Paraguay Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:AMT
+TZOFFSETFROM:-035040
+TZOFFSETTO:-035040
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19311010T000000
+RDATE:19311010T000000
+TZNAME:PYT
+TZOFFSETFROM:-035040
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19721001T000000
+RDATE:19721001T000000
+TZNAME:PYT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19740401T000000
+RDATE:19740401T000000
+TZNAME:PYST
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19750301T000000
+RDATE:19750301T000000
+TZNAME:PYT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19751001T000000
+RRULE:FREQ=YEARLY;UNTIL=19881001T040000Z;BYMONTH=10
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19760301T000000
+RRULE:FREQ=YEARLY;UNTIL=19780301T030000Z;BYMONTH=3
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19790401T000000
+RRULE:FREQ=YEARLY;UNTIL=19910401T030000Z;BYMONTH=4
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19891022T000000
+RDATE:19891022T000000
+RDATE:19901001T000000
+RDATE:19911006T000000
+RDATE:19921005T000000
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920301T000000
+RDATE:19920301T000000
+RDATE:19930331T000000
+RDATE:19960301T000000
+RDATE:19970223T000000
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19931001T000000
+RRULE:FREQ=YEARLY;UNTIL=19951001T040000Z;BYMONTH=10
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19940227T000000
+RRULE:FREQ=YEARLY;UNTIL=19950226T030000Z;BYDAY=-1SU;BYMONTH=2
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19961006T000000
+RRULE:FREQ=YEARLY;UNTIL=20011007T040000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19980301T000000
+RRULE:FREQ=YEARLY;UNTIL=20010304T030000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20020407T000000
+RRULE:FREQ=YEARLY;UNTIL=20040404T030000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20020901T000000
+RRULE:FREQ=YEARLY;UNTIL=20030907T040000Z;BYDAY=1SU;BYMONTH=9
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20041017T000000
+RRULE:FREQ=YEARLY;UNTIL=20091018T040000Z;BYDAY=3SU;BYMONTH=10
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20050313T000000
+RRULE:FREQ=YEARLY;UNTIL=20090308T030000Z;BYDAY=2SU;BYMONTH=3
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20100411T000000
+RRULE:FREQ=YEARLY;UNTIL=20120408T030000Z;BYDAY=2SU;BYMONTH=4
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20101003T000000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
+TZNAME:PYST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20130324T000000
+RRULE:FREQ=YEARLY;BYDAY=4SU;BYMONTH=3
+TZNAME:PYT
+TZOFFSETFROM:-0300
+TZOFFSETTO:-0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Romance Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Romance Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Romance Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Romance Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,169 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Romance Standard Time
+X-LIC-LOCATION:Romance Standard Time
+BEGIN:STANDARD
+DTSTART:18910315T000100
+RDATE:18910315T000100
+TZNAME:PMT
+TZOFFSETFROM:+000921
+TZOFFSETTO:+000921
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19110311T000100
+RDATE:19110311T000100
+TZNAME:WEST
+TZOFFSETFROM:+000921
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160614T230000
+RDATE:19160614T230000
+RDATE:19170324T230000
+RDATE:19180309T230000
+RDATE:19190301T230000
+RDATE:19200214T230000
+RDATE:19210314T230000
+RDATE:19220325T230000
+RDATE:19230526T230000
+RDATE:19240329T230000
+RDATE:19250404T230000
+RDATE:19260417T230000
+RDATE:19270409T230000
+RDATE:19280414T230000
+RDATE:19290420T230000
+RDATE:19300412T230000
+RDATE:19310418T230000
+RDATE:19320402T230000
+RDATE:19330325T230000
+RDATE:19340407T230000
+RDATE:19350330T230000
+RDATE:19360418T230000
+RDATE:19370403T230000
+RDATE:19380326T230000
+RDATE:19390415T230000
+RDATE:19400225T020000
+TZNAME:WEST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161002T000000
+RRULE:FREQ=YEARLY;UNTIL=19191005T230000Z;BYDAY=MO;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:WET
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19201024T000000
+RDATE:19201024T000000
+RDATE:19211026T000000
+RDATE:19391119T000000
+TZNAME:WET
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19221008T000000
+RRULE:FREQ=YEARLY;UNTIL=19381001T230000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:WET
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19400614T230000
+RDATE:19400614T230000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19421102T030000
+RDATE:19421102T030000
+RDATE:19431004T030000
+RDATE:19760926T010000
+RDATE:19770925T030000
+RDATE:19781001T030000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19430329T020000
+RDATE:19430329T020000
+RDATE:19440403T020000
+RDATE:19760328T010000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19440825T000000
+RDATE:19440825T000000
+TZNAME:WEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19441008T010000
+RDATE:19441008T010000
+TZNAME:WEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450402T020000
+RDATE:19450402T020000
+TZNAME:WEMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19450916T030000
+RDATE:19450916T030000
+TZNAME:CEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19770101T000000
+RDATE:19770101T000000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19770403T020000
+RRULE:FREQ=YEARLY;UNTIL=19800406T010000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19790930T030000
+RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Russian Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Russian Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Russian Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Russian Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,175 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Russian Standard Time
+X-LIC-LOCATION:Russian Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:MMT
+TZOFFSETFROM:+023020
+TZOFFSETTO:+0230
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19160703T000000
+RDATE:19160703T000000
+TZNAME:S
+TZOFFSETFROM:+0230
+TZOFFSETTO:+023048
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170701T230000
+RDATE:19170701T230000
+TZNAME:MST
+TZOFFSETFROM:+023048
+TZOFFSETTO:+033048
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19171228T000000
+RDATE:19171228T000000
+TZNAME:MMT
+TZOFFSETFROM:+033048
+TZOFFSETTO:+023048
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180531T220000
+RDATE:19180531T220000
+TZNAME:MDST
+TZOFFSETFROM:+023048
+TZOFFSETTO:+043048
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19180916T010000
+RDATE:19180916T010000
+TZNAME:MST
+TZOFFSETFROM:+043048
+TZOFFSETTO:+033048
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19190531T230000
+RDATE:19190531T230000
+TZNAME:MDST
+TZOFFSETFROM:+033048
+TZOFFSETTO:+043048
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19190701T020000
+RDATE:19190701T020000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+043048
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19190816T000000
+RDATE:19190816T000000
+RDATE:19211001T000000
+RDATE:19920926T230000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19210214T230000
+RDATE:19210214T230000
+RDATE:19920328T230000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19210320T230000
+RDATE:19210320T230000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19210901T000000
+RDATE:19210901T000000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19221001T000000
+RDATE:19221001T000000
+RDATE:19910929T030000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T210000Z;BYMONTH=4
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T200000Z;BYMONTH=10
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T230000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T230000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:EEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T230000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T230000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T230000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MSK/MSD
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:MSK
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Eastern Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/SA Eastern Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Eastern Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Eastern Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,23 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:SA Eastern Standard Time
+X-LIC-LOCATION:SA Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:19110701T000000
+RDATE:19110701T000000
+TZNAME:GFT
+TZOFFSETFROM:-032920
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19671001T000000
+RDATE:19671001T000000
+TZNAME:GFT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Pacific Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/SA Pacific Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Pacific Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Pacific Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:SA Pacific Standard Time
+X-LIC-LOCATION:SA Pacific Standard Time
+BEGIN:STANDARD
+DTSTART:18840313T000000
+RDATE:18840313T000000
+TZNAME:BMT
+TZOFFSETFROM:-045616
+TZOFFSETTO:-045616
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19141123T000000
+RDATE:19141123T000000
+TZNAME:COST
+TZOFFSETFROM:-045616
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920503T000000
+RDATE:19920503T000000
+TZNAME:COST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930404T000000
+RDATE:19930404T000000
+TZNAME:COT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Western Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/SA Western Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Western Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SA Western Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,30 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:SA Western Standard Time
+X-LIC-LOCATION:SA Western Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:CMT
+TZOFFSETFROM:-043236
+TZOFFSETTO:-043236
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19311015T000000
+RDATE:19311015T000000
+TZNAME:BOST
+TZOFFSETFROM:-043236
+TZOFFSETTO:-033236
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19320321T000000
+RDATE:19320321T000000
+TZNAME:BOT
+TZOFFSETFROM:-033236
+TZOFFSETTO:-0400
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SE Asia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/SE Asia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SE Asia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/SE Asia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,23 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:SE Asia Standard Time
+X-LIC-LOCATION:SE Asia Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:BMT
+TZOFFSETFROM:+064204
+TZOFFSETTO:+064204
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200401T000000
+RDATE:19200401T000000
+TZNAME:ICT
+TZOFFSETFROM:+064204
+TZOFFSETTO:+0700
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Samoa Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Samoa Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Samoa Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Samoa Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,59 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Samoa Standard Time
+X-LIC-LOCATION:Samoa Standard Time
+BEGIN:STANDARD
+DTSTART:19110101T000000
+RDATE:19110101T000000
+TZNAME:SAMT
+TZOFFSETFROM:-112656
+TZOFFSETTO:-1130
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19500101T000000
+RDATE:19500101T000000
+TZNAME:WST
+TZOFFSETFROM:-1130
+TZOFFSETTO:-1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20100926T000000
+RDATE:20100926T000000
+RDATE:20110924T030000
+TZNAME:WSDT
+TZOFFSETFROM:-1100
+TZOFFSETTO:-1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110402T040000
+RDATE:20110402T040000
+TZNAME:WST
+TZOFFSETFROM:-1000
+TZOFFSETTO:-1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20111230T000000
+RDATE:20111230T000000
+TZNAME:WSDT
+TZOFFSETFROM:-1000
+TZOFFSETTO:+1400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20120401T040000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:WST
+TZOFFSETFROM:+1400
+TZOFFSETTO:+1300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20120930T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9
+TZNAME:WSDT
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1400
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Singapore Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Singapore Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Singapore Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Singapore Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,72 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Singapore Standard Time
+X-LIC-LOCATION:Singapore Standard Time
+BEGIN:STANDARD
+DTSTART:19010101T000000
+RDATE:19010101T000000
+TZNAME:SMT
+TZOFFSETFROM:+065525
+TZOFFSETTO:+065525
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19050601T000000
+RDATE:19050601T000000
+TZNAME:MALT
+TZOFFSETFROM:+065525
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19330101T000000
+RDATE:19330101T000000
+TZNAME:MALST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0720
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19360101T000000
+RDATE:19360101T000000
+TZNAME:MALT
+TZOFFSETFROM:+0720
+TZOFFSETTO:+0720
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19410901T000000
+RDATE:19410901T000000
+TZNAME:MALT
+TZOFFSETFROM:+0720
+TZOFFSETTO:+0730
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420216T000000
+RDATE:19420216T000000
+TZNAME:JST
+TZOFFSETFROM:+0730
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19450912T000000
+RDATE:19450912T000000
+TZNAME:MALT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0730
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19650809T000000
+RDATE:19650809T000000
+TZNAME:SGT
+TZOFFSETFROM:+0730
+TZOFFSETTO:+0730
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19820101T000000
+RDATE:19820101T000000
+TZNAME:SGT
+TZOFFSETFROM:+0730
+TZOFFSETTO:+0800
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/South Africa Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/South Africa Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/South Africa Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/South Africa Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:South Africa Standard Time
+X-LIC-LOCATION:South Africa Standard Time
+BEGIN:STANDARD
+DTSTART:18920208T000000
+RDATE:18920208T000000
+TZNAME:SAST
+TZOFFSETFROM:+0152
+TZOFFSETTO:+0130
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19030301T000000
+RDATE:19030301T000000
+TZNAME:SAST
+TZOFFSETFROM:+0130
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420920T020000
+RRULE:FREQ=YEARLY;UNTIL=19430919T000000Z;BYDAY=3SU;BYMONTH=9
+TZNAME:SAST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19430321T020000
+RRULE:FREQ=YEARLY;UNTIL=19440318T230000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:SAST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Sri Lanka Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Sri Lanka Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Sri Lanka Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Sri Lanka Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,65 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Sri Lanka Standard Time
+X-LIC-LOCATION:Sri Lanka Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:MMT
+TZOFFSETFROM:+051924
+TZOFFSETTO:+051932
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19060101T000000
+RDATE:19060101T000000
+TZNAME:IST
+TZOFFSETFROM:+051932
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420105T000000
+RDATE:19420105T000000
+TZNAME:IHST
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19420901T000000
+RDATE:19420901T000000
+TZNAME:IST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19451016T020000
+RDATE:19451016T020000
+TZNAME:IST
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0530
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19960525T000000
+RDATE:19960525T000000
+TZNAME:LKT
+TZOFFSETFROM:+0530
+TZOFFSETTO:+0630
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961026T003000
+RDATE:19961026T003000
+TZNAME:LKT
+TZOFFSETFROM:+0630
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20060415T003000
+RDATE:20060415T003000
+TZNAME:IST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0530
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Syria Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Syria Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Syria Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Syria Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,171 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Syria Standard Time
+X-LIC-LOCATION:Syria Standard Time
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+TZNAME:EEST
+TZOFFSETFROM:+022512
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200418T020000
+RRULE:FREQ=YEARLY;UNTIL=19230415T000000Z;BYDAY=3SU;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201003T020000
+RRULE:FREQ=YEARLY;UNTIL=19231006T230000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19620429T020000
+RDATE:19620429T020000
+RDATE:19660424T020000
+RDATE:19860216T020000
+RDATE:19870301T020000
+RDATE:19880315T020000
+RDATE:19890331T020000
+RDATE:19900401T020000
+RDATE:19910401T000000
+RDATE:19920408T000000
+RDATE:19930326T000000
+RDATE:20070330T000000
+RDATE:20080404T000000
+RDATE:20090327T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19621001T020000
+RDATE:19621001T020000
+RDATE:19630930T020000
+RDATE:19641001T020000
+RDATE:19650930T020000
+RDATE:19861009T020000
+RDATE:19891001T020000
+RDATE:19900930T020000
+RDATE:19930925T000000
+RDATE:20060922T000000
+RDATE:20071102T000000
+RDATE:20081101T000000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19630501T020000
+RRULE:FREQ=YEARLY;UNTIL=19650501T000000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19661001T020000
+RRULE:FREQ=YEARLY;UNTIL=19760930T230000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670501T020000
+RRULE:FREQ=YEARLY;UNTIL=19780501T000000Z;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19770901T020000
+RRULE:FREQ=YEARLY;UNTIL=19780831T230000Z;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19830409T020000
+RRULE:FREQ=YEARLY;UNTIL=19840409T000000Z;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19831001T020000
+RRULE:FREQ=YEARLY;UNTIL=19840930T230000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19871031T020000
+RRULE:FREQ=YEARLY;UNTIL=19881030T230000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19911001T000000
+RRULE:FREQ=YEARLY;UNTIL=19920930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19940401T000000
+RRULE:FREQ=YEARLY;UNTIL=19960331T220000Z;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19941001T000000
+RRULE:FREQ=YEARLY;UNTIL=20050930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19970331T000000
+RRULE:FREQ=YEARLY;UNTIL=19980329T220000Z;BYDAY=-1MO;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19990401T000000
+RRULE:FREQ=YEARLY;UNTIL=20060331T220000Z;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20091030T000000
+RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20100402T000000
+RRULE:FREQ=YEARLY;UNTIL=20110331T220000Z;BYDAY=1FR;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20120330T000000
+RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Taipei Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Taipei Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Taipei Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Taipei Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,87 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Taipei Standard Time
+X-LIC-LOCATION:Taipei Standard Time
+BEGIN:STANDARD
+DTSTART:18960101T000000
+RDATE:18960101T000000
+TZNAME:CST
+TZOFFSETFROM:+0806
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19450501T000000
+RRULE:FREQ=YEARLY;UNTIL=19510430T160000Z;BYMONTH=5
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19451001T000000
+RRULE:FREQ=YEARLY;UNTIL=19510930T150000Z;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19520301T000000
+RDATE:19520301T000000
+RDATE:19790630T000000
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19521101T000000
+RRULE:FREQ=YEARLY;UNTIL=19541031T150000Z;BYMONTH=11
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19530401T000000
+RRULE:FREQ=YEARLY;UNTIL=19590331T160000Z;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19551001T000000
+RRULE:FREQ=YEARLY;UNTIL=19610930T150000Z;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19600601T000000
+RRULE:FREQ=YEARLY;UNTIL=19610531T160000Z;BYMONTH=6
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19740401T000000
+RRULE:FREQ=YEARLY;UNTIL=19750331T160000Z;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19741001T000000
+RRULE:FREQ=YEARLY;UNTIL=19750930T150000Z;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19790930T000000
+RDATE:19790930T000000
+TZNAME:CST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tasmania Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Tasmania Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tasmania Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tasmania Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,146 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Tasmania Standard Time
+X-LIC-LOCATION:Tasmania Standard Time
+BEGIN:STANDARD
+DTSTART:18950901T000000
+RDATE:18950901T000000
+TZNAME:EST
+TZOFFSETFROM:+094916
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19161001T020000
+RDATE:19161001T020000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19170201T000000
+RDATE:19170201T000000
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19170325T020000
+RDATE:19170325T020000
+RDATE:19420329T020000
+RDATE:19680331T030000
+RDATE:19720227T030000
+RDATE:20060402T030000
+RDATE:20070325T030000
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420101T020000
+RDATE:19420101T020000
+RDATE:19420927T020000
+RDATE:19431003T020000
+RDATE:19671001T020000
+RDATE:19861019T020000
+RDATE:19871025T020000
+RDATE:20000827T020000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19430328T020000
+RRULE:FREQ=YEARLY;UNTIL=19440325T150000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19670101T000000
+RDATE:19670101T000000
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19681027T020000
+RRULE:FREQ=YEARLY;UNTIL=19851026T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19690309T030000
+RRULE:FREQ=YEARLY;UNTIL=19710313T160000Z;BYDAY=2SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19730304T030000
+RRULE:FREQ=YEARLY;UNTIL=19810228T160000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19820328T030000
+RRULE:FREQ=YEARLY;UNTIL=19830326T160000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840304T030000
+RRULE:FREQ=YEARLY;UNTIL=19860301T160000Z;BYDAY=1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19870315T030000
+RRULE:FREQ=YEARLY;UNTIL=19900317T160000Z;BYDAY=3SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19881030T020000
+RRULE:FREQ=YEARLY;UNTIL=19901027T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T030000
+RRULE:FREQ=YEARLY;UNTIL=20050326T160000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19911006T020000
+RRULE:FREQ=YEARLY;UNTIL=19991002T160000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20011007T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20080406T030000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EST
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tokyo Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Tokyo Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tokyo Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tokyo Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,52 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Tokyo Standard Time
+X-LIC-LOCATION:Tokyo Standard Time
+BEGIN:STANDARD
+DTSTART:18880101T001859
+RDATE:18880101T001859
+TZNAME:JST
+TZOFFSETFROM:+091859
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:18960101T000000
+RDATE:18960101T000000
+TZNAME:CJT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19380101T000000
+RDATE:19380101T000000
+TZNAME:JST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19480502T020000
+RDATE:19480502T020000
+RDATE:19490403T020000
+TZNAME:JDT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19480911T020000
+RRULE:FREQ=YEARLY;UNTIL=19510907T160000Z;BYDAY=2SA;BYMONTH=9
+TZNAME:JST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19500507T020000
+RRULE:FREQ=YEARLY;UNTIL=19510505T170000Z;BYDAY=1SU;BYMONTH=5
+TZNAME:JDT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tonga Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Tonga Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tonga Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Tonga Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,58 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Tonga Standard Time
+X-LIC-LOCATION:Tonga Standard Time
+BEGIN:STANDARD
+DTSTART:19010101T000000
+RDATE:19010101T000000
+TZNAME:TOT
+TZOFFSETFROM:+121920
+TZOFFSETTO:+1220
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19410101T000000
+RDATE:19410101T000000
+TZNAME:TOT
+TZOFFSETFROM:+1220
+TZOFFSETTO:+1300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19990101T000000
+RDATE:19990101T000000
+TZNAME:TOST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19991007T020000
+RDATE:19991007T020000
+TZNAME:TOST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20000319T030000
+RDATE:20000319T030000
+TZNAME:TOT
+TZOFFSETFROM:+1400
+TZOFFSETTO:+1300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20001105T020000
+RRULE:FREQ=YEARLY;UNTIL=20011103T130000Z;BYDAY=1SU;BYMONTH=11
+TZNAME:TOST
+TZOFFSETFROM:+1300
+TZOFFSETTO:+1400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20010128T020000
+RRULE:FREQ=YEARLY;UNTIL=20020126T120000Z;BYDAY=-1SU;BYMONTH=1
+TZNAME:TOT
+TZOFFSETFROM:+1400
+TZOFFSETTO:+1300
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Turkey Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Turkey Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Turkey Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Turkey Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,280 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Turkey Standard Time
+X-LIC-LOCATION:Turkey Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:IMT
+TZOFFSETFROM:+015552
+TZOFFSETTO:+015656
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19101001T000000
+RDATE:19101001T000000
+TZNAME:EEST
+TZOFFSETFROM:+015656
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160501T000000
+RDATE:19160501T000000
+RDATE:19200328T000000
+RDATE:19210403T000000
+RDATE:19220326T000000
+RDATE:19240513T000000
+RDATE:19250501T000000
+RDATE:19400630T000000
+RDATE:19401201T000000
+RDATE:19420401T000000
+RDATE:19450402T000000
+RDATE:19460601T000000
+RDATE:19490410T000000
+RDATE:19500419T000000
+RDATE:19510422T000000
+RDATE:19620715T000000
+RDATE:19640515T000000
+RDATE:19730603T010000
+RDATE:19740331T020000
+RDATE:19750330T000000
+RDATE:19760601T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T000000
+RDATE:19161001T000000
+RDATE:19201025T000000
+RDATE:19211003T000000
+RDATE:19221008T000000
+RDATE:19401005T000000
+RDATE:19410921T000000
+RDATE:19421101T000000
+RDATE:19451008T000000
+RDATE:19461001T000000
+RDATE:19511008T000000
+RDATE:19621008T000000
+RDATE:19641001T000000
+RDATE:19731104T030000
+RDATE:19741103T050000
+RDATE:19771016T000000
+RDATE:19850928T000000
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19241001T000000
+RRULE:FREQ=YEARLY;UNTIL=19250930T210000Z;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19470420T000000
+RRULE:FREQ=YEARLY;UNTIL=19480417T220000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19471005T000000
+RRULE:FREQ=YEARLY;UNTIL=19501007T210000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19700503T000000
+RRULE:FREQ=YEARLY;UNTIL=19720506T220000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=5
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19701004T000000
+RRULE:FREQ=YEARLY;UNTIL=19721007T210000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19751026T000000
+RRULE:FREQ=YEARLY;UNTIL=19761030T210000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19770403T000000
+RRULE:FREQ=YEARLY;UNTIL=19780401T220000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19781015T000000
+RDATE:19781015T000000
+TZNAME:TRST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19790401T030000
+RDATE:19790401T030000
+TZNAME:TRST
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19791015T000000
+RRULE:FREQ=YEARLY;UNTIL=19821010T200000Z;BYDAY=-3MO;BYMONTH=10
+TZNAME:TRT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19800406T030000
+RRULE:FREQ=YEARLY;UNTIL=19800406T000000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:TRST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19810329T030000
+RRULE:FREQ=YEARLY;UNTIL=19820328T000000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:TRST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19830731T000000
+RDATE:19830731T000000
+TZNAME:TRST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19831002T000000
+RDATE:19831002T000000
+TZNAME:TRT
+TZOFFSETFROM:+0400
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19850420T000000
+RDATE:19850420T000000
+TZNAME:EEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19860330T020000
+RRULE:FREQ=YEARLY;UNTIL=19900325T000000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19860928T030000
+RRULE:FREQ=YEARLY;UNTIL=19900930T000000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19910331T010000
+RRULE:FREQ=YEARLY;UNTIL=20060325T230000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910929T020000
+RRULE:FREQ=YEARLY;UNTIL=19950923T230000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;UNTIL=20061028T230000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20070101T000000
+RDATE:20070101T000000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20070325T030000
+RRULE:FREQ=YEARLY;UNTIL=20100328T010000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071028T040000
+RRULE:FREQ=YEARLY;UNTIL=20101031T010000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T030000
+RDATE:20110327T030000
+RDATE:20140330T030000
+TZNAME:EET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110328T030000
+RDATE:20110328T030000
+RDATE:20140331T030000
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20111030T040000
+RRULE:FREQ=YEARLY;UNTIL=20131027T010000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20120325T030000
+RRULE:FREQ=YEARLY;UNTIL=20130331T010000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20141026T040000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EET
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20150329T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:EEST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Eastern Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/US Eastern Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Eastern Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Eastern Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,142 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:US Eastern Standard Time
+X-LIC-LOCATION:US Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:18831118T121522
+RDATE:18831118T121522
+TZNAME:CST
+TZOFFSETFROM:-054438
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T080000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T070000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+RDATE:19420101T000000
+RDATE:19460101T000000
+TZNAME:CST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19410622T020000
+RDATE:19410622T020000
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19410928T020000
+RDATE:19410928T020000
+RDATE:19450930T020000
+RDATE:19570929T020000
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:CWT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T180000
+RDATE:19450814T180000
+TZNAME:CPT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19460428T020000
+RRULE:FREQ=YEARLY;UNTIL=19540425T080000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:CDT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460929T020000
+RRULE:FREQ=YEARLY;UNTIL=19540926T070000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19550424T020000
+RDATE:19550424T020000
+RDATE:19580427T020000
+TZNAME:EST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19690101T000000
+RDATE:19690101T000000
+RDATE:19710101T000000
+RDATE:20060101T000000
+TZNAME:EST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19690427T020000
+RRULE:FREQ=YEARLY;UNTIL=19700426T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19691026T020000
+RRULE:FREQ=YEARLY;UNTIL=19701025T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20060402T020000
+RDATE:20060402T020000
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20061029T020000
+RDATE:20061029T020000
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Mountain Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/US Mountain Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Mountain Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/US Mountain Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,68 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:US Mountain Standard Time
+X-LIC-LOCATION:US Mountain Standard Time
+BEGIN:STANDARD
+DTSTART:18831118T113142
+RDATE:18831118T113142
+TZNAME:MST
+TZOFFSETFROM:-072818
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T090000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T080000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:MWT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19440101T000100
+RDATE:19440101T000100
+RDATE:19441001T000100
+RDATE:19671029T020000
+TZNAME:MST
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19440401T000100
+RDATE:19440401T000100
+TZNAME:MST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19670101T000000
+RDATE:19670101T000000
+RDATE:19680321T000000
+TZNAME:MST
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0700
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RDATE:19670430T020000
+TZNAME:MDT
+TZOFFSETFROM:-0700
+TZOFFSETTO:-0600
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC+12.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/UTC+12.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC+12.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC+12.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:UTC+12
+X-LIC-LOCATION:UTC+12
+BEGIN:STANDARD
+DTSTART:18000101T120000
+RDATE:18000101T120000
+TZNAME:GMT-12
+TZOFFSETFROM:+1200
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-02.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/UTC-02.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-02.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-02.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:UTC-02
+X-LIC-LOCATION:UTC-02
+BEGIN:STANDARD
+DTSTART:18000101T000000
+RDATE:18000101T000000
+TZNAME:GMT+2
+TZOFFSETFROM:-0200
+TZOFFSETTO:-0200
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-11.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/UTC-11.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-11.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/UTC-11.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:UTC-11
+X-LIC-LOCATION:UTC-11
+BEGIN:STANDARD
+DTSTART:18000101T000000
+RDATE:18000101T000000
+TZNAME:GMT+11
+TZOFFSETFROM:-1100
+TZOFFSETTO:-1100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ulaanbaatar Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Ulaanbaatar Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ulaanbaatar Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Ulaanbaatar Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,72 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Ulaanbaatar Standard Time
+X-LIC-LOCATION:Ulaanbaatar Standard Time
+BEGIN:STANDARD
+DTSTART:19050801T000000
+RDATE:19050801T000000
+TZNAME:ULAT
+TZOFFSETFROM:+070732
+TZOFFSETTO:+0700
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19780101T000000
+RDATE:19780101T000000
+TZNAME:ULAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19830401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T160000Z;BYMONTH=4
+TZNAME:ULAST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19831001T000000
+RDATE:19831001T000000
+TZNAME:ULAT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T000000
+RRULE:FREQ=YEARLY;UNTIL=19980926T150000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:ULAT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T000000
+RRULE:FREQ=YEARLY;UNTIL=19980328T160000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:ULAST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20010428T020000
+RDATE:20010428T020000
+TZNAME:ULAST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20010929T020000
+RRULE:FREQ=YEARLY;UNTIL=20060929T170000Z;BYDAY=-1SA;BYMONTH=9
+TZNAME:ULAT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20020330T020000
+RRULE:FREQ=YEARLY;UNTIL=20060324T180000Z;BYDAY=-1SA;BYMONTH=3
+TZNAME:ULAST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Venezuela Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Venezuela Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Venezuela Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Venezuela Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,37 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Venezuela Standard Time
+X-LIC-LOCATION:Venezuela Standard Time
+BEGIN:STANDARD
+DTSTART:18900101T000000
+RDATE:18900101T000000
+TZNAME:CMT
+TZOFFSETFROM:-042744
+TZOFFSETTO:-042740
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19120212T000000
+RDATE:19120212T000000
+TZNAME:VET
+TZOFFSETFROM:-042740
+TZOFFSETTO:-0430
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19650101T000000
+RDATE:19650101T000000
+TZNAME:VET
+TZOFFSETFROM:-0430
+TZOFFSETTO:-0400
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20071209T030000
+RDATE:20071209T030000
+TZNAME:VET
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0430
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Vladivostok Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Vladivostok Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Vladivostok Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Vladivostok Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,108 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Vladivostok Standard Time
+X-LIC-LOCATION:Vladivostok Standard Time
+BEGIN:STANDARD
+DTSTART:19221115T000000
+RDATE:19221115T000000
+TZNAME:VLAT
+TZOFFSETFROM:+084744
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:VLAST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T140000Z;BYMONTH=4
+TZNAME:VLAST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T130000Z;BYMONTH=10
+TZNAME:VLAT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T160000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:VLAT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T160000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:VLAST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:VLASST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:VLAST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:VLAST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:VLAT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T160000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:VLAST
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T160000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:VLAT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T160000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:VLAT
+TZOFFSETFROM:+1100
+TZOFFSETTO:+1000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:VLAT
+TZOFFSETFROM:+1000
+TZOFFSETTO:+1100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Australia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/W. Australia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Australia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Australia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,62 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:W. Australia Standard Time
+X-LIC-LOCATION:W. Australia Standard Time
+BEGIN:STANDARD
+DTSTART:18951201T000000
+RDATE:18951201T000000
+TZNAME:WST
+TZOFFSETFROM:+074324
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170101T000100
+RDATE:19170101T000100
+RDATE:19420101T020000
+RDATE:19420927T020000
+RDATE:19741027T020000
+RDATE:19831030T020000
+RDATE:19911117T020000
+RDATE:20061203T020000
+TZNAME:WST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170325T020000
+RDATE:19170325T020000
+RDATE:19420329T020000
+RDATE:19430328T020000
+RDATE:19750302T030000
+RDATE:19840304T030000
+RDATE:19920301T030000
+TZNAME:WST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19430701T000000
+RDATE:19430701T000000
+TZNAME:WST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20070325T030000
+RRULE:FREQ=YEARLY;UNTIL=20090328T180000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:WST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20071028T020000
+RRULE:FREQ=YEARLY;UNTIL=20081025T180000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:WST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:DAYLIGHT
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Central Africa Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/W. Central Africa Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Central Africa Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Central Africa Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,16 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:W. Central Africa Standard Time
+X-LIC-LOCATION:W. Central Africa Standard Time
+BEGIN:STANDARD
+DTSTART:19190901T000000
+RDATE:19190901T000000
+TZNAME:WAT
+TZOFFSETFROM:+001336
+TZOFFSETTO:+0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Europe Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/W. Europe Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Europe Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/W. Europe Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,115 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:W. Europe Standard Time
+X-LIC-LOCATION:W. Europe Standard Time
+BEGIN:STANDARD
+DTSTART:18930401T000000
+RDATE:18930401T000000
+TZNAME:CEST
+TZOFFSETFROM:+005328
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160430T230000
+RDATE:19160430T230000
+RDATE:19400401T020000
+RDATE:19430329T020000
+RDATE:19460414T020000
+RDATE:19470406T030000
+RDATE:19480418T020000
+RDATE:19490410T020000
+RDATE:19800406T020000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T010000
+RDATE:19161001T010000
+RDATE:19421102T030000
+RDATE:19431004T030000
+RDATE:19441002T030000
+RDATE:19451118T030000
+RDATE:19461007T030000
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19170416T020000
+RRULE:FREQ=YEARLY;UNTIL=19180415T010000Z;BYDAY=3MO;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19170917T030000
+RRULE:FREQ=YEARLY;UNTIL=19180916T010000Z;BYDAY=3MO;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19440403T020000
+RRULE:FREQ=YEARLY;UNTIL=19450402T010000Z;BYDAY=1MO;BYMONTH=4
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450524T020000
+RDATE:19450524T020000
+RDATE:19470511T030000
+TZNAME:CEMT
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0300
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450924T030000
+RDATE:19450924T030000
+RDATE:19470629T030000
+TZNAME:CEST
+TZOFFSETFROM:+0300
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460101T000000
+RDATE:19460101T000000
+RDATE:19800101T000000
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19471005T030000
+RRULE:FREQ=YEARLY;UNTIL=19491002T010000Z;BYDAY=1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19800928T030000
+RRULE:FREQ=YEARLY;UNTIL=19950924T010000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:CEST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:CET
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Asia Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/West Asia Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Asia Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Asia Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,79 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:West Asia Standard Time
+X-LIC-LOCATION:West Asia Standard Time
+BEGIN:STANDARD
+DTSTART:19240502T000000
+RDATE:19240502T000000
+TZNAME:TAST
+TZOFFSETFROM:+043712
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+TZNAME:TASST
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T180000Z;BYMONTH=4
+TZNAME:TASST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T170000Z;BYMONTH=10
+TZNAME:TAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T200000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:TAST
+TZOFFSETFROM:+0700
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T200000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:TASST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0700
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:TASST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910901T000000
+RDATE:19910901T000000
+TZNAME:UZST
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0600
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:UZT
+TZOFFSETFROM:+0600
+TZOFFSETTO:+0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19920101T000000
+RDATE:19920101T000000
+TZNAME:UZT
+TZOFFSETFROM:+0500
+TZOFFSETTO:+0500
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Pacific Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/West Pacific Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Pacific Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/West Pacific Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,23 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:West Pacific Standard Time
+X-LIC-LOCATION:West Pacific Standard Time
+BEGIN:STANDARD
+DTSTART:18800101T000000
+RDATE:18800101T000000
+TZNAME:PMMT
+TZOFFSETFROM:+094840
+TZOFFSETTO:+094832
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:18950101T000000
+RDATE:18950101T000000
+TZNAME:PGT
+TZOFFSETFROM:+094832
+TZOFFSETTO:+1000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Copied: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Yakutsk Standard Time.ics (from rev 13629, CalendarServer/trunk/twistedcaldav/zoneinfo/Yakutsk Standard Time.ics)
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Yakutsk Standard Time.ics	                        (rev 0)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/Yakutsk Standard Time.ics	2014-06-11 03:50:42 UTC (rev 13630)
@@ -0,0 +1,108 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+BEGIN:VTIMEZONE
+TZID:Yakutsk Standard Time
+X-LIC-LOCATION:Yakutsk Standard Time
+BEGIN:STANDARD
+DTSTART:19191215T000000
+RDATE:19191215T000000
+TZNAME:YAKT
+TZOFFSETFROM:+083840
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19300621T000000
+RDATE:19300621T000000
+RDATE:19920119T020000
+TZNAME:YAKST
+TZOFFSETFROM:+0800
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810401T000000
+RRULE:FREQ=YEARLY;UNTIL=19840331T150000Z;BYMONTH=4
+TZNAME:YAKST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811001T000000
+RRULE:FREQ=YEARLY;UNTIL=19830930T140000Z;BYMONTH=10
+TZNAME:YAKT
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19840930T030000
+RRULE:FREQ=YEARLY;UNTIL=19900929T170000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:YAKT
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19850331T020000
+RRULE:FREQ=YEARLY;UNTIL=19900324T170000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:YAKST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19910331T020000
+RDATE:19910331T020000
+TZNAME:YAKST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19910929T030000
+RDATE:19910929T030000
+TZNAME:YAKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+0800
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19920328T230000
+RDATE:19920328T230000
+TZNAME:YAKST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19920926T230000
+RDATE:19920926T230000
+TZNAME:YAKT
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19930328T020000
+RRULE:FREQ=YEARLY;UNTIL=20100327T170000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:YAKST
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19930926T030000
+RRULE:FREQ=YEARLY;UNTIL=19950923T170000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:YAKT
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19961027T030000
+RRULE:FREQ=YEARLY;UNTIL=20101030T170000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:YAKT
+TZOFFSETFROM:+1000
+TZOFFSETTO:+0900
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:20110327T020000
+RDATE:20110327T020000
+TZNAME:YAKT
+TZOFFSETFROM:+0900
+TZOFFSETTO:+1000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/links.txt
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/links.txt	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/links.txt	2014-06-11 03:50:42 UTC (rev 13630)
@@ -1,154 +1,252 @@
-America/Virgin	America/Port_of_Spain
+AUS Central Standard Time	Australia/Darwin
+AUS Eastern Standard Time	Australia/Sydney
+Afghanistan Standard Time	Asia/Kabul
+Africa/Asmera	Africa/Asmara
+Africa/Juba	Africa/Khartoum
+Africa/Timbuktu	Africa/Bamako
+Alaskan Standard Time	America/Anchorage
+America/Anguilla	America/Port_of_Spain
+America/Argentina/ComodRivadavia	America/Argentina/Catamarca
+America/Aruba	America/Curacao
+America/Atka	America/Adak
 America/Buenos_Aires	America/Argentina/Buenos_Aires
-Hongkong	Asia/Hong_Kong
-Etc/GMT+0	Etc/GMT
-Asia/Calcutta	Asia/Kolkata
-Australia/South	Australia/Adelaide
-America/Atka	America/Adak
+America/Catamarca	America/Argentina/Catamarca
 America/Coral_Harbour	America/Atikokan
-America/St_Lucia	America/Port_of_Spain
-Canada/Newfoundland	America/St_Johns
-America/Montserrat	America/Port_of_Spain
-PRC	Asia/Shanghai
-US/Mountain	America/Denver
-Asia/Thimbu	Asia/Thimphu
-America/Shiprock	America/Denver
+America/Cordoba	America/Argentina/Cordoba
+America/Dominica	America/Port_of_Spain
+America/Ensenada	America/Tijuana
+America/Fort_Wayne	America/Indiana/Indianapolis
 America/Grenada	America/Port_of_Spain
-Europe/Podgorica	Europe/Belgrade
-Africa/Juba	Africa/Khartoum
-Brazil/DeNoronha	America/Noronha
-Jamaica	America/Jamaica
-Arctic/Longyearbyen	Europe/Oslo
-Europe/Guernsey	Europe/London
-GB	Europe/London
-America/Aruba	America/Curacao
-Chile/EasterIsland	Pacific/Easter
-Etc/Universal	Etc/UTC
-Navajo	America/Denver
+America/Guadeloupe	America/Port_of_Spain
 America/Indianapolis	America/Indiana/Indianapolis
-Pacific/Truk	Pacific/Chuuk
-Canada/Mountain	America/Edmonton
-Pacific/Yap	Pacific/Chuuk
-America/Ensenada	America/Tijuana
-Europe/Sarajevo	Europe/Belgrade
-Universal	Etc/UTC
-Turkey	Europe/Istanbul
 America/Jujuy	America/Argentina/Jujuy
-America/Cordoba	America/Argentina/Cordoba
-Europe/Skopje	Europe/Belgrade
+America/Knox_IN	America/Indiana/Knox
 America/Kralendijk	America/Curacao
-Australia/Tasmania	Australia/Hobart
-Europe/Jersey	Europe/London
-Europe/Nicosia	Asia/Nicosia
-Asia/Macao	Asia/Macau
-Australia/Canberra	Australia/Sydney
-ROK	Asia/Seoul
-US/Hawaii	Pacific/Honolulu
-Asia/Ujung_Pandang	Asia/Makassar
-Cuba	America/Havana
-Asia/Saigon	Asia/Ho_Chi_Minh
-ROC	Asia/Taipei
 America/Louisville	America/Kentucky/Louisville
+America/Lower_Princes	America/Curacao
+America/Marigot	America/Port_of_Spain
+America/Mendoza	America/Argentina/Mendoza
+America/Montserrat	America/Port_of_Spain
+America/Porto_Acre	America/Rio_Branco
+America/Rosario	America/Argentina/Cordoba
+America/Shiprock	America/Denver
 America/St_Barthelemy	America/Port_of_Spain
+America/St_Kitts	America/Port_of_Spain
+America/St_Lucia	America/Port_of_Spain
 America/St_Thomas	America/Port_of_Spain
-America/Porto_Acre	America/Rio_Branco
-America/Rosario	America/Argentina/Cordoba
-America/Guadeloupe	America/Port_of_Spain
-Australia/West	Australia/Perth
-US/Eastern	America/New_York
-Libya	Africa/Tripoli
-America/Fort_Wayne	America/Indiana/Indianapolis
+America/St_Vincent	America/Port_of_Spain
+America/Tortola	America/Port_of_Spain
+America/Virgin	America/Port_of_Spain
 Antarctica/McMurdo	Pacific/Auckland
-Canada/Saskatchewan	America/Regina
-Canada/Pacific	America/Vancouver
-Canada/Eastern	America/Toronto
-Iran	Asia/Tehran
-GB-Eire	Europe/London
-Etc/Greenwich	Etc/GMT
-Atlantic/Jan_Mayen	Europe/Oslo
-US/Central	America/Chicago
-America/St_Vincent	America/Port_of_Spain
-US/Pacific	America/Los_Angeles
-Portugal	Europe/Lisbon
-Europe/Tiraspol	Europe/Chisinau
-Europe/Busingen	Europe/Zurich
+Antarctica/South_Pole	Pacific/Auckland
+Arab Standard Time	Asia/Riyadh
+Arabian Standard Time	Asia/Dubai
+Arabic Standard Time	Asia/Baghdad
+Arctic/Longyearbyen	Europe/Oslo
+Argentina Standard Time	America/Buenos_Aires
+Asia/Ashkhabad	Asia/Ashgabat
+Asia/Calcutta	Asia/Kolkata
+Asia/Chungking	Asia/Chongqing
+Asia/Dacca	Asia/Dhaka
+Asia/Istanbul	Europe/Istanbul
 Asia/Katmandu	Asia/Kathmandu
-Etc/GMT0	Etc/GMT
-Pacific/Ponape	Pacific/Pohnpei
-Japan	Asia/Tokyo
+Asia/Macao	Asia/Macau
+Asia/Saigon	Asia/Ho_Chi_Minh
+Asia/Tel_Aviv	Asia/Jerusalem
+Asia/Thimbu	Asia/Thimphu
+Asia/Ujung_Pandang	Asia/Makassar
 Asia/Ulan_Bator	Asia/Ulaanbaatar
-Kwajalein	Pacific/Kwajalein
+Atlantic Standard Time	America/Halifax
+Atlantic/Faeroe	Atlantic/Faroe
+Atlantic/Jan_Mayen	Europe/Oslo
+Australia/ACT	Australia/Sydney
+Australia/Canberra	Australia/Sydney
+Australia/LHI	Australia/Lord_Howe
+Australia/NSW	Australia/Sydney
+Australia/North	Australia/Darwin
+Australia/Queensland	Australia/Brisbane
+Australia/South	Australia/Adelaide
+Australia/Tasmania	Australia/Hobart
+Australia/Victoria	Australia/Melbourne
+Australia/West	Australia/Perth
 Australia/Yancowinna	Australia/Broken_Hill
-America/Marigot	America/Port_of_Spain
-America/Lower_Princes	America/Curacao
-Greenwich	Etc/GMT
-America/Mendoza	America/Argentina/Mendoza
-Asia/Dacca	Asia/Dhaka
-US/East-Indiana	America/Indiana/Indianapolis
-America/Argentina/ComodRivadavia	America/Argentina/Catamarca
+Azerbaijan Standard Time	Asia/Baku
+Azores Standard Time	Atlantic/Azores
+Bahia Standard Time	America/Bahia
+Bangladesh Standard Time	Asia/Dhaka
+Brazil/Acre	America/Rio_Branco
+Brazil/DeNoronha	America/Noronha
+Brazil/East	America/Sao_Paulo
+Brazil/West	America/Manaus
+Canada Central Standard Time	America/Regina
+Canada/Atlantic	America/Halifax
+Canada/Central	America/Winnipeg
 Canada/East-Saskatchewan	America/Regina
+Canada/Eastern	America/Toronto
+Canada/Mountain	America/Edmonton
+Canada/Newfoundland	America/St_Johns
+Canada/Pacific	America/Vancouver
+Canada/Saskatchewan	America/Regina
+Canada/Yukon	America/Whitehorse
+Cape Verde Standard Time	Atlantic/Cape_Verde
+Caucasus Standard Time	Asia/Yerevan
+Cen. Australia Standard Time	Australia/Adelaide
+Central America Standard Time	America/Guatemala
+Central Asia Standard Time	Asia/Almaty
+Central Brazilian Standard Time	America/Cuiaba
+Central Europe Standard Time	Europe/Budapest
+Central European Standard Time	Europe/Warsaw
+Central Pacific Standard Time	Pacific/Guadalcanal
+Central Standard Time	America/Chicago
+Central Standard Time (Mexico)	America/Mexico_City
 Chile/Continental	America/Santiago
-Asia/Tel_Aviv	Asia/Jerusalem
-Mexico/General	America/Mexico_City
-Asia/Istanbul	Europe/Istanbul
+Chile/EasterIsland	Pacific/Easter
+China Standard Time	Asia/Shanghai
+Cuba	America/Havana
+Dateline Standard Time	Etc/GMT+12
+E. Africa Standard Time	Africa/Nairobi
+E. Australia Standard Time	Australia/Brisbane
+E. South America Standard Time	America/Sao_Paulo
+Eastern Standard Time	America/New_York
+Egypt	Africa/Cairo
+Egypt Standard Time	Africa/Cairo
+Eire	Europe/Dublin
+Ekaterinburg Standard Time	Asia/Yekaterinburg
+Etc/GMT+0	Etc/GMT
+Etc/GMT-0	Etc/GMT
+Etc/GMT0	Etc/GMT
+Etc/Greenwich	Etc/GMT
+Etc/Universal	Etc/UTC
+Etc/Zulu	Etc/UTC
+Europe/Belfast	Europe/London
+Europe/Bratislava	Europe/Prague
+Europe/Busingen	Europe/Zurich
+Europe/Guernsey	Europe/London
 Europe/Isle_of_Man	Europe/London
+Europe/Jersey	Europe/London
+Europe/Ljubljana	Europe/Belgrade
+Europe/Mariehamn	Europe/Helsinki
+Europe/Nicosia	Asia/Nicosia
+Europe/Podgorica	Europe/Belgrade
+Europe/San_Marino	Europe/Rome
+Europe/Sarajevo	Europe/Belgrade
+Europe/Skopje	Europe/Belgrade
+Europe/Tiraspol	Europe/Chisinau
+Europe/Vaduz	Europe/Zurich
+Europe/Vatican	Europe/Rome
+Europe/Zagreb	Europe/Belgrade
+FLE Standard Time	Europe/Kiev
+Fiji Standard Time	Pacific/Fiji
+GB	Europe/London
+GB-Eire	Europe/London
+GMT	Etc/GMT
+GMT Standard Time	Europe/London
+GMT+0	Etc/GMT
+GMT-0	Etc/GMT
 GMT0	Etc/GMT
-Europe/Mariehamn	Europe/Helsinki
-Australia/Victoria	Australia/Melbourne
-US/Aleutian	America/Adak
-Australia/ACT	Australia/Sydney
-Australia/North	Australia/Darwin
-US/Samoa	Pacific/Pago_Pago
-US/Michigan	America/Detroit
-Asia/Chungking	Asia/Chongqing
+GTB Standard Time	Europe/Bucharest
+Georgian Standard Time	Asia/Tbilisi
+Greenland Standard Time	America/Godthab
+Greenwich	Etc/GMT
+Greenwich Standard Time	Atlantic/Reykjavik
+Hawaiian Standard Time	Pacific/Honolulu
+Hongkong	Asia/Hong_Kong
+Iceland	Atlantic/Reykjavik
+India Standard Time	Asia/Calcutta
+Iran	Asia/Tehran
+Iran Standard Time	Asia/Tehran
+Israel	Asia/Jerusalem
+Israel Standard Time	Asia/Jerusalem
+Jamaica	America/Jamaica
+Japan	Asia/Tokyo
+Jordan Standard Time	Asia/Amman
+Kaliningrad Standard Time	Europe/Kaliningrad
+Korea Standard Time	Asia/Seoul
+Kwajalein	Pacific/Kwajalein
+Libya	Africa/Tripoli
+Libya Standard Time	Africa/Tripoli
+Magadan Standard Time	Asia/Magadan
+Mauritius Standard Time	Indian/Mauritius
+Mexico/BajaNorte	America/Tijuana
+Mexico/BajaSur	America/Mazatlan
+Mexico/General	America/Mexico_City
+Middle East Standard Time	Asia/Beirut
+Montevideo Standard Time	America/Montevideo
+Morocco Standard Time	Africa/Casablanca
+Mountain Standard Time	America/Denver
+Mountain Standard Time (Mexico)	America/Chihuahua
+Myanmar Standard Time	Asia/Rangoon
+N. Central Asia Standard Time	Asia/Novosibirsk
 NZ	Pacific/Auckland
-Asia/Ashkhabad	Asia/Ashgabat
-America/Knox_IN	America/Indiana/Knox
-America/Catamarca	America/Argentina/Catamarca
-Zulu	Etc/UTC
-GMT+0	Etc/GMT
+NZ-CHAT	Pacific/Chatham
+Namibia Standard Time	Africa/Windhoek
+Navajo	America/Denver
+Nepal Standard Time	Asia/Katmandu
+New Zealand Standard Time	Pacific/Auckland
+Newfoundland Standard Time	America/St_Johns
+North Asia East Standard Time	Asia/Irkutsk
+North Asia Standard Time	Asia/Krasnoyarsk
+PRC	Asia/Shanghai
+Pacific SA Standard Time	America/Santiago
+Pacific Standard Time	America/Los_Angeles
+Pacific Standard Time (Mexico)	America/Santa_Isabel
+Pacific/Johnston	Pacific/Honolulu
+Pacific/Ponape	Pacific/Pohnpei
+Pacific/Samoa	Pacific/Pago_Pago
+Pacific/Truk	Pacific/Chuuk
+Pacific/Yap	Pacific/Chuuk
+Pakistan Standard Time	Asia/Karachi
+Paraguay Standard Time	America/Asuncion
 Poland	Europe/Warsaw
-Pacific/Samoa	Pacific/Pago_Pago
-US/Indiana-Starke	America/Indiana/Knox
-Australia/LHI	Australia/Lord_Howe
-Pacific/Johnston	Pacific/Honolulu
-GMT	Etc/GMT
-Canada/Yukon	America/Whitehorse
-Canada/Atlantic	America/Halifax
-US/Arizona	America/Phoenix
-Europe/San_Marino	Europe/Rome
-Australia/NSW	Australia/Sydney
-America/St_Kitts	America/Port_of_Spain
-Brazil/East	America/Sao_Paulo
-Etc/Zulu	Etc/UTC
+Portugal	Europe/Lisbon
+ROC	Asia/Taipei
+ROK	Asia/Seoul
+Romance Standard Time	Europe/Paris
+Russian Standard Time	Europe/Moscow
+SA Eastern Standard Time	America/Cayenne
+SA Pacific Standard Time	America/Bogota
+SA Western Standard Time	America/La_Paz
+SE Asia Standard Time	Asia/Bangkok
+Samoa Standard Time	Pacific/Apia
 Singapore	Asia/Singapore
-Europe/Ljubljana	Europe/Belgrade
+Singapore Standard Time	Asia/Singapore
+South Africa Standard Time	Africa/Johannesburg
+Sri Lanka Standard Time	Asia/Colombo
+Syria Standard Time	Asia/Damascus
+Taipei Standard Time	Asia/Taipei
+Tasmania Standard Time	Australia/Hobart
+Tokyo Standard Time	Asia/Tokyo
+Tonga Standard Time	Pacific/Tongatapu
+Turkey	Europe/Istanbul
+Turkey Standard Time	Europe/Istanbul
+UCT	Etc/UCT
+US Eastern Standard Time	America/Indianapolis
+US Mountain Standard Time	America/Phoenix
 US/Alaska	America/Anchorage
-Atlantic/Faeroe	Atlantic/Faroe
-Etc/GMT-0	Etc/GMT
-America/Anguilla	America/Port_of_Spain
-Israel	Asia/Jerusalem
-UCT	Etc/UCT
-NZ-CHAT	Pacific/Chatham
-Iceland	Atlantic/Reykjavik
-Brazil/Acre	America/Rio_Branco
-Europe/Vatican	Europe/Rome
-Australia/Queensland	Australia/Brisbane
-Africa/Timbuktu	Africa/Bamako
+US/Aleutian	America/Adak
+US/Arizona	America/Phoenix
+US/Central	America/Chicago
+US/East-Indiana	America/Indiana/Indianapolis
+US/Eastern	America/New_York
+US/Hawaii	Pacific/Honolulu
+US/Indiana-Starke	America/Indiana/Knox
+US/Michigan	America/Detroit
+US/Mountain	America/Denver
+US/Pacific	America/Los_Angeles
+US/Samoa	Pacific/Pago_Pago
 UTC	Etc/UTC
-Mexico/BajaNorte	America/Tijuana
-Eire	Europe/Dublin
-Europe/Zagreb	Europe/Belgrade
-Europe/Belfast	Europe/London
-Brazil/West	America/Manaus
-Mexico/BajaSur	America/Mazatlan
-Europe/Bratislava	Europe/Prague
-Canada/Central	America/Winnipeg
-GMT-0	Etc/GMT
+UTC+12	Etc/GMT-12
+UTC-02	Etc/GMT+2
+UTC-11	Etc/GMT+11
+Ulaanbaatar Standard Time	Asia/Ulaanbaatar
+Universal	Etc/UTC
+Venezuela Standard Time	America/Caracas
+Vladivostok Standard Time	Asia/Vladivostok
 W-SU	Europe/Moscow
-America/Dominica	America/Port_of_Spain
-Egypt	Africa/Cairo
-America/Tortola	America/Port_of_Spain
-Europe/Vaduz	Europe/Zurich
-Africa/Asmera	Africa/Asmara
-Antarctica/South_Pole	Pacific/Auckland
\ No newline at end of file
+W. Australia Standard Time	Australia/Perth
+W. Central Africa Standard Time	Africa/Lagos
+W. Europe Standard Time	Europe/Berlin
+West Asia Standard Time	Asia/Tashkent
+West Pacific Standard Time	Pacific/Port_Moresby
+Yakutsk Standard Time	Asia/Yakutsk
+Zulu	Etc/UTC
\ No newline at end of file

Modified: CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/timezones.xml
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/timezones.xml	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/twistedcaldav/zoneinfo/timezones.xml	2014-06-11 03:50:42 UTC (rev 13630)
@@ -2,8 +2,23 @@
 <!DOCTYPE timezones SYSTEM "timezones.dtd">
 
 <timezones>
-  <dtstamp>2014-05-30T18:27:48Z</dtstamp>
+  <dtstamp>2014-06-09T19:47:04Z</dtstamp>
   <timezone>
+    <tzid>AUS Central Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>942e93fd3bdd2d06bf96febe3bca4c11</md5>
+  </timezone>
+  <timezone>
+    <tzid>AUS Eastern Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>72b814a9cd04f2198b25d71f6099d0a1</md5>
+  </timezone>
+  <timezone>
+    <tzid>Afghanistan Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>411ffffe0c178625aa3f7f53c40f1319</md5>
+  </timezone>
+  <timezone>
     <tzid>Africa/Abidjan</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>dc9468decb9742f08bafcd6d65a50f32</md5>
@@ -74,11 +89,13 @@
     <tzid>Africa/Cairo</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <alias>Egypt</alias>
+    <alias>Egypt Standard Time</alias>
     <md5>42e3629db1f2e76ad81f9e078823ac99</md5>
   </timezone>
   <timezone>
     <tzid>Africa/Casablanca</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
+    <alias>Morocco Standard Time</alias>
     <md5>751312234a74ed078fc6ec8611615b11</md5>
   </timezone>
   <timezone>
@@ -134,6 +151,7 @@
   <timezone>
     <tzid>Africa/Johannesburg</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>South Africa Standard Time</alias>
     <md5>a39046b0f33a7af0af58c951b8766453</md5>
   </timezone>
   <timezone>
@@ -165,6 +183,7 @@
   <timezone>
     <tzid>Africa/Lagos</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>W. Central Africa Standard Time</alias>
     <md5>c22edde6ebc4dc407706841c17665286</md5>
   </timezone>
   <timezone>
@@ -225,6 +244,7 @@
   <timezone>
     <tzid>Africa/Nairobi</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>E. Africa Standard Time</alias>
     <md5>0f834f9942a32756fcf3ecb8bcfd6459</md5>
   </timezone>
   <timezone>
@@ -266,6 +286,7 @@
     <tzid>Africa/Tripoli</tzid>
     <dtstamp>2013-11-15T16:10:31Z</dtstamp>
     <alias>Libya</alias>
+    <alias>Libya Standard Time</alias>
     <md5>6e8040bfd898654905bfd0a49c64e365</md5>
   </timezone>
   <timezone>
@@ -276,9 +297,15 @@
   <timezone>
     <tzid>Africa/Windhoek</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Namibia Standard Time</alias>
     <md5>f289f3354d98138b5946f174a4f6048c</md5>
   </timezone>
   <timezone>
+    <tzid>Alaskan Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>14f9eaaf054aa32faa7b75c0e08c067b</md5>
+  </timezone>
+  <timezone>
     <tzid>America/Adak</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>America/Atka</alias>
@@ -289,6 +316,7 @@
     <tzid>America/Anchorage</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>US/Alaska</alias>
+    <alias>Alaskan Standard Time</alias>
     <md5>de9f2f0cfb6cf0265a48f3edf1dbfc8d</md5>
   </timezone>
   <timezone>
@@ -386,6 +414,7 @@
   <timezone>
     <tzid>America/Asuncion</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
+    <alias>Paraguay Standard Time</alias>
     <md5>b6d9cc532c073706f4b628e9558ff341</md5>
   </timezone>
   <timezone>
@@ -402,6 +431,7 @@
   <timezone>
     <tzid>America/Bahia</tzid>
     <dtstamp>2013-01-14T15:32:16Z</dtstamp>
+    <alias>Bahia Standard Time</alias>
     <md5>2d34d74119af2d61ac357e112a064897</md5>
   </timezone>
   <timezone>
@@ -437,6 +467,7 @@
   <timezone>
     <tzid>America/Bogota</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
+    <alias>SA Pacific Standard Time</alias>
     <md5>cca1c4cc5d1c3bf8c4253a8cd5456c09</md5>
   </timezone>
   <timezone>
@@ -447,6 +478,7 @@
   <timezone>
     <tzid>America/Buenos_Aires</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Argentina Standard Time</alias>
     <md5>8814f42968145e742683596ed2951683</md5>
   </timezone>
   <timezone>
@@ -467,6 +499,7 @@
   <timezone>
     <tzid>America/Caracas</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Venezuela Standard Time</alias>
     <md5>6a4df646dbe97d59022ea0aad3da0e48</md5>
   </timezone>
   <timezone>
@@ -477,6 +510,7 @@
   <timezone>
     <tzid>America/Cayenne</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>SA Eastern Standard Time</alias>
     <md5>298d74a0126387086229e0e55f0d4ef3</md5>
   </timezone>
   <timezone>
@@ -488,11 +522,13 @@
     <tzid>America/Chicago</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>US/Central</alias>
+    <alias>Central Standard Time</alias>
     <md5>afaa6e4df36635addbf6aafbf639a99d</md5>
   </timezone>
   <timezone>
     <tzid>America/Chihuahua</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Mountain Standard Time (Mexico)</alias>
     <md5>43622e982e100ca20b06991c4f938b50</md5>
   </timezone>
   <timezone>
@@ -518,6 +554,7 @@
   <timezone>
     <tzid>America/Cuiaba</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
+    <alias>Central Brazilian Standard Time</alias>
     <md5>239010d1e747a2638bdd58b161aaba7b</md5>
   </timezone>
   <timezone>
@@ -549,6 +586,7 @@
     <alias>US/Mountain</alias>
     <alias>America/Shiprock</alias>
     <alias>Navajo</alias>
+    <alias>Mountain Standard Time</alias>
     <md5>436e14808b14901d516be96a6cb63709</md5>
   </timezone>
   <timezone>
@@ -601,6 +639,7 @@
   <timezone>
     <tzid>America/Godthab</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Greenland Standard Time</alias>
     <md5>b164983aee94fca41a9c8cc6c84425ee</md5>
   </timezone>
   <timezone>
@@ -626,6 +665,7 @@
   <timezone>
     <tzid>America/Guatemala</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Central America Standard Time</alias>
     <md5>3f5dcae7aa6bebf3c51fad853b57f91e</md5>
   </timezone>
   <timezone>
@@ -642,6 +682,7 @@
     <tzid>America/Halifax</tzid>
     <dtstamp>2012-05-18T14:15:25Z</dtstamp>
     <alias>Canada/Atlantic</alias>
+    <alias>Atlantic Standard Time</alias>
     <md5>2bb95748970884a8c3a7503062c06f79</md5>
   </timezone>
   <timezone>
@@ -703,6 +744,7 @@
   <timezone>
     <tzid>America/Indianapolis</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>US Eastern Standard Time</alias>
     <md5>6e96ffc0ee1b866a61e213a74d73b92b</md5>
   </timezone>
   <timezone>
@@ -755,6 +797,7 @@
   <timezone>
     <tzid>America/La_Paz</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>SA Western Standard Time</alias>
     <md5>098e905a3dc2d7342fd4a966448557c8</md5>
   </timezone>
   <timezone>
@@ -766,6 +809,7 @@
     <tzid>America/Los_Angeles</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>US/Pacific</alias>
+    <alias>Pacific Standard Time</alias>
     <md5>fca9e0d643cee547beae8212c0b53443</md5>
   </timezone>
   <timezone>
@@ -839,6 +883,7 @@
     <tzid>America/Mexico_City</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Mexico/General</alias>
+    <alias>Central Standard Time (Mexico)</alias>
     <md5>2bf2d4a670f01d28901866cc57a13b62</md5>
   </timezone>
   <timezone>
@@ -859,6 +904,7 @@
   <timezone>
     <tzid>America/Montevideo</tzid>
     <dtstamp>2012-05-18T16:58:42Z</dtstamp>
+    <alias>Montevideo Standard Time</alias>
     <md5>c1279037560f5ffebea4f8ae500b751f</md5>
   </timezone>
   <timezone>
@@ -880,6 +926,7 @@
     <tzid>America/New_York</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>US/Eastern</alias>
+    <alias>Eastern Standard Time</alias>
     <md5>7f02ecc0b9c5f6a0145794886fb1e411</md5>
   </timezone>
   <timezone>
@@ -937,6 +984,7 @@
     <tzid>America/Phoenix</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>US/Arizona</alias>
+    <alias>US Mountain Standard Time</alias>
     <md5>36f6704008b6a5150fe6b7895c131c91</md5>
   </timezone>
   <timezone>
@@ -997,6 +1045,7 @@
     <dtstamp>2012-05-18T14:15:25Z</dtstamp>
     <alias>Canada/Saskatchewan</alias>
     <alias>Canada/East-Saskatchewan</alias>
+    <alias>Canada Central Standard Time</alias>
     <md5>2a81ea7d4cf13d375b6d23864f4e395e</md5>
   </timezone>
   <timezone>
@@ -1019,6 +1068,7 @@
   <timezone>
     <tzid>America/Santa_Isabel</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Pacific Standard Time (Mexico)</alias>
     <md5>258b10f97d147ad0fb9c3815fadf9b40</md5>
   </timezone>
   <timezone>
@@ -1030,6 +1080,7 @@
     <tzid>America/Santiago</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
     <alias>Chile/Continental</alias>
+    <alias>Pacific SA Standard Time</alias>
     <md5>fadb4e11ac55c3afaf6a735bb521ccfd</md5>
   </timezone>
   <timezone>
@@ -1041,6 +1092,7 @@
     <tzid>America/Sao_Paulo</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <alias>Brazil/East</alias>
+    <alias>E. South America Standard Time</alias>
     <md5>b1c3e7faf0b0f6ceef559e3eb0aac261</md5>
   </timezone>
   <timezone>
@@ -1067,6 +1119,7 @@
     <tzid>America/St_Johns</tzid>
     <dtstamp>2012-05-18T14:15:25Z</dtstamp>
     <alias>Canada/Newfoundland</alias>
+    <alias>Newfoundland Standard Time</alias>
     <md5>08674807ec2a8e109a5a989f222ad373</md5>
   </timezone>
   <timezone>
@@ -1221,11 +1274,31 @@
     <md5>986ca28dcc682891b0833e0b1b2352d7</md5>
   </timezone>
   <timezone>
+    <tzid>Arab Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>af8262cea313e34b65ea6e9838b24677</md5>
+  </timezone>
+  <timezone>
+    <tzid>Arabian Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>813e9895a1797faa0d534b08246a440f</md5>
+  </timezone>
+  <timezone>
+    <tzid>Arabic Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>59bcbee64e678d36f5fcea326b28a24f</md5>
+  </timezone>
+  <timezone>
     <tzid>Arctic/Longyearbyen</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>40145ed84de3f926275f1c2b5d68df7b</md5>
   </timezone>
   <timezone>
+    <tzid>Argentina Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>0c874bfea84dbfa02afe5d6ff96e3ac6</md5>
+  </timezone>
+  <timezone>
     <tzid>Asia/Aden</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
     <md5>0e3e302489cb9c9d747466337c84aa32</md5>
@@ -1233,11 +1306,13 @@
   <timezone>
     <tzid>Asia/Almaty</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Central Asia Standard Time</alias>
     <md5>2d28e8027a12d6bb578500fba1212a3d</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Amman</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
+    <alias>Jordan Standard Time</alias>
     <md5>ba1a51f6f6b372cfcde53600efe2834f</md5>
   </timezone>
   <timezone>
@@ -1269,6 +1344,7 @@
   <timezone>
     <tzid>Asia/Baghdad</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Arabic Standard Time</alias>
     <md5>6b989fb5fc7f59e9b039e33d632361eb</md5>
   </timezone>
   <timezone>
@@ -1279,16 +1355,19 @@
   <timezone>
     <tzid>Asia/Baku</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Azerbaijan Standard Time</alias>
     <md5>89b1b87654cad2c27815ac8d7d5a82bb</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Bangkok</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>SE Asia Standard Time</alias>
     <md5>0ee6b61e4db09003f6f98d6d285a7f5d</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Beirut</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Middle East Standard Time</alias>
     <md5>ec07a7c21ed6e237900981ba9c627313</md5>
   </timezone>
   <timezone>
@@ -1304,6 +1383,7 @@
   <timezone>
     <tzid>Asia/Calcutta</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>India Standard Time</alias>
     <md5>43bbd7aad1dd165dc2343be99e5edffe</md5>
   </timezone>
   <timezone>
@@ -1325,6 +1405,7 @@
   <timezone>
     <tzid>Asia/Colombo</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Sri Lanka Standard Time</alias>
     <md5>db90d93971d1fcf94b3958ccab478003</md5>
   </timezone>
   <timezone>
@@ -1335,12 +1416,14 @@
   <timezone>
     <tzid>Asia/Damascus</tzid>
     <dtstamp>2012-05-18T14:15:25Z</dtstamp>
+    <alias>Syria Standard Time</alias>
     <md5>725cbf5cace73dba24d4b6a0a91859bd</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Dhaka</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Asia/Dacca</alias>
+    <alias>Bangladesh Standard Time</alias>
     <md5>88035bd99ca7de5590cd00d7fdf3a8c4</md5>
   </timezone>
   <timezone>
@@ -1351,6 +1434,7 @@
   <timezone>
     <tzid>Asia/Dubai</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Arabian Standard Time</alias>
     <md5>e762e58c96d3726bbaf84bb914949d8e</md5>
   </timezone>
   <timezone>
@@ -1393,6 +1477,7 @@
   <timezone>
     <tzid>Asia/Irkutsk</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>North Asia East Standard Time</alias>
     <md5>29acf8ac702a7d7841a3356c3962ff88</md5>
   </timezone>
   <timezone>
@@ -1415,11 +1500,13 @@
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <alias>Asia/Tel_Aviv</alias>
     <alias>Israel</alias>
+    <alias>Israel Standard Time</alias>
     <md5>85a1cb333e19eb4b92038d6b056b6ef3</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Kabul</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Afghanistan Standard Time</alias>
     <md5>aed7a26e32e4c36ee37c5c82d54a362d</md5>
   </timezone>
   <timezone>
@@ -1430,6 +1517,7 @@
   <timezone>
     <tzid>Asia/Karachi</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Pakistan Standard Time</alias>
     <md5>a643fc5fed6a7cc9160a7d54da4c6e60</md5>
   </timezone>
   <timezone>
@@ -1446,6 +1534,7 @@
   <timezone>
     <tzid>Asia/Katmandu</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Nepal Standard Time</alias>
     <md5>dfcdb151e17499a38c4fa456c6d603f6</md5>
   </timezone>
   <timezone>
@@ -1462,6 +1551,7 @@
   <timezone>
     <tzid>Asia/Krasnoyarsk</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>North Asia Standard Time</alias>
     <md5>3e4dbf51d4e4d8988d4d52bc8e3932ed</md5>
   </timezone>
   <timezone>
@@ -1493,6 +1583,7 @@
   <timezone>
     <tzid>Asia/Magadan</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Magadan Standard Time</alias>
     <md5>feb4df3f54948a62c9260a8ff0d8560c</md5>
   </timezone>
   <timezone>
@@ -1525,6 +1616,7 @@
   <timezone>
     <tzid>Asia/Novosibirsk</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>N. Central Asia Standard Time</alias>
     <md5>b8e017738a63324214d6586cbf078d62</md5>
   </timezone>
   <timezone>
@@ -1565,11 +1657,13 @@
   <timezone>
     <tzid>Asia/Rangoon</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
+    <alias>Myanmar Standard Time</alias>
     <md5>c0defadd7d4bfd7e533488677fba8b1e</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Riyadh</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Arab Standard Time</alias>
     <md5>6d11d7edcfa78b32acf9a17169ce728c</md5>
   </timezone>
   <timezone>
@@ -1591,40 +1685,47 @@
     <tzid>Asia/Seoul</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>ROK</alias>
+    <alias>Korea Standard Time</alias>
     <md5>ddab80bd6902fd85f4a75a99fe066c50</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Shanghai</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
     <alias>PRC</alias>
+    <alias>China Standard Time</alias>
     <md5>b96ef8cf7c74c16e15f25c292c9a9ae8</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Singapore</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Singapore</alias>
+    <alias>Singapore Standard Time</alias>
     <md5>f2f8be51082b2ede9114b3c78a24c608</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Taipei</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>ROC</alias>
+    <alias>Taipei Standard Time</alias>
     <md5>392c0daab0b369c725eaef960e59cb77</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Tashkent</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>West Asia Standard Time</alias>
     <md5>ed56064ae96e061f96e38e1414ff1e40</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Tbilisi</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Georgian Standard Time</alias>
     <md5>a473849976251aac174309b4c54cc7b8</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Tehran</tzid>
     <dtstamp>2013-01-14T15:32:16Z</dtstamp>
     <alias>Iran</alias>
+    <alias>Iran Standard Time</alias>
     <md5>d21c79149c3ad3b5721cd6e05bdf65cd</md5>
   </timezone>
   <timezone>
@@ -1647,6 +1748,7 @@
     <tzid>Asia/Tokyo</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Japan</alias>
+    <alias>Tokyo Standard Time</alias>
     <md5>596917b840456dcac60971ed275e06f9</md5>
   </timezone>
   <timezone>
@@ -1658,6 +1760,7 @@
     <tzid>Asia/Ulaanbaatar</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Asia/Ulan_Bator</alias>
+    <alias>Ulaanbaatar Standard Time</alias>
     <md5>5aadca75f29da32a0ff78e3775363d06</md5>
   </timezone>
   <timezone>
@@ -1683,26 +1786,36 @@
   <timezone>
     <tzid>Asia/Vladivostok</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Vladivostok Standard Time</alias>
     <md5>2f8cf1b4ef5274cf8e117d0a8a591c44</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Yakutsk</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Yakutsk Standard Time</alias>
     <md5>c8446d91924f4f5f899e821604f6e2dd</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Yekaterinburg</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Ekaterinburg Standard Time</alias>
     <md5>ceb73b7be048c14a0ee0ecc9a91d3652</md5>
   </timezone>
   <timezone>
     <tzid>Asia/Yerevan</tzid>
     <dtstamp>2012-05-18T14:15:25Z</dtstamp>
+    <alias>Caucasus Standard Time</alias>
     <md5>fbf2743ed30170109021b5d447184721</md5>
   </timezone>
   <timezone>
+    <tzid>Atlantic Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>21e4f77ac658a58c99a25f2d6ea2991b</md5>
+  </timezone>
+  <timezone>
     <tzid>Atlantic/Azores</tzid>
     <dtstamp>2012-05-18T16:58:42Z</dtstamp>
+    <alias>Azores Standard Time</alias>
     <md5>353f9c84fde46bd2cf7069a30c4276ce</md5>
   </timezone>
   <timezone>
@@ -1718,6 +1831,7 @@
   <timezone>
     <tzid>Atlantic/Cape_Verde</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Cape Verde Standard Time</alias>
     <md5>486c6cca3174d50e3d3454c5f1f73480</md5>
   </timezone>
   <timezone>
@@ -1745,6 +1859,7 @@
     <tzid>Atlantic/Reykjavik</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Iceland</alias>
+    <alias>Greenwich Standard Time</alias>
     <md5>992200e91e57b5dc3b4c1387c8b97466</md5>
   </timezone>
   <timezone>
@@ -1771,12 +1886,14 @@
     <tzid>Australia/Adelaide</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Australia/South</alias>
+    <alias>Cen. Australia Standard Time</alias>
     <md5>ca7281d2d6822a955147c350b7b1cb71</md5>
   </timezone>
   <timezone>
     <tzid>Australia/Brisbane</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Australia/Queensland</alias>
+    <alias>E. Australia Standard Time</alias>
     <md5>a35c97646a88eec10ad3a6e6b567e508</md5>
   </timezone>
   <timezone>
@@ -1799,6 +1916,7 @@
     <tzid>Australia/Darwin</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Australia/North</alias>
+    <alias>AUS Central Standard Time</alias>
     <md5>73bbf21cb68354d5fab3393f9e0cc467</md5>
   </timezone>
   <timezone>
@@ -1810,6 +1928,7 @@
     <tzid>Australia/Hobart</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Australia/Tasmania</alias>
+    <alias>Tasmania Standard Time</alias>
     <md5>3f93782299131bc5e257f74b156c7bff</md5>
   </timezone>
   <timezone>
@@ -1848,6 +1967,7 @@
     <tzid>Australia/Perth</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Australia/West</alias>
+    <alias>W. Australia Standard Time</alias>
     <md5>a9da90a8b6373ae57da42a972cfa5e67</md5>
   </timezone>
   <timezone>
@@ -1866,6 +1986,7 @@
     <alias>Australia/Canberra</alias>
     <alias>Australia/ACT</alias>
     <alias>Australia/NSW</alias>
+    <alias>AUS Eastern Standard Time</alias>
     <md5>bcdd3fd1c6c326bdef770905bedab9d1</md5>
   </timezone>
   <timezone>
@@ -1889,6 +2010,26 @@
     <md5>da6459a041f1b5580ffb691930c7c6ce</md5>
   </timezone>
   <timezone>
+    <tzid>Azerbaijan Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>bed1a98e3a47a721aee9a617f2d58a98</md5>
+  </timezone>
+  <timezone>
+    <tzid>Azores Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>8748bb405c66b4799bd3a5e8f0bdd0b4</md5>
+  </timezone>
+  <timezone>
+    <tzid>Bahia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>d513507bb66cd7ecd78d48cc9021a075</md5>
+  </timezone>
+  <timezone>
+    <tzid>Bangladesh Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>12c3bc6450cd1158e2860dcd740d4791</md5>
+  </timezone>
+  <timezone>
     <tzid>Brazil/Acre</tzid>
     <dtstamp>2013-11-15T16:10:31Z</dtstamp>
     <md5>ad33124888f5c5dd9bed9317ef0bb953</md5>
@@ -1919,6 +2060,11 @@
     <md5>2ac180eb45fdda3460f26cee12a017e9</md5>
   </timezone>
   <timezone>
+    <tzid>Canada Central Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>6898e7f21111cf8bb23ea38120b46ae7</md5>
+  </timezone>
+  <timezone>
     <tzid>Canada/Atlantic</tzid>
     <dtstamp>2012-05-18T14:15:25Z</dtstamp>
     <md5>2cbf7a81ab5bae956eedd4b27df8d8b4</md5>
@@ -1964,6 +2110,61 @@
     <md5>ee6648283e8bedb3fdb8c57b9f434a26</md5>
   </timezone>
   <timezone>
+    <tzid>Cape Verde Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>b93b13bdd5fcf4b16cac38dc0d11feae</md5>
+  </timezone>
+  <timezone>
+    <tzid>Caucasus Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>36da51fb3b37186dabad22e92102019b</md5>
+  </timezone>
+  <timezone>
+    <tzid>Cen. Australia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>54a9e6a2ce0acf942122fa53bf92079d</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central America Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>869c3ada45ef0ed879d524817f0483fc</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central Asia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>4cb4c8ea99752e73ff168d6d1577d7f4</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central Brazilian Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>1ce1fe25c75d08d220d462659a7ccb76</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central Europe Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>a6253b4f08c997ace48d666a75dd609d</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central European Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>0189d1130feba42091b5682423bb7231</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central Pacific Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>994bfa6127b6275d9bd385a62f9e83e9</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>6ce7b2318b0e77e848bcfc995d1e75fa</md5>
+  </timezone>
+  <timezone>
+    <tzid>Central Standard Time (Mexico)</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>4007bb3b1f3ca2d493d3d5a98808f16c</md5>
+  </timezone>
+  <timezone>
     <tzid>Chile/Continental</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
     <md5>f317f76740e5c68894538a81fda87ad1</md5>
@@ -1974,11 +2175,36 @@
     <md5>4b487f9ea07858d8d2e944204ed611cb</md5>
   </timezone>
   <timezone>
+    <tzid>China Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>2bb98ef96d017132ecf3facafbb35165</md5>
+  </timezone>
+  <timezone>
     <tzid>Cuba</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <md5>b4c7f04f9f4e20441be3042580cab3a8</md5>
   </timezone>
   <timezone>
+    <tzid>Dateline Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>879e35596cccdfa2788c0b36ead18877</md5>
+  </timezone>
+  <timezone>
+    <tzid>E. Africa Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>7f7652996d0f8bc04f30419bb017f2f9</md5>
+  </timezone>
+  <timezone>
+    <tzid>E. Australia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>9e6975e3e2d7aa07fde3d48ee8ab76bb</md5>
+  </timezone>
+  <timezone>
+    <tzid>E. South America Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>56ebc3ee8c6ea0cae6e9f6d2890adb3b</md5>
+  </timezone>
+  <timezone>
     <tzid>EET</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>4313a5a54018d63bbe5556966813bd9e</md5>
@@ -1994,16 +2220,31 @@
     <md5>a9e719d7f0be1abb2846120179599a2c</md5>
   </timezone>
   <timezone>
+    <tzid>Eastern Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>13ff590689dc4c786ee53edfe9ee1b17</md5>
+  </timezone>
+  <timezone>
     <tzid>Egypt</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <md5>e5bdfeba2637858848136c41d6dd6592</md5>
   </timezone>
   <timezone>
+    <tzid>Egypt Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>a03e4c51b498c0942fe9c94e6c99942c</md5>
+  </timezone>
+  <timezone>
     <tzid>Eire</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>f8c85e542a416cd7fd792f21241475bb</md5>
   </timezone>
   <timezone>
+    <tzid>Ekaterinburg Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>3a2fd3183b2fb59554aa605e8d246c34</md5>
+  </timezone>
+  <timezone>
     <tzid>Etc/GMT</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Etc/GMT+0</alias>
@@ -2035,16 +2276,19 @@
   <timezone>
     <tzid>Etc/GMT+11</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>UTC-11</alias>
     <md5>e9f05290e38fd9ed728763e4b9e5439d</md5>
   </timezone>
   <timezone>
     <tzid>Etc/GMT+12</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Dateline Standard Time</alias>
     <md5>aba6f221c1ac0cb8d72aea5956a7ef5d</md5>
   </timezone>
   <timezone>
     <tzid>Etc/GMT+2</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>UTC-02</alias>
     <md5>a9135520a98c2e3d61629c16e58e6017</md5>
   </timezone>
   <timezone>
@@ -2105,6 +2349,7 @@
   <timezone>
     <tzid>Etc/GMT-12</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>UTC+12</alias>
     <md5>24e457e75e5a2ca8b4d5699a3b16a0c1</md5>
   </timezone>
   <timezone>
@@ -2226,6 +2471,7 @@
   <timezone>
     <tzid>Europe/Berlin</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>W. Europe Standard Time</alias>
     <md5>7eff1fef65c43f08d542edcfa1d67180</md5>
   </timezone>
   <timezone>
@@ -2241,11 +2487,13 @@
   <timezone>
     <tzid>Europe/Bucharest</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>GTB Standard Time</alias>
     <md5>06f5949f16196a72a928d48015af4da9</md5>
   </timezone>
   <timezone>
     <tzid>Europe/Budapest</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Central Europe Standard Time</alias>
     <md5>5d9410ec171c22f3cb6af853666832b8</md5>
   </timezone>
   <timezone>
@@ -2296,6 +2544,7 @@
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <alias>Turkey</alias>
     <alias>Asia/Istanbul</alias>
+    <alias>Turkey Standard Time</alias>
     <md5>a8c5d66450ef94c0c1829b8ef0f3b08b</md5>
   </timezone>
   <timezone>
@@ -2306,11 +2555,13 @@
   <timezone>
     <tzid>Europe/Kaliningrad</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Kaliningrad Standard Time</alias>
     <md5>4c60c5a58f54e04b1e78ca79090900b5</md5>
   </timezone>
   <timezone>
     <tzid>Europe/Kiev</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
+    <alias>FLE Standard Time</alias>
     <md5>e8d3adb6ed0d6d1c5350086a9d0803c4</md5>
   </timezone>
   <timezone>
@@ -2333,6 +2584,7 @@
     <alias>Europe/Isle_of_Man</alias>
     <alias>GB-Eire</alias>
     <alias>Europe/Belfast</alias>
+    <alias>GMT Standard Time</alias>
     <md5>d9c25d5b2eb02260bc94730e235938b9</md5>
   </timezone>
   <timezone>
@@ -2369,6 +2621,7 @@
     <tzid>Europe/Moscow</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>W-SU</alias>
+    <alias>Russian Standard Time</alias>
     <md5>163c9f35321ad3b6d79c5e13d3de4a66</md5>
   </timezone>
   <timezone>
@@ -2386,6 +2639,7 @@
   <timezone>
     <tzid>Europe/Paris</tzid>
     <dtstamp>2012-05-18T16:58:42Z</dtstamp>
+    <alias>Romance Standard Time</alias>
     <md5>8dcfe790e26460e4850d07f032bee5a6</md5>
   </timezone>
   <timezone>
@@ -2495,6 +2749,7 @@
     <tzid>Europe/Warsaw</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>Poland</alias>
+    <alias>Central European Standard Time</alias>
     <md5>9011dff96ae67331fefb285befee32c7</md5>
   </timezone>
   <timezone>
@@ -2515,6 +2770,16 @@
     <md5>f4cfe31d995ca98d545a03ef60ebbbee</md5>
   </timezone>
   <timezone>
+    <tzid>FLE Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>0ae1b4885ddb55aaa7bbb81318506844</md5>
+  </timezone>
+  <timezone>
+    <tzid>Fiji Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>f53a5ec8b50fc4a04b2fbf1ea0e7e577</md5>
+  </timezone>
+  <timezone>
     <tzid>GB</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>cf499d3386c1547d82ada718d426302a</md5>
@@ -2530,6 +2795,11 @@
     <md5>7e1ee359c14980b307a35b4ea42e2ddf</md5>
   </timezone>
   <timezone>
+    <tzid>GMT Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>a16951b9d79ec5d513253c4be09e8ad8</md5>
+  </timezone>
+  <timezone>
     <tzid>GMT+0</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>ce675f57f78b3a1e213c8ad399205020</md5>
@@ -2545,16 +2815,41 @@
     <md5>b02b3430b23d30714a470ed456a9f19a</md5>
   </timezone>
   <timezone>
+    <tzid>GTB Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>dfc95bb97b0cc61f39029dec1d7b3725</md5>
+  </timezone>
+  <timezone>
+    <tzid>Georgian Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>ce12e3a54f497a428ac320f8e44ebe1b</md5>
+  </timezone>
+  <timezone>
+    <tzid>Greenland Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>78c939588bf5314a272590a40857bd9c</md5>
+  </timezone>
+  <timezone>
     <tzid>Greenwich</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>47885ad66487af94b749e903f8fcc942</md5>
   </timezone>
   <timezone>
+    <tzid>Greenwich Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>b04584eca67568cea6f7ad15fd69433a</md5>
+  </timezone>
+  <timezone>
     <tzid>HST</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>406972d8f460561b5ed0cc9635075cec</md5>
   </timezone>
   <timezone>
+    <tzid>Hawaiian Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>78e49db8edd7865e4fbd4437d91b954d</md5>
+  </timezone>
+  <timezone>
     <tzid>Hongkong</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
     <md5>1166b6a5bb7094a4036ed80d6228cfc2</md5>
@@ -2565,6 +2860,11 @@
     <md5>1f3e3f1d74ac62c6309335ba7def679e</md5>
   </timezone>
   <timezone>
+    <tzid>India Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>5bc101a49c9390078abf4fde42bf543d</md5>
+  </timezone>
+  <timezone>
     <tzid>Indian/Antananarivo</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>54b8cf688972faef6254eda042d0b759</md5>
@@ -2607,6 +2907,7 @@
   <timezone>
     <tzid>Indian/Mauritius</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Mauritius Standard Time</alias>
     <md5>1ef668c409d1c581977fd40fc7505481</md5>
   </timezone>
   <timezone>
@@ -2625,11 +2926,21 @@
     <md5>844f28e11094bef30381a7ebe5d0c7c6</md5>
   </timezone>
   <timezone>
+    <tzid>Iran Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>06d7f0cd5e0d1a8c440d1b89cd9a45ed</md5>
+  </timezone>
+  <timezone>
     <tzid>Israel</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <md5>332718eee8f091b1b00870c8e44bfa46</md5>
   </timezone>
   <timezone>
+    <tzid>Israel Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>e1773817be9273336abcf0858a7c6f7d</md5>
+  </timezone>
+  <timezone>
     <tzid>Jamaica</tzid>
     <dtstamp>2013-10-01T01:19:11Z</dtstamp>
     <md5>b5f083a6081a40b4525e7c8e2da9e963</md5>
@@ -2640,6 +2951,21 @@
     <md5>ff59375f1fd8af619f193e904888c448</md5>
   </timezone>
   <timezone>
+    <tzid>Jordan Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>239404fd4117c3070ea02c6cdcab0ed7</md5>
+  </timezone>
+  <timezone>
+    <tzid>Kaliningrad Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>e06d0cefda50969894397c8c2bdb132f</md5>
+  </timezone>
+  <timezone>
+    <tzid>Korea Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>756dd3b6d51cc197eb8c2a08fb88aa30</md5>
+  </timezone>
+  <timezone>
     <tzid>Kwajalein</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>18865d3f0f1a93f2b96d77d8b63b86be</md5>
@@ -2650,6 +2976,11 @@
     <md5>e6ac54ea0ab33dd6fd125a71fc34cf46</md5>
   </timezone>
   <timezone>
+    <tzid>Libya Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>354c1f845ab7ad751b6124e9a1619d6b</md5>
+  </timezone>
+  <timezone>
     <tzid>MET</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>3176603f9d378e550950e8139ee1bfef</md5>
@@ -2665,6 +2996,16 @@
     <md5>d43bd95c6a43197ff72e084d1bebb875</md5>
   </timezone>
   <timezone>
+    <tzid>Magadan Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>0399e537a95ae84af318fe49135304ec</md5>
+  </timezone>
+  <timezone>
+    <tzid>Mauritius Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>f87744abf69766482ade5da23e0ef240</md5>
+  </timezone>
+  <timezone>
     <tzid>Mexico/BajaNorte</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>7ccf81b88f1e609f28623b2d917dbbde</md5>
@@ -2680,6 +3021,41 @@
     <md5>3b33093afd8c0a554948130f54cc23f4</md5>
   </timezone>
   <timezone>
+    <tzid>Middle East Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>4e652b5c7f318678a5be15ae9fb14752</md5>
+  </timezone>
+  <timezone>
+    <tzid>Montevideo Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>4dc81b0fa971a57c57b710ca18b20bc9</md5>
+  </timezone>
+  <timezone>
+    <tzid>Morocco Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>e268fdccf45f90b9a0bb372521040c80</md5>
+  </timezone>
+  <timezone>
+    <tzid>Mountain Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>e0a262ac5ef311d51fca018b4e0ad456</md5>
+  </timezone>
+  <timezone>
+    <tzid>Mountain Standard Time (Mexico)</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>228bd4c26ec332e0ac8f521b22cbe0cd</md5>
+  </timezone>
+  <timezone>
+    <tzid>Myanmar Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>6b52c184b0ad0bf74a6792259d52aa62</md5>
+  </timezone>
+  <timezone>
+    <tzid>N. Central Asia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>d77a6f9abab36065495b31edd8e77c80</md5>
+  </timezone>
+  <timezone>
     <tzid>NZ</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>6f3e44f4f50b3e2e6e8fa002734e37a2</md5>
@@ -2690,11 +3066,41 @@
     <md5>b7ab01dcc64ed6b0877b41a48a5f5bf1</md5>
   </timezone>
   <timezone>
+    <tzid>Namibia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>29cc2769ce1179e449dc6cf6a957c7f5</md5>
+  </timezone>
+  <timezone>
     <tzid>Navajo</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>46c72b3a055bd29862b55ac4bf1a62ed</md5>
   </timezone>
   <timezone>
+    <tzid>Nepal Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>947e08ee93b35119c551186fd4a19f9f</md5>
+  </timezone>
+  <timezone>
+    <tzid>New Zealand Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>9fced4d15fca067f5454d72929088c5d</md5>
+  </timezone>
+  <timezone>
+    <tzid>Newfoundland Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>48508a15a031b973a444b91a551cd28a</md5>
+  </timezone>
+  <timezone>
+    <tzid>North Asia East Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>095f1c445394d82adec64602d537a986</md5>
+  </timezone>
+  <timezone>
+    <tzid>North Asia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>6fedb564e771afc51b219f2bae5da796</md5>
+  </timezone>
+  <timezone>
     <tzid>PRC</tzid>
     <dtstamp>2013-05-08T18:04:04Z</dtstamp>
     <md5>4b00f46a2c83f3e58d09f75fbb92e2ba</md5>
@@ -2705,8 +3111,24 @@
     <md5>b519fb841c7d3f389a584fdfa7372b93</md5>
   </timezone>
   <timezone>
+    <tzid>Pacific SA Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>b26c2e5cd71738f09e98ede5982fab5e</md5>
+  </timezone>
+  <timezone>
+    <tzid>Pacific Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>6ffa7272875d070d46bc8ec057225665</md5>
+  </timezone>
+  <timezone>
+    <tzid>Pacific Standard Time (Mexico)</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>48e275bef2a5475110835bdf3a7dbb49</md5>
+  </timezone>
+  <timezone>
     <tzid>Pacific/Apia</tzid>
     <dtstamp>2013-01-14T15:32:16Z</dtstamp>
+    <alias>Samoa Standard Time</alias>
     <md5>c7fe6c219fb68825f1e065008bc06040</md5>
   </timezone>
   <timezone>
@@ -2715,6 +3137,7 @@
     <alias>NZ</alias>
     <alias>Antarctica/McMurdo</alias>
     <alias>Antarctica/South_Pole</alias>
+    <alias>New Zealand Standard Time</alias>
     <md5>31b52d15573225aff7940c24fbe45343</md5>
   </timezone>
   <timezone>
@@ -2754,6 +3177,7 @@
   <timezone>
     <tzid>Pacific/Fiji</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
+    <alias>Fiji Standard Time</alias>
     <md5>78ca7c42aa407761c6804f0502976b83</md5>
   </timezone>
   <timezone>
@@ -2774,6 +3198,7 @@
   <timezone>
     <tzid>Pacific/Guadalcanal</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Central Pacific Standard Time</alias>
     <md5>ac17a77c46959df23f3d6d8f21ebf380</md5>
   </timezone>
   <timezone>
@@ -2786,6 +3211,7 @@
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <alias>US/Hawaii</alias>
     <alias>Pacific/Johnston</alias>
+    <alias>Hawaiian Standard Time</alias>
     <md5>be013195b929c48b73f0234a5226a763</md5>
   </timezone>
   <timezone>
@@ -2875,6 +3301,7 @@
   <timezone>
     <tzid>Pacific/Port_Moresby</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>West Pacific Standard Time</alias>
     <md5>042a04dfc570e2936ad064894529f41c</md5>
   </timezone>
   <timezone>
@@ -2905,6 +3332,7 @@
   <timezone>
     <tzid>Pacific/Tongatapu</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
+    <alias>Tonga Standard Time</alias>
     <md5>2124717920b350ba81643915b321d139</md5>
   </timezone>
   <timezone>
@@ -2928,6 +3356,16 @@
     <md5>721ea1e811f10f00a44b2079ceece1f3</md5>
   </timezone>
   <timezone>
+    <tzid>Pakistan Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>c8aceae74e764aceec483640afa45b86</md5>
+  </timezone>
+  <timezone>
+    <tzid>Paraguay Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>5de6fc55052ef5ac431356c060afc502</md5>
+  </timezone>
+  <timezone>
     <tzid>Poland</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>95a5dc1d445e1abc4a5f3626f4552800</md5>
@@ -2948,21 +3386,111 @@
     <md5>b4ce7399fc454c07647554d069239558</md5>
   </timezone>
   <timezone>
+    <tzid>Romance Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>f33b41c3b27c39b58a01d7e2bd15e891</md5>
+  </timezone>
+  <timezone>
+    <tzid>Russian Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>1651f23851e6f44162396c133a095d26</md5>
+  </timezone>
+  <timezone>
+    <tzid>SA Eastern Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>06f22d20ab3fe7b1c0c6ae309fe0b3cb</md5>
+  </timezone>
+  <timezone>
+    <tzid>SA Pacific Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>f8ed98409c9324eb2a5efb24b41f57ae</md5>
+  </timezone>
+  <timezone>
+    <tzid>SA Western Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>80dca707facf8efaaa36be9f9c89089d</md5>
+  </timezone>
+  <timezone>
+    <tzid>SE Asia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>ad83f90b23aefd9d9dd450deac72ee2f</md5>
+  </timezone>
+  <timezone>
+    <tzid>Samoa Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>d14f124106dc5c45bc686eb62128e7e5</md5>
+  </timezone>
+  <timezone>
     <tzid>Singapore</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>94dcb7e58cfd771fa8ec1bd1ea6a5248</md5>
   </timezone>
   <timezone>
+    <tzid>Singapore Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>94f8f3515c361ea9775ffcb6e9854e2f</md5>
+  </timezone>
+  <timezone>
+    <tzid>South Africa Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>6e229a8322a1b763928c28cfde3c6183</md5>
+  </timezone>
+  <timezone>
+    <tzid>Sri Lanka Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>105896be19d4cfc5866b9e7077491497</md5>
+  </timezone>
+  <timezone>
+    <tzid>Syria Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>42aceb769ea063799fde4f5c5c548a6e</md5>
+  </timezone>
+  <timezone>
+    <tzid>Taipei Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>ae23a32cf494ea76c848a68a7ae972f7</md5>
+  </timezone>
+  <timezone>
+    <tzid>Tasmania Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>656d5bff4d0c2340ae30a5e764538d68</md5>
+  </timezone>
+  <timezone>
+    <tzid>Tokyo Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>af0a29619e7caacdb24f136d4d9a9f57</md5>
+  </timezone>
+  <timezone>
+    <tzid>Tonga Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>396a4beadbdc3d50bcf6b07fd778c101</md5>
+  </timezone>
+  <timezone>
     <tzid>Turkey</tzid>
     <dtstamp>2014-05-30T18:27:48Z</dtstamp>
     <md5>ea45d8a59e773676fec8d3bd1b31441d</md5>
   </timezone>
   <timezone>
+    <tzid>Turkey Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>0d84294523585a0799fe0c12d4a36872</md5>
+  </timezone>
+  <timezone>
     <tzid>UCT</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>77ab109760c523113f36441e0a218999</md5>
   </timezone>
   <timezone>
+    <tzid>US Eastern Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>4708533536c230ec7eb92548b0e64bdd</md5>
+  </timezone>
+  <timezone>
+    <tzid>US Mountain Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>e3a68a8c3599e79bd333ad4fdd3c96fe</md5>
+  </timezone>
+  <timezone>
     <tzid>US/Alaska</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>0079a04f2e0aafab32b4d4230d97cfde</md5>
@@ -3028,21 +3556,81 @@
     <md5>3b4bdbd492aa1796c10f37c1969dbd4b</md5>
   </timezone>
   <timezone>
+    <tzid>UTC+12</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>5317101733f870b217196d4bdb5b67ff</md5>
+  </timezone>
+  <timezone>
+    <tzid>UTC-02</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>25ba389e4ccb8cf0dd6f129c7ff7f8c4</md5>
+  </timezone>
+  <timezone>
+    <tzid>UTC-11</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>fdc341a444c22d3308bd2a649ae0112c</md5>
+  </timezone>
+  <timezone>
+    <tzid>Ulaanbaatar Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>73b0a30b79c8034dafdba553910fe0e0</md5>
+  </timezone>
+  <timezone>
     <tzid>Universal</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>50bcbcc5d95d03946dd65a7d53877ac7</md5>
   </timezone>
   <timezone>
+    <tzid>Venezuela Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>afd03b559b8bad714fe294bcb2cc1c9e</md5>
+  </timezone>
+  <timezone>
+    <tzid>Vladivostok Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>53e23ab867c6a9b4e87eefef6668ed7a</md5>
+  </timezone>
+  <timezone>
     <tzid>W-SU</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>3fdc23a1e84d1e77026ef5134217ffa3</md5>
   </timezone>
   <timezone>
+    <tzid>W. Australia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>adfbe5b5fd570ef3eefd7340a5e729cf</md5>
+  </timezone>
+  <timezone>
+    <tzid>W. Central Africa Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>2aad10d3015d5019dcada3b6cf6493f4</md5>
+  </timezone>
+  <timezone>
+    <tzid>W. Europe Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>8a85b21b39e21ab7d59f836b27b31d39</md5>
+  </timezone>
+  <timezone>
     <tzid>WET</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>f7d652d5d227809a7c9a9d75fea34c08</md5>
   </timezone>
   <timezone>
+    <tzid>West Asia Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>3484ac60b5568e639e5683a32bc6cdcf</md5>
+  </timezone>
+  <timezone>
+    <tzid>West Pacific Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>f403c7129fb48cee288e856571f2ffd8</md5>
+  </timezone>
+  <timezone>
+    <tzid>Yakutsk Standard Time</tzid>
+    <dtstamp>2014-06-09T19:47:04Z</dtstamp>
+    <md5>81e4af08c31bf752ca8b0f4ea3937518</md5>
+  </timezone>
+  <timezone>
     <tzid>Zulu</tzid>
     <dtstamp>2011-10-05T11:50:21Z</dtstamp>
     <md5>fa5e48a172aaa63cbd2193b233b2d9a4</md5>

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/base.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/base.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/base.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -26,6 +26,7 @@
 from twext.python.log import Logger
 from txdav.xml import element as davxml
 from txdav.xml.base import encodeXMLName
+from txdav.xml.element import lookupElement
 from txweb2.dav.resource import TwistedGETContentMD5, \
     TwistedQuotaRootProperty
 
@@ -98,7 +99,11 @@
         return encodeXMLName(self.namespace, self.name)
 
 
+    def toElement(self):
+        return lookupElement((self.namespace, self.name,))
 
+
+
 class AbstractPropertyStore(DictMixin, object):
     """
     Base property store.
@@ -108,6 +113,7 @@
     implements(IPropertyStore)
 
     _defaultShadowableKeys = frozenset()
+    _defaultProxyOverrideKeys = frozenset()
     _defaultGlobalKeys = frozenset((
         PropertyName.fromElement(davxml.ACL),
         PropertyName.fromElement(davxml.ResourceID),
@@ -117,7 +123,7 @@
         PropertyName.fromElement(TwistedQuotaRootProperty),
     ))
 
-    def __init__(self, defaultUser, shareeUser=None):
+    def __init__(self, defaultUser, shareeUser=None, proxyUser=None):
         """
         Instantiate the property store for a user. The default is the default user
         (owner) property to read in the case of global or shadowable properties.
@@ -128,12 +134,17 @@
 
         @param shareeUser: the per user uid or None if the same as defaultUser
         @type shareeUser: C{str}
+
+        @param proxyUser: the proxy uid or None if no proxy
+        @type proxyUser: C{str}
         """
 
         assert(defaultUser is not None or shareeUser is not None)
         self._defaultUser = shareeUser if defaultUser is None else defaultUser
         self._perUser = defaultUser if shareeUser is None else shareeUser
+        self._proxyUser = self._perUser if proxyUser is None else proxyUser
         self._shadowableKeys = set(AbstractPropertyStore._defaultShadowableKeys)
+        self._proxyOverrideKeys = set(AbstractPropertyStore._defaultProxyOverrideKeys)
         self._globalKeys = set(AbstractPropertyStore._defaultGlobalKeys)
 
 
@@ -149,8 +160,13 @@
         self._perUser = uid
 
 
-    def setSpecialProperties(self, shadowableKeys, globalKeys):
+    def _setProxyUID(self, uid):
+        self._proxyUser = uid
+
+
+    def setSpecialProperties(self, shadowableKeys, globalKeys, proxyOverrideKeys):
         self._shadowableKeys.update(shadowableKeys)
+        self._proxyOverrideKeys.update(proxyOverrideKeys)
         self._globalKeys.update(globalKeys)
 
 
@@ -191,6 +207,13 @@
     #
 
     def __getitem__(self, key):
+        # Return proxy value if it exists, else fall through to normal logic
+        if self._proxyUser != self._perUser and self.isProxyOverrideProperty(key):
+            try:
+                return self._getitem_uid(key, self._proxyUser)
+            except KeyError:
+                pass
+
         # Handle per-user behavior
         if self.isShadowableProperty(key):
             try:
@@ -208,11 +231,23 @@
         # Handle per-user behavior
         if self.isGlobalProperty(key):
             return self._setitem_uid(key, value, self._defaultUser)
+        # Handle proxy behavior
+        elif self._proxyUser != self._perUser and self.isProxyOverrideProperty(key):
+            return self._setitem_uid(key, value, self._proxyUser)
+        # Remainder is per user
         else:
             return self._setitem_uid(key, value, self._perUser)
 
 
     def __delitem__(self, key):
+        # Delete proxy value if it exists, else fall through to normal logic
+        if self._proxyUser != self._perUser and self.isProxyOverrideProperty(key):
+            try:
+                self._delitem_uid(key, self._proxyUser)
+                return
+            except KeyError:
+                pass
+
         # Handle per-user behavior
         if self.isShadowableProperty(key):
             try:
@@ -245,11 +280,14 @@
             self[key] = other[key]
 
 
-    # Per-user property handling
     def isShadowableProperty(self, key):
         return key in self._shadowableKeys
 
 
+    def isProxyOverrideProperty(self, key):
+        return key in self._proxyOverrideKeys
+
+
     def isGlobalProperty(self, key):
         return key in self._globalKeys
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/sql.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/sql.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -117,17 +117,19 @@
         yield _cache_user_props(self._defaultUser)
         if self._perUser != self._defaultUser:
             yield _cache_user_props(self._perUser)
+        if self._proxyUser != self._perUser:
+            yield _cache_user_props(self._proxyUser)
 
 
     @classmethod
     @inlineCallbacks
-    def load(cls, defaultuser, shareUser, txn, resourceID, created=False, notifyCallback=None):
+    def load(cls, defaultuser, shareUser, proxyUser, txn, resourceID, created=False, notifyCallback=None):
         """
         @param notifyCallback: a callable used to trigger notifications when the
             property store changes.
         """
         self = cls.__new__(cls)
-        super(PropertyStore, self).__init__(defaultuser, shareUser)
+        super(PropertyStore, self).__init__(defaultuser, shareUser, proxyUser)
         self._txn = txn
         self._resourceID = resourceID
         if not self._txn.store().queryCachingEnabled():
@@ -141,7 +143,7 @@
 
     @classmethod
     @inlineCallbacks
-    def forMultipleResources(cls, defaultUser, txn,
+    def forMultipleResources(cls, defaultUser, shareeUser, proxyUser, txn,
                              childColumn, parentColumn, parentID):
         """
         Load all property stores for all objects in a collection.  This is used
@@ -179,13 +181,13 @@
             Where=parentColumn == parentID
         )
         rows = yield query.on(txn)
-        stores = cls._createMultipleStores(defaultUser, txn, rows)
+        stores = cls._createMultipleStores(defaultUser, shareeUser, proxyUser, txn, rows)
         returnValue(stores)
 
 
     @classmethod
     @inlineCallbacks
-    def forMultipleResourcesWithResourceIDs(cls, defaultUser, txn, resourceIDs):
+    def forMultipleResourcesWithResourceIDs(cls, defaultUser, shareeUser, proxyUser, txn, resourceIDs):
         """
         Load all property stores for all specified resources.  This is used
         to optimize Depth:1 operations on that collection, by loading all
@@ -214,13 +216,13 @@
             Where=prop.RESOURCE_ID.In(Parameter("resourceIDs", len(resourceIDs)))
         )
         rows = yield query.on(txn, resourceIDs=resourceIDs)
-        stores = cls._createMultipleStores(defaultUser, txn, rows)
+        stores = cls._createMultipleStores(defaultUser, shareeUser, proxyUser, txn, rows)
 
         # Make sure we have a store for each resourceID even if no properties exist
         for resourceID in resourceIDs:
             if resourceID not in stores:
                 store = cls.__new__(cls)
-                super(PropertyStore, store).__init__(defaultUser)
+                super(PropertyStore, store).__init__(defaultUser, shareeUser, proxyUser)
                 store._txn = txn
                 store._resourceID = resourceID
                 store._cached = {}
@@ -230,7 +232,7 @@
 
 
     @classmethod
-    def _createMultipleStores(cls, defaultUser, txn, rows):
+    def _createMultipleStores(cls, defaultUser, shareeUser, proxyUser, txn, rows):
         """
         Create a set of stores for the set of rows passed in.
         """
@@ -245,7 +247,7 @@
             if resource_id:
                 if resource_id not in createdStores:
                     store = cls.__new__(cls)
-                    super(PropertyStore, store).__init__(defaultUser)
+                    super(PropertyStore, store).__init__(defaultUser, shareeUser, proxyUser)
                     store._txn = txn
                     store._resourceID = resource_id
                     store._cached = {}
@@ -253,7 +255,7 @@
                 createdStores[resource_id]._cached[(name, view_uid)] = value
             elif object_resource_id:
                 store = cls.__new__(cls)
-                super(PropertyStore, store).__init__(defaultUser)
+                super(PropertyStore, store).__init__(defaultUser, shareeUser, proxyUser)
                 store._txn = txn
                 store._resourceID = object_resource_id
                 store._cached = {}

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/base.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/base.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/base.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -140,29 +140,45 @@
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
         self.failUnless(name in self.propertyStore1)
         self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
 
         self.propertyStore2[name] = value2
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value2)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         del self.propertyStore2[name]
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
         self.failUnless(name in self.propertyStore1)
         self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
 
         del self.propertyStore1[name]
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), None)
         self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
         self.failIf(name in self.propertyStore1)
         self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
 
 
     @inlineCallbacks
@@ -170,8 +186,10 @@
 
         name = propertyName("shadow")
 
-        self.propertyStore1.setSpecialProperties((name,), ())
-        self.propertyStore2.setSpecialProperties((name,), ())
+        self.propertyStore1.setSpecialProperties((name,), (), ())
+        self.propertyStore2.setSpecialProperties((name,), (), ())
+        self.propertyStore3.setSpecialProperties((name,), (), ())
+        self.propertyStore4.setSpecialProperties((name,), (), ())
 
         value1 = propertyValue("Hello, World1!")
         value2 = propertyValue("Hello, World2!")
@@ -180,29 +198,45 @@
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         self.propertyStore2[name] = value2
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value2)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         del self.propertyStore2[name]
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         del self.propertyStore1[name]
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), None)
         self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
         self.failIf(name in self.propertyStore1)
         self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
 
 
     @inlineCallbacks
@@ -213,8 +247,10 @@
 
         name = propertyName("shadow")
 
-        self.propertyStore1.setSpecialProperties((name,), ())
-        self.propertyStore2.setSpecialProperties((name,), ())
+        self.propertyStore1.setSpecialProperties((name,), (), ())
+        self.propertyStore2.setSpecialProperties((name,), (), ())
+        self.propertyStore3.setSpecialProperties((name,), (), ())
+        self.propertyStore4.setSpecialProperties((name,), (), ())
 
         value1 = propertyValue("Hello, World1!")
 
@@ -222,22 +258,34 @@
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         del self.propertyStore2[name]
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         del self.propertyStore1[name]
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), None)
         self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
         self.failIf(name in self.propertyStore1)
         self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
 
 
     @inlineCallbacks
@@ -245,8 +293,10 @@
 
         name = propertyName("global")
 
-        self.propertyStore1.setSpecialProperties((), (name,))
-        self.propertyStore2.setSpecialProperties((), (name,))
+        self.propertyStore1.setSpecialProperties((), (name,), ())
+        self.propertyStore2.setSpecialProperties((), (name,), ())
+        self.propertyStore3.setSpecialProperties((), (name,), ())
+        self.propertyStore4.setSpecialProperties((), (name,), ())
 
         value1 = propertyValue("Hello, World1!")
         value2 = propertyValue("Hello, World2!")
@@ -255,24 +305,250 @@
         yield self._changed(self.propertyStore1)
         self.assertEquals(self.propertyStore1.get(name, None), value1)
         self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         self.propertyStore2[name] = value2
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), value2)
         self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value2)
+        self.assertEquals(self.propertyStore4.get(name, None), value2)
         self.failUnless(name in self.propertyStore1)
         self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
 
         del self.propertyStore2[name]
         yield self._changed(self.propertyStore2)
         self.assertEquals(self.propertyStore1.get(name, None), None)
         self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
         self.failIf(name in self.propertyStore1)
         self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
 
 
+    @inlineCallbacks
+    def test_proxy(self):
+
+        name = propertyName("test")
+        value1 = propertyValue("Hello, World1!")
+        value2 = propertyValue("Hello, World2!")
+
+        self.propertyStore3[name] = value1
+        yield self._changed(self.propertyStore3)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failUnless(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+        self.propertyStore4[name] = value2
+        yield self._changed(self.propertyStore4)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value2)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        del self.propertyStore4[name]
+        yield self._changed(self.propertyStore4)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failUnless(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+        del self.propertyStore3[name]
+        yield self._changed(self.propertyStore3)
+        self.assertEquals(self.propertyStore1.get(name, None), None)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failIf(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+
+    @inlineCallbacks
+    def test_proxyOverride(self):
+
+        name = propertyName("override")
+
+        self.propertyStore1.setSpecialProperties((), (), (name,))
+        self.propertyStore2.setSpecialProperties((), (), (name,))
+        self.propertyStore3.setSpecialProperties((), (), (name,))
+        self.propertyStore4.setSpecialProperties((), (), (name,))
+
+        value1 = propertyValue("Hello, World1!")
+        value2 = propertyValue("Hello, World2!")
+
+        self.propertyStore1[name] = value1
+        yield self._changed(self.propertyStore1)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failUnless(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+        self.propertyStore3[name] = value2
+        yield self._changed(self.propertyStore3)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value2)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failUnless(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+        del self.propertyStore3[name]
+        yield self._changed(self.propertyStore3)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failUnless(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+        del self.propertyStore1[name]
+        yield self._changed(self.propertyStore1)
+        self.assertEquals(self.propertyStore1.get(name, None), None)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failIf(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+
+    @inlineCallbacks
+    def test_proxyOverrideShadow(self):
+
+        name = propertyName("override")
+
+        self.propertyStore1.setSpecialProperties((name,), (), (name,))
+        self.propertyStore2.setSpecialProperties((name,), (), (name,))
+        self.propertyStore3.setSpecialProperties((name,), (), (name,))
+        self.propertyStore4.setSpecialProperties((name,), (), (name,))
+
+        value1 = propertyValue("Hello, World1!")
+        value2 = propertyValue("Hello, World2!")
+        value3 = propertyValue("Hello, World3!")
+        value4 = propertyValue("Hello, World4!")
+
+        self.propertyStore1[name] = value1
+        yield self._changed(self.propertyStore1)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        self.propertyStore3[name] = value3
+        yield self._changed(self.propertyStore3)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value3)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        self.propertyStore4[name] = value4
+        yield self._changed(self.propertyStore4)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value3)
+        self.assertEquals(self.propertyStore4.get(name, None), value4)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        self.propertyStore2[name] = value2
+        yield self._changed(self.propertyStore2)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value3)
+        self.assertEquals(self.propertyStore4.get(name, None), value4)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        del self.propertyStore3[name]
+        yield self._changed(self.propertyStore3)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value4)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        del self.propertyStore4[name]
+        yield self._changed(self.propertyStore4)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value2)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value2)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        del self.propertyStore2[name]
+        yield self._changed(self.propertyStore2)
+        self.assertEquals(self.propertyStore1.get(name, None), value1)
+        self.assertEquals(self.propertyStore2.get(name, None), value1)
+        self.assertEquals(self.propertyStore3.get(name, None), value1)
+        self.assertEquals(self.propertyStore4.get(name, None), value1)
+        self.failUnless(name in self.propertyStore1)
+        self.failUnless(name in self.propertyStore2)
+        self.failUnless(name in self.propertyStore3)
+        self.failUnless(name in self.propertyStore4)
+
+        del self.propertyStore1[name]
+        yield self._changed(self.propertyStore1)
+        self.assertEquals(self.propertyStore1.get(name, None), None)
+        self.assertEquals(self.propertyStore2.get(name, None), None)
+        self.assertEquals(self.propertyStore3.get(name, None), None)
+        self.assertEquals(self.propertyStore4.get(name, None), None)
+        self.failIf(name in self.propertyStore1)
+        self.failIf(name in self.propertyStore2)
+        self.failIf(name in self.propertyStore3)
+        self.failIf(name in self.propertyStore4)
+
+
     def test_iteration(self):
 
         value = propertyValue("Hello, World!")
@@ -333,8 +609,8 @@
 
         name = propertyName("shadow")
 
-        self.propertyStore1.setSpecialProperties((name,), ())
-        self.propertyStore2.setSpecialProperties((name,), ())
+        self.propertyStore1.setSpecialProperties((name,), (), ())
+        self.propertyStore2.setSpecialProperties((name,), (), ())
 
         value1 = propertyValue("Hello, World1!")
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_sql.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_sql.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -49,10 +49,11 @@
         self.store = yield buildStore(self, self.notifierFactory)
         self.addCleanup(self.maybeCommitLast)
         self._txn = self.store.newTransaction()
-        self.propertyStore = self.propertyStore1 = yield PropertyStore.load(
-            "user01", None, self._txn, 1
-        )
-        self.propertyStore2 = yield PropertyStore.load("user01", "user02", self._txn, 1)
+        self.propertyStore = \
+        self.propertyStore1 = yield PropertyStore.load("user01", None, None, self._txn, 1)
+        self.propertyStore2 = yield PropertyStore.load("user01", "user02", None, self._txn, 1)
+        self.propertyStore3 = yield PropertyStore.load("user01", None, "user03", self._txn, 1)
+        self.propertyStore4 = yield PropertyStore.load("user01", "user02", "user04", self._txn, 1)
 
 
     @inlineCallbacks
@@ -62,7 +63,11 @@
             delattr(self, "_txn")
         else:
             result = None
-        self.propertyStore = self.propertyStore1 = self.propertyStore2 = None
+        self.propertyStore = \
+        self.propertyStore1 = \
+        self.propertyStore2 = \
+        self.propertyStore3 = \
+        self.propertyStore4 = None
         returnValue(result)
 
 
@@ -74,18 +79,31 @@
         self._txn = self.store.newTransaction()
 
         store = self.propertyStore1
-        self.propertyStore = self.propertyStore1 = yield PropertyStore.load(
-            "user01", None, self._txn, 1
-        )
+        self.propertyStore = \
+        self.propertyStore1 = yield PropertyStore.load("user01", None, None, self._txn, 1)
         self.propertyStore1._shadowableKeys = store._shadowableKeys
+        self.propertyStore1._proxyOverrideKeys = store._proxyOverrideKeys
         self.propertyStore1._globalKeys = store._globalKeys
 
         store = self.propertyStore2
-        self.propertyStore2 = yield PropertyStore.load("user01", "user02", self._txn, 1)
+        self.propertyStore2 = yield PropertyStore.load("user01", "user02", None, self._txn, 1)
         self.propertyStore2._shadowableKeys = store._shadowableKeys
+        self.propertyStore2._proxyOverrideKeys = store._proxyOverrideKeys
         self.propertyStore2._globalKeys = store._globalKeys
 
+        store = self.propertyStore3
+        self.propertyStore3 = yield PropertyStore.load("user01", None, "user03", self._txn, 1)
+        self.propertyStore3._shadowableKeys = store._shadowableKeys
+        self.propertyStore3._proxyOverrideKeys = store._proxyOverrideKeys
+        self.propertyStore3._globalKeys = store._globalKeys
 
+        store = self.propertyStore4
+        self.propertyStore4 = yield PropertyStore.load("user01", "user02", "user04", self._txn, 1)
+        self.propertyStore4._shadowableKeys = store._shadowableKeys
+        self.propertyStore4._proxyOverrideKeys = store._proxyOverrideKeys
+        self.propertyStore4._globalKeys = store._globalKeys
+
+
     @inlineCallbacks
     def _abort(self, store):
         if hasattr(self, "_txn"):
@@ -95,18 +113,31 @@
         self._txn = self.store.newTransaction()
 
         store = self.propertyStore1
-        self.propertyStore = self.propertyStore1 = yield PropertyStore.load(
-            "user01", None, self._txn, 1
-        )
+        self.propertyStore = \
+        self.propertyStore1 = yield PropertyStore.load("user01", None, None, self._txn, 1)
         self.propertyStore1._shadowableKeys = store._shadowableKeys
+        self.propertyStore1._proxyOverrideKeys = store._proxyOverrideKeys
         self.propertyStore1._globalKeys = store._globalKeys
 
         store = self.propertyStore2
-        self.propertyStore2 = yield PropertyStore.load("user01", "user02", self._txn, 1)
+        self.propertyStore2 = yield PropertyStore.load("user01", "user02", None, self._txn, 1)
         self.propertyStore2._shadowableKeys = store._shadowableKeys
+        self.propertyStore2._proxyOverrideKeys = store._proxyOverrideKeys
         self.propertyStore2._globalKeys = store._globalKeys
 
+        store = self.propertyStore3
+        self.propertyStore3 = yield PropertyStore.load("user01", None, "user03", self._txn, 1)
+        self.propertyStore3._shadowableKeys = store._shadowableKeys
+        self.propertyStore3._proxyOverrideKeys = store._proxyOverrideKeys
+        self.propertyStore3._globalKeys = store._globalKeys
 
+        store = self.propertyStore4
+        self.propertyStore4 = yield PropertyStore.load("user01", "user02", "user04", self._txn, 1)
+        self.propertyStore4._shadowableKeys = store._shadowableKeys
+        self.propertyStore4._proxyOverrideKeys = store._proxyOverrideKeys
+        self.propertyStore4._globalKeys = store._globalKeys
+
+
     @inlineCallbacks
     def test_concurrentInsertion(self):
         """
@@ -126,7 +157,7 @@
                 pass
         self.addCleanup(maybeAbortIt)
         concurrentPropertyStore = yield PropertyStore.load(
-            "user01", None, concurrentTxn, 1
+            "user01", None, None, concurrentTxn, 1
         )
         concurrentPropertyStore[pname] = pval1
         race = []
@@ -155,8 +186,8 @@
     def test_copy(self):
 
         # Existing store
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 2)
-        store1_user2 = yield PropertyStore.load("user01", "user02", self._txn, 2)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 2)
+        store1_user2 = yield PropertyStore.load("user01", "user02", None, self._txn, 2)
 
         # Populate current store with data
         props_user1 = (
@@ -178,18 +209,18 @@
         self._txn = self.store.newTransaction()
 
         # Existing store
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 2)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 2)
 
         # New store
-        store2_user1 = yield PropertyStore.load("user01", None, self._txn, 3)
+        store2_user1 = yield PropertyStore.load("user01", None, None, self._txn, 3)
 
         # Do copy and check results
         yield store2_user1.copyAllProperties(store1_user1)
 
         self.assertEqual(store1_user1.keys(), store2_user1.keys())
 
-        store1_user2 = yield PropertyStore.load("user01", "user02", self._txn, 2)
-        store2_user2 = yield PropertyStore.load("user01", "user02", self._txn, 3)
+        store1_user2 = yield PropertyStore.load("user01", "user02", None, self._txn, 2)
+        store2_user2 = yield PropertyStore.load("user01", "user02", None, self._txn, 3)
         self.assertEqual(store1_user2.keys(), store2_user2.keys())
 
 
@@ -197,7 +228,7 @@
     def test_insert_delete(self):
 
         # Existing store
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 2)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 2)
 
         pname = propertyName("dummy1")
         pvalue = propertyValue("value1-user1")
@@ -221,7 +252,7 @@
 
         # Existing store - add a normal property
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 10)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 10)
         self.assertTrue("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
 
         pname1 = propertyName("dummy1")
@@ -237,7 +268,7 @@
         # Existing store - add a large property
         self._txn = self.store.newTransaction()
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 10)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 10)
         self.assertTrue("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
 
         pname2 = propertyName("dummy2")
@@ -253,7 +284,7 @@
         # Try again - the cacher will fail large values
         self._txn = self.store.newTransaction()
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 10)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 10)
         self.assertFalse("SQL.props:10/user01" in store1_user1._cacher._memcacheProtocol._cache)
 
         self.assertEqual(store1_user1[pname1], pvalue1)
@@ -280,7 +311,7 @@
 
         # Existing store - add a normal property
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 10)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 10)
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
 
         pname1 = propertyName("dummy1")
@@ -297,7 +328,7 @@
 
         # Existing store - check a normal property
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
-        store1_user1 = yield PropertyStore.load("user01", None, self._txn, 10)
+        store1_user1 = yield PropertyStore.load("user01", None, None, self._txn, 10)
         self.assertFalse("SQL.props:10/user01" in PropertyStore._cacher._memcacheProtocol._cache)
         self.assertEqual(store1_user1[pname1], pvalue1)
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_xattr.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_xattr.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/base/propertystore/test/test_xattr.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -43,6 +43,12 @@
         self.propertyStore1 = self.propertyStore
         self.propertyStore2 = PropertyStore("user01", lambda : tempFile)
         self.propertyStore2._setPerUserUID("user02")
+        self.propertyStore2._setProxyUID("user02")
+        self.propertyStore3 = PropertyStore("user01", lambda : tempFile)
+        self.propertyStore3._setProxyUID("user03")
+        self.propertyStore4 = PropertyStore("user01", lambda : tempFile)
+        self.propertyStore4._setPerUserUID("user02")
+        self.propertyStore4._setProxyUID("user04")
 
 
     def test_init(self):

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/file.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/file.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/file.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -319,6 +319,7 @@
                 PropertyName.fromElement(customxml.GETCTag),
                 PropertyName.fromElement(caldavxml.SupportedCalendarComponentSet),
             ),
+            (),
         )
 
 
@@ -748,6 +749,7 @@
                 PropertyName.fromElement(customxml.TwistedCalendarHasPrivateCommentsProperty),
                 PropertyName.fromElement(customxml.ScheduleChanges),
             ),
+            (),
         )
 
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/icaldiff.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/icaldiff.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/icaldiff.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -693,7 +693,7 @@
         newexdates = set()
         exdates = component.properties("EXDATE")
         for exdate in exdates:
-            newexdates.update([value.getValue().duplicate().adjustToUTC() for value in exdate.value()])
+            newexdates.update([exvalue.getValue().duplicate().adjustToUTC() for exvalue in exdate.value()])
 
         return timeRange.getStart(), timeRange.getEnd(), newdue, newrrules, newrdates, newexdates
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/work.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/work.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/scheduling/work.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -174,7 +174,6 @@
             smartMerge=smart_merge
         ))
         cls._enqueued()
-        yield proposal.whenProposed()
         log.debug("ScheduleOrganizerWork - enqueued for ID: {id}, UID: {uid}, organizer: {org}", id=proposal.workItem.workID, uid=uid, org=organizer)
 
 
@@ -296,7 +295,6 @@
             changedRids=",".join(map(lambda x: "" if x is None else str(x), changedRids)) if changedRids else None,
         ))
         cls._enqueued()
-        yield proposal.whenProposed()
         log.debug("ScheduleReplyWork - enqueued for ID: {id}, UID: {uid}, attendee: {att}", id=proposal.workItem.workID, uid=resource.uid(), att=attendee)
 
 
@@ -379,7 +377,6 @@
             icalendarText=calendar.getTextWithTimezones(includeTimezones=not config.EnableTimezonesByReference),
         ))
         cls._enqueued()
-        yield proposal.whenProposed()
         log.debug("ScheduleReplyCancelWork - enqueued for ID: {id}, UID: {uid}, attendee: {att}", id=proposal.workItem.workID, uid=calendar.resourceUID(), att=attendee)
 
 
@@ -486,7 +483,6 @@
             notBefore=notBefore,
         ))
         cls._enqueued()
-        yield proposal.whenProposed()
         log.debug("ScheduleRefreshWork - enqueued for ID: {id}, UID: {uid}, attendees: {att}", id=proposal.workItem.workID, uid=organizer_resource.uid(), att=",".join(attendeesToRefresh))
 
 
@@ -626,7 +622,6 @@
             notBefore=notBefore,
         ))
         cls._enqueued()
-        yield proposal.whenProposed()
         log.debug("ScheduleAutoReplyWork - enqueued for ID: {id}, UID: {uid}", id=proposal.workItem.workID, uid=resource.uid())
 
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/sql.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/sql.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -48,7 +48,7 @@
 from twisted.python import hashlib
 from twisted.python.failure import Failure
 
-from twistedcaldav import caldavxml, customxml, ical
+from twistedcaldav import customxml, ical
 from twistedcaldav.config import config
 from twistedcaldav.datafilters.peruserdata import PerUserDataFilter
 from twistedcaldav.dateops import normalizeForIndex, datetimeMktime, \
@@ -56,6 +56,7 @@
 from twistedcaldav.ical import Component, InvalidICalendarDataError, Property
 from twistedcaldav.instance import InvalidOverriddenInstanceError
 from twistedcaldav.memcacher import Memcacher
+from twistedcaldav.timezones import TimezoneException
 
 from txdav.base.propertystore.base import PropertyName
 from txdav.caldav.datastore.query.builder import buildExpression
@@ -80,7 +81,7 @@
     InvalidDefaultCalendar, \
     InvalidAttachmentOperation, DuplicatePrivateCommentsError, \
     TimeRangeUpperLimit, TimeRangeLowerLimit, InvalidSplit, \
-    AttachmentSizeTooLarge
+    AttachmentSizeTooLarge, UnknownTimezone
 from txdav.caldav.icalendarstore import QuotaExceeded
 from txdav.common.datastore.sql import CommonHome, CommonHomeChild, \
     CommonObjectResource, ECALENDARTYPE
@@ -94,8 +95,9 @@
     ObjectResourceNameNotAllowedError, TooManyObjectResourcesError, \
     InvalidUIDError, UIDExistsError, UIDExistsElsewhereError, \
     InvalidResourceMove, InvalidComponentForStoreError, \
-    NoSuchObjectResourceError
+    NoSuchObjectResourceError, ConcurrentModification
 from txdav.xml import element
+from txdav.xml.parser import WebDAVDocument
 
 from txdav.idav import ChangeCategory
 
@@ -966,6 +968,10 @@
 
     _supportedComponents = None
 
+    _shadowProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.Calendars.CollectionProperties.Shadowable])
+    _proxyProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.Calendars.CollectionProperties.ProxyOverride])
+    _globalProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.Calendars.CollectionProperties.Global])
+
     def __init__(self, *args, **kw):
         """
         Initialize a calendar pointing at a record in a database.
@@ -1294,17 +1300,9 @@
     def initPropertyStore(self, props):
         # Setup peruser special properties
         props.setSpecialProperties(
-            # Shadowable
-            (
-                PropertyName.fromElement(caldavxml.CalendarDescription),
-                PropertyName.fromElement(caldavxml.CalendarTimeZone),
-            ),
-
-            # Global
-            (
-                PropertyName.fromElement(customxml.GETCTag),
-                PropertyName.fromElement(caldavxml.SupportedCalendarComponentSet),
-            ),
+            self._shadowProperties,
+            self._globalProperties,
+            self._proxyProperties,
         )
 
 
@@ -1353,9 +1351,9 @@
         Sub-classes should override to expose the properties they care about.
         """
         props = {}
-        for elem in (element.DisplayName, caldavxml.CalendarDescription, caldavxml.CalendarTimeZone, customxml.CalendarColor,):
-            if PropertyName.fromElement(elem) in self.properties():
-                props[elem.sname()] = str(self.properties()[PropertyName.fromElement(elem)])
+        for ename in (PropertyName.fromElement(element.DisplayName),) + self._shadowProperties:
+            if ename in self.properties():
+                props[ename.toString()] = self.properties()[ename].toxml()
         return props
 
 
@@ -1366,15 +1364,15 @@
         care about.
         """
         # Initialize these for all shares
-        for elem in (caldavxml.CalendarDescription, caldavxml.CalendarTimeZone,):
-            if PropertyName.fromElement(elem) not in self.properties() and elem.sname() in props:
-                self.properties()[PropertyName.fromElement(elem)] = elem.fromString(props[elem.sname()])
+        for ename in self._shadowProperties:
+            if ename not in self.properties() and ename.toString() in props:
+                self.properties()[ename] = WebDAVDocument.fromString(props[ename]).root_element
 
         # Only initialize these for direct shares
         if self.direct():
-            for elem in (element.DisplayName, customxml.CalendarColor,):
-                if PropertyName.fromElement(elem) not in self.properties() and elem.sname() in props:
-                    self.properties()[PropertyName.fromElement(elem)] = elem.fromString(props[elem.sname()])
+            for ename in (PropertyName.fromElement(element.DisplayName),):
+                if ename not in self.properties() and ename.toString() in props:
+                    self.properties()[ename] = WebDAVDocument.fromString(props[ename]).root_element
 
 
     # FIXME: this is DAV-ish.  Data store calendar objects don't have
@@ -1894,6 +1892,10 @@
 
         # Basic validation
 
+        # Possible timezone stripping
+        if config.EnableTimezonesByReference:
+            component.stripKnownTimezones()
+
         # Do validation on external requests
         if internal_state == ComponentUpdateState.NORMAL:
 
@@ -1920,10 +1922,6 @@
             # Valid attendee list size check
             yield self.validAttendeeListSizeCheck(component, inserting)
 
-        # Possible timezone stripping
-        if config.EnableTimezonesByReference:
-            component.stripKnownTimezones()
-
         # Check location/resource organizer requirement
         self.validLocationResourceOrganizer(component, inserting, internal_state)
 
@@ -2098,12 +2096,16 @@
 
         try:
             component.validCalendarData(validateRecurrences=self._txn._migrating)
-        except InvalidICalendarDataError, e:
+        except InvalidICalendarDataError as e:
             raise InvalidObjectResourceError(str(e))
         try:
             component.validCalendarForCalDAV(methodAllowed=self.calendar().isInbox())
-        except InvalidICalendarDataError, e:
+        except InvalidICalendarDataError as e:
             raise InvalidComponentForStoreError(str(e))
+        except TimezoneException as e:
+            # tzid not available
+            raise UnknownTimezone(str(e))
+
         try:
             if self._txn._migrating:
                 component.validOrganizerForScheduling(doFix=True)
@@ -2169,17 +2171,14 @@
                 cutype == "RESOURCE" and config.Scheduling.Options.TrackUnscheduledResourceData):
 
                 # Find current principal and update modified by details
-                if self._txn._authz_uid is not None:
-                    authz = yield self.directoryService().recordWithUID(self._txn._authz_uid.decode("utf-8"))
-                    prop = Property("X-CALENDARSERVER-MODIFIED-BY", authz.canonicalCalendarUserAddress())
-                    prop.setParameter("CN", authz.displayName)
-                    for candidate in authz.calendarUserAddresses:
-                        if candidate.startswith("mailto:"):
-                            prop.setParameter("EMAIL", candidate[7:])
-                            break
-                    component.replacePropertyInAllComponents(prop)
-                else:
-                    component.removeAllPropertiesWithName("X-CALENDARSERVER-MODIFIED-BY")
+                authz = yield self.directoryService().recordWithUID(self.calendar().viewerHome().authzuid().decode("utf-8"))
+                prop = Property("X-CALENDARSERVER-MODIFIED-BY", authz.canonicalCalendarUserAddress())
+                prop.setParameter("CN", authz.displayName)
+                for candidate in authz.calendarUserAddresses:
+                    if candidate.startswith("mailto:"):
+                        prop.setParameter("EMAIL", candidate[7:])
+                        break
+                component.replacePropertyInAllComponents(prop)
                 self._componentChanged = True
 
 
@@ -2197,7 +2196,7 @@
 
             # Only DAV:owner is able to set the property to other than PUBLIC
             if internal_state == ComponentUpdateState.NORMAL:
-                if (self._txn._authz_uid is None or self.calendar().viewerHome().uid() != self._txn._authz_uid) and access != Component.ACCESS_PUBLIC:
+                if (self.calendar().viewerHome().uid() != self.calendar().viewerHome().authzuid()) and access != Component.ACCESS_PUBLIC:
                     raise InvalidCalendarAccessError("Private event access level change not allowed")
 
             self.accessMode = access
@@ -3916,13 +3915,16 @@
 
 
     def initPropertyStore(self, props):
-        # Setup peruser special properties
+        # Setup peruser special properties - these are hard-coded for now as clients are not expected
+        # to be using properties on resources - but we do use one special "live" property which we
+        # keep in the propstore.
         props.setSpecialProperties(
             (
             ),
             (
                 PropertyName.fromElement(customxml.ScheduleChanges),
             ),
+            (),
         )
 
 
@@ -4046,7 +4048,7 @@
             in L{CalendarObject.splitAt}).
         @type rid: L{DateTime}
         @param olderUID: sets the iCalendar UID to be used in the new resource created during the split.
-            If L{None} a UUID is generated and used.
+            If set to L{None}, a UUID is generated and used.
         @type olderUID: L{str}
         """
 
@@ -4068,7 +4070,7 @@
         newerUID = calendar.resourceUID()
         if olderUID is None:
             olderUID = str(uuid.uuid4())
-            olderResourceName = olderUID
+            olderResourceName = "{0}.ics".format(olderUID)
         else:
             olderResourceName = "{0}.ics".format(olderUID.encode("base64")[:-1].rstrip("="))
 
@@ -4105,10 +4107,19 @@
     @inlineCallbacks
     def splitForAttendee(self, rid=None, olderUID=None):
         """
-        Split this attendee resource as per L{split}.
+        Split this attendee resource as per L{split}. Note this is also used on any Organizer inbox items.
+        Also, for inbox items, we are not protected by the ImplicitUID lock - it is possible that the inbox
+        resource gets deleted whilst we are iterating the entire set of UIDs, so we need to handle a
+        L{ConcurrentModification} error here by ignoring it.
         """
         splitter = iCalSplitter(config.Scheduling.Options.Splitting.Size, config.Scheduling.Options.Splitting.PastDays)
-        ical = (yield self.component())
+        try:
+            ical = (yield self.component())
+        except ConcurrentModification:
+            # Resource was deleted between the time we looked it up and now - this is OK,
+            # We can simply ignore it as there is nothing left to split
+            returnValue(None)
+
         ical_old, ical_new = splitter.split(ical, rid=rid, olderUID=olderUID)
         ical_new.bumpiTIPInfo(oldcalendar=ical, doSequence=True)
         ical_old.bumpiTIPInfo(oldcalendar=None, doSequence=True)

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_implicit.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_implicit.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_implicit.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -306,18 +306,18 @@
 """
 
         self.patch(config, "EnablePrivateEvents", True)
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user02"
         calendar_collection = (yield self.calendarUnderTest(home="user01"))
         calendar = Component.fromString(data1)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user02"
         yield self.failUnlessFailure(calendar_collection.createCalendarObjectWithName("test.ics", calendar), InvalidCalendarAccessError)
         yield self.commit()
 
         # This one should be OK
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_collection = (yield self.calendarUnderTest(home="user01"))
         calendar = Component.fromString(data1)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         yield calendar_collection.createCalendarObjectWithName("test.ics", calendar)
         yield self.commit()
 
@@ -335,10 +335,10 @@
 END:VCALENDAR
 """
 
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_resource = (yield self.calendarObjectUnderTest(name="test.ics", home="user01",))
         calendar = Component.fromString(data2)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         yield calendar_resource.setComponent(calendar)
         yield self.commit()
 
@@ -516,10 +516,10 @@
 END:VCALENDAR
 """
 
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_resource = (yield self.calendarObjectUnderTest(name="test.ics", home="user01",))
         calendar = Component.fromString(data2)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         yield calendar_resource.setComponent(calendar)
         yield self.commit()
 
@@ -569,10 +569,10 @@
 END:VCALENDAR
 """
 
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_resource = (yield self.calendarObjectUnderTest(name="test.ics", home="user01",))
         calendar = Component.fromString(data2)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         yield calendar_resource.setComponent(calendar)
         yield self.commit()
 
@@ -623,10 +623,10 @@
 END:VCALENDAR
 """
 
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_resource = (yield self.calendarObjectUnderTest(name="test.ics", home="user01",))
         calendar = Component.fromString(data2)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         yield calendar_resource.setComponent(calendar)
         yield self.commit()
 
@@ -682,10 +682,10 @@
 END:VCALENDAR
 """
 
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_resource = (yield self.calendarObjectUnderTest(name="test.ics", home="user01",))
         calendar = Component.fromString(data2)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         yield calendar_resource.setComponent(calendar)
         yield self.commit()
 
@@ -789,10 +789,10 @@
 END:VCALENDAR
 """
 
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user01"
         calendar_resource = (yield self.calendarObjectUnderTest(name="test.ics", home="user01",))
         calendar = Component.fromString(data2)
-        txn = self.transactionUnderTest()
-        txn._authz_uid = "user01"
         result = (yield calendar_resource.setComponent(calendar))
         yield self.commit()
         self.assertTrue(result)

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -35,7 +35,7 @@
 
 from twistedcaldav import caldavxml, ical
 from twistedcaldav.caldavxml import CalendarDescription
-from twistedcaldav.config import config
+from twistedcaldav.stdconfig import config
 from twistedcaldav.dateops import datetimeMktime
 from twistedcaldav.ical import Component, normalize_iCalStr, diff_iCalStrs
 from twistedcaldav.instance import InvalidOverriddenInstanceError
@@ -49,19 +49,21 @@
 from txdav.caldav.datastore.scheduling.itip import iTIPRequestStatus
 from txdav.caldav.datastore.scheduling.processing import ImplicitProcessor
 from txdav.caldav.datastore.scheduling.scheduler import ScheduleResponseQueue
-from txdav.caldav.datastore.test.common import CommonTests as CalendarCommonTests, \
-    test_event_text
-from txdav.caldav.datastore.test.test_file import setUpCalendarStore
-from txdav.caldav.datastore.util import _migrateCalendar, migrateHome
-from txdav.caldav.icalendarstore import ComponentUpdateState, InvalidDefaultCalendar, \
-    InvalidSplit
+from txdav.caldav.datastore.sql import CalendarStoreFeatures
 from txdav.common.datastore.sql import ECALENDARTYPE, CommonObjectResource, \
     CommonStoreTransactionMonitor
 from txdav.common.datastore.sql_tables import schema, _BIND_MODE_DIRECT, \
     _BIND_STATUS_ACCEPTED, _TRANSP_OPAQUE
+from txdav.caldav.datastore.test.common import CommonTests as CalendarCommonTests, \
+    test_event_text
+from txdav.caldav.datastore.test.test_file import setUpCalendarStore
 from txdav.common.datastore.test.util import populateCalendarsFrom, \
     CommonCommonTests
-from txdav.common.icommondatastore import NoSuchObjectResourceError
+from txdav.caldav.datastore.util import _migrateCalendar, migrateHome
+from txdav.caldav.icalendarstore import ComponentUpdateState, InvalidDefaultCalendar, \
+    InvalidSplit, UnknownTimezone
+from txdav.common.icommondatastore import NoSuchObjectResourceError, \
+    InvalidComponentForStoreError
 from txdav.idav import ChangeCategory
 from txdav.xml.rfc2518 import GETContentLanguage, ResourceType
 
@@ -1976,7 +1978,46 @@
         self.assertFalse(inbox.isUsedForFreeBusy())
 
 
+    @inlineCallbacks
+    def test_missingTimezone(self):
+        """
+        Make sure missing timezone causes an exception, whether or timezones by reference is on.
+        """
+        data = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:12345-67890
+DTSTART;TZID=BOGUS:20130806T000000
+DURATION:PT1H
+DTSTAMP:20051222T210507Z
+SUMMARY:1
+END:VEVENT
+END:VCALENDAR
+"""
 
+        self.patch(config, "EnableTimezonesByReference", False)
+
+        yield self.homeUnderTest(name="user01", create=True)
+        calendar = yield self.calendarUnderTest(name="calendar", home="user01")
+        yield self.failUnlessFailure(
+            calendar.createCalendarObjectWithName("data1.ics", Component.fromString(data)),
+            InvalidComponentForStoreError,
+        )
+        yield self.abort()
+
+        self.patch(config, "EnableTimezonesByReference", True)
+
+        yield self.homeUnderTest(name="user01", create=True)
+        calendar = yield self.calendarUnderTest(name="calendar", home="user01")
+        yield self.failUnlessFailure(
+            calendar.createCalendarObjectWithName("data1.ics", Component.fromString(data)),
+            UnknownTimezone,
+        )
+        yield self.abort()
+
+
+
 class SchedulingTests(CommonCommonTests, unittest.TestCase):
     """
     CalendarObject splitting tests
@@ -2166,8 +2207,8 @@
 PRODID:-//Apple Inc.//Mac OS X 10.9.1//EN
 BEGIN:VEVENT
 UID:561F5DBB-3F38-4B3A-986F-DD05CBAF554F
-DTSTART;TZID=America/Los_Angeles:20131211T164500
-DTEND;TZID=America/Los_Angeles:20131211T174500
+DTSTART:20131211T164500Z
+DURATION:PT1H
 ATTENDEE;CN=Conference Room One;CUTYPE=ROOM;PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPAN
  T;SCHEDULE-STATUS=2.0:urn:x-uid:room-addr-1
 ATTENDEE;CN=User 01;CUTYPE=INDIVIDUAL;EMAIL=user01 at example.com;PARTSTAT=AC
@@ -2182,9 +2223,9 @@
 END:VEVENT
 BEGIN:VEVENT
 UID:561F5DBB-3F38-4B3A-986F-DD05CBAF554F
-RECURRENCE-ID;TZID=America/Los_Angeles:20131214T164500
-DTSTART;TZID=America/Los_Angeles:20131214T160000
-DTEND;TZID=America/Los_Angeles:20131214T170000
+RECURRENCE-ID:20131214T164500Z
+DTSTART:20131214T160000Z
+DURATION:PT1H
 ATTENDEE;CN=Conference Room Two;CUTYPE=ROOM;PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPAN
  T;SCHEDULE-STATUS=2.0:urn:x-uid:room-addr-2
 ATTENDEE;CN=User 01;CUTYPE=INDIVIDUAL;EMAIL=user01 at example.com;PARTSTAT=AC
@@ -2239,8 +2280,8 @@
 PRODID:-//Apple Inc.//Mac OS X 10.9.1//EN
 BEGIN:VEVENT
 UID:561F5DBB-3F38-4B3A-986F-DD05CBAF554F
-DTSTART;TZID=America/Los_Angeles:20131211T164500
-DTEND;TZID=America/Los_Angeles:20131211T174500
+DTSTART:20131211T164500Z
+DURATION:PT1H
 ATTENDEE;X-APPLE-HOSTED-STATUS=EXTERNAL:urn:x-uid:user01
 ATTENDEE:mailto:someone_external at example.com
 CREATED:20131211T221854Z
@@ -2292,14 +2333,14 @@
 PRODID:-//Apple Inc.//Mac OS X 10.9.1//EN
 BEGIN:VEVENT
 UID:561F5DBB-3F38-4B3A-986F-DD05CBAF554F
-DTSTART;TZID=America/Los_Angeles:20131211T164500
+DTSTART:20131211T164500Z
 DURATION:PT1H
 ATTENDEE:urn:x-uid:user01
 CREATED:20131211T221854Z
 DTSTAMP:20131211T230632Z
 ORGANIZER:urn:x-uid:user01
 RRULE:FREQ=DAILY;COUNT=1
-EXDATE;TZID=America/Los_Angeles:20131211T164500
+EXDATE:20131211T164500Z
 SUMMARY:external
 END:VEVENT
 END:VCALENDAR
@@ -5334,7 +5375,7 @@
 BEGIN:VEVENT
 UID:12345-67890
 DTSTART:%(now_back30)s
-DURATION:PT1H
+DURATION:PT2H
 ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
 ATTENDEE:mailto:user02 at example.com
 DTSTAMP:20051222T210507Z
@@ -5699,6 +5740,309 @@
 
 
     @inlineCallbacks
+    def test_calendarObjectSplit_inbox_delete(self):
+        """
+        Test that splitting of calendar objects works when an inbox item is deleted
+        whilst split processing is happening.
+        """
+        data = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:12345-67890
+DTSTART:%(now_back30)s
+DURATION:PT2H
+ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
+ATTENDEE:mailto:user02 at example.com
+DTSTAMP:20051222T210507Z
+ORGANIZER:mailto:user01 at example.com
+RRULE:FREQ=DAILY
+SUMMARY:1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+END:VEVENT
+BEGIN:VEVENT
+UID:12345-67890
+RECURRENCE-ID:%(now_back25)s
+DTSTART:%(now_back25)s
+DURATION:PT1H
+ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
+ATTENDEE:mailto:user02 at example.com
+DTSTAMP:20051222T210507Z
+ORGANIZER:mailto:user01 at example.com
+END:VEVENT
+BEGIN:VEVENT
+UID:12345-67890
+RECURRENCE-ID:%(now_back24)s
+DTSTART:%(now_back24)s
+DURATION:PT1H
+ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
+ATTENDEE:mailto:user02 at example.com
+DTSTAMP:20051222T210507Z
+ORGANIZER:mailto:user01 at example.com
+END:VEVENT
+BEGIN:VEVENT
+UID:12345-67890
+RECURRENCE-ID:%(now_fwd10)s
+DTSTART:%(now_fwd10)s
+DURATION:PT1H
+ATTENDEE;PARTSTAT=ACCEPTED:mailto:user01 at example.com
+ATTENDEE:mailto:user02 at example.com
+DTSTAMP:20051222T210507Z
+ORGANIZER:mailto:user01 at example.com
+END:VEVENT
+END:VCALENDAR
+"""
+
+        data_future = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:12345-67890
+DTSTART:%(now_back14)s
+DURATION:PT2H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+RRULE:FREQ=DAILY
+SEQUENCE:1
+SUMMARY:1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+END:VEVENT
+BEGIN:VEVENT
+UID:12345-67890
+RECURRENCE-ID:%(now_fwd10)s
+DTSTART:%(now_fwd10)s
+DURATION:PT1H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+SEQUENCE:1
+END:VEVENT
+END:VCALENDAR
+"""
+
+        data_past = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:%(uid)s
+DTSTART:%(now_back30)s
+DURATION:PT2H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+RRULE:FREQ=DAILY;UNTIL=%(now_back14_1)s
+SEQUENCE:1
+SUMMARY:1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+END:VEVENT
+BEGIN:VEVENT
+UID:%(uid)s
+RECURRENCE-ID:%(now_back25)s
+DTSTART:%(now_back25)s
+DURATION:PT1H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+SEQUENCE:1
+END:VEVENT
+BEGIN:VEVENT
+UID:%(uid)s
+RECURRENCE-ID:%(now_back24)s
+DTSTART:%(now_back24)s
+DURATION:PT1H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE;SCHEDULE-STATUS=1.2:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+SEQUENCE:1
+END:VEVENT
+END:VCALENDAR
+"""
+
+        data_future2 = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:12345-67890
+DTSTART:%(now_back14)s
+DURATION:PT2H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+RRULE:FREQ=DAILY
+SEQUENCE:1
+SUMMARY:1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+END:VEVENT
+BEGIN:VEVENT
+UID:12345-67890
+RECURRENCE-ID:%(now_fwd10)s
+DTSTART:%(now_fwd10)s
+DURATION:PT1H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+SEQUENCE:1
+END:VEVENT
+BEGIN:X-CALENDARSERVER-PERUSER
+UID:12345-67890
+X-CALENDARSERVER-PERUSER-UID:user02
+BEGIN:X-CALENDARSERVER-PERINSTANCE
+TRANSP:TRANSPARENT
+END:X-CALENDARSERVER-PERINSTANCE
+END:X-CALENDARSERVER-PERUSER
+END:VCALENDAR
+"""
+
+        data_past2 = """BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:%(uid)s
+DTSTART:%(now_back30)s
+DURATION:PT2H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+RRULE:FREQ=DAILY;UNTIL=%(now_back14_1)s
+SEQUENCE:1
+SUMMARY:1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+ 1234567890123456789012345678901234567890
+END:VEVENT
+BEGIN:VEVENT
+UID:%(uid)s
+RECURRENCE-ID:%(now_back25)s
+DTSTART:%(now_back25)s
+DURATION:PT1H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+SEQUENCE:1
+END:VEVENT
+BEGIN:VEVENT
+UID:%(uid)s
+RECURRENCE-ID:%(now_back24)s
+DTSTART:%(now_back24)s
+DURATION:PT1H
+ATTENDEE;CN=User 01;EMAIL=user01 at example.com;PARTSTAT=ACCEPTED:urn:x-uid:user01
+ATTENDEE;CN=User 02;EMAIL=user02 at example.com;RSVP=TRUE:urn:x-uid:user02
+DTSTAMP:20051222T210507Z
+ORGANIZER;CN=User 01;EMAIL=user01 at example.com:urn:x-uid:user01
+RELATED-TO;RELTYPE=X-CALENDARSERVER-RECURRENCE-SET:%(relID)s
+SEQUENCE:1
+END:VEVENT
+BEGIN:X-CALENDARSERVER-PERUSER
+UID:%(uid)s
+X-CALENDARSERVER-PERUSER-UID:user02
+BEGIN:X-CALENDARSERVER-PERINSTANCE
+TRANSP:TRANSPARENT
+END:X-CALENDARSERVER-PERINSTANCE
+END:X-CALENDARSERVER-PERUSER
+END:VCALENDAR
+"""
+
+        # Create one event without active split
+        self.patch(config.Scheduling.Options.Splitting, "Enabled", False)
+        calendar = yield self.calendarUnderTest(name="calendar", home="user01")
+        component = Component.fromString(data % self.subs)
+        cobj = yield calendar.createCalendarObjectWithName("data1.ics", component)
+        self.assertFalse(hasattr(cobj, "_workItems"))
+        yield self.commit()
+
+        # Patch resource lookup code so that it deletes the inbox resource after lookup is done
+        oldLookup = CalendarStoreFeatures.calendarObjectsWithUID
+        @inlineCallbacks
+        def _lookup(csself, txn, uid):
+            results = yield oldLookup(csself, txn, uid)
+
+            # Delete inbox item in another txn
+            newtxn = self.concurrentTransaction()
+            cal = yield self.calendarUnderTest(name="inbox", home="user02")
+            cobjs = yield cal.calendarObjects()
+            yield cobjs[0].remove()
+            yield newtxn.commit()
+
+            returnValue(results)
+
+        self.patch(CalendarStoreFeatures, "calendarObjectsWithUID", _lookup)
+
+        cobj = yield self.calendarObjectUnderTest(name="data1.ics", calendar_name="calendar", home="user01")
+        yield cobj.split()
+        yield self.commit()
+
+        # Get the existing and new object data
+        cal = yield self.calendarUnderTest(name="calendar", home="user01")
+        cobjs = yield cal.calendarObjects()
+        self.assertEqual(len(cobjs), 2)
+        for cobj in cobjs:
+            self.assertTrue(cobj.isScheduleObject)
+            ical = yield cobj.component()
+            if ical.resourceUID() == "12345-67890":
+                ical_future = ical
+            else:
+                ical_past = ical
+
+        relID = ical_future.masterComponent().propertyValue("RELATED-TO")
+        newUID = ical_past.masterComponent().propertyValue("UID")
+
+        # Verify user01 data
+        title = "user01"
+        relsubs = dict(self.subs)
+        relsubs["uid"] = newUID
+        relsubs["relID"] = relID
+        self.assertEqual(normalize_iCalStr(ical_future), normalize_iCalStr(data_future) % relsubs, "Failed future: %s" % (title,))
+        self.assertEqual(normalize_iCalStr(ical_past), normalize_iCalStr(data_past) % relsubs, "Failed past: %s" % (title,))
+
+        # Get user02 data
+        cal = yield self.calendarUnderTest(name="calendar", home="user02")
+        cobjs = yield cal.calendarObjects()
+        self.assertEqual(len(cobjs), 2)
+        for cobj in cobjs:
+            ical = yield cobj.component()
+            if ical.resourceUID() == "12345-67890":
+                ical_future = ical
+            else:
+                ical_past = ical
+
+        cal = yield self.calendarUnderTest(name="inbox", home="user02")
+        cobjs = yield cal.calendarObjects()
+        self.assertEqual(len(cobjs), 0)
+
+        # Verify user02 data
+        title = "user02"
+        self.assertEqual(normalize_iCalStr(ical_future), normalize_iCalStr(data_future2) % relsubs, "Failed future: %s" % (title,))
+        self.assertEqual(normalize_iCalStr(ical_past), normalize_iCalStr(data_past2) % relsubs, "Failed past: %s" % (title,))
+
+
+    @inlineCallbacks
     def _setupSplitAt(self):
         """
         Test that user triggered splitting of calendar objects works.

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql_sharing.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql_sharing.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/datastore/test/test_sql_sharing.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -23,6 +23,10 @@
     populateCalendarsFrom
 from txdav.common.datastore.sql_tables import _BIND_MODE_READ, \
     _BIND_STATUS_INVITED, _BIND_MODE_DIRECT, _BIND_STATUS_ACCEPTED
+from txdav.base.propertystore.base import PropertyName
+from txdav.xml.base import WebDAVTextElement
+from twistedcaldav import customxml
+from txdav.xml.element import registerElement, registerElementClass
 
 
 class BaseSharingTests(CommonCommonTests, TestCase):
@@ -489,7 +493,94 @@
         yield self.commit()
 
 
+    @inlineCallbacks
+    def test_perUserSharedProxyCollectionProperties(self):
+        """
+        Test that sharees and proxies get their own per-user properties, with some being
+        initialized based ont he owner value.
+        """
+        @registerElement
+        @registerElementClass
+        class DummySharingProperty (WebDAVTextElement):
+            namespace = "http://calendarserver.org/ns/"
+            name = "dummy-sharing"
 
+        shared_name = yield self._createShare()
+
+        # Add owner properties
+        home = yield self.homeUnderTest(name="user01")
+        calendar = yield home.calendarWithName("calendar")
+
+        calendar.properties()[PropertyName.fromElement(DummySharingProperty)] = DummySharingProperty.fromString("user01")
+        calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)] = customxml.CalendarColor.fromString("#000001")
+        yield self.commit()
+
+        # Check/add sharee properties
+        home = yield self.homeUnderTest(name="user02")
+        calendar = yield home.calendarWithName(shared_name)
+        self.assertTrue(PropertyName.fromElement(DummySharingProperty) not in calendar.properties())
+        self.assertTrue(PropertyName.fromElement(customxml.CalendarColor) not in calendar.properties())
+        calendar.properties()[PropertyName.fromElement(DummySharingProperty)] = DummySharingProperty.fromString("user02")
+        calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)] = customxml.CalendarColor.fromString("#000002")
+        yield self.commit()
+
+        # Check/add owner proxy properties
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user03"
+        home = yield self.homeUnderTest(name="user01")
+        calendar = yield home.calendarWithName("calendar")
+        self.assertTrue(PropertyName.fromElement(DummySharingProperty) in calendar.properties())
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(DummySharingProperty)]), "user01")
+        self.assertTrue(PropertyName.fromElement(customxml.CalendarColor) in calendar.properties())
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)]), "#000001")
+        calendar.properties()[PropertyName.fromElement(DummySharingProperty)] = DummySharingProperty.fromString("user03")
+        calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)] = customxml.CalendarColor.fromString("#000003")
+        yield self.commit()
+
+        # Check/add sharee proxy properties
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user04"
+        home = yield self.homeUnderTest(name="user02")
+        calendar = yield home.calendarWithName(shared_name)
+        self.assertTrue(PropertyName.fromElement(DummySharingProperty) in calendar.properties())
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(DummySharingProperty)]), "user02")
+        self.assertTrue(PropertyName.fromElement(customxml.CalendarColor) in calendar.properties())
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)]), "#000002")
+        calendar.properties()[PropertyName.fromElement(DummySharingProperty)] = DummySharingProperty.fromString("user04")
+        calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)] = customxml.CalendarColor.fromString("#000004")
+        yield self.commit()
+
+        # Validate all properties
+        home = yield self.homeUnderTest(name="user01")
+        calendar = yield home.calendarWithName("calendar")
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(DummySharingProperty)]), "user03")
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)]), "#000001")
+        yield self.commit()
+
+        home = yield self.homeUnderTest(name="user02")
+        calendar = yield home.calendarWithName(shared_name)
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(DummySharingProperty)]), "user04")
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)]), "#000002")
+        yield self.commit()
+
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user03"
+        home = yield self.homeUnderTest(name="user01")
+        calendar = yield home.calendarWithName("calendar")
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(DummySharingProperty)]), "user03")
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)]), "#000003")
+        yield self.commit()
+
+        txn = self.transactionUnderTest()
+        txn._authz_uid = "user04"
+        home = yield self.homeUnderTest(name="user02")
+        calendar = yield home.calendarWithName(shared_name)
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(DummySharingProperty)]), "user04")
+        self.assertEqual(str(calendar.properties()[PropertyName.fromElement(customxml.CalendarColor)]), "#000004")
+        yield self.commit()
+
+
+
 class SharingRevisions(BaseSharingTests):
     """
     Test store-based sharing and interaction with revision table.

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/icalendarstore.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/icalendarstore.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/caldav/icalendarstore.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -857,6 +857,13 @@
 
 
 
+class UnknownTimezone(CommonStoreError):
+    """
+    Unknown timezone id used.
+    """
+
+
+
 #
 # FIXME: These may belong elsewhere.
 #

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/file.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/file.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/file.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -139,6 +139,7 @@
             (
                 PropertyName.fromElement(customxml.GETCTag),
             ),
+            (),
         )
 
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/query/filter.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/query/filter.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/query/filter.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -136,7 +136,7 @@
                     return not allof
             return allof
         else:
-            return False
+            return True
 
 
     def valid(self):
@@ -242,8 +242,8 @@
         """
 
         allof = self.propfilter_test == "allof"
-        if self.qualifier and allof != self.qualifier.match(item):
-            return not allof
+        if self.qualifier and allof and not self.qualifier.match(item):
+            return False
 
         if len(self.filters) > 0:
             for filter in self.filters:

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/sql.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/carddav/datastore/sql.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -39,7 +39,6 @@
 from twisted.internet.defer import inlineCallbacks, returnValue
 from twisted.python import hashlib
 
-from twistedcaldav import carddavxml, customxml
 from twistedcaldav.config import config
 from twistedcaldav.memcacher import Memcacher
 from twistedcaldav.vcard import Component as VCard, InvalidVCardDataError, Property, \
@@ -65,6 +64,7 @@
     AllRetriesFailed, ObjectResourceNameAlreadyExistsError, \
     SyncTokenValidException, IndexedSearchException
 from txdav.xml import element
+from txdav.xml.parser import WebDAVDocument
 
 from zope.interface.declarations import implements
 
@@ -87,9 +87,9 @@
     _cacher = Memcacher("SQL.adbkhome", pickle=True, key_normalization=False)
 
 
-    def __init__(self, transaction, ownerUID):
+    def __init__(self, transaction, ownerUID, authzUID=None):
 
-        super(AddressBookHome, self).__init__(transaction, ownerUID)
+        super(AddressBookHome, self).__init__(transaction, ownerUID, authzUID=authzUID)
         self._addressbookPropertyStoreID = None
         self._addressbook = None
 
@@ -467,6 +467,9 @@
         "UID": _objectSchema.UID,
     }
 
+    _shadowProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.AddressBooks.CollectionProperties.Shadowable])
+    _proxyProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.AddressBooks.CollectionProperties.ProxyOverride])
+    _globalProperties = tuple([PropertyName.fromString(prop) for prop in config.Sharing.AddressBooks.CollectionProperties.Global])
 
     @classmethod
     @inlineCallbacks
@@ -797,6 +800,7 @@
             props = yield PropertyStore.load(
                 self.ownerHome().uid(),
                 self.viewerHome().uid(),
+                None,
                 self._txn,
                 self.ownerHome()._addressbookPropertyStoreID,  # not ._resourceID as in CommonHomeChild._loadPropertyStore()
                 notifyCallback=self.notifyPropertyChanged
@@ -807,25 +811,22 @@
     def initPropertyStore(self, props):
         # Setup peruser special properties
         props.setSpecialProperties(
-            (
-                PropertyName.fromElement(carddavxml.AddressBookDescription),
-            ),
-            (
-                PropertyName.fromElement(customxml.GETCTag),
-            ),
+            self._shadowProperties,
+            self._globalProperties,
+            self._proxyProperties,
         )
 
 
     def getInviteCopyProperties(self):
         """
-        Get a dictionary of property name/values (as strings) for properties that are shadowable and
+        Get a dictionary of property name/values (as XML strings) for properties that are shadowable and
         need to be copied to a sharee's collection when an external (cross-pod) share is created.
         Sub-classes should override to expose the properties they care about.
         """
         props = {}
-        for elem in (element.DisplayName, carddavxml.AddressBookDescription,):
-            if PropertyName.fromElement(elem) in self.properties():
-                props[elem.sname()] = str(self.properties()[PropertyName.fromElement(elem)])
+        for ename in (PropertyName.fromElement(element.DisplayName),) + self._shadowProperties:
+            if ename in self.properties():
+                props[ename.toString()] = self.properties()[ename].toxml()
         return props
 
 
@@ -836,15 +837,15 @@
         care about.
         """
         # Initialize these for all shares
-        for elem in (carddavxml.AddressBookDescription,):
-            if PropertyName.fromElement(elem) not in self.properties() and elem.sname() in props:
-                self.properties()[PropertyName.fromElement(elem)] = elem.fromString(props[elem.sname()])
+        for ename in self._shadowProperties:
+            if ename not in self.properties() and ename.toString() in props:
+                self.properties()[ename] = WebDAVDocument.fromString(props[ename]).root_element
 
         # Only initialize these for direct shares
         if self.direct():
-            for elem in (element.DisplayName,):
-                if PropertyName.fromElement(elem) not in self.properties() and elem.sname() in props:
-                    self.properties()[PropertyName.fromElement(elem)] = elem.fromString(props[elem.sname()])
+            for ename in (PropertyName.fromElement(element.DisplayName),):
+                if ename not in self.properties() and ename.toString() in props:
+                    self.properties()[ename] = WebDAVDocument.fromString(props[ename]).root_element
 
 
     def contentType(self):
@@ -1165,12 +1166,12 @@
 
         if ownerHomeToDataRowMap:
             # Get property stores for all these child resources (if any found)
-            addressbookPropertyStoreIDs = [ownerHome._addressbookPropertyStoreID for ownerHome in ownerHomeToDataRowMap]
+            addressbookPropertyStoreIDs = [ownerHomeItem._addressbookPropertyStoreID for ownerHomeItem in ownerHomeToDataRowMap]
             propertyStores = yield PropertyStore.forMultipleResourcesWithResourceIDs(
-                home.uid(), home._txn, addressbookPropertyStoreIDs
+                home.uid(), None, None, home._txn, addressbookPropertyStoreIDs
             )
 
-            addressbookResourceIDs = [ownerHome.addressbook()._resourceID for ownerHome in ownerHomeToDataRowMap]
+            addressbookResourceIDs = [ownerHomeItem.addressbook()._resourceID for ownerHomeItem in ownerHomeToDataRowMap]
             revisions = yield cls._revisionsForResourceIDs(addressbookResourceIDs).on(home._txn, resourceIDs=addressbookResourceIDs)
             revisions = dict(revisions)
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/file.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/file.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/file.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -1701,6 +1701,7 @@
             (
                 PropertyName.fromElement(customxml.NotificationType),
             ),
+            (),
         )
 
 

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -635,8 +635,7 @@
 
         For example::
 
-            yield (txn.enqueue(MyWorkItem, workDescription="some work to do")
-                   .whenProposed())
+            yield (txn.enqueue(MyWorkItem, workDescription="some work to do"))
 
         @return: a work proposal describing various events in the work's
             life-cycle.
@@ -695,7 +694,7 @@
         ).on(self)
 
 
-    def _determineMemo(self, storeType, uid, create=False):
+    def _determineMemo(self, storeType, uid, create=False, authzUID=None):
         """
         Determine the memo dictionary to use for homeWithUID.
         """
@@ -721,19 +720,27 @@
 
 
     @memoizedKey("uid", _determineMemo)
-    def homeWithUID(self, storeType, uid, create=False):
+    def homeWithUID(self, storeType, uid, create=False, authzUID=None):
+        """
+        We need to distinguish between various different users "looking" at a home and its
+        child resources because we have per-user properties that depend on which user is "looking".
+        By default the viewer is set to the authz_uid on the transaction, or the owner if no authz,
+        but it can be overridden using L{authzUID}. This is useful when the store needs to get to
+        other user's homes with the viewer being the owner of that home as opposed to authz_uid. That
+        often happens when manipulating shares.
+        """
         if storeType not in (ECALENDARTYPE, EADDRESSBOOKTYPE):
             raise RuntimeError("Unknown home type.")
 
-        return self._homeClass[storeType].homeWithUID(self, uid, create)
+        return self._homeClass[storeType].homeWithUID(self, uid, create, authzUID)
 
 
-    def calendarHomeWithUID(self, uid, create=False):
-        return self.homeWithUID(ECALENDARTYPE, uid, create=create)
+    def calendarHomeWithUID(self, uid, create=False, authzUID=None):
+        return self.homeWithUID(ECALENDARTYPE, uid, create=create, authzUID=authzUID)
 
 
-    def addressbookHomeWithUID(self, uid, create=False):
-        return self.homeWithUID(EADDRESSBOOKTYPE, uid, create=create)
+    def addressbookHomeWithUID(self, uid, create=False, authzUID=None):
+        return self.homeWithUID(EADDRESSBOOKTYPE, uid, create=create, authzUID=authzUID)
 
 
     @inlineCallbacks
@@ -741,10 +748,10 @@
         """
         Load a calendar or addressbook home by its integer resource ID.
         """
-        uid = (yield self._homeClass[storeType]
-               .homeUIDWithResourceID(self, rid))
+        uid = (yield self._homeClass[storeType].homeUIDWithResourceID(self, rid))
         if uid:
-            result = (yield self.homeWithUID(storeType, uid))
+            # Always get the owner's view of the home = i.e., authzUID=uid
+            result = (yield self.homeWithUID(storeType, uid, authzUID=uid))
         else:
             result = None
         returnValue(result)
@@ -2839,7 +2846,7 @@
 
     @classmethod
     @inlineCallbacks
-    def makeClass(cls, transaction, ownerUID, no_cache=False):
+    def makeClass(cls, transaction, ownerUID, no_cache=False, authzUID=None):
         """
         Build the actual home class taking into account the possibility that we might need to
         switch in the external version of the class.
@@ -2851,14 +2858,20 @@
         @param no_cache: should cached query be used
         @type no_cache: C{bool}
         """
-        home = cls(transaction, ownerUID)
+        home = cls(transaction, ownerUID, authzUID=authzUID)
         actualHome = yield home.initFromStore(no_cache)
         returnValue(actualHome)
 
 
-    def __init__(self, transaction, ownerUID):
+    def __init__(self, transaction, ownerUID, authzUID=None):
         self._txn = transaction
         self._ownerUID = ownerUID
+        self._authzUID = authzUID
+        if self._authzUID is None:
+            if self._txn._authz_uid is not None:
+                self._authzUID = self._txn._authz_uid
+            else:
+                self._authzUID = self._ownerUID
         self._resourceID = None
         self._status = _HOME_STATUS_NORMAL
         self._dataVersion = None
@@ -3053,11 +3066,11 @@
 
     @classmethod
     @inlineCallbacks
-    def homeWithUID(cls, txn, uid, create=False):
+    def homeWithUID(cls, txn, uid, create=False, authzUID=None):
         """
         @param uid: I'm going to assume uid is utf-8 encoded bytes
         """
-        homeObject = yield cls.makeClass(txn, uid)
+        homeObject = yield cls.makeClass(txn, uid, authzUID=authzUID)
         if homeObject is not None:
             returnValue(homeObject)
         else:
@@ -3092,7 +3105,7 @@
                 yield savepoint.rollback(txn)
 
                 # Retry the query - row may exist now, if not re-raise
-                homeObject = yield cls.makeClass(txn, uid)
+                homeObject = yield cls.makeClass(txn, uid, authzUID=authzUID)
                 if homeObject:
                     returnValue(homeObject)
                 else:
@@ -3103,7 +3116,7 @@
                 # Note that we must not cache the owner_uid->resource_id
                 # mapping in _cacher when creating as we don't want that to appear
                 # until AFTER the commit
-                home = yield cls.makeClass(txn, uid, no_cache=True)
+                home = yield cls.makeClass(txn, uid, no_cache=True, authzUID=authzUID)
                 yield home.createdHome()
                 returnValue(home)
 
@@ -3141,6 +3154,15 @@
         return self._ownerUID
 
 
+    def authzuid(self):
+        """
+        Retrieve the unique identifier of the user accessing the data in this home.
+
+        @return: a string.
+        """
+        return self._authzUID
+
+
     def external(self):
         """
         Is this an external home.
@@ -3541,9 +3563,13 @@
 
     @inlineCallbacks
     def _loadPropertyStore(self):
+
+        # Use any authz uid in place of the viewer uid so delegates have their own
+        # set of properties
         props = yield PropertyStore.load(
             self.uid(),
             self.uid(),
+            self.authzuid(),
             self._txn,
             self._resourceID,
             notifyCallback=self.notifyChanged
@@ -4653,6 +4679,9 @@
     def ownerView(self):
         """
         Return the owner resource counterpart of this shared resource.
+
+        Note we have to play a trick with the property store to coerce it to match
+        the per-user properties for the owner.
         """
         # Get the child of the owner home that has the same resource id as the owned one
         ownerView = yield self.ownerHome().childWithID(self.id())
@@ -4663,10 +4692,13 @@
     def shareeView(self, shareeUID):
         """
         Return the shared resource counterpart of this owned resource for the specified sharee.
+
+        Note we have to play a trick with the property store to coerce it to match
+        the per-user properties for the sharee.
         """
 
         # Get the child of the sharee home that has the same resource id as the owned one
-        shareeHome = yield self._txn.homeWithUID(self._home._homeType, shareeUID)
+        shareeHome = yield self._txn.homeWithUID(self._home._homeType, shareeUID, authzUID=shareeUID)
         shareeView = (yield shareeHome.allChildWithID(self.id())) if shareeHome is not None else None
         returnValue(shareeView)
 
@@ -5435,7 +5467,7 @@
             childResourceIDs = [dataRow[2] for dataRow in dataRows]
 
             propertyStores = yield PropertyStore.forMultipleResourcesWithResourceIDs(
-                home.uid(), home._txn, childResourceIDs
+                home.uid(), None, None, home._txn, childResourceIDs
             )
 
             # Get revisions
@@ -6217,9 +6249,12 @@
     @inlineCallbacks
     def _loadPropertyStore(self, props=None):
         if props is None:
+            # Use any authz uid in place of the viewer uid so delegates have their own
+            # set of properties
             props = yield PropertyStore.load(
                 self.ownerHome().uid(),
                 self.viewerHome().uid(),
+                self.viewerHome().authzuid(),
                 self._txn,
                 self._resourceID,
                 notifyCallback=self.notifyPropertyChanged
@@ -6535,6 +6570,8 @@
             if parent.objectResourcesHaveProperties():
                 propertyStores = (yield PropertyStore.forMultipleResources(
                     parent._home.uid(),
+                    None,
+                    None,
                     parent._txn,
                     cls._objectSchema.RESOURCE_ID,
                     cls._objectSchema.PARENT_RESOURCE_ID,
@@ -6612,6 +6649,8 @@
             if parent.objectResourcesHaveProperties():
                 propertyStores = (yield PropertyStore.forMultipleResourcesWithResourceIDs(
                     parent._home.uid(),
+                    None,
+                    None,
                     parent._txn,
                     tuple([row[0] for row in dataRows]),
                 ))
@@ -6790,8 +6829,9 @@
         if props is None:
             if self._parentCollection.objectResourcesHaveProperties():
                 props = yield PropertyStore.load(
+                    self._parentCollection.ownerHome().uid(),
                     self._parentCollection.viewerHome().uid(),
-                    self._parentCollection.ownerHome().uid(),
+                    self._parentCollection.viewerHome().authzuid(),
                     self._txn,
                     self._resourceID,
                     created=created
@@ -7154,6 +7194,7 @@
         self._propertyStore = yield PropertyStore.load(
             self._uid,
             self._uid,
+            None,
             self._txn,
             self._resourceID,
             notifyCallback=self.notifyChanged
@@ -7493,6 +7534,8 @@
             # Get property stores for all these child resources (if any found)
             propertyStores = (yield PropertyStore.forMultipleResources(
                 parent.uid(),
+                None,
+                None,
                 parent._txn,
                 schema.NOTIFICATION.RESOURCE_ID,
                 schema.NOTIFICATION.NOTIFICATION_HOME_RESOURCE_ID,

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql_external.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql_external.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/sql_external.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -149,6 +149,7 @@
         props = yield PropertyStore.load(
             self.uid(),
             self.uid(),
+            None,
             self._txn,
             self._resourceID,
             notifyCallback=self.notifyChanged

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/test/accounts/accounts.xml
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/test/accounts/accounts.xml	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/common/datastore/test/accounts/accounts.xml	2014-06-11 03:50:42 UTC (rev 13630)
@@ -387,6 +387,12 @@
       <member-uid>8B4288F6-CC82-491D-8EF9-642EF4F3E7D0</member-uid>
   </record>
 
+  <record type="group">
+    <uid>emptygroup</uid>
+    <short-name>emptygroup</short-name>
+    <full-name>Empty Group</full-name>
+  </record>
+
   <!-- Calverify test records -->
 
   <record type="user">

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/dps/client.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/dps/client.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/dps/client.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -39,7 +39,7 @@
     RecordsMatchingTokensCommand, RecordsMatchingFieldsCommand,
     MembersCommand, GroupsCommand, SetMembersCommand,
     VerifyPlaintextPasswordCommand, VerifyHTTPDigestCommand,
-    WikiAccessForUID
+    WikiAccessForUIDCommand, ContinuationCommand
 )
 from txdav.who.directory import (
     CalendarDirectoryRecordMixin, CalendarDirectoryServiceMixin
@@ -127,12 +127,24 @@
 
 
     def _processSingleRecord(self, result):
+        """
+        Takes a dictionary with a "fields" key whose value is a pickled
+        dictionary of a record's fields, and returns a record.
+        """
         serializedFields = pickle.loads(result['fields'])
         return self._dictToRecord(serializedFields)
 
 
     def _processMultipleRecords(self, result):
-        serializedFieldsList = pickle.loads(result['fieldsList'])
+        """
+        Takes a dictionary with a "fieldsList" key whose value is an iterable
+        of pickled dictionaries (of records' fields), and returns a list of
+        records.
+        """
+        serializedFieldsList = []
+        for fields in result["fieldsList"]:
+            fields = pickle.loads(fields)
+            serializedFieldsList.append(fields)
         results = []
         for serializedFields in serializedFieldsList:
             record = self._dictToRecord(serializedFields)
@@ -158,6 +170,26 @@
 
 
     @inlineCallbacks
+    def _sendCommand(self, command, **kwds):
+        """
+        Execute a remote AMP command, first making the connection to the peer.
+        Any kwds are passed on to the AMP command.
+
+        @param command: the AMP command to call
+        @type command: L{twisted.protocols.amp.Command}
+        """
+        ampProto = (yield self._getConnection())
+        try:
+            results = (yield ampProto.callRemote(command, **kwds))
+        except Exception, e:
+            log.error("Failed AMP command", error=e)
+            #  FIXME: is there a way to hook into ConnectionLost?
+            self._connection = None
+            raise
+        returnValue(results)
+
+
+    @inlineCallbacks
     def _call(self, command, postProcess, **kwds):
         """
         Execute a remote AMP command, first making the connection to the peer,
@@ -172,14 +204,27 @@
             L{Deferred} which fires with the post-processed results
         @type postProcess: callable
         """
-        ampProto = (yield self._getConnection())
-        try:
-            results = (yield ampProto.callRemote(command, **kwds))
-        except Exception, e:
-            log.error("Failed AMP command", error=e)
-            #  FIXME: is there a way to hook into ConnectionLost?
-            self._connection = None
-            raise
+        results = yield self._sendCommand(command, **kwds)
+        if results.get("continuation", None) is None:
+            # We have all the results
+            returnValue(postProcess(results))
+
+        # There are more results to fetch, so loop until the continuation
+        # keyword we get back is None
+
+        multi = [results]
+
+        while results.get("continuation", None) is not None:
+            results = yield self._sendCommand(
+                ContinuationCommand,
+                continuation=results["continuation"]
+            )
+            multi.append(results)
+
+        results = {"fieldsList": []}
+        for result in multi:
+            results["fieldsList"].extend(result["fieldsList"])
+
         returnValue(postProcess(results))
 
 
@@ -356,7 +401,7 @@
     def accessForRecord(self, record):
         log.debug("DPS Client accessForRecord")
         return self.service._call(
-            WikiAccessForUID,
+            WikiAccessForUIDCommand,
             self._convertAccess,
             wikiUID=self.uid.encode("utf-8"),
             uid=record.uid.encode("utf-8")

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/dps/commands.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/dps/commands.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/dps/commands.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -53,7 +53,8 @@
         ('recordType', amp.String()),
     ]
     response = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
     ]
 
 
@@ -63,18 +64,31 @@
         ('emailAddress', amp.String()),
     ]
     response = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
     ]
 
 
 
+class ContinuationCommand(amp.Command):
+    arguments = [
+        ('continuation', amp.String(optional=True)),
+    ]
+    response = [
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
+    ]
+
+
+
 class RecordsMatchingTokensCommand(amp.Command):
     arguments = [
         ('tokens', amp.ListOf(amp.String())),
         ('context', amp.String(optional=True)),
     ]
     response = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
     ]
 
 
@@ -86,14 +100,15 @@
         ('recordType', amp.String(optional=True)),
     ]
     response = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
     ]
 
 
 
 class UpdateRecordsCommand(amp.Command):
     arguments = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
         ('create', amp.Boolean(optional=True)),
     ]
     response = [
@@ -117,7 +132,8 @@
         ('uid', amp.String()),
     ]
     response = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
     ]
 
 
@@ -127,7 +143,8 @@
         ('uid', amp.String()),
     ]
     response = [
-        ('fieldsList', amp.String()),
+        ('fieldsList', amp.ListOf(amp.String())),
+        ('continuation', amp.String(optional=True)),
     ]
 
 
@@ -174,7 +191,7 @@
 
 
 
-class WikiAccessForUID(amp.Command):
+class WikiAccessForUIDCommand(amp.Command):
     arguments = [
         ('wikiUID', amp.String()),
         ('uid', amp.String()),

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/dps/json.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/dps/json.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/dps/json.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -75,6 +75,27 @@
 
 
 
+def matchTypeFromJSON(json):
+    return MatchType.lookupByName(json)
+
+
+
+def matchFlagsFromJSON(json):
+    if json == "{}":
+        return MatchFlags.none
+
+    if json.startswith("{") and json.endswith("}"):
+        # Composite flags: "{A,B,C,...}"
+        flags = MatchFlags.none
+        for flag in json[1:-1].split(","):
+            flags |= MatchFlags.lookupByName(flag)
+
+        return flags
+
+    return MatchFlags.lookupByName(json)
+
+
+
 def matchExpressionFromJSON(service, json):
     try:
         jsonField = json["field"]
@@ -84,23 +105,11 @@
             "JSON match expression must have {!r} key.".format(e[0])
         )
 
-    jsonMatch = json.get("match", "equals")
-    jsonFlags = json.get("flags", "{}")
-
     fieldName = service.fieldName.lookupByName(jsonField)
     fieldValue = unicode(jsonValue)
-    matchType = MatchType.lookupByName(jsonMatch)
+    matchType = matchTypeFromJSON(json.get("match", "equals"))
+    flags = matchFlagsFromJSON(json.get("flags", "{}"))
 
-    if jsonFlags == "{}":
-        flags = MatchFlags.none
-    elif jsonFlags.startswith("{") and jsonFlags.endswith("}"):
-        # Composite flags: "{A,B,C,...}"
-        flags = MatchFlags.none
-        for flag in jsonFlags[1:-1].split(","):
-            flags |= MatchFlags.lookupByName(flag)
-    else:
-        flags = MatchFlags.lookupByName(jsonFlags)
-
     return MatchExpression(
         fieldName, fieldValue,
         matchType=matchType, flags=flags,

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/dps/server.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/dps/server.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/dps/server.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -15,6 +15,7 @@
 ##
 
 import cPickle as pickle
+import datetime
 import uuid
 
 from twext.python.log import Logger
@@ -35,7 +36,7 @@
     RecordsMatchingTokensCommand, RecordsMatchingFieldsCommand,
     MembersCommand, GroupsCommand, SetMembersCommand,
     VerifyPlaintextPasswordCommand, VerifyHTTPDigestCommand,
-    WikiAccessForUID
+    WikiAccessForUIDCommand, ContinuationCommand
     # UpdateRecordsCommand, RemoveRecordsCommand
 )
 from txdav.who.util import directoryFromConfig
@@ -62,7 +63,104 @@
         amp.AMP.__init__(self)
         self._directory = directory
 
+        # How to large we let an AMP response get before breaking it up
+        self._maxSize = 60000
 
+        # The cache of results we have not fully responded with.  A dictionary
+        # whose keys are "continuation tokens" and whose values are tuples of
+        # (timestamp, list-of-records).  When a response does not fit within
+        # AMP size limits, the remaining records are stored in this dictionary
+        # keyed by an opaque token we generate to return to the client so that
+        # it can ask for the remaining results later.
+        self._continuations = {}
+
+
+    def _storeContinuation(self, records):
+        """
+        Store an iterable of records and generate an opaque token we can
+        give back to the client so they can later retrieve these remaining
+        results that did not fit in the previous AMP response.
+
+        @param records: an iterable of records
+        @return: a C{str} token
+        """
+        token = str(uuid.uuid4())
+        # FIXME: I included a timestamp just in case we want to have code that
+        # looks for stale continuations to expire them.
+        self._continuations[token] = (datetime.datetime.now(), records)
+        return token
+
+
+    def _retrieveContinuation(self, token):
+        """
+        Retrieve the previously stored iterable of records associated with
+        the token, and remove the token.
+
+        @param token: a C{str} token previously returned by _storeContinuation
+        @return: an iterable of records, or None if the token does not exist
+        """
+        if token in self._continuations:
+            timestamp, records = self._continuations[token]
+            del self._continuations[token]
+        else:
+            records = None
+        return records
+
+
+    @ContinuationCommand.responder
+    def continuation(self, continuation):
+        """
+        The client calls this command in order to retrieve records that did
+        not fit into an earlier response.
+
+        @param continuation: the token returned via the "continuation" key
+            in the previous response.
+        """
+        log.debug("Continuation: {c}", c=continuation)
+        records = self._retrieveContinuation(continuation)
+        response = self._recordsToResponse(records)
+        log.debug("Responding with: {response}", response=response)
+        return response
+
+
+    def _recordsToResponse(self, records):
+        """
+        Craft an AMP response containing as many records as will fit within
+        the size limit.  Remaining records are stored as a "continuation",
+        identified by a token that is returned to the client to fetch later
+        via the ContinuationCommand.
+
+        @param records: an iterable of records
+        @return: the response dictionary, with a list of pickled records
+            stored in the "fieldsList" key, and if there are leftover
+            records that did not fit, there will be a "continuation" key
+            containing the token the client must send via ContinuationCommand.
+        """
+        fieldsList = []
+        count = 0
+        if records:
+            size = 0
+            while size < self._maxSize:
+                try:
+                    record = records.pop()
+                except (KeyError, IndexError):
+                    # We're done.
+                    # Note: because records is an iterable (list or set)
+                    # we're catching both KeyError and IndexError.
+                    break
+                pickled = pickle.dumps(self.recordToDict(record))
+                size = size + len(pickled)
+                fieldsList.append(pickled)
+                count += 1
+
+        response = {"fieldsList": fieldsList}
+
+        if records:
+            response["continuation"] = self._storeContinuation(records)
+
+        return response
+
+
     def recordToDict(self, record):
         """
         Turn a record in a dictionary of fields which can be reconstituted
@@ -140,12 +238,7 @@
         records = (yield self._directory.recordsWithRecordType(
             self._directory.recordType.lookupByName(recordType))
         )
-        fieldsList = []
-        for record in records:
-            fieldsList.append(self.recordToDict(record))
-        response = {
-            "fieldsList": pickle.dumps(fieldsList),
-        }
+        response = self._recordsToResponse(records)
         log.debug("Responding with: {response}", response=response)
         returnValue(response)
 
@@ -156,16 +249,13 @@
         emailAddress = emailAddress.decode("utf-8")
         log.debug("RecordsWithEmailAddress: {e}", e=emailAddress)
         records = (yield self._directory.recordsWithEmailAddress(emailAddress))
-        fieldsList = []
-        for record in records:
-            fieldsList.append(self.recordToDict(record))
-        response = {
-            "fieldsList": pickle.dumps(fieldsList),
-        }
+        response = self._recordsToResponse(records)
         log.debug("Responding with: {response}", response=response)
         returnValue(response)
 
 
+
+
     @RecordsMatchingTokensCommand.responder
     @inlineCallbacks
     def recordsMatchingTokens(self, tokens, context=None):
@@ -174,16 +264,12 @@
         records = yield self._directory.recordsMatchingTokens(
             tokens, context=context
         )
-        fieldsList = []
-        for record in records:
-            fieldsList.append(self.recordToDict(record))
-        response = {
-            "fieldsList": pickle.dumps(fieldsList),
-        }
+        response = self._recordsToResponse(records)
         log.debug("Responding with: {response}", response=response)
         returnValue(response)
 
 
+
     @RecordsMatchingFieldsCommand.responder
     @inlineCallbacks
     def recordsMatchingFields(self, fields, operand="OR", recordType=None):
@@ -200,8 +286,18 @@
                 valueType = self._directory.fieldName.valueType(field)
                 if valueType is uuid.UUID:
                     searchTerm = uuid.UUID(searchTerm)
-            matchFlags = MatchFlags.lookupByName(matchFlags.decode("utf-8"))
+
+            matchFlags = matchFlags.decode("utf-8")
+            if matchFlags.startswith("{") and matchFlags.endswith("}"):
+                flags = MatchFlags.none
+                for flag in matchFlags[1:-1].split(","):
+                    flags |= MatchFlags.lookupByName(flag)
+                matchFlags = flags
+            else:
+                matchFlags = MatchFlags.lookupByName(matchFlags)
+
             matchType = MatchType.lookupByName(matchType.decode("utf-8"))
+
             newFields.append((fieldName, searchTerm, matchFlags, matchType))
         operand = Operand.lookupByName(operand)
         if recordType:
@@ -209,12 +305,7 @@
         records = yield self._directory.recordsMatchingFields(
             newFields, operand=operand, recordType=recordType
         )
-        fieldsList = []
-        for record in records:
-            fieldsList.append(self.recordToDict(record))
-        response = {
-            "fieldsList": pickle.dumps(fieldsList),
-        }
+        response = self._recordsToResponse(records)
         log.debug("Responding with: {response}", response=response)
         returnValue(response)
 
@@ -230,13 +321,12 @@
             log.error("Failed in members", error=e)
             record = None
 
-        fieldsList = []
+        records = []
         if record is not None:
             for member in (yield record.members()):
-                fieldsList.append(self.recordToDict(member))
-        response = {
-            "fieldsList": pickle.dumps(fieldsList),
-        }
+                records.append(member)
+
+        response = self._recordsToResponse(records)
         log.debug("Responding with: {response}", response=response)
         returnValue(response)
 
@@ -282,12 +372,10 @@
             log.error("Failed in groups", error=e)
             record = None
 
-        fieldsList = []
+        records = []
         for group in (yield record.groups()):
-            fieldsList.append(self.recordToDict(group))
-        response = {
-            "fieldsList": pickle.dumps(fieldsList),
-        }
+            records.append(group)
+        response = self._recordsToResponse(records)
         log.debug("Responding with: {response}", response=response)
         returnValue(response)
 
@@ -342,7 +430,7 @@
         returnValue(response)
 
 
-    @WikiAccessForUID.responder
+    @WikiAccessForUIDCommand.responder
     @inlineCallbacks
     def wikiAccessForUID(self, wikiUID, uid):
         wikiUID = wikiUID.decode("utf-8")

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/dps/test/test_client.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/dps/test/test_client.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/dps/test/test_client.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -27,11 +27,15 @@
 from twisted.python.filepath import FilePath
 from twisted.test.testutils import returnConnected
 from twisted.trial import unittest
+from twistedcaldav.config import config
+from twistedcaldav.test.util import StoreTestCase
 from txdav.dps.client import DirectoryService
 from txdav.dps.server import DirectoryProxyAMPProtocol
 from txdav.who.directory import CalendarDirectoryServiceMixin
-from twistedcaldav.test.util import StoreTestCase
-from twistedcaldav.config import config
+from txdav.who.groups import GroupCacher
+from txdav.who.test.support import (
+    TestRecord, CalendarInMemoryDirectoryService
+)
 
 
 testMode = "xml"  # "xml" or "od"
@@ -230,6 +234,28 @@
 
 
     @inlineCallbacks
+    def test_recordsMatchingFields_not(self):
+        fields = (
+            (
+                u"fullNames", "anche",
+                MatchFlags.NOT | MatchFlags.caseInsensitive,
+                MatchType.contains
+            ),
+        )
+        records = (yield self.directory.recordsMatchingFields(
+            fields, operand=Operand.OR, recordType=None
+        ))
+        matchingShortNames = set()
+        for r in records:
+            for shortName in r.shortNames:
+                matchingShortNames.add(shortName)
+        self.assertTrue("sagen" in matchingShortNames)
+        self.assertTrue("dre" not in matchingShortNames)
+        self.assertTrue("wsanchez" not in matchingShortNames)
+        self.assertTrue("sanchezoffice" not in matchingShortNames)
+
+
+    @inlineCallbacks
     def test_recordsFromMatchExpression(self):
         expression = MatchExpression(
             FieldName.uid,
@@ -244,6 +270,22 @@
 
 
     @inlineCallbacks
+    def test_members(self):
+        group = yield self.directory.recordWithUID(u"__calendar-dev__")
+        members = yield group.members()
+        self.assertEquals(len(members), 5)
+
+
+    @inlineCallbacks
+    def test_groups(self):
+        # No need to use group cacher as the XML service directly supports
+        # groups()
+        record = yield self.directory.recordWithUID(u"__sagen__")
+        groups = yield record.groups()
+        self.assertEquals(len(groups), 1)
+
+
+    @inlineCallbacks
     def test_verifyPlaintextPassword(self):
         expectations = (
             (testPassword, True),  # Correct
@@ -537,6 +579,35 @@
 
 
     @inlineCallbacks
+    def test_members(self):
+        group = yield self.client.recordWithUID(u"__top_group_1__")
+        members = yield group.members()
+        self.assertEquals(len(members), 3)
+
+        group = yield self.client.recordWithUID(u"emptygroup")
+        members = yield group.members()
+        self.assertEquals(len(members), 0)
+
+
+    @inlineCallbacks
+    def test_groups(self):
+
+        # A group must first be "refreshed" into the DB otherwise we won't
+        # consider it for group memberships
+        txn = self.store.newTransaction()
+        groupCacher = GroupCacher(self.directory)
+        yield groupCacher.refreshGroup(txn, u"__sub_group_1__")
+        yield txn.commit()
+
+        # record = yield self.client.recordWithUID(u"__sagen1__")
+        # FIXME: this call hangs during unit tests, but not in a real server:
+        # groups = yield record.groups()
+        # self.assertEquals(len(groups), 1)
+
+    test_groups.todo = "Figure out why this hangs"
+
+
+    @inlineCallbacks
     def test_verifyPlaintextPassword(self):
         expectations = (
             (u"zehcnasw", True),  # Correct
@@ -590,3 +661,109 @@
                     )
                 )
                 self.assertEquals(authenticated, answer)
+
+
+class DPSClientLargeResultsTest(unittest.TestCase):
+    """
+    Tests the client against a single directory service (as opposed to the
+    augmented, aggregated structure you get from directoryFromConfig(), which
+    is tested in the class below)
+    """
+
+    @inlineCallbacks
+    def setUp(self):
+
+        self.numUsers = 1000
+
+        # The "local" directory service
+        self.directory = DirectoryService(None)
+
+        # The "remote" directory service
+        remoteDirectory = CalendarInMemoryDirectoryService(None)
+
+        # Add users
+        records = []
+        fieldName = remoteDirectory.fieldName
+        for i in xrange(self.numUsers):
+            records.append(
+                TestRecord(
+                    remoteDirectory,
+                    {
+                        fieldName.uid: u"foo{ctr:05d}".format(ctr=i),
+                        fieldName.shortNames: (u"foo{ctr:05d}".format(ctr=i),),
+                        fieldName.fullNames: (u"foo{ctr:05d}".format(ctr=i),),
+                        fieldName.recordType: RecordType.user,
+                    }
+                )
+            )
+
+        # Add a big group
+        records.append(
+            TestRecord(
+                remoteDirectory,
+                {
+                    fieldName.uid: u"bigGroup",
+                    fieldName.recordType: RecordType.group,
+                }
+            )
+        )
+
+        yield remoteDirectory.updateRecords(records, create=True)
+
+        group = yield remoteDirectory.recordWithUID(u"bigGroup")
+        members = yield remoteDirectory.recordsWithRecordType(RecordType.user)
+        yield group.setMembers(members)
+
+        # Connect the two services directly via an IOPump
+        client = AMP()
+        server = DirectoryProxyAMPProtocol(remoteDirectory)
+        pump = returnConnected(server, client)
+
+        # Replace the normal _getConnection method with one that bypasses any
+        # actual networking
+        self.patch(self.directory, "_getConnection", lambda: succeed(client))
+
+        # Wrap the normal _call method with one that flushes the IOPump
+        # afterwards
+        origCall = self.directory._call
+
+        def newCall(*args, **kwds):
+            d = origCall(*args, **kwds)
+            pump.flush()
+            return d
+
+        self.patch(self.directory, "_call", newCall)
+
+
+    @inlineCallbacks
+    def test_tooBigResults(self):
+        """
+        The AMP protocol limits values to 65,535 bytes, so the DPS server
+        breaks up the responses to fit.  This test uses 1000 records to verify
+        the various methods work seamlessly in the face of large results.
+        Normally only a couple hundred records would fit in a single response.
+        """
+
+        # recordsMatchingTokens
+        records = yield self.directory.recordsMatchingTokens([u"foo"])
+        self.assertEquals(len(records), self.numUsers)
+
+        # recordsMatchingFields
+        fields = (
+            (u"fullNames", "foo", MatchFlags.caseInsensitive, MatchType.contains),
+        )
+        records = yield self.directory.recordsMatchingFields(
+            fields, operand=Operand.OR, recordType=RecordType.user
+        )
+        self.assertEquals(len(records), self.numUsers)
+
+        # recordsWithRecordType
+        records = yield self.directory.recordsWithRecordType(
+            RecordType.user
+        )
+        self.assertEquals(len(records), self.numUsers)
+
+        # members()
+        group = yield self.directory.recordWithUID(u"bigGroup")
+        members = yield group.members()
+        self.assertEquals(len(members), self.numUsers)

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/who/augment.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/who/augment.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/who/augment.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -23,6 +23,8 @@
     "AugmentedDirectoryService",
 ]
 
+import time
+
 from zope.interface import implementer
 
 from twisted.internet.defer import inlineCallbacks, returnValue
@@ -47,6 +49,47 @@
 
 
 
+def timed(f):
+    """
+    A decorator which keeps track of the wrapped function's call count and
+    total duration
+    """
+
+    def recordTiming(result, key, startTime):
+        """
+        Figures out how much time to add to the total time spent within the
+        method identified by key and stores that in the timings dict.
+
+        @param result: the result of the wrapped method
+        @param timings: the dictionary to store timings in
+        @type timings: C{dict}
+        @param key: the method name
+        @type key: C{str}
+        @param startTime: the start time of the call in seconds
+        @type startTime: C{float}
+        """
+        timings = AugmentedDirectoryService._timings
+        if key not in timings:
+            timings[key] = (0, 0.0)
+        count, timeSpent = timings[key]
+        count += 1
+        duration = (time.time() - startTime)
+        timeSpent += duration
+        timings[key] = (count, timeSpent)
+        return result
+
+
+    def timingWrapper(self, *args, **kwds):
+        """
+        Records the start time of the call and the method's name
+        """
+        d = f(self, *args, **kwds)
+        d.addBoth(recordTiming, f.func_name, time.time())
+        return d
+
+    return timingWrapper
+
+
 @implementer(IDirectoryService, IStoreDirectoryService)
 class AugmentedDirectoryService(
     BaseDirectoryService, CalendarDirectoryServiceMixin
@@ -63,7 +106,9 @@
         FieldName,
     ))
 
+    _timings = {}
 
+
     def __init__(self, directory, store, augmentDB):
         BaseDirectoryService.__init__(self, directory.realmName)
         self._directory = directory
@@ -71,6 +116,10 @@
         self._augmentDB = augmentDB
 
 
+    def stats(self):
+        return self._timings
+
+
     @property
     def recordType(self):
         # Defer to the directory service we're augmenting
@@ -104,6 +153,7 @@
         returnValue(augmented)
 
 
+    @timed
     @inlineCallbacks
     def recordWithUID(self, uid):
         # MOVE2WHO, REMOVE THIS:
@@ -116,6 +166,7 @@
         returnValue(record)
 
 
+    @timed
     @inlineCallbacks
     def recordWithGUID(self, guid):
         record = yield self._directory.recordWithGUID(guid)
@@ -123,6 +174,7 @@
         returnValue(record)
 
 
+    @timed
     @inlineCallbacks
     def recordsWithRecordType(self, recordType):
         records = yield self._directory.recordsWithRecordType(recordType)
@@ -133,6 +185,7 @@
         returnValue(augmented)
 
 
+    @timed
     @inlineCallbacks
     def recordWithShortName(self, recordType, shortName):
         # MOVE2WHO, REMOVE THIS:
@@ -147,6 +200,7 @@
         returnValue(record)
 
 
+    @timed
     @inlineCallbacks
     def recordsWithEmailAddress(self, emailAddress):
         # MOVE2WHO, REMOVE THIS:
@@ -162,6 +216,28 @@
         returnValue(augmented)
 
 
+    @timed
+    def recordWithCalendarUserAddress(self, *args, **kwds):
+        return CalendarDirectoryServiceMixin.recordWithCalendarUserAddress(
+            self, *args, **kwds
+        )
+
+
+    @timed
+    def recordsMatchingTokens(self, *args, **kwds):
+        return CalendarDirectoryServiceMixin.recordsMatchingTokens(
+            self, *args, **kwds
+        )
+
+
+    @timed
+    def recordsMatchingFields(self, *args, **kwds):
+        return CalendarDirectoryServiceMixin.recordsMatchingFields(
+            self, *args, **kwds
+        )
+
+
+    @timed
     @inlineCallbacks
     def updateRecords(self, records, create=False):
         """
@@ -364,6 +440,7 @@
         self._baseRecord = baseRecord
 
 
+    @timed
     @inlineCallbacks
     def members(self):
         augmented = []
@@ -375,6 +452,7 @@
         returnValue(augmented)
 
 
+    @timed
     @inlineCallbacks
     def groups(self):
         augmented = []
@@ -397,13 +475,16 @@
         returnValue(augmented)
 
 
+    @timed
     def verifyPlaintextPassword(self, password):
         return self._baseRecord.verifyPlaintextPassword(password)
 
 
+    @timed
     def verifyHTTPDigest(self, *args):
         return self._baseRecord.verifyHTTPDigest(*args)
 
 
+    @timed
     def accessForRecord(self, record):
         return self._baseRecord.accessForRecord(record)

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/who/directory.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/who/directory.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/who/directory.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -143,6 +143,7 @@
         return recordTypes
 
 
+    @inlineCallbacks
     def recordsMatchingTokens(self, tokens, context=None, limitResults=50,
                               timeoutSeconds=10):
         fields = [
@@ -174,37 +175,45 @@
         else:
             expression = CompoundExpression(outer, Operand.AND)
 
+        results = []
+
         if context is not None:
+            # We're limiting record types, so for each recordType, build a
+            # CompoundExpression that ANDs the original expression with a
+            # typeSpecific one.  Collect all the results from these expressions.
             recordTypes = self.recordTypesForSearchContext(context)
-            log.debug("Context {c}, recordTypes {r}", c=context, r=recordTypes)
-            typeSpecific = []
+            log.debug("Tokens: {t}, recordTypes {r}", t=tokens, r=recordTypes)
             for recordType in recordTypes:
-                typeSpecific.append(
-                    MatchExpression(
-                        self.fieldName.recordType,
-                        recordType,
-                        MatchType.equals,
-                        MatchFlags.none
-                    )
+                typeSpecific = MatchExpression(
+                    self.fieldName.recordType,
+                    recordType,
+                    MatchType.equals,
+                    MatchFlags.none
                 )
 
-            if len(typeSpecific) == 1:
-                typeSpecific = typeSpecific[0]
-
-            else:
                 typeSpecific = CompoundExpression(
-                    typeSpecific,
-                    Operand.OR
+                    [expression, typeSpecific],
+                    Operand.AND
                 )
 
-            expression = CompoundExpression(
-                [expression, typeSpecific],
-                Operand.AND
+                subResults = yield self.recordsFromExpression(typeSpecific)
+                log.debug(
+                    "Tokens ({t}) matched {n} of {r}",
+                    t=tokens, n=len(subResults), r=recordType
+                )
+                results.extend(subResults)
+
+        else:
+            # No record type limits
+            results = yield self.recordsFromExpression(expression)
+            log.debug(
+                "Tokens ({t}) matched {n} records",
+                t=tokens, n=len(results)
             )
 
-        log.debug("Expression {e}", e=expression)
+        log.debug("Tokens ({t}) matched records {r}", t=tokens, r=results)
 
-        return self.recordsFromExpression(expression)
+        returnValue(results)
 
 
     def recordsMatchingFieldsWithCUType(self, fields, operand=Operand.OR,
@@ -326,19 +335,7 @@
             )
 
 
-    @property
-    def calendarUserAddresses(self):
-        try:
-            if not (
-                self.hasCalendars or (
-                    config.GroupAttendees.Enabled and
-                    self.recordType == BaseRecordType.group
-                )
-            ):
-                return frozenset()
-        except AttributeError:
-            pass
-
+    def _calendarAddresses(self):
         cuas = set()
 
         # urn:x-uid:
@@ -366,6 +363,22 @@
 
         return frozenset(cuas)
 
+
+    @property
+    def calendarUserAddresses(self):
+        try:
+            if not (
+                self.hasCalendars or (
+                    config.GroupAttendees.Enabled and
+                    self.recordType == BaseRecordType.group
+                )
+            ):
+                return frozenset()
+        except AttributeError:
+            pass
+
+        return self._calendarAddresses()
+
     # Mapping from directory record.recordType to RFC2445 CUTYPE values
     _cuTypes = {
         BaseRecordType.user: 'INDIVIDUAL',
@@ -427,7 +440,7 @@
         ))
 
 
-    def canonicalCalendarUserAddress(self):
+    def canonicalCalendarUserAddress(self, checkCal=True):
         """
             Return a CUA for this record, preferring in this order:
             urn:x-uid: form
@@ -437,8 +450,13 @@
             first in calendarUserAddresses list (sorted)
         """
 
-        sortedCuas = sorted(self.calendarUserAddresses)
+        if checkCal:
+            cuas = self.calendarUserAddresses
+        else:
+            cuas = self._calendarAddresses()
 
+        sortedCuas = sorted(cuas)
+
         for prefix in (
             "urn:x-uid:",
             "urn:uuid:",
@@ -450,7 +468,7 @@
                     return candidate
 
         # fall back to using the first one
-        return sortedCuas[0]
+        return sortedCuas[0] if sortedCuas else None  # groups may not have cua
 
 
     def enabledAsOrganizer(self):

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/who/opendirectory.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/who/opendirectory.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/who/opendirectory.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -24,32 +24,14 @@
 
 __all__ = [
     "DirectoryService",
-    "RecordType"
 ]
 
 from twext.who.opendirectory import DirectoryService
-from twisted.python.constants import Names, NamedConstant
 
 
-
 # Hoorj OMG haxx
 from twext.who.opendirectory._constants import ODRecordType as _ODRecordType
 from .idirectory import RecordType as _CSRecordType
 
 _ODRecordType.location.recordType = _CSRecordType.location
 _ODRecordType.resource.recordType = _CSRecordType.resource
-
-
-class RecordType(Names):
-
-    user = NamedConstant()
-    user.description = u"user"
-
-    group = NamedConstant()
-    group.description = u"group"
-
-    location = NamedConstant()
-    location.description = u"location"
-
-    resource = NamedConstant()
-    resource.description = u"resource"

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/who/test/support.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/who/test/support.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/who/test/support.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -18,15 +18,24 @@
     RecordType,
     NoSuchRecordError
 )
-from twext.who.index import DirectoryService as IndexDirectoryService
+from twext.who.index import (
+    DirectoryService as IndexDirectoryService,
+    DirectoryRecord as IndexedDirectoryRecord
+)
 from twext.who.util import ConstantsContainer
+from twisted.internet.defer import succeed, inlineCallbacks
+from txdav.who.directory import (
+    CalendarDirectoryRecordMixin, CalendarDirectoryServiceMixin
+)
 from txdav.who.idirectory import (
     RecordType as CalRecordType
 )
-from twisted.internet.defer import succeed, inlineCallbacks
 
 
+class TestRecord(IndexedDirectoryRecord, CalendarDirectoryRecordMixin):
+    pass
 
+
 class InMemoryDirectoryService(IndexDirectoryService):
     """
     An in-memory IDirectoryService.  You must call updateRecords( ) if you want
@@ -69,3 +78,11 @@
                     if record.uid in uids:
                         recordSet.remove(record)
         return succeed(None)
+
+
+
+class CalendarInMemoryDirectoryService(
+    InMemoryDirectoryService,
+    CalendarDirectoryServiceMixin
+):
+    pass

Modified: CalendarServer/branches/users/gaya/groupsharee/txdav/who/vcard.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txdav/who/vcard.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txdav/who/vcard.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -323,8 +323,9 @@
     # add members
     # FIXME:  members() is a deferred, so all of vCardFromRecord is deferred.
     for memberRecord in (yield record.members()):
-        if memberRecord:
-            vcard.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", memberRecord.canonicalCalendarUserAddress().encode("utf-8")))
+        cua = memberRecord.canonicalCalendarUserAddress(False)
+        if cua:
+            vcard.addProperty(Property("X-ADDRESSBOOKSERVER-MEMBER", cua.encode("utf-8")))
 
     #===================================================================
     # vCard 4.0  http://tools.ietf.org/html/rfc6350

Modified: CalendarServer/branches/users/gaya/groupsharee/txweb2/dav/method/report_expand.py
===================================================================
--- CalendarServer/branches/users/gaya/groupsharee/txweb2/dav/method/report_expand.py	2014-06-10 20:15:11 UTC (rev 13629)
+++ CalendarServer/branches/users/gaya/groupsharee/txweb2/dav/method/report_expand.py	2014-06-11 03:50:42 UTC (rev 13630)
@@ -69,7 +69,7 @@
 
     for property in expand_property.children:
         namespace = property.attributes.get("namespace", dav_namespace)
-        name      = property.attributes.get("name", "")
+        name = property.attributes.get("name", "")
 
         # Make sure children have no children
         props_to_find = []
@@ -81,7 +81,7 @@
                     "expand-property REPORT only supports single level expansion"
                 ))
             child_namespace = child.attributes.get("namespace", dav_namespace)
-            child_name      = child.attributes.get("name", "")
+            child_name = child.attributes.get("name", "")
             props_to_find.append((child_namespace, child_name))
 
         properties[(namespace, name)] = props_to_find
@@ -161,16 +161,17 @@
             )
 
             status = statusForFailure(f, "getting property: %s" % (qname,))
-            if status not in properties_by_status: properties_by_status[status] = []
+            if status not in properties_by_status:
+                properties_by_status[status] = []
             properties_by_status[status].append(propertyName(qname))
 
     # Build the overall response
     propstats = [
         element.PropertyStatus(
-            element.PropertyContainer(*properties_by_status[status]),
-            element.Status.fromResponseCode(status)
+            element.PropertyContainer(*properties_by_status[pstatus]),
+            element.Status.fromResponseCode(pstatus)
         )
-        for status in properties_by_status if properties_by_status[status]
+        for pstatus in properties_by_status if properties_by_status[pstatus]
     ]
 
     returnValue(MultiStatusResponse((element.PropertyStatusResponse(element.HRef(request.uri), *propstats),)))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140610/20a1be94/attachment-0001.html>


More information about the calendarserver-changes mailing list