fix: 포트 충돌 회피 — note_bridge 8098, intent_service 8099
Jellyfin(8096), OrbStack(8097) 포트 충돌으로 변경. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
128
.venv/lib/python3.9/site-packages/icalendar/__init__.py
Normal file
128
.venv/lib/python3.9/site-packages/icalendar/__init__.py
Normal file
@@ -0,0 +1,128 @@
|
||||
from icalendar.alarms import (
|
||||
Alarms,
|
||||
AlarmTime,
|
||||
)
|
||||
from icalendar.cal import (
|
||||
Alarm,
|
||||
Calendar,
|
||||
Component,
|
||||
ComponentFactory,
|
||||
Event,
|
||||
FreeBusy,
|
||||
Journal,
|
||||
Timezone,
|
||||
TimezoneDaylight,
|
||||
TimezoneStandard,
|
||||
Todo,
|
||||
)
|
||||
from icalendar.enums import CUTYPE, FBTYPE, PARTSTAT, RANGE, RELATED, RELTYPE, ROLE
|
||||
from icalendar.error import (
|
||||
ComponentEndMissing,
|
||||
ComponentStartMissing,
|
||||
FeatureWillBeRemovedInFutureVersion,
|
||||
IncompleteAlarmInformation,
|
||||
IncompleteComponent,
|
||||
InvalidCalendar,
|
||||
LocalTimezoneMissing,
|
||||
)
|
||||
|
||||
# Parameters and helper methods for splitting and joining string with escaped
|
||||
# chars.
|
||||
from icalendar.parser import (
|
||||
Parameters,
|
||||
q_join,
|
||||
q_split,
|
||||
)
|
||||
|
||||
# Property Data Value Types
|
||||
from icalendar.prop import (
|
||||
TypesFactory,
|
||||
vBinary,
|
||||
vBoolean,
|
||||
vCalAddress,
|
||||
vDate,
|
||||
vDatetime,
|
||||
vDDDLists,
|
||||
vDDDTypes,
|
||||
vDuration,
|
||||
vFloat,
|
||||
vFrequency,
|
||||
vGeo,
|
||||
vInt,
|
||||
vMonth,
|
||||
vPeriod,
|
||||
vRecur,
|
||||
vSkip,
|
||||
vText,
|
||||
vTime,
|
||||
vUri,
|
||||
vUTCOffset,
|
||||
vWeekday,
|
||||
)
|
||||
|
||||
# Switching the timezone provider
|
||||
from icalendar.timezone import use_pytz, use_zoneinfo
|
||||
|
||||
from .version import __version__, __version_tuple__, version, version_tuple
|
||||
|
||||
__all__ = [
|
||||
"Calendar",
|
||||
"Event",
|
||||
"Todo",
|
||||
"Journal",
|
||||
"Timezone",
|
||||
"TimezoneStandard",
|
||||
"TimezoneDaylight",
|
||||
"FreeBusy",
|
||||
"Alarm",
|
||||
"ComponentFactory",
|
||||
"vBinary",
|
||||
"vBoolean",
|
||||
"vCalAddress",
|
||||
"vDatetime",
|
||||
"vDate",
|
||||
"vDDDLists",
|
||||
"vDDDTypes",
|
||||
"vDuration",
|
||||
"vFloat",
|
||||
"vInt",
|
||||
"vPeriod",
|
||||
"vWeekday",
|
||||
"vFrequency",
|
||||
"vRecur",
|
||||
"vText",
|
||||
"vTime",
|
||||
"vUri",
|
||||
"vGeo",
|
||||
"vUTCOffset",
|
||||
"Parameters",
|
||||
"q_split",
|
||||
"q_join",
|
||||
"use_pytz",
|
||||
"use_zoneinfo",
|
||||
"__version__",
|
||||
"version",
|
||||
"__version_tuple__",
|
||||
"version_tuple",
|
||||
"TypesFactory",
|
||||
"Component",
|
||||
"vMonth",
|
||||
"IncompleteComponent",
|
||||
"InvalidCalendar",
|
||||
"Alarms",
|
||||
"AlarmTime",
|
||||
"ComponentEndMissing",
|
||||
"ComponentStartMissing",
|
||||
"IncompleteAlarmInformation",
|
||||
"LocalTimezoneMissing",
|
||||
"CUTYPE",
|
||||
"FBTYPE",
|
||||
"PARTSTAT",
|
||||
"RANGE",
|
||||
"vSkip",
|
||||
"RELATED",
|
||||
"vSkip",
|
||||
"RELTYPE",
|
||||
"ROLE",
|
||||
"FeatureWillBeRemovedInFutureVersion"
|
||||
]
|
||||
34
.venv/lib/python3.9/site-packages/icalendar/_version.py
Normal file
34
.venv/lib/python3.9/site-packages/icalendar/_version.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# file generated by setuptools-scm
|
||||
# don't change, don't track in version control
|
||||
|
||||
__all__ = [
|
||||
"__version__",
|
||||
"__version_tuple__",
|
||||
"version",
|
||||
"version_tuple",
|
||||
"__commit_id__",
|
||||
"commit_id",
|
||||
]
|
||||
|
||||
TYPE_CHECKING = False
|
||||
if TYPE_CHECKING:
|
||||
from typing import Tuple
|
||||
from typing import Union
|
||||
|
||||
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
||||
COMMIT_ID = Union[str, None]
|
||||
else:
|
||||
VERSION_TUPLE = object
|
||||
COMMIT_ID = object
|
||||
|
||||
version: str
|
||||
__version__: str
|
||||
__version_tuple__: VERSION_TUPLE
|
||||
version_tuple: VERSION_TUPLE
|
||||
commit_id: COMMIT_ID
|
||||
__commit_id__: COMMIT_ID
|
||||
|
||||
__version__ = version = '6.3.2'
|
||||
__version_tuple__ = version_tuple = (6, 3, 2)
|
||||
|
||||
__commit_id__ = commit_id = None
|
||||
378
.venv/lib/python3.9/site-packages/icalendar/alarms.py
Normal file
378
.venv/lib/python3.9/site-packages/icalendar/alarms.py
Normal file
@@ -0,0 +1,378 @@
|
||||
"""Compute the times and states of alarms.
|
||||
|
||||
This takes different calendar software into account and the RFC 9074 (Alarm Extension).
|
||||
|
||||
- RFC 9074 defines an ACKNOWLEDGED property in the VALARM.
|
||||
- Outlook does not export VALARM information.
|
||||
- Google Calendar uses the DTSTAMP to acknowledge the alarms.
|
||||
- Thunderbird snoozes the alarms with a X-MOZ-SNOOZE-TIME attribute in the event.
|
||||
- Thunderbird acknowledges the alarms with a X-MOZ-LASTACK attribute in the event.
|
||||
- Etar deletes alarms that are acknowledged.
|
||||
- Nextcloud's Webinterface does not do anything with the alarms when the time passes.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date, timedelta, tzinfo
|
||||
from typing import TYPE_CHECKING, Generator, Optional, Union
|
||||
|
||||
from icalendar.cal import Alarm, Event, Todo
|
||||
from icalendar.error import (
|
||||
ComponentEndMissing,
|
||||
ComponentStartMissing,
|
||||
IncompleteAlarmInformation,
|
||||
LocalTimezoneMissing,
|
||||
)
|
||||
from icalendar.timezone import tzp
|
||||
from icalendar.tools import is_date, normalize_pytz, to_datetime
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from datetime import datetime
|
||||
|
||||
Parent = Union[Event, Todo]
|
||||
|
||||
|
||||
class AlarmTime:
|
||||
"""An alarm time with all the information."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
alarm: Alarm,
|
||||
trigger: datetime,
|
||||
acknowledged_until: Optional[datetime] = None,
|
||||
snoozed_until: Optional[datetime] = None,
|
||||
parent: Optional[Parent] = None,
|
||||
):
|
||||
"""Create a new AlarmTime.
|
||||
|
||||
alarm
|
||||
the Alarm component
|
||||
|
||||
trigger
|
||||
a date or datetime at which to trigger the alarm
|
||||
|
||||
acknowledged_until
|
||||
an optional datetime in UTC until when all alarms
|
||||
have been acknowledged
|
||||
|
||||
snoozed_until
|
||||
an optional datetime in UTC until which all alarms of
|
||||
the same parent are snoozed
|
||||
|
||||
parent
|
||||
the optional parent component the alarm refers to
|
||||
|
||||
local_tzinfo
|
||||
the local timezone that events without tzinfo should have
|
||||
"""
|
||||
self._alarm = alarm
|
||||
self._parent = parent
|
||||
self._trigger = trigger
|
||||
self._last_ack = acknowledged_until
|
||||
self._snooze_until = snoozed_until
|
||||
|
||||
@property
|
||||
def acknowledged(self) -> Optional[datetime]:
|
||||
"""The time in UTC at which this alarm was last acknowledged.
|
||||
|
||||
If the alarm was not acknowledged (dismissed), then this is None.
|
||||
"""
|
||||
ack = self.alarm.ACKNOWLEDGED
|
||||
if ack is None:
|
||||
return self._last_ack
|
||||
if self._last_ack is None:
|
||||
return ack
|
||||
return max(ack, self._last_ack)
|
||||
|
||||
@property
|
||||
def alarm(self) -> Alarm:
|
||||
"""The alarm component."""
|
||||
return self._alarm
|
||||
|
||||
@property
|
||||
def parent(self) -> Optional[Parent]:
|
||||
"""This is the component that contains the alarm.
|
||||
|
||||
This is None if you did not use Alarms.set_component().
|
||||
"""
|
||||
return self._parent
|
||||
|
||||
def is_active(self) -> bool:
|
||||
"""Whether this alarm is active (True) or acknowledged (False).
|
||||
|
||||
For example, in some calendar software, this is True until the user looks
|
||||
at the alarm message and clicked the dismiss button.
|
||||
|
||||
Alarms can be in local time (without a timezone).
|
||||
To calculate if the alarm really happened, we need it to be in a timezone.
|
||||
If a timezone is required but not given, we throw an IncompleteAlarmInformation.
|
||||
"""
|
||||
acknowledged = self.acknowledged
|
||||
if not acknowledged:
|
||||
# if nothing is acknowledged, this alarm counts
|
||||
return True
|
||||
if self._snooze_until is not None and self._snooze_until > acknowledged:
|
||||
return True
|
||||
trigger = self.trigger
|
||||
if trigger.tzinfo is None:
|
||||
raise LocalTimezoneMissing(
|
||||
"A local timezone is required to check if the alarm is still active. "
|
||||
"Use Alarms.set_local_timezone()."
|
||||
)
|
||||
return trigger > acknowledged
|
||||
|
||||
@property
|
||||
def trigger(self) -> date:
|
||||
"""This is the time to trigger the alarm.
|
||||
|
||||
If the alarm has been snoozed, this can differ from the TRIGGER property.
|
||||
"""
|
||||
if self._snooze_until is not None and self._snooze_until > self._trigger:
|
||||
return self._snooze_until
|
||||
return self._trigger
|
||||
|
||||
|
||||
class Alarms:
|
||||
"""Compute the times and states of alarms.
|
||||
|
||||
This is an example using RFC 9074.
|
||||
One alarm is 30 minutes before the event and acknowledged.
|
||||
Another alarm is 15 minutes before the event and still active.
|
||||
|
||||
>>> from icalendar import Event, Alarms
|
||||
>>> event = Event.from_ical(
|
||||
... '''BEGIN:VEVENT
|
||||
... CREATED:20210301T151004Z
|
||||
... UID:AC67C078-CED3-4BF5-9726-832C3749F627
|
||||
... DTSTAMP:20210301T151004Z
|
||||
... DTSTART;TZID=America/New_York:20210302T103000
|
||||
... DTEND;TZID=America/New_York:20210302T113000
|
||||
... SUMMARY:Meeting
|
||||
... BEGIN:VALARM
|
||||
... UID:8297C37D-BA2D-4476-91AE-C1EAA364F8E1
|
||||
... TRIGGER:-PT30M
|
||||
... ACKNOWLEDGED:20210302T150004Z
|
||||
... DESCRIPTION:Event reminder
|
||||
... ACTION:DISPLAY
|
||||
... END:VALARM
|
||||
... BEGIN:VALARM
|
||||
... UID:8297C37D-BA2D-4476-91AE-C1EAA364F8E1
|
||||
... TRIGGER:-PT15M
|
||||
... DESCRIPTION:Event reminder
|
||||
... ACTION:DISPLAY
|
||||
... END:VALARM
|
||||
... END:VEVENT
|
||||
... ''')
|
||||
>>> alarms = Alarms(event)
|
||||
>>> len(alarms.times) # all alarms including those acknowledged
|
||||
2
|
||||
>>> len(alarms.active) # the alarms that are not acknowledged, yet
|
||||
1
|
||||
>>> alarms.active[0].trigger # this alarm triggers 15 minutes before 10:30
|
||||
datetime.datetime(2021, 3, 2, 10, 15, tzinfo=ZoneInfo(key='America/New_York'))
|
||||
|
||||
RFC 9074 specifies that alarms can also be triggered by proximity.
|
||||
This is not implemented yet.
|
||||
"""
|
||||
|
||||
def __init__(self, component: Optional[Alarm | Event | Todo] = None):
|
||||
"""Start computing alarm times."""
|
||||
self._absolute_alarms: list[Alarm] = []
|
||||
self._start_alarms: list[Alarm] = []
|
||||
self._end_alarms: list[Alarm] = []
|
||||
self._start: Optional[date] = None
|
||||
self._end: Optional[date] = None
|
||||
self._parent: Optional[Parent] = None
|
||||
self._last_ack: Optional[datetime] = None
|
||||
self._snooze_until: Optional[datetime] = None
|
||||
self._local_tzinfo: Optional[tzinfo] = None
|
||||
|
||||
if component is not None:
|
||||
self.add_component(component)
|
||||
|
||||
def add_component(self, component: Alarm | Parent):
|
||||
"""Add a component.
|
||||
|
||||
If this is an alarm, it is added.
|
||||
Events and Todos are added as a parent and all
|
||||
their alarms are added, too.
|
||||
"""
|
||||
if isinstance(component, (Event, Todo)):
|
||||
self.set_parent(component)
|
||||
self.set_start(component.start)
|
||||
self.set_end(component.end)
|
||||
if component.is_thunderbird():
|
||||
self.acknowledge_until(component.X_MOZ_LASTACK)
|
||||
self.snooze_until(component.X_MOZ_SNOOZE_TIME)
|
||||
else:
|
||||
self.acknowledge_until(component.DTSTAMP)
|
||||
|
||||
for alarm in component.walk("VALARM"):
|
||||
self.add_alarm(alarm)
|
||||
|
||||
def set_parent(self, parent: Parent):
|
||||
"""Set the parent of all the alarms.
|
||||
|
||||
If you would like to collect alarms from a component, use add_component
|
||||
"""
|
||||
if self._parent is not None and self._parent is not parent:
|
||||
raise ValueError("You can only set one parent for this alarm calculation.")
|
||||
self._parent = parent
|
||||
|
||||
def add_alarm(self, alarm: Alarm) -> None:
|
||||
"""Optional: Add an alarm component."""
|
||||
trigger = alarm.TRIGGER
|
||||
if trigger is None:
|
||||
return
|
||||
if isinstance(trigger, date):
|
||||
self._absolute_alarms.append(alarm)
|
||||
elif alarm.TRIGGER_RELATED == "START":
|
||||
self._start_alarms.append(alarm)
|
||||
else:
|
||||
self._end_alarms.append(alarm)
|
||||
|
||||
def set_start(self, dt: Optional[date]):
|
||||
"""Set the start of the component.
|
||||
|
||||
If you have only absolute alarms, this is not required.
|
||||
If you have alarms relative to the start of a compoment, set the start here.
|
||||
"""
|
||||
self._start = dt
|
||||
|
||||
def set_end(self, dt: Optional[date]):
|
||||
"""Set the end of the component.
|
||||
|
||||
If you have only absolute alarms, this is not required.
|
||||
If you have alarms relative to the end of a compoment, set the end here.
|
||||
"""
|
||||
self._end = dt
|
||||
|
||||
def _add(self, dt: date, td: timedelta):
|
||||
"""Add a timedelta to a datetime."""
|
||||
if is_date(dt):
|
||||
if td.seconds == 0:
|
||||
return dt + td
|
||||
dt = to_datetime(dt)
|
||||
return normalize_pytz(dt + td)
|
||||
|
||||
def acknowledge_until(self, dt: Optional[date]) -> None:
|
||||
"""This is the time in UTC when all the alarms of this component were acknowledged.
|
||||
|
||||
Only the last call counts.
|
||||
|
||||
Since RFC 9074 (Alarm Extension) was created later,
|
||||
calendar implementations differ in how they acknowledge alarms.
|
||||
For example, Thunderbird and Google Calendar store the last time
|
||||
an event has been acknowledged because of an alarm.
|
||||
All alarms that happen before this time count as acknowledged.
|
||||
"""
|
||||
self._last_ack = tzp.localize_utc(dt) if dt is not None else None
|
||||
|
||||
def snooze_until(self, dt: Optional[date]) -> None:
|
||||
"""This is the time in UTC when all the alarms of this component were snoozed.
|
||||
|
||||
Only the last call counts.
|
||||
|
||||
The alarms are supposed to turn up again at dt when they are not acknowledged
|
||||
but snoozed.
|
||||
"""
|
||||
self._snooze_until = tzp.localize_utc(dt) if dt is not None else None
|
||||
|
||||
def set_local_timezone(self, tzinfo: Optional[tzinfo | str]):
|
||||
"""Set the local timezone.
|
||||
|
||||
Events are sometimes in local time.
|
||||
In order to compute the exact time of the alarm, some
|
||||
alarms without timezone are considered local.
|
||||
|
||||
Some computations work without setting this, others don't.
|
||||
If they need this information, expect a LocalTimezoneMissing exception
|
||||
somewhere down the line.
|
||||
"""
|
||||
self._local_tzinfo = tzp.timezone(tzinfo) if isinstance(tzinfo, str) else tzinfo
|
||||
|
||||
@property
|
||||
def times(self) -> list[AlarmTime]:
|
||||
"""Compute and return the times of the alarms given.
|
||||
|
||||
If the information for calculation is incomplete, this will raise a
|
||||
IncompleteAlarmInformation exception.
|
||||
|
||||
Please make sure to set all the required parameters before calculating.
|
||||
If you forget to set the acknowledged times, that is not problem.
|
||||
"""
|
||||
return (
|
||||
self._get_end_alarm_times()
|
||||
+ self._get_start_alarm_times()
|
||||
+ self._get_absolute_alarm_times()
|
||||
)
|
||||
|
||||
def _repeat(self, first: datetime, alarm: Alarm) -> Generator[datetime]:
|
||||
"""The times when the alarm is triggered relative to start."""
|
||||
yield first # we trigger at the start
|
||||
repeat = alarm.REPEAT
|
||||
duration = alarm.DURATION
|
||||
if repeat and duration:
|
||||
for i in range(1, repeat + 1):
|
||||
yield self._add(first, duration * i)
|
||||
|
||||
def _alarm_time(self, alarm: Alarm, trigger: date):
|
||||
"""Create an alarm time with the additional attributes."""
|
||||
if getattr(trigger, "tzinfo", None) is None and self._local_tzinfo is not None:
|
||||
trigger = normalize_pytz(trigger.replace(tzinfo=self._local_tzinfo))
|
||||
return AlarmTime(
|
||||
alarm, trigger, self._last_ack, self._snooze_until, self._parent
|
||||
)
|
||||
|
||||
def _get_absolute_alarm_times(self) -> list[AlarmTime]:
|
||||
"""Return a list of absolute alarm times."""
|
||||
return [
|
||||
self._alarm_time(alarm, trigger)
|
||||
for alarm in self._absolute_alarms
|
||||
for trigger in self._repeat(alarm.TRIGGER, alarm)
|
||||
]
|
||||
|
||||
def _get_start_alarm_times(self) -> list[AlarmTime]:
|
||||
"""Return a list of alarm times relative to the start of the component."""
|
||||
if self._start is None and self._start_alarms:
|
||||
raise ComponentStartMissing(
|
||||
"Use Alarms.set_start because at least one alarm is relative to the start of a component."
|
||||
)
|
||||
return [
|
||||
self._alarm_time(alarm, trigger)
|
||||
for alarm in self._start_alarms
|
||||
for trigger in self._repeat(self._add(self._start, alarm.TRIGGER), alarm)
|
||||
]
|
||||
|
||||
def _get_end_alarm_times(self) -> list[AlarmTime]:
|
||||
"""Return a list of alarm times relative to the start of the component."""
|
||||
if self._end is None and self._end_alarms:
|
||||
raise ComponentEndMissing(
|
||||
"Use Alarms.set_end because at least one alarm is relative to the end of a component."
|
||||
)
|
||||
return [
|
||||
self._alarm_time(alarm, trigger)
|
||||
for alarm in self._end_alarms
|
||||
for trigger in self._repeat(self._add(self._end, alarm.TRIGGER), alarm)
|
||||
]
|
||||
|
||||
@property
|
||||
def active(self) -> list[AlarmTime]:
|
||||
"""The alarm times that are still active and not acknowledged.
|
||||
|
||||
This considers snoozed alarms.
|
||||
|
||||
Alarms can be in local time (without a timezone).
|
||||
To calculate if the alarm really happened, we need it to be in a timezone.
|
||||
If a timezone is required but not given, we throw an IncompleteAlarmInformation.
|
||||
"""
|
||||
return [alarm_time for alarm_time in self.times if alarm_time.is_active()]
|
||||
|
||||
|
||||
__all__ = [
|
||||
"Alarms",
|
||||
"AlarmTime",
|
||||
"IncompleteAlarmInformation",
|
||||
"ComponentEndMissing",
|
||||
"ComponentStartMissing",
|
||||
]
|
||||
700
.venv/lib/python3.9/site-packages/icalendar/attr.py
Normal file
700
.venv/lib/python3.9/site-packages/icalendar/attr.py
Normal file
@@ -0,0 +1,700 @@
|
||||
"""Attributes of Components and properties."""
|
||||
from __future__ import annotations
|
||||
|
||||
import itertools
|
||||
from datetime import date, datetime, timedelta
|
||||
from typing import TYPE_CHECKING, Optional, Union
|
||||
|
||||
from icalendar.error import InvalidCalendar
|
||||
from icalendar.prop import vCategory, vDDDTypes, vRecur, vText
|
||||
from icalendar.timezone import tzp
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from icalendar.cal import Component
|
||||
|
||||
|
||||
def _get_rdates(self: Component) -> list[
|
||||
Union[tuple[date, None],
|
||||
tuple[datetime, None],
|
||||
tuple[datetime, datetime]]]:
|
||||
"""The RDATE property defines the list of DATE-TIME values for recurring components.
|
||||
|
||||
RDATE is defined in :rfc:`5545`.
|
||||
The return value is a list of tuples ``(start, end)``.
|
||||
|
||||
``start`` can be a :class:`datetime.date` or a :class:`datetime.datetime`,
|
||||
with and without timezone.
|
||||
|
||||
``end`` is :obj:`None` if the end is not specified and a :class:`datetime.datetime`
|
||||
if the end is specified.
|
||||
|
||||
Value Type:
|
||||
The default value type for this property is DATE-TIME.
|
||||
The value type can be set to DATE or PERIOD.
|
||||
|
||||
Property Parameters:
|
||||
IANA, non-standard, value data type, and time
|
||||
zone identifier property parameters can be specified on this
|
||||
property.
|
||||
|
||||
Conformance:
|
||||
This property can be specified in recurring "VEVENT",
|
||||
"VTODO", and "VJOURNAL" calendar components as well as in the
|
||||
"STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
|
||||
calendar component.
|
||||
|
||||
Description:
|
||||
This property can appear along with the "RRULE"
|
||||
property to define an aggregate set of repeating occurrences.
|
||||
When they both appear in a recurring component, the recurrence
|
||||
instances are defined by the union of occurrences defined by both
|
||||
the "RDATE" and "RRULE".
|
||||
|
||||
The recurrence dates, if specified, are used in computing the
|
||||
recurrence set. The recurrence set is the complete set of
|
||||
recurrence instances for a calendar component. The recurrence set
|
||||
is generated by considering the initial "DTSTART" property along
|
||||
with the "RRULE", "RDATE", and "EXDATE" properties contained
|
||||
within the recurring component. The "DTSTART" property defines
|
||||
the first instance in the recurrence set. The "DTSTART" property
|
||||
value SHOULD match the pattern of the recurrence rule, if
|
||||
specified. The recurrence set generated with a "DTSTART" property
|
||||
value that doesn't match the pattern of the rule is undefined.
|
||||
The final recurrence set is generated by gathering all of the
|
||||
start DATE-TIME values generated by any of the specified "RRULE"
|
||||
and "RDATE" properties, and then excluding any start DATE-TIME
|
||||
values specified by "EXDATE" properties. This implies that start
|
||||
DATE-TIME values specified by "EXDATE" properties take precedence
|
||||
over those specified by inclusion properties (i.e., "RDATE" and
|
||||
"RRULE"). Where duplicate instances are generated by the "RRULE"
|
||||
and "RDATE" properties, only one recurrence is considered.
|
||||
Duplicate instances are ignored.
|
||||
|
||||
Example:
|
||||
Below, we set one RDATE in a list and get the resulting tuple of start and end.
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Event
|
||||
>>> from datetime import datetime
|
||||
>>> event = Event()
|
||||
|
||||
# Add a list of recurrence dates
|
||||
>>> event.add("RDATE", [datetime(2025, 4, 28, 16, 5)])
|
||||
>>> event.rdates
|
||||
[(datetime.datetime(2025, 4, 28, 16, 5), None)]
|
||||
|
||||
.. note::
|
||||
|
||||
You cannot modify the RDATE value by modifying the result.
|
||||
Use :func:`icalendar.cal.Component.add` to add values.
|
||||
|
||||
If you want to compute recurrences, have a look at :ref:`Related projects`.
|
||||
|
||||
"""
|
||||
result = []
|
||||
rdates = self.get("RDATE", [])
|
||||
for rdates in (rdates,) if not isinstance(rdates, list) else rdates:
|
||||
for dts in rdates.dts:
|
||||
rdate = dts.dt
|
||||
if isinstance(rdate, tuple):
|
||||
# we have a period as rdate
|
||||
if isinstance(rdate[1], timedelta):
|
||||
result.append((rdate[0], rdate[0] + rdate[1]))
|
||||
else:
|
||||
result.append(rdate)
|
||||
else:
|
||||
# we have a date/datetime
|
||||
result.append((rdate, None))
|
||||
return result
|
||||
|
||||
|
||||
rdates_property = property(_get_rdates)
|
||||
|
||||
|
||||
def _get_exdates(self: Component) -> list[date|datetime]:
|
||||
"""EXDATE defines the list of DATE-TIME exceptions for recurring components.
|
||||
|
||||
EXDATE is defined in :rfc:`5545`.
|
||||
|
||||
Value Type:
|
||||
The default value type for this property is DATE-TIME.
|
||||
The value type can be set to DATE.
|
||||
|
||||
Property Parameters:
|
||||
IANA, non-standard, value data type, and time
|
||||
zone identifier property parameters can be specified on this
|
||||
property.
|
||||
|
||||
Conformance:
|
||||
This property can be specified in recurring "VEVENT",
|
||||
"VTODO", and "VJOURNAL" calendar components as well as in the
|
||||
"STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
|
||||
calendar component.
|
||||
|
||||
Description:
|
||||
The exception dates, if specified, are used in
|
||||
computing the recurrence set. The recurrence set is the complete
|
||||
set of recurrence instances for a calendar component. The
|
||||
recurrence set is generated by considering the initial "DTSTART"
|
||||
property along with the "RRULE", "RDATE", and "EXDATE" properties
|
||||
contained within the recurring component. The "DTSTART" property
|
||||
defines the first instance in the recurrence set. The "DTSTART"
|
||||
property value SHOULD match the pattern of the recurrence rule, if
|
||||
specified. The recurrence set generated with a "DTSTART" property
|
||||
value that doesn't match the pattern of the rule is undefined.
|
||||
The final recurrence set is generated by gathering all of the
|
||||
start DATE-TIME values generated by any of the specified "RRULE"
|
||||
and "RDATE" properties, and then excluding any start DATE-TIME
|
||||
values specified by "EXDATE" properties. This implies that start
|
||||
DATE-TIME values specified by "EXDATE" properties take precedence
|
||||
over those specified by inclusion properties (i.e., "RDATE" and
|
||||
"RRULE"). When duplicate instances are generated by the "RRULE"
|
||||
and "RDATE" properties, only one recurrence is considered.
|
||||
Duplicate instances are ignored.
|
||||
|
||||
The "EXDATE" property can be used to exclude the value specified
|
||||
in "DTSTART". However, in such cases, the original "DTSTART" date
|
||||
MUST still be maintained by the calendaring and scheduling system
|
||||
because the original "DTSTART" value has inherent usage
|
||||
dependencies by other properties such as the "RECURRENCE-ID".
|
||||
|
||||
Example:
|
||||
Below, we add an exdate in a list and get the resulting list of exdates.
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Event
|
||||
>>> from datetime import datetime
|
||||
>>> event = Event()
|
||||
|
||||
# Add a list of excluded dates
|
||||
>>> event.add("EXDATE", [datetime(2025, 4, 28, 16, 5)])
|
||||
>>> event.exdates
|
||||
[datetime.datetime(2025, 4, 28, 16, 5)]
|
||||
|
||||
.. note::
|
||||
|
||||
You cannot modify the EXDATE value by modifying the result.
|
||||
Use :func:`icalendar.cal.Component.add` to add values.
|
||||
|
||||
If you want to compute recurrences, have a look at :ref:`Related projects`.
|
||||
|
||||
"""
|
||||
result = []
|
||||
exdates = self.get("EXDATE", [])
|
||||
for exdates in (exdates,) if not isinstance(exdates, list) else exdates:
|
||||
for dts in exdates.dts:
|
||||
exdate = dts.dt
|
||||
# we have a date/datetime
|
||||
result.append(exdate)
|
||||
return result
|
||||
|
||||
|
||||
exdates_property = property(_get_exdates)
|
||||
|
||||
|
||||
def _get_rrules(self: Component) -> list[vRecur]:
|
||||
"""RRULE defines a rule or repeating pattern for recurring components.
|
||||
|
||||
RRULE is defined in :rfc:`5545`.
|
||||
:rfc:`7529` adds the ``SKIP`` parameter :class:`icalendar.prop.vSkip`.
|
||||
|
||||
Property Parameters:
|
||||
IANA and non-standard property parameters can
|
||||
be specified on this property.
|
||||
|
||||
Conformance:
|
||||
This property can be specified in recurring "VEVENT",
|
||||
"VTODO", and "VJOURNAL" calendar components as well as in the
|
||||
"STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
|
||||
calendar component, but it SHOULD NOT be specified more than once.
|
||||
The recurrence set generated with multiple "RRULE" properties is
|
||||
undefined.
|
||||
|
||||
Description:
|
||||
The recurrence rule, if specified, is used in computing
|
||||
the recurrence set. The recurrence set is the complete set of
|
||||
recurrence instances for a calendar component. The recurrence set
|
||||
is generated by considering the initial "DTSTART" property along
|
||||
with the "RRULE", "RDATE", and "EXDATE" properties contained
|
||||
within the recurring component. The "DTSTART" property defines
|
||||
the first instance in the recurrence set. The "DTSTART" property
|
||||
value SHOULD be synchronized with the recurrence rule, if
|
||||
specified. The recurrence set generated with a "DTSTART" property
|
||||
value not synchronized with the recurrence rule is undefined. The
|
||||
final recurrence set is generated by gathering all of the start
|
||||
DATE-TIME values generated by any of the specified "RRULE" and
|
||||
"RDATE" properties, and then excluding any start DATE-TIME values
|
||||
specified by "EXDATE" properties. This implies that start DATE-
|
||||
TIME values specified by "EXDATE" properties take precedence over
|
||||
those specified by inclusion properties (i.e., "RDATE" and
|
||||
"RRULE"). Where duplicate instances are generated by the "RRULE"
|
||||
and "RDATE" properties, only one recurrence is considered.
|
||||
Duplicate instances are ignored.
|
||||
|
||||
The "DTSTART" property specified within the iCalendar object
|
||||
defines the first instance of the recurrence. In most cases, a
|
||||
"DTSTART" property of DATE-TIME value type used with a recurrence
|
||||
rule, should be specified as a date with local time and time zone
|
||||
reference to make sure all the recurrence instances start at the
|
||||
same local time regardless of time zone changes.
|
||||
|
||||
If the duration of the recurring component is specified with the
|
||||
"DTEND" or "DUE" property, then the same exact duration will apply
|
||||
to all the members of the generated recurrence set. Else, if the
|
||||
duration of the recurring component is specified with the
|
||||
"DURATION" property, then the same nominal duration will apply to
|
||||
all the members of the generated recurrence set and the exact
|
||||
duration of each recurrence instance will depend on its specific
|
||||
start time. For example, recurrence instances of a nominal
|
||||
duration of one day will have an exact duration of more or less
|
||||
than 24 hours on a day where a time zone shift occurs. The
|
||||
duration of a specific recurrence may be modified in an exception
|
||||
component or simply by using an "RDATE" property of PERIOD value
|
||||
type.
|
||||
|
||||
Examples:
|
||||
Daily for 10 occurrences:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Event
|
||||
>>> from datetime import datetime
|
||||
>>> from zoneinfo import ZoneInfo
|
||||
>>> event = Event()
|
||||
>>> event.start = datetime(1997, 9, 2, 9, 0, tzinfo=ZoneInfo("America/New_York"))
|
||||
>>> event.add("RRULE", "FREQ=DAILY;COUNT=10")
|
||||
>>> print(event.to_ical())
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=America/New_York:19970902T090000
|
||||
RRULE:FREQ=DAILY;COUNT=10
|
||||
END:VEVENT
|
||||
>>> event.rrules
|
||||
[vRecur({'FREQ': ['DAILY'], 'COUNT': [10]})]
|
||||
|
||||
Daily until December 24, 1997:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Event, vRecur
|
||||
>>> from datetime import datetime
|
||||
>>> from zoneinfo import ZoneInfo
|
||||
>>> event = Event()
|
||||
>>> event.start = datetime(1997, 9, 2, 9, 0, tzinfo=ZoneInfo("America/New_York"))
|
||||
>>> event.add("RRULE", vRecur({"FREQ": ["DAILY"]}, until=datetime(1997, 12, 24, tzinfo=ZoneInfo("UTC"))))
|
||||
>>> print(event.to_ical())
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=America/New_York:19970902T090000
|
||||
RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
|
||||
END:VEVENT
|
||||
>>> event.rrules
|
||||
[vRecur({'FREQ': ['DAILY'], 'UNTIL': [datetime.datetime(1997, 12, 24, 0, 0, tzinfo=ZoneInfo(key='UTC'))]})]
|
||||
|
||||
.. note::
|
||||
|
||||
You cannot modify the RRULE value by modifying the result.
|
||||
Use :func:`icalendar.cal.Component.add` to add values.
|
||||
|
||||
If you want to compute recurrences, have a look at :ref:`Related projects`.
|
||||
|
||||
"""
|
||||
rrules = self.get("RRULE", [])
|
||||
if not isinstance(rrules, list):
|
||||
return [rrules]
|
||||
return rrules
|
||||
|
||||
|
||||
rrules_property = property(_get_rrules)
|
||||
|
||||
def multi_language_text_property(main_prop:str, compatibility_prop:str, doc:str) -> property:
|
||||
"""This creates a text property.
|
||||
|
||||
This property can be defined several times with different ``LANGUAGE`` parameters.
|
||||
|
||||
Args:
|
||||
main_prop (str): The property to set and get, such as ``NAME``
|
||||
compatibility_prop (str): An old property used before, such as ``X-WR-CALNAME``
|
||||
doc (str): The documentation string
|
||||
"""
|
||||
def fget(self: Component) -> Optional[str]:
|
||||
"""Get the property"""
|
||||
result = self.get(main_prop, self.get(compatibility_prop))
|
||||
if isinstance(result, list):
|
||||
for item in result:
|
||||
if "LANGUAGE" not in item.params:
|
||||
return item
|
||||
return result
|
||||
|
||||
def fset(self: Component, value:str):
|
||||
"""Set the property."""
|
||||
fdel(self)
|
||||
self.add(main_prop, value)
|
||||
|
||||
def fdel(self: Component):
|
||||
"""Delete the property."""
|
||||
self.pop(main_prop, None)
|
||||
self.pop(compatibility_prop, None)
|
||||
|
||||
return property(fget, fset, fdel, doc)
|
||||
|
||||
|
||||
def single_int_property(prop:str, default:int, doc:str) -> property:
|
||||
"""Create a property for an int value that exists only once.
|
||||
|
||||
Args:
|
||||
prop: The name of the property
|
||||
default: The default value
|
||||
doc: The documentation string
|
||||
"""
|
||||
def fget(self: Component) -> int:
|
||||
"""Get the property"""
|
||||
try:
|
||||
return int(self.get(prop, default))
|
||||
except ValueError as e:
|
||||
raise InvalidCalendar(f"{prop} must be an int") from e
|
||||
|
||||
def fset(self: Component, value:int):
|
||||
"""Set the property."""
|
||||
fdel(self)
|
||||
self.add(prop, value)
|
||||
|
||||
def fdel(self: Component):
|
||||
"""Delete the property."""
|
||||
self.pop(prop, None)
|
||||
|
||||
return property(fget, fset, fdel, doc)
|
||||
|
||||
|
||||
def single_utc_property(name: str, docs: str) -> property:
|
||||
"""Create a property to access a value of datetime in UTC timezone.
|
||||
|
||||
Args:
|
||||
name: name of the property
|
||||
docs: documentation string
|
||||
"""
|
||||
docs = (
|
||||
f"""The {name} property. datetime in UTC
|
||||
|
||||
All values will be converted to a datetime in UTC.
|
||||
"""
|
||||
+ docs
|
||||
)
|
||||
|
||||
def fget(self: Component) -> Optional[datetime]:
|
||||
"""Get the value."""
|
||||
if name not in self:
|
||||
return None
|
||||
dt = self.get(name)
|
||||
if isinstance(dt, vText):
|
||||
# we might be in an attribute that is not typed
|
||||
value = vDDDTypes.from_ical(dt)
|
||||
else:
|
||||
value = getattr(dt, "dt", None)
|
||||
if value is None or not isinstance(value, date):
|
||||
raise InvalidCalendar(f"{name} must be a datetime in UTC, not {value}")
|
||||
return tzp.localize_utc(value)
|
||||
|
||||
def fset(self: Component, value: datetime):
|
||||
"""Set the value"""
|
||||
if not isinstance(value, date):
|
||||
raise TypeError(f"{name} takes a datetime in UTC, not {value}")
|
||||
fdel(self)
|
||||
self.add(name, tzp.localize_utc(value))
|
||||
|
||||
def fdel(self: Component):
|
||||
"""Delete the property."""
|
||||
self.pop(name, None)
|
||||
|
||||
return property(fget, fset, fdel, doc=docs)
|
||||
|
||||
|
||||
def single_string_property(name: str, docs: str, other_name:Optional[str]=None) -> property:
|
||||
"""Create a property to access a single string value."""
|
||||
|
||||
def fget(self: Component) -> str:
|
||||
"""Get the value."""
|
||||
result = self.get(name, None if other_name is None else self.get(other_name, None))
|
||||
if result is None or result == []:
|
||||
return ""
|
||||
if isinstance(result, list):
|
||||
return result[0]
|
||||
return result
|
||||
|
||||
def fset(self: Component, value: str):
|
||||
"""Set the value"""
|
||||
fdel(self)
|
||||
self.add(name, value)
|
||||
|
||||
def fdel(self: Component):
|
||||
"""Delete the property."""
|
||||
self.pop(name, None)
|
||||
if other_name is not None:
|
||||
self.pop(other_name, None)
|
||||
|
||||
return property(fget, fset, fdel, doc=docs)
|
||||
|
||||
color_property = single_string_property(
|
||||
"COLOR",
|
||||
"""This property specifies a color used for displaying the component.
|
||||
|
||||
This implements :rfc:`7986` ``COLOR`` property.
|
||||
|
||||
Property Parameters:
|
||||
IANA and non-standard property parameters can
|
||||
be specified on this property.
|
||||
|
||||
Conformance:
|
||||
This property can be specified once in an iCalendar
|
||||
object or in ``VEVENT``, ``VTODO``, or ``VJOURNAL`` calendar components.
|
||||
|
||||
Description:
|
||||
This property specifies a color that clients MAY use
|
||||
when presenting the relevant data to a user. Typically, this
|
||||
would appear as the "background" color of events or tasks. The
|
||||
value is a case-insensitive color name taken from the CSS3 set of
|
||||
names, defined in Section 4.3 of `W3C.REC-css3-color-20110607 <https://www.w3.org/TR/css-color-3/>`_.
|
||||
|
||||
Example:
|
||||
``"turquoise"``, ``"#ffffff"``
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Todo
|
||||
>>> todo = Todo()
|
||||
>>> todo.color = "green"
|
||||
>>> print(todo.to_ical())
|
||||
BEGIN:VTODO
|
||||
COLOR:green
|
||||
END:VTODO
|
||||
"""
|
||||
)
|
||||
|
||||
sequence_property = single_int_property(
|
||||
"SEQUENCE",
|
||||
0,
|
||||
"""This property defines the revision sequence number of the calendar component within a sequence of revisions.
|
||||
|
||||
Value Type:
|
||||
INTEGER
|
||||
|
||||
Property Parameters:
|
||||
IANA and non-standard property parameters can be specified on this property.
|
||||
|
||||
Conformance:
|
||||
The property can be specified in "VEVENT", "VTODO", or
|
||||
"VJOURNAL" calendar component.
|
||||
|
||||
Description:
|
||||
When a calendar component is created, its sequence
|
||||
number is 0. It is monotonically incremented by the "Organizer's"
|
||||
CUA each time the "Organizer" makes a significant revision to the
|
||||
calendar component.
|
||||
|
||||
The "Organizer" includes this property in an iCalendar object that
|
||||
it sends to an "Attendee" to specify the current version of the
|
||||
calendar component.
|
||||
|
||||
The "Attendee" includes this property in an iCalendar object that
|
||||
it sends to the "Organizer" to specify the version of the calendar
|
||||
component to which the "Attendee" is referring.
|
||||
|
||||
A change to the sequence number is not the mechanism that an
|
||||
"Organizer" uses to request a response from the "Attendees". The
|
||||
"RSVP" parameter on the "ATTENDEE" property is used by the
|
||||
"Organizer" to indicate that a response from the "Attendees" is
|
||||
requested.
|
||||
|
||||
Recurrence instances of a recurring component MAY have different
|
||||
sequence numbers.
|
||||
|
||||
Examples:
|
||||
The following is an example of this property for a calendar
|
||||
component that was just created by the "Organizer":
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Event
|
||||
>>> event = Event()
|
||||
>>> event.sequence
|
||||
0
|
||||
|
||||
The following is an example of this property for a calendar
|
||||
component that has been revised 10 different times by the
|
||||
"Organizer":
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Calendar
|
||||
>>> calendar = Calendar.example("issue_156_RDATE_with_PERIOD_TZID_khal")
|
||||
>>> event = calendar.events[0]
|
||||
>>> event.sequence
|
||||
10
|
||||
"""
|
||||
)
|
||||
|
||||
def _get_categories(component: Component) -> list[str]:
|
||||
"""Get all the categories."""
|
||||
categories : Optional[vCategory|list[vCategory]] = component.get("CATEGORIES")
|
||||
if isinstance(categories, list):
|
||||
_set_categories(component, list(itertools.chain.from_iterable(cat.cats for cat in categories)))
|
||||
return _get_categories(component)
|
||||
if categories is None:
|
||||
categories = vCategory([])
|
||||
component.add("CATEGORIES", categories)
|
||||
return categories.cats
|
||||
|
||||
def _set_categories(component: Component, cats: list[str]) -> None:
|
||||
"""Set the categories."""
|
||||
component["CATEGORIES"] = categories = vCategory(cats)
|
||||
cats.clear()
|
||||
cats.extend(categories.cats)
|
||||
categories.cats = cats
|
||||
|
||||
|
||||
def _del_categories(component: Component) -> None:
|
||||
"""Delete the categories."""
|
||||
component.pop("CATEGORIES", None)
|
||||
|
||||
|
||||
categories_property = property(
|
||||
_get_categories,
|
||||
_set_categories,
|
||||
_del_categories,
|
||||
"""This property defines the categories for a component.
|
||||
|
||||
Property Parameters:
|
||||
IANA, non-standard, and language property parameters can be specified on this
|
||||
property.
|
||||
|
||||
Conformance:
|
||||
The property can be specified within "VEVENT", "VTODO", or "VJOURNAL" calendar
|
||||
components.
|
||||
Since :rfc:`7986` it can also be defined on a "VCALENDAR" component.
|
||||
|
||||
Description:
|
||||
This property is used to specify categories or subtypes
|
||||
of the calendar component. The categories are useful in searching
|
||||
for a calendar component of a particular type and category.
|
||||
Within the "VEVENT", "VTODO", or "VJOURNAL" calendar components,
|
||||
more than one category can be specified as a COMMA-separated list
|
||||
of categories.
|
||||
|
||||
Example:
|
||||
Below, we add the categories to an event:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Event
|
||||
>>> event = Event()
|
||||
>>> event.categories = ["Work", "Meeting"]
|
||||
>>> print(event.to_ical())
|
||||
BEGIN:VEVENT
|
||||
CATEGORIES:Work,Meeting
|
||||
END:VEVENT
|
||||
>>> event.categories.append("Lecture")
|
||||
>>> event.categories == ["Work", "Meeting", "Lecture"]
|
||||
True
|
||||
|
||||
.. note::
|
||||
|
||||
At present, we do not take the LANGUAGE parameter into account.
|
||||
"""
|
||||
)
|
||||
|
||||
uid_property = single_string_property(
|
||||
"UID", """UID specifies the persistent, globally unique identifier for a component.
|
||||
|
||||
We recommend using :func:`uuid.uuid4` to generate new values.
|
||||
|
||||
Returns:
|
||||
The value of the UID property as a string or ``""`` if no value is set.
|
||||
|
||||
Description:
|
||||
The "UID" itself MUST be a globally unique identifier.
|
||||
The generator of the identifier MUST guarantee that the identifier
|
||||
is unique.
|
||||
|
||||
This is the method for correlating scheduling messages with the
|
||||
referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component.
|
||||
The full range of calendar components specified by a recurrence
|
||||
set is referenced by referring to just the "UID" property value
|
||||
corresponding to the calendar component. The "RECURRENCE-ID"
|
||||
property allows the reference to an individual instance within the
|
||||
recurrence set.
|
||||
|
||||
This property is an important method for group-scheduling
|
||||
applications to match requests with later replies, modifications,
|
||||
or deletion requests. Calendaring and scheduling applications
|
||||
MUST generate this property in "VEVENT", "VTODO", and "VJOURNAL"
|
||||
calendar components to assure interoperability with other group-
|
||||
scheduling applications. This identifier is created by the
|
||||
calendar system that generates an iCalendar object.
|
||||
|
||||
Implementations MUST be able to receive and persist values of at
|
||||
least 255 octets for this property, but they MUST NOT truncate
|
||||
values in the middle of a UTF-8 multi-octet sequence.
|
||||
|
||||
:rfc:`7986` states that UID can be used, for
|
||||
example, to identify duplicate calendar streams that a client may
|
||||
have been given access to. It can be used in conjunction with the
|
||||
"LAST-MODIFIED" property also specified on the "VCALENDAR" object
|
||||
to identify the most recent version of a calendar.
|
||||
|
||||
Conformance:
|
||||
:rfc:`5545` states that the "UID" property can be specified on "VEVENT", "VTODO",
|
||||
and "VJOURNAL" calendar components.
|
||||
:rfc:`7986` modifies the definition of the "UID" property to
|
||||
allow it to be defined in an iCalendar object.
|
||||
:rfc:`9074` adds a "UID" property to "VALARM" components to allow a unique
|
||||
identifier to be specified. The value of this property can then be used
|
||||
to refer uniquely to the "VALARM" component.
|
||||
|
||||
This property can be specified once only.
|
||||
|
||||
Security:
|
||||
:rfc:`7986` states that UID values MUST NOT include any data that
|
||||
might identify a user, host, domain, or any other security- or
|
||||
privacy-sensitive information. It is RECOMMENDED that calendar user
|
||||
agents now generate "UID" values that are hex-encoded random
|
||||
Universally Unique Identifier (UUID) values as defined in
|
||||
Sections 4.4 and 4.5 of :rfc:`4122`.
|
||||
You can use the :mod:`uuid` module to generate new UUIDs.
|
||||
|
||||
Compatibility:
|
||||
For Alarms, ``X-ALARMUID`` is also considered.
|
||||
|
||||
Examples:
|
||||
The following is an example of such a property value:
|
||||
``5FC53010-1267-4F8E-BC28-1D7AE55A7C99``.
|
||||
|
||||
Set the UID of a calendar:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from icalendar import Calendar
|
||||
>>> from uuid import uuid4
|
||||
>>> calendar = Calendar()
|
||||
>>> calendar.uid = uuid4()
|
||||
>>> print(calendar.to_ical())
|
||||
BEGIN:VCALENDAR
|
||||
UID:d755cef5-2311-46ed-a0e1-6733c9e15c63
|
||||
END:VCALENDAR
|
||||
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
|
||||
__all__ = [
|
||||
"categories_property",
|
||||
"color_property",
|
||||
"exdates_property",
|
||||
"multi_language_text_property",
|
||||
"rdates_property",
|
||||
"rrules_property",
|
||||
"sequence_property",
|
||||
"single_int_property",
|
||||
"single_utc_property",
|
||||
"uid_property",
|
||||
]
|
||||
2201
.venv/lib/python3.9/site-packages/icalendar/cal.py
Normal file
2201
.venv/lib/python3.9/site-packages/icalendar/cal.py
Normal file
File diff suppressed because it is too large
Load Diff
108
.venv/lib/python3.9/site-packages/icalendar/caselessdict.py
Normal file
108
.venv/lib/python3.9/site-packages/icalendar/caselessdict.py
Normal file
@@ -0,0 +1,108 @@
|
||||
from icalendar.parser_tools import to_unicode
|
||||
|
||||
from collections import OrderedDict
|
||||
|
||||
|
||||
def canonsort_keys(keys, canonical_order=None):
|
||||
"""Sorts leading keys according to canonical_order. Keys not specified in
|
||||
canonical_order will appear alphabetically at the end.
|
||||
"""
|
||||
canonical_map = {k: i for i, k in enumerate(canonical_order or [])}
|
||||
head = [k for k in keys if k in canonical_map]
|
||||
tail = [k for k in keys if k not in canonical_map]
|
||||
return sorted(head, key=lambda k: canonical_map[k]) + sorted(tail)
|
||||
|
||||
|
||||
def canonsort_items(dict1, canonical_order=None):
|
||||
"""Returns a list of items from dict1, sorted by canonical_order."""
|
||||
return [(k, dict1[k]) for k in canonsort_keys(dict1.keys(), canonical_order)]
|
||||
|
||||
|
||||
class CaselessDict(OrderedDict):
|
||||
"""A dictionary that isn't case sensitive, and only uses strings as keys.
|
||||
Values retain their case.
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""Set keys to upper for initial dict."""
|
||||
super().__init__(*args, **kwargs)
|
||||
for key, value in self.items():
|
||||
key_upper = to_unicode(key).upper()
|
||||
if key != key_upper:
|
||||
super().__delitem__(key)
|
||||
self[key_upper] = value
|
||||
|
||||
def __getitem__(self, key):
|
||||
key = to_unicode(key)
|
||||
return super().__getitem__(key.upper())
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
key = to_unicode(key)
|
||||
super().__setitem__(key.upper(), value)
|
||||
|
||||
def __delitem__(self, key):
|
||||
key = to_unicode(key)
|
||||
super().__delitem__(key.upper())
|
||||
|
||||
def __contains__(self, key):
|
||||
key = to_unicode(key)
|
||||
return super().__contains__(key.upper())
|
||||
|
||||
def get(self, key, default=None):
|
||||
key = to_unicode(key)
|
||||
return super().get(key.upper(), default)
|
||||
|
||||
def setdefault(self, key, value=None):
|
||||
key = to_unicode(key)
|
||||
return super().setdefault(key.upper(), value)
|
||||
|
||||
def pop(self, key, default=None):
|
||||
key = to_unicode(key)
|
||||
return super().pop(key.upper(), default)
|
||||
|
||||
def popitem(self):
|
||||
return super().popitem()
|
||||
|
||||
def has_key(self, key):
|
||||
key = to_unicode(key)
|
||||
return super().__contains__(key.upper())
|
||||
|
||||
def update(self, *args, **kwargs):
|
||||
# Multiple keys where key1.upper() == key2.upper() will be lost.
|
||||
mappings = list(args) + [kwargs]
|
||||
for mapping in mappings:
|
||||
if hasattr(mapping, "items"):
|
||||
mapping = iter(mapping.items())
|
||||
for key, value in mapping:
|
||||
self[key] = value
|
||||
|
||||
def copy(self):
|
||||
return type(self)(super().copy())
|
||||
|
||||
def __repr__(self):
|
||||
return f"{type(self).__name__}({dict(self)})"
|
||||
|
||||
def __eq__(self, other):
|
||||
return self is other or dict(self.items()) == dict(other.items())
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self == other
|
||||
|
||||
# A list of keys that must appear first in sorted_keys and sorted_items;
|
||||
# must be uppercase.
|
||||
canonical_order = None
|
||||
|
||||
def sorted_keys(self):
|
||||
"""Sorts keys according to the canonical_order for the derived class.
|
||||
Keys not specified in canonical_order will appear at the end.
|
||||
"""
|
||||
return canonsort_keys(self.keys(), self.canonical_order)
|
||||
|
||||
def sorted_items(self):
|
||||
"""Sorts items according to the canonical_order for the derived class.
|
||||
Items not specified in canonical_order will appear at the end.
|
||||
"""
|
||||
return canonsort_items(self, self.canonical_order)
|
||||
|
||||
|
||||
__all__ = ["canonsort_keys", "canonsort_items", "CaselessDict"]
|
||||
105
.venv/lib/python3.9/site-packages/icalendar/cli.py
Executable file
105
.venv/lib/python3.9/site-packages/icalendar/cli.py
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env python3
|
||||
"""utility program that allows user to preview calendar's events"""
|
||||
|
||||
import sys
|
||||
import pathlib
|
||||
import argparse
|
||||
from datetime import datetime
|
||||
|
||||
from icalendar import Calendar, __version__
|
||||
|
||||
|
||||
def _format_name(address):
|
||||
"""Retrieve the e-mail and the name from an address.
|
||||
|
||||
:arg an address object, e.g. mailto:test@test.test
|
||||
|
||||
:returns str: The name and the e-mail address.
|
||||
"""
|
||||
email = address.split(":")[-1]
|
||||
name = email.split("@")[0]
|
||||
if not email:
|
||||
return ""
|
||||
return f"{name} <{email}>"
|
||||
|
||||
|
||||
def _format_attendees(attendees):
|
||||
"""Format the list of attendees.
|
||||
|
||||
:arg any attendees: Either a list, a string or a vCalAddress object.
|
||||
|
||||
:returns str: Formatted list of attendees.
|
||||
"""
|
||||
if isinstance(attendees, str):
|
||||
attendees = [attendees]
|
||||
return "\n".join(map(lambda s: s.rjust(len(s) + 5), map(_format_name, attendees)))
|
||||
|
||||
|
||||
def view(event):
|
||||
"""Make a human readable summary of an iCalendar file.
|
||||
|
||||
:returns str: Human readable summary.
|
||||
"""
|
||||
summary = event.get("summary", default="")
|
||||
organizer = _format_name(event.get("organizer", default=""))
|
||||
attendees = _format_attendees(event.get("attendee", default=[]))
|
||||
location = event.get("location", default="")
|
||||
comment = event.get("comment", "")
|
||||
description = event.get("description", "").split("\n")
|
||||
description = "\n".join(map(lambda s: s.rjust(len(s) + 5), description))
|
||||
|
||||
start = event.decoded("dtstart")
|
||||
if "duration" in event:
|
||||
end = event.decoded("dtend", default=start + event.decoded("duration"))
|
||||
else:
|
||||
end = event.decoded("dtend", default=start)
|
||||
duration = event.decoded("duration", default=end - start)
|
||||
if isinstance(start, datetime):
|
||||
start = start.astimezone()
|
||||
start = start.strftime("%c")
|
||||
if isinstance(end, datetime):
|
||||
end = end.astimezone()
|
||||
end = end.strftime("%c")
|
||||
|
||||
return f""" Organizer: {organizer}
|
||||
Attendees:
|
||||
{attendees}
|
||||
Summary : {summary}
|
||||
Starts : {start}
|
||||
End : {end}
|
||||
Duration : {duration}
|
||||
Location : {location}
|
||||
Comment : {comment}
|
||||
Description:
|
||||
{description}"""
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("calendar_files", nargs="+", type=pathlib.Path)
|
||||
parser.add_argument(
|
||||
"--output",
|
||||
"-o",
|
||||
type=argparse.FileType("w"),
|
||||
default=sys.stdout,
|
||||
help="output file",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-v",
|
||||
"--version",
|
||||
action="version",
|
||||
version=f"{parser.prog} version {__version__}",
|
||||
)
|
||||
argv = parser.parse_args()
|
||||
|
||||
for calendar_file in argv.calendar_files:
|
||||
with open(calendar_file, encoding="utf-8-sig") as f:
|
||||
calendar = Calendar.from_ical(f.read())
|
||||
for event in calendar.walk("vevent"):
|
||||
argv.output.write(view(event) + "\n\n")
|
||||
|
||||
|
||||
__all__ = ["main", "view"]
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
129
.venv/lib/python3.9/site-packages/icalendar/enums.py
Normal file
129
.venv/lib/python3.9/site-packages/icalendar/enums.py
Normal file
@@ -0,0 +1,129 @@
|
||||
"""Enumerations for different types in the RFCs."""
|
||||
from enum import Enum as _Enum
|
||||
|
||||
|
||||
class Enum(_Enum):
|
||||
"""Enum class that can be pickled."""
|
||||
|
||||
def __reduce_ex__(self, _p):
|
||||
"""For pickling."""
|
||||
return self.__class__, (self._name_,)
|
||||
|
||||
|
||||
class StrEnum(str, Enum):
|
||||
"""Enum for strings."""
|
||||
|
||||
|
||||
class PARTSTAT(StrEnum):
|
||||
"""Enum for PARTSTAT from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``NEEDS_ACTION``,
|
||||
``ACCEPTED``,
|
||||
``DECLINED``,
|
||||
``TENTATIVE``,
|
||||
``DELEGATED``,
|
||||
``COMPLETED``,
|
||||
``IN_PROCESS``
|
||||
"""
|
||||
NEEDS_ACTION = "NEEDS-ACTION"
|
||||
ACCEPTED = "ACCEPTED"
|
||||
DECLINED = "DECLINED"
|
||||
TENTATIVE = "TENTATIVE"
|
||||
DELEGATED = "DELEGATED"
|
||||
COMPLETED = "COMPLETED"
|
||||
IN_PROCESS = "IN-PROCESS"
|
||||
|
||||
|
||||
class FBTYPE(StrEnum):
|
||||
"""Enum for FBTYPE from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``FREE``,
|
||||
``BUSY``,
|
||||
``BUSY-UNAVAILABLE``,
|
||||
``BUSY-TENTATIVE``
|
||||
"""
|
||||
FREE = "FREE"
|
||||
BUSY = "BUSY"
|
||||
BUSY_UNAVAILABLE = "BUSY-UNAVAILABLE"
|
||||
BUSY_TENTATIVE = "BUSY-TENTATIVE"
|
||||
|
||||
|
||||
class CUTYPE(StrEnum):
|
||||
"""Enum for CTYPE from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``INDIVIDUAL``,
|
||||
``GROUP``,
|
||||
``RESOURCE``,
|
||||
``ROOM``,
|
||||
``UNKNOWN``
|
||||
"""
|
||||
INDIVIDUAL = "INDIVIDUAL"
|
||||
GROUP = "GROUP"
|
||||
RESOURCE = "RESOURCE"
|
||||
ROOM = "ROOM"
|
||||
UNKNOWN = "UNKNOWN"
|
||||
|
||||
|
||||
class RELTYPE(StrEnum):
|
||||
"""Enum for RELTYPE from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``PARENT``,
|
||||
``CHILD``,
|
||||
``SIBLING``
|
||||
"""
|
||||
PARENT = "PARENT"
|
||||
CHILD = "CHILD"
|
||||
SIBLING = "SIBLING"
|
||||
|
||||
|
||||
class RANGE(StrEnum):
|
||||
"""Enum for RANGE from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``THISANDFUTURE``,
|
||||
``THISANDPRIOR``
|
||||
"""
|
||||
|
||||
THISANDFUTURE = "THISANDFUTURE"
|
||||
THISANDPRIOR = "THISANDPRIOR" # deprecated
|
||||
|
||||
|
||||
class RELATED(StrEnum):
|
||||
"""Enum for RELATED from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``START``,
|
||||
``END``
|
||||
"""
|
||||
START = "START"
|
||||
END = "END"
|
||||
|
||||
|
||||
class ROLE(StrEnum):
|
||||
"""Enum for ROLE from :rfc:`5545`.
|
||||
|
||||
Attributes:
|
||||
``CHAIR``,
|
||||
``REQ-PARTICIPANT``,
|
||||
``OPT-PARTICIPANT``,
|
||||
``NON-PARTICIPANT``
|
||||
"""
|
||||
CHAIR = "CHAIR"
|
||||
REQ_PARTICIPANT = "REQ-PARTICIPANT"
|
||||
OPT_PARTICIPANT = "OPT-PARTICIPANT"
|
||||
NON_PARTICIPANT = "NON-PARTICIPANT"
|
||||
|
||||
|
||||
__all__ = [
|
||||
"PARTSTAT",
|
||||
"FBTYPE",
|
||||
"CUTYPE",
|
||||
"RANGE",
|
||||
"RELATED",
|
||||
"ROLE",
|
||||
"RELTYPE",
|
||||
]
|
||||
67
.venv/lib/python3.9/site-packages/icalendar/error.py
Normal file
67
.venv/lib/python3.9/site-packages/icalendar/error.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""Errors thrown by icalendar."""
|
||||
|
||||
|
||||
class InvalidCalendar(ValueError):
|
||||
"""The calendar given is not valid.
|
||||
|
||||
This calendar does not conform with RFC 5545 or breaks other RFCs.
|
||||
"""
|
||||
|
||||
|
||||
class IncompleteComponent(ValueError):
|
||||
"""The component is missing attributes.
|
||||
|
||||
The attributes are not required, otherwise this would be
|
||||
an InvalidCalendar. But in order to perform calculations,
|
||||
this attribute is required.
|
||||
|
||||
This error is not raised in the UPPERCASE properties like .DTSTART,
|
||||
only in the lowercase computations like .start.
|
||||
"""
|
||||
|
||||
|
||||
class IncompleteAlarmInformation(ValueError):
|
||||
"""The alarms cannot be calculated yet because information is missing."""
|
||||
|
||||
|
||||
class LocalTimezoneMissing(IncompleteAlarmInformation):
|
||||
"""We are missing the local timezone to compute the value.
|
||||
|
||||
Use Alarms.set_local_timezone().
|
||||
"""
|
||||
|
||||
|
||||
class ComponentEndMissing(IncompleteAlarmInformation):
|
||||
"""We are missing the end of a component that the alarm is for.
|
||||
|
||||
Use Alarms.set_end().
|
||||
"""
|
||||
|
||||
|
||||
class ComponentStartMissing(IncompleteAlarmInformation):
|
||||
"""We are missing the start of a component that the alarm is for.
|
||||
|
||||
Use Alarms.set_start().
|
||||
"""
|
||||
|
||||
class FeatureWillBeRemovedInFutureVersion(DeprecationWarning):
|
||||
"""This feature will be removed in a future version."""
|
||||
|
||||
|
||||
class WillBeRemovedInVersion7(FeatureWillBeRemovedInFutureVersion):
|
||||
"""This feature will be removed in icalendar version 7.
|
||||
|
||||
Suppress FeatureWillBeRemovedInFutureVersion instead.
|
||||
"""
|
||||
|
||||
__all__ = [
|
||||
"InvalidCalendar",
|
||||
"IncompleteComponent",
|
||||
"IncompleteAlarmInformation",
|
||||
"LocalTimezoneMissing",
|
||||
"ComponentEndMissing",
|
||||
|
||||
"ComponentStartMissing",
|
||||
"FeatureWillBeRemovedInFutureVersion",
|
||||
"WillBeRemovedInVersion7",
|
||||
]
|
||||
454
.venv/lib/python3.9/site-packages/icalendar/param.py
Normal file
454
.venv/lib/python3.9/site-packages/icalendar/param.py
Normal file
@@ -0,0 +1,454 @@
|
||||
"""Parameter access for icalendar.
|
||||
|
||||
Related:
|
||||
|
||||
- :rfc:`5545`, Section 3.2. Property Parameters
|
||||
- :rfc:`7986`, Section 6. Property Parameters
|
||||
- https://github.com/collective/icalendar/issues/798
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import functools
|
||||
from typing import TYPE_CHECKING, Callable, Optional, TypeVar, Union
|
||||
|
||||
from icalendar import enums
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from enum import Enum
|
||||
|
||||
from icalendar.parser import Parameters
|
||||
|
||||
|
||||
class IcalendarProperty:
|
||||
"""Interface provided by properties in icalendar.prop."""
|
||||
params: Parameters
|
||||
|
||||
|
||||
def _default_return_none() -> Optional[str]:
|
||||
"""Return None by default."""
|
||||
return None
|
||||
|
||||
|
||||
def _default_return_string() -> str:
|
||||
"""Return None by default."""
|
||||
return ""
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
def string_parameter(
|
||||
name:str,
|
||||
doc:str,
|
||||
default:Callable = _default_return_none,
|
||||
convert:Optional[Callable[[str], T]] = None,
|
||||
convert_to:Optional[Callable[[T], str]] = None
|
||||
) -> property:
|
||||
"""Return a parameter with a quoted value (case sensitive)."""
|
||||
|
||||
if convert_to is None:
|
||||
convert_to = convert
|
||||
|
||||
@functools.wraps(default)
|
||||
def fget(self: IcalendarProperty) -> Optional[str]:
|
||||
value = self.params.get(name)
|
||||
if value is None:
|
||||
return default()
|
||||
return convert(value) if convert else value
|
||||
|
||||
def fset(self: IcalendarProperty, value: str):
|
||||
self.params[name] = convert_to(value) if convert_to else value
|
||||
|
||||
def fdel(self: IcalendarProperty):
|
||||
self.params.pop(name, None)
|
||||
|
||||
return property(fget, fset, fdel, doc=doc)
|
||||
|
||||
|
||||
ALTREP = string_parameter(
|
||||
"ALTREP",
|
||||
"""ALTREP - Specify an alternate text representation for the property value.
|
||||
|
||||
Description:
|
||||
This parameter specifies a URI that points to an
|
||||
alternate representation for a textual property value. A property
|
||||
specifying this parameter MUST also include a value that reflects
|
||||
the default representation of the text value. The URI parameter
|
||||
value MUST be specified in a quoted-string.
|
||||
|
||||
.. note::
|
||||
|
||||
While there is no restriction imposed on the URI schemes
|
||||
allowed for this parameter, Content Identifier (CID) :rfc:`2392`,
|
||||
HTTP :rfc:`2616`, and HTTPS :rfc:`2818` are the URI schemes most
|
||||
commonly used by current implementations.
|
||||
""")
|
||||
|
||||
CN = string_parameter(
|
||||
"CN",
|
||||
"""Specify the common name to be associated with the calendar user specified.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter specifies the common name
|
||||
to be associated with the calendar user specified by the property.
|
||||
The parameter value is text. The parameter value can be used for
|
||||
display text to be associated with the calendar address specified
|
||||
by the property.
|
||||
""",
|
||||
default=_default_return_string
|
||||
)
|
||||
|
||||
def _default_return_individual() -> enums.CUTYPE|str:
|
||||
"""Default value."""
|
||||
return enums.CUTYPE.INDIVIDUAL
|
||||
|
||||
def _convert_enum(enum: type[Enum]) -> Callable[[str], Enum]:
|
||||
|
||||
def convert(value: str) -> str:
|
||||
"""Convert if possible."""
|
||||
try:
|
||||
return enum(value.upper())
|
||||
except ValueError:
|
||||
return value
|
||||
return convert
|
||||
|
||||
CUTYPE = string_parameter(
|
||||
"CUTYPE",
|
||||
"""Identify the type of calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter identifies the type of
|
||||
calendar user specified by the property. If not specified on a
|
||||
property that allows this parameter, the default is INDIVIDUAL.
|
||||
Applications MUST treat x-name and iana-token values they don't
|
||||
recognize the same way as they would the UNKNOWN value.
|
||||
""", default=_default_return_individual, convert=_convert_enum(enums.CUTYPE))
|
||||
|
||||
|
||||
def quoted_list_parameter(name: str, doc: str) -> property:
|
||||
"""Return a parameter that contains a quoted list."""
|
||||
|
||||
def fget(self: IcalendarProperty) -> tuple[str]:
|
||||
value = self.params.get(name)
|
||||
if value is None:
|
||||
return ()
|
||||
if isinstance(value, str):
|
||||
return tuple(value.split(","))
|
||||
return value
|
||||
|
||||
def fset(self: IcalendarProperty, value: str|tuple[str]):
|
||||
if value == ():
|
||||
fdel(self)
|
||||
else:
|
||||
self.params[name] = (value,) if isinstance(value, str) else value
|
||||
|
||||
def fdel(self: IcalendarProperty):
|
||||
self.params.pop(name, None)
|
||||
|
||||
return property(fget, fset, fdel, doc=doc)
|
||||
|
||||
|
||||
DELEGATED_FROM = quoted_list_parameter(
|
||||
"DELEGATED-FROM",
|
||||
"""Specify the calendar users that have delegated their participation to the calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. This parameter specifies those calendar
|
||||
users that have delegated their participation in a group-scheduled
|
||||
event or to-do to the calendar user specified by the property.
|
||||
The individual calendar address parameter values MUST each be
|
||||
specified in a quoted-string.
|
||||
""")
|
||||
|
||||
DELEGATED_TO = quoted_list_parameter(
|
||||
"DELEGATED-TO",
|
||||
"""Specify the calendar users to whom the calendar user specified by the property has delegated participation.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. This parameter specifies those calendar
|
||||
users whom have been delegated participation in a group-scheduled
|
||||
event or to-do by the calendar user specified by the property.
|
||||
The individual calendar address parameter values MUST each be
|
||||
specified in a quoted-string.
|
||||
""")
|
||||
|
||||
DIR = string_parameter(
|
||||
"DIR",
|
||||
"""Specify reference to a directory entry associated with the calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter specifies a reference to
|
||||
the directory entry associated with the calendar user specified by
|
||||
the property. The parameter value is a URI. The URI parameter
|
||||
value MUST be specified in a quoted-string.
|
||||
|
||||
.. note::
|
||||
|
||||
While there is no restriction imposed on the URI schemes
|
||||
allowed for this parameter, CID :rfc:`2392`, DATA :rfc:`2397`, FILE
|
||||
:rfc:`1738`, FTP :rfc:`1738`, HTTP :rfc:`2616`, HTTPS :rfc:`2818`, LDAP
|
||||
:rfc:`4516`, and MID :rfc:`2392` are the URI schemes most commonly
|
||||
used by current implementations.
|
||||
""")
|
||||
|
||||
def _default_return_busy() -> enums.FBTYPE|str:
|
||||
"""Default value."""
|
||||
return enums.FBTYPE.BUSY
|
||||
|
||||
FBTYPE = string_parameter(
|
||||
"FBTYPE",
|
||||
"""Specify the free or busy time type.
|
||||
|
||||
Description:
|
||||
This parameter specifies the free or busy time type.
|
||||
The value FREE indicates that the time interval is free for
|
||||
scheduling. The value BUSY indicates that the time interval is
|
||||
busy because one or more events have been scheduled for that
|
||||
interval. The value BUSY-UNAVAILABLE indicates that the time
|
||||
interval is busy and that the interval can not be scheduled. The
|
||||
value BUSY-TENTATIVE indicates that the time interval is busy
|
||||
because one or more events have been tentatively scheduled for
|
||||
that interval. If not specified on a property that allows this
|
||||
parameter, the default is BUSY. Applications MUST treat x-name
|
||||
and iana-token values they don't recognize the same way as they
|
||||
would the BUSY value.
|
||||
""", default=_default_return_busy, convert=_convert_enum(enums.FBTYPE))
|
||||
|
||||
LANGUAGE = string_parameter(
|
||||
"LANGUAGE",
|
||||
"""Specify the language for text values in a property or property parameter.
|
||||
|
||||
Description:
|
||||
This parameter identifies the language of the text in
|
||||
the property value and of all property parameter values of the
|
||||
property. The value of the "LANGUAGE" property parameter is that
|
||||
defined in :rfc:`5646`.
|
||||
|
||||
For transport in a MIME entity, the Content-Language header field
|
||||
can be used to set the default language for the entire body part.
|
||||
Otherwise, no default language is assumed.
|
||||
""")
|
||||
|
||||
MEMBER = quoted_list_parameter(
|
||||
"MEMBER",
|
||||
"""Specify the group or list membership of the calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter identifies the groups or
|
||||
list membership for the calendar user specified by the property.
|
||||
The parameter value is either a single calendar address in a
|
||||
quoted-string or a COMMA-separated list of calendar addresses,
|
||||
each in a quoted-string. The individual calendar address
|
||||
parameter values MUST each be specified in a quoted-string.
|
||||
"""
|
||||
)
|
||||
|
||||
def _default_return_needs_action() -> enums.PARTSTAT|str:
|
||||
"""Default value."""
|
||||
return enums.PARTSTAT.NEEDS_ACTION
|
||||
|
||||
PARTSTAT = string_parameter(
|
||||
"PARTSTAT",
|
||||
"""Specify the participation status for the calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter identifies the
|
||||
participation status for the calendar user specified by the
|
||||
property value. The parameter values differ depending on whether
|
||||
they are associated with a group-scheduled "VEVENT", "VTODO", or
|
||||
"VJOURNAL". The values MUST match one of the values allowed for
|
||||
the given calendar component. If not specified on a property that
|
||||
allows this parameter, the default value is NEEDS-ACTION.
|
||||
Applications MUST treat x-name and iana-token values they don't
|
||||
recognize the same way as they would the NEEDS-ACTION value.
|
||||
""", default=_default_return_needs_action, convert=_convert_enum(enums.PARTSTAT))
|
||||
|
||||
def _default_range_none() -> Optional[enums.RANGE|str]:
|
||||
return None
|
||||
|
||||
RANGE = string_parameter(
|
||||
"RANGE",
|
||||
"""Specify the effective range of recurrence instances from the instance specified by the recurrence identifier specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on a property that
|
||||
specifies a recurrence identifier. The parameter specifies the
|
||||
effective range of recurrence instances that is specified by the
|
||||
property. The effective range is from the recurrence identifier
|
||||
specified by the property. If this parameter is not specified on
|
||||
an allowed property, then the default range is the single instance
|
||||
specified by the recurrence identifier value of the property. The
|
||||
parameter value can only be "THISANDFUTURE" to indicate a range
|
||||
defined by the recurrence identifier and all subsequent instances.
|
||||
The value "THISANDPRIOR" is deprecated by this revision of
|
||||
iCalendar and MUST NOT be generated by applications.
|
||||
""", default=_default_range_none, convert=_convert_enum(enums.RANGE))
|
||||
|
||||
def _default_related() -> enums.RELATED|str:
|
||||
return enums.RELATED.START
|
||||
|
||||
RELATED = string_parameter(
|
||||
"RELATED",
|
||||
"""Specify the relationship of the alarm trigger with respect to the start or end of the calendar component.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties that
|
||||
specify an alarm trigger with a "DURATION" value type. The
|
||||
parameter specifies whether the alarm will trigger relative to the
|
||||
start or end of the calendar component. The parameter value START
|
||||
will set the alarm to trigger off the start of the calendar
|
||||
component; the parameter value END will set the alarm to trigger
|
||||
off the end of the calendar component. If the parameter is not
|
||||
specified on an allowable property, then the default is START.
|
||||
|
||||
""", default=_default_related, convert=_convert_enum(enums.RANGE))
|
||||
|
||||
|
||||
def _default_req_participant() -> enums.ROLE|str:
|
||||
return enums.ROLE.REQ_PARTICIPANT
|
||||
|
||||
ROLE = string_parameter(
|
||||
"ROLE",
|
||||
"""Specify the participation role for the calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter specifies the participation
|
||||
role for the calendar user specified by the property in the group
|
||||
schedule calendar component. If not specified on a property that
|
||||
allows this parameter, the default value is REQ-PARTICIPANT.
|
||||
Applications MUST treat x-name and iana-token values they don't
|
||||
recognize the same way as they would the REQ-PARTICIPANT value.
|
||||
""", default=_default_req_participant, convert=_convert_enum(enums.ROLE)
|
||||
)
|
||||
|
||||
def boolean_parameter(name: str, default:bool, doc: str) -> property:
|
||||
|
||||
def _default() -> bool:
|
||||
return default
|
||||
|
||||
return string_parameter(
|
||||
name,
|
||||
doc,
|
||||
default=_default,
|
||||
convert=lambda x: x.upper() == "TRUE",
|
||||
convert_to=lambda x: "TRUE" if x else "FALSE",
|
||||
)
|
||||
|
||||
RSVP = boolean_parameter(
|
||||
"RSVP",
|
||||
False,
|
||||
"""Specify whether there is an expectation of a favor of anreply from the calendar user specified by the property value.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter identifies the expectation
|
||||
of a reply from the calendar user specified by the property value.
|
||||
This parameter is used by the "Organizer" to request a
|
||||
participation status reply from an "Attendee" of a group-scheduled
|
||||
event or to-do. If not specified on a property that allows this
|
||||
parameter, the default value is ``False``.
|
||||
"""
|
||||
)
|
||||
|
||||
SENT_BY = string_parameter(
|
||||
"SENT-BY",
|
||||
"""Specify the calendar user that is acting on behalf of the calendar user specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on properties with a
|
||||
CAL-ADDRESS value type. The parameter specifies the calendar user
|
||||
that is acting on behalf of the calendar user specified by the
|
||||
property. The parameter value MUST be a mailto URI as defined in
|
||||
:rfc:`2368`. The individual calendar address parameter values MUST
|
||||
each be specified in a quoted-string.
|
||||
"""
|
||||
)
|
||||
|
||||
TZID = string_parameter(
|
||||
"TZID",
|
||||
"""Specify the identifier for the time zone definition for a time component in the property value.
|
||||
|
||||
Description:
|
||||
This parameter MUST be specified on the "DTSTART",
|
||||
"DTEND", "DUE", "EXDATE", and "RDATE" properties when either a
|
||||
DATE-TIME or TIME value type is specified and when the value is
|
||||
neither a UTC or a "floating" time. Refer to the DATE-TIME or
|
||||
TIME value type definition for a description of UTC and "floating
|
||||
time" formats. This property parameter specifies a text value
|
||||
that uniquely identifies the "VTIMEZONE" calendar component to be
|
||||
used when evaluating the time portion of the property. The value
|
||||
of the "TZID" property parameter will be equal to the value of the
|
||||
"TZID" property for the matching time zone definition. An
|
||||
individual "VTIMEZONE" calendar component MUST be specified for
|
||||
each unique "TZID" parameter value specified in the iCalendar
|
||||
object.
|
||||
|
||||
The parameter MUST be specified on properties with a DATE-TIME
|
||||
value if the DATE-TIME is not either a UTC or a "floating" time.
|
||||
Failure to include and follow VTIMEZONE definitions in iCalendar
|
||||
objects may lead to inconsistent understanding of the local time
|
||||
at any given location.
|
||||
|
||||
The presence of the SOLIDUS character as a prefix, indicates that
|
||||
this "TZID" represents a unique ID in a globally defined time zone
|
||||
registry (when such registry is defined).
|
||||
|
||||
.. note::
|
||||
|
||||
This document does not define a naming convention for
|
||||
time zone identifiers. Implementers may want to use the naming
|
||||
conventions defined in existing time zone specifications such
|
||||
as the public-domain TZ database (TZDB). The specification of
|
||||
globally unique time zone identifiers is not addressed by this
|
||||
document and is left for future study.
|
||||
"""
|
||||
)
|
||||
|
||||
def _default_return_parent() -> enums.RELTYPE:
|
||||
return enums.RELTYPE.PARENT
|
||||
|
||||
RELTYPE = string_parameter(
|
||||
"RELTYPE",
|
||||
"""Specify the type of hierarchical relationship associated with the calendar component specified by the property.
|
||||
|
||||
Description:
|
||||
This parameter can be specified on a property that
|
||||
references another related calendar. The parameter specifies the
|
||||
hierarchical relationship type of the calendar component
|
||||
referenced by the property. The parameter value can be PARENT, to
|
||||
indicate that the referenced calendar component is a superior of
|
||||
calendar component; CHILD to indicate that the referenced calendar
|
||||
component is a subordinate of the calendar component; or SIBLING
|
||||
to indicate that the referenced calendar component is a peer of
|
||||
the calendar component. If this parameter is not specified on an
|
||||
allowable property, the default relationship type is PARENT.
|
||||
Applications MUST treat x-name and iana-token values they don't
|
||||
recognize the same way as they would the PARENT value.
|
||||
""", default=_default_return_parent, convert=_convert_enum(enums.RELTYPE))
|
||||
|
||||
__all__ = [
|
||||
"string_parameter",
|
||||
"quoted_list_parameter",
|
||||
"ALTREP",
|
||||
"CN",
|
||||
"CUTYPE",
|
||||
"DELEGATED_FROM",
|
||||
"DELEGATED_TO",
|
||||
"DIR",
|
||||
"FBTYPE",
|
||||
"LANGUAGE",
|
||||
"MEMBER",
|
||||
"PARTSTAT",
|
||||
"RANGE",
|
||||
"RELATED",
|
||||
"ROLE",
|
||||
"RSVP",
|
||||
"SENT_BY",
|
||||
"TZID",
|
||||
]
|
||||
482
.venv/lib/python3.9/site-packages/icalendar/parser.py
Normal file
482
.venv/lib/python3.9/site-packages/icalendar/parser.py
Normal file
@@ -0,0 +1,482 @@
|
||||
"""This module parses and generates contentlines as defined in RFC 5545
|
||||
(iCalendar), but will probably work for other MIME types with similar syntax.
|
||||
Eg. RFC 2426 (vCard)
|
||||
|
||||
It is stupid in the sense that it treats the content purely as strings. No type
|
||||
conversion is attempted.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from icalendar.caselessdict import CaselessDict
|
||||
from icalendar.parser_tools import DEFAULT_ENCODING, ICAL_TYPE
|
||||
from icalendar.parser_tools import SEQUENCE_TYPES
|
||||
from icalendar.parser_tools import to_unicode
|
||||
|
||||
import re
|
||||
|
||||
|
||||
def escape_char(text):
|
||||
"""Format value according to iCalendar TEXT escaping rules."""
|
||||
assert isinstance(text, (str, bytes))
|
||||
# NOTE: ORDER MATTERS!
|
||||
return (
|
||||
text.replace(r"\N", "\n")
|
||||
.replace("\\", "\\\\")
|
||||
.replace(";", r"\;")
|
||||
.replace(",", r"\,")
|
||||
.replace("\r\n", r"\n")
|
||||
.replace("\n", r"\n")
|
||||
)
|
||||
|
||||
|
||||
def unescape_char(text):
|
||||
assert isinstance(text, (str, bytes))
|
||||
# NOTE: ORDER MATTERS!
|
||||
if isinstance(text, str):
|
||||
return (
|
||||
text.replace("\\N", "\\n")
|
||||
.replace("\r\n", "\n")
|
||||
.replace("\\n", "\n")
|
||||
.replace("\\,", ",")
|
||||
.replace("\\;", ";")
|
||||
.replace("\\\\", "\\")
|
||||
)
|
||||
elif isinstance(text, bytes):
|
||||
return (
|
||||
text.replace(b"\\N", b"\\n")
|
||||
.replace(b"\r\n", b"\n")
|
||||
.replace(b"\\n", b"\n")
|
||||
.replace(b"\\,", b",")
|
||||
.replace(b"\\;", b";")
|
||||
.replace(b"\\\\", b"\\")
|
||||
)
|
||||
|
||||
|
||||
def foldline(line, limit=75, fold_sep="\r\n "):
|
||||
"""Make a string folded as defined in RFC5545
|
||||
Lines of text SHOULD NOT be longer than 75 octets, excluding the line
|
||||
break. Long content lines SHOULD be split into a multiple line
|
||||
representations using a line "folding" technique. That is, a long
|
||||
line can be split between any two characters by inserting a CRLF
|
||||
immediately followed by a single linear white-space character (i.e.,
|
||||
SPACE or HTAB).
|
||||
"""
|
||||
assert isinstance(line, str)
|
||||
assert "\n" not in line
|
||||
|
||||
# Use a fast and simple variant for the common case that line is all ASCII.
|
||||
try:
|
||||
line.encode("ascii")
|
||||
except (UnicodeEncodeError, UnicodeDecodeError):
|
||||
pass
|
||||
else:
|
||||
return fold_sep.join(
|
||||
line[i : i + limit - 1] for i in range(0, len(line), limit - 1)
|
||||
)
|
||||
|
||||
ret_chars = []
|
||||
byte_count = 0
|
||||
for char in line:
|
||||
char_byte_len = len(char.encode(DEFAULT_ENCODING))
|
||||
byte_count += char_byte_len
|
||||
if byte_count >= limit:
|
||||
ret_chars.append(fold_sep)
|
||||
byte_count = char_byte_len
|
||||
ret_chars.append(char)
|
||||
|
||||
return "".join(ret_chars)
|
||||
|
||||
|
||||
#################################################################
|
||||
# Property parameter stuff
|
||||
|
||||
|
||||
def param_value(value, always_quote=False):
|
||||
"""Returns a parameter value."""
|
||||
if isinstance(value, SEQUENCE_TYPES):
|
||||
return q_join(map(rfc_6868_escape, value), always_quote=always_quote)
|
||||
if isinstance(value, str):
|
||||
return dquote(rfc_6868_escape(value), always_quote=always_quote)
|
||||
return dquote(rfc_6868_escape(value.to_ical().decode(DEFAULT_ENCODING)))
|
||||
|
||||
|
||||
# Could be improved
|
||||
|
||||
# [\w-] because of the iCalendar RFC
|
||||
# . because of the vCard RFC
|
||||
NAME = re.compile(r"[\w.-]+")
|
||||
|
||||
UNSAFE_CHAR = re.compile('[\x00-\x08\x0a-\x1f\x7f",:;]')
|
||||
QUNSAFE_CHAR = re.compile('[\x00-\x08\x0a-\x1f\x7f"]')
|
||||
FOLD = re.compile(b"(\r?\n)+[ \t]")
|
||||
uFOLD = re.compile("(\r?\n)+[ \t]")
|
||||
NEWLINE = re.compile(r"\r?\n")
|
||||
|
||||
|
||||
def validate_token(name):
|
||||
match = NAME.findall(name)
|
||||
if len(match) == 1 and name == match[0]:
|
||||
return
|
||||
raise ValueError(name)
|
||||
|
||||
|
||||
def validate_param_value(value, quoted=True):
|
||||
validator = QUNSAFE_CHAR if quoted else UNSAFE_CHAR
|
||||
if validator.findall(value):
|
||||
raise ValueError(value)
|
||||
|
||||
|
||||
# chars presence of which in parameter value will be cause the value
|
||||
# to be enclosed in double-quotes
|
||||
QUOTABLE = re.compile("[,;:’]")
|
||||
|
||||
|
||||
def dquote(val, always_quote=False):
|
||||
"""Enclose parameter values containing [,;:] in double quotes."""
|
||||
# a double-quote character is forbidden to appear in a parameter value
|
||||
# so replace it with a single-quote character
|
||||
val = val.replace('"', "'")
|
||||
if QUOTABLE.search(val) or always_quote:
|
||||
return f'"{val}"'
|
||||
return val
|
||||
|
||||
|
||||
# parsing helper
|
||||
def q_split(st, sep=",", maxsplit=-1):
|
||||
"""Splits a string on char, taking double (q)uotes into considderation."""
|
||||
if maxsplit == 0:
|
||||
return [st]
|
||||
|
||||
result = []
|
||||
cursor = 0
|
||||
length = len(st)
|
||||
inquote = 0
|
||||
splits = 0
|
||||
for i, ch in enumerate(st):
|
||||
if ch == '"':
|
||||
inquote = not inquote
|
||||
if not inquote and ch == sep:
|
||||
result.append(st[cursor:i])
|
||||
cursor = i + 1
|
||||
splits += 1
|
||||
if i + 1 == length or splits == maxsplit:
|
||||
result.append(st[cursor:])
|
||||
break
|
||||
return result
|
||||
|
||||
|
||||
def q_join(lst, sep=",", always_quote=False):
|
||||
"""Joins a list on sep, quoting strings with QUOTABLE chars."""
|
||||
return sep.join(dquote(itm, always_quote=always_quote) for itm in lst)
|
||||
|
||||
|
||||
class Parameters(CaselessDict):
|
||||
"""Parser and generator of Property parameter strings. It knows nothing of
|
||||
datatypes. Its main concern is textual structure.
|
||||
"""
|
||||
|
||||
# The following paremeters must always be enclosed in double quotes
|
||||
always_quoted = (
|
||||
"ALTREP",
|
||||
"DELEGATED-FROM",
|
||||
"DELEGATED-TO",
|
||||
"DIR",
|
||||
"MEMBER",
|
||||
"SENT-BY",
|
||||
# Part of X-APPLE-STRUCTURED-LOCATION
|
||||
"X-ADDRESS",
|
||||
"X-TITLE",
|
||||
)
|
||||
# this is quoted should one of the values be present
|
||||
quote_also = {
|
||||
# This is escaped in the RFC
|
||||
"CN" : " '",
|
||||
}
|
||||
|
||||
def params(self):
|
||||
"""In RFC 5545 keys are called parameters, so this is to be consitent
|
||||
with the naming conventions.
|
||||
"""
|
||||
return self.keys()
|
||||
|
||||
# TODO?
|
||||
# Later, when I get more time... need to finish this off now. The last major
|
||||
# thing missing.
|
||||
# def _encode(self, name, value, cond=1):
|
||||
# # internal, for conditional convertion of values.
|
||||
# if cond:
|
||||
# klass = types_factory.for_property(name)
|
||||
# return klass(value)
|
||||
# return value
|
||||
#
|
||||
# def add(self, name, value, encode=0):
|
||||
# "Add a parameter value and optionally encode it."
|
||||
# if encode:
|
||||
# value = self._encode(name, value, encode)
|
||||
# self[name] = value
|
||||
#
|
||||
# def decoded(self, name):
|
||||
# "returns a decoded value, or list of same"
|
||||
|
||||
def to_ical(self, sorted=True):
|
||||
result = []
|
||||
items = list(self.items())
|
||||
if sorted:
|
||||
items.sort()
|
||||
|
||||
for key, value in items:
|
||||
upper_key = key.upper()
|
||||
check_quoteable_characters = self.quote_also.get(key.upper())
|
||||
always_quote = (
|
||||
upper_key in self.always_quoted or (
|
||||
check_quoteable_characters and
|
||||
any(c in value for c in check_quoteable_characters)
|
||||
)
|
||||
)
|
||||
quoted_value = param_value(value, always_quote=always_quote)
|
||||
if isinstance(quoted_value, str):
|
||||
quoted_value = quoted_value.encode(DEFAULT_ENCODING)
|
||||
# CaselessDict keys are always unicode
|
||||
result.append(upper_key.encode(DEFAULT_ENCODING) + b"=" + quoted_value)
|
||||
return b";".join(result)
|
||||
|
||||
@classmethod
|
||||
def from_ical(cls, st, strict=False):
|
||||
"""Parses the parameter format from ical text format."""
|
||||
|
||||
# parse into strings
|
||||
result = cls()
|
||||
for param in q_split(st, ";"):
|
||||
try:
|
||||
key, val = q_split(param, "=", maxsplit=1)
|
||||
validate_token(key)
|
||||
# Property parameter values that are not in quoted
|
||||
# strings are case insensitive.
|
||||
vals = []
|
||||
for v in q_split(val, ","):
|
||||
if v.startswith('"') and v.endswith('"'):
|
||||
v = v.strip('"')
|
||||
validate_param_value(v, quoted=True)
|
||||
vals.append(rfc_6868_unescape(v))
|
||||
else:
|
||||
validate_param_value(v, quoted=False)
|
||||
if strict:
|
||||
vals.append(rfc_6868_unescape(v.upper()))
|
||||
else:
|
||||
vals.append(rfc_6868_unescape(v))
|
||||
if not vals:
|
||||
result[key] = val
|
||||
else:
|
||||
if len(vals) == 1:
|
||||
result[key] = vals[0]
|
||||
else:
|
||||
result[key] = vals
|
||||
except ValueError as exc:
|
||||
raise ValueError(f"{param!r} is not a valid parameter string: {exc}")
|
||||
return result
|
||||
|
||||
|
||||
def escape_string(val):
|
||||
# f'{i:02X}'
|
||||
return (
|
||||
val.replace(r"\,", "%2C")
|
||||
.replace(r"\:", "%3A")
|
||||
.replace(r"\;", "%3B")
|
||||
.replace(r"\\", "%5C")
|
||||
)
|
||||
|
||||
|
||||
def unescape_string(val):
|
||||
return (
|
||||
val.replace("%2C", ",")
|
||||
.replace("%3A", ":")
|
||||
.replace("%3B", ";")
|
||||
.replace("%5C", "\\")
|
||||
)
|
||||
|
||||
|
||||
RFC_6868_UNESCAPE_REGEX = re.compile(r"\^\^|\^n|\^'")
|
||||
|
||||
|
||||
def rfc_6868_unescape(param_value: str) -> str:
|
||||
"""Take care of :rfc:`6868` unescaping.
|
||||
|
||||
- ^^ -> ^
|
||||
- ^n -> system specific newline
|
||||
- ^' -> "
|
||||
- ^ with others stay intact
|
||||
"""
|
||||
replacements = {
|
||||
"^^": "^",
|
||||
"^n": os.linesep,
|
||||
"^'": '"',
|
||||
}
|
||||
return RFC_6868_UNESCAPE_REGEX.sub(lambda m: replacements.get(m.group(0), m.group(0)), param_value)
|
||||
|
||||
|
||||
RFC_6868_ESCAPE_REGEX = re.compile(r'\^|\r\n|\r|\n|"')
|
||||
|
||||
def rfc_6868_escape(param_value: str) -> str:
|
||||
"""Take care of :rfc:`6868` escaping.
|
||||
|
||||
- ^ -> ^^
|
||||
- " -> ^'
|
||||
- newline -> ^n
|
||||
"""
|
||||
replacements = {
|
||||
"^": "^^",
|
||||
"\n": "^n",
|
||||
"\r": "^n",
|
||||
"\r\n": "^n",
|
||||
'"': "^'",
|
||||
}
|
||||
return RFC_6868_ESCAPE_REGEX.sub(lambda m: replacements.get(m.group(0), m.group(0)), param_value)
|
||||
|
||||
def unescape_list_or_string(val):
|
||||
if isinstance(val, list):
|
||||
return [unescape_string(s) for s in val]
|
||||
else:
|
||||
return unescape_string(val)
|
||||
|
||||
|
||||
#########################################
|
||||
# parsing and generation of content lines
|
||||
|
||||
|
||||
class Contentline(str):
|
||||
"""A content line is basically a string that can be folded and parsed into
|
||||
parts.
|
||||
"""
|
||||
|
||||
def __new__(cls, value, strict=False, encoding=DEFAULT_ENCODING):
|
||||
value = to_unicode(value, encoding=encoding)
|
||||
assert "\n" not in value, (
|
||||
"Content line can not contain unescaped " "new line characters."
|
||||
)
|
||||
self = super().__new__(cls, value)
|
||||
self.strict = strict
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
def from_parts(cls, name:ICAL_TYPE, params: Parameters, values, sorted=True):
|
||||
"""Turn a parts into a content line."""
|
||||
assert isinstance(params, Parameters)
|
||||
if hasattr(values, "to_ical"):
|
||||
values = values.to_ical()
|
||||
else:
|
||||
from icalendar.prop import vText
|
||||
values = vText(values).to_ical()
|
||||
# elif isinstance(values, basestring):
|
||||
# values = escape_char(values)
|
||||
|
||||
# TODO: after unicode only, remove this
|
||||
# Convert back to unicode, after to_ical encoded it.
|
||||
name = to_unicode(name)
|
||||
values = to_unicode(values)
|
||||
if params:
|
||||
params = to_unicode(params.to_ical(sorted=sorted))
|
||||
return cls(f"{name};{params}:{values}")
|
||||
return cls(f"{name}:{values}")
|
||||
|
||||
def parts(self):
|
||||
"""Split the content line up into (name, parameters, values) parts."""
|
||||
try:
|
||||
st = escape_string(self)
|
||||
name_split = None
|
||||
value_split = None
|
||||
in_quotes = False
|
||||
for i, ch in enumerate(st):
|
||||
if not in_quotes:
|
||||
if ch in ":;" and not name_split:
|
||||
name_split = i
|
||||
if ch == ":" and not value_split:
|
||||
value_split = i
|
||||
if ch == '"':
|
||||
in_quotes = not in_quotes
|
||||
name = unescape_string(st[:name_split])
|
||||
if not name:
|
||||
raise ValueError("Key name is required")
|
||||
validate_token(name)
|
||||
if not value_split:
|
||||
value_split = i + 1
|
||||
if not name_split or name_split + 1 == value_split:
|
||||
raise ValueError("Invalid content line")
|
||||
params = Parameters.from_ical(
|
||||
st[name_split + 1 : value_split], strict=self.strict
|
||||
)
|
||||
params = Parameters(
|
||||
(unescape_string(key), unescape_list_or_string(value))
|
||||
for key, value in iter(params.items())
|
||||
)
|
||||
values = unescape_string(st[value_split + 1 :])
|
||||
return (name, params, values)
|
||||
except ValueError as exc:
|
||||
raise ValueError(
|
||||
f"Content line could not be parsed into parts: '{self}': {exc}"
|
||||
) from exc
|
||||
|
||||
@classmethod
|
||||
def from_ical(cls, ical, strict=False):
|
||||
"""Unfold the content lines in an iCalendar into long content lines."""
|
||||
ical = to_unicode(ical)
|
||||
# a fold is carriage return followed by either a space or a tab
|
||||
return cls(uFOLD.sub("", ical), strict=strict)
|
||||
|
||||
def to_ical(self):
|
||||
"""Long content lines are folded so they are less than 75 characters
|
||||
wide.
|
||||
"""
|
||||
return foldline(self).encode(DEFAULT_ENCODING)
|
||||
|
||||
|
||||
class Contentlines(list):
|
||||
"""I assume that iCalendar files generally are a few kilobytes in size.
|
||||
Then this should be efficient. for Huge files, an iterator should probably
|
||||
be used instead.
|
||||
"""
|
||||
|
||||
def to_ical(self):
|
||||
"""Simply join self."""
|
||||
return b"\r\n".join(line.to_ical() for line in self if line) + b"\r\n"
|
||||
|
||||
@classmethod
|
||||
def from_ical(cls, st):
|
||||
"""Parses a string into content lines."""
|
||||
st = to_unicode(st)
|
||||
try:
|
||||
# a fold is carriage return followed by either a space or a tab
|
||||
unfolded = uFOLD.sub("", st)
|
||||
lines = cls(Contentline(line) for line in NEWLINE.split(unfolded) if line)
|
||||
lines.append("") # '\r\n' at the end of every content line
|
||||
return lines
|
||||
except Exception:
|
||||
raise ValueError("Expected StringType with content lines")
|
||||
|
||||
|
||||
__all__ = [
|
||||
"Contentline",
|
||||
"Contentlines",
|
||||
"FOLD",
|
||||
"NAME",
|
||||
"NEWLINE",
|
||||
"Parameters",
|
||||
"QUNSAFE_CHAR",
|
||||
"QUOTABLE",
|
||||
"UNSAFE_CHAR",
|
||||
"dquote",
|
||||
"escape_char",
|
||||
"escape_string",
|
||||
"foldline",
|
||||
"param_value",
|
||||
"q_join",
|
||||
"q_split",
|
||||
"rfc_6868_escape",
|
||||
"rfc_6868_unescape",
|
||||
"uFOLD",
|
||||
"unescape_char",
|
||||
"unescape_list_or_string",
|
||||
"unescape_string",
|
||||
"validate_param_value",
|
||||
"validate_token",
|
||||
]
|
||||
63
.venv/lib/python3.9/site-packages/icalendar/parser_tools.py
Normal file
63
.venv/lib/python3.9/site-packages/icalendar/parser_tools.py
Normal file
@@ -0,0 +1,63 @@
|
||||
from typing import List, Union
|
||||
|
||||
SEQUENCE_TYPES = (list, tuple)
|
||||
DEFAULT_ENCODING = "utf-8"
|
||||
ICAL_TYPE = Union[str, bytes]
|
||||
|
||||
|
||||
def from_unicode(value: ICAL_TYPE, encoding="utf-8") -> bytes:
|
||||
"""
|
||||
Converts a value to bytes, even if it already is bytes
|
||||
:param value: The value to convert
|
||||
:param encoding: The encoding to use in the conversion
|
||||
:return: The bytes representation of the value
|
||||
"""
|
||||
if isinstance(value, bytes):
|
||||
return value
|
||||
elif isinstance(value, str):
|
||||
try:
|
||||
return value.encode(encoding)
|
||||
except UnicodeEncodeError:
|
||||
return value.encode("utf-8", "replace")
|
||||
else:
|
||||
return value
|
||||
|
||||
|
||||
def to_unicode(value: ICAL_TYPE, encoding="utf-8-sig") -> str:
|
||||
"""Converts a value to unicode, even if it is already a unicode string."""
|
||||
if isinstance(value, str):
|
||||
return value
|
||||
elif isinstance(value, bytes):
|
||||
try:
|
||||
return value.decode(encoding)
|
||||
except UnicodeDecodeError:
|
||||
return value.decode("utf-8-sig", "replace")
|
||||
else:
|
||||
return value
|
||||
|
||||
|
||||
def data_encode(
|
||||
data: Union[ICAL_TYPE, dict, list], encoding=DEFAULT_ENCODING
|
||||
) -> Union[bytes, List[bytes], dict]:
|
||||
"""Encode all datastructures to the given encoding.
|
||||
Currently unicode strings, dicts and lists are supported.
|
||||
"""
|
||||
# https://stackoverflow.com/questions/1254454/fastest-way-to-convert-a-dicts-keys-values-from-unicode-to-str
|
||||
if isinstance(data, str):
|
||||
return data.encode(encoding)
|
||||
elif isinstance(data, dict):
|
||||
return dict(map(data_encode, iter(data.items())))
|
||||
elif isinstance(data, list) or isinstance(data, tuple):
|
||||
return list(map(data_encode, data))
|
||||
else:
|
||||
return data
|
||||
|
||||
|
||||
__all__ = [
|
||||
"DEFAULT_ENCODING",
|
||||
"SEQUENCE_TYPES",
|
||||
"ICAL_TYPE",
|
||||
"data_encode",
|
||||
"from_unicode",
|
||||
"to_unicode",
|
||||
]
|
||||
2044
.venv/lib/python3.9/site-packages/icalendar/prop.py
Normal file
2044
.venv/lib/python3.9/site-packages/icalendar/prop.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
BEGIN:VALARM
|
||||
TRIGGER;VALUE=DATE-TIME:19970317T133000Z
|
||||
REPEAT:4
|
||||
DURATION:PT15M
|
||||
ACTION:AUDIO
|
||||
ATTACH;FMTTYPE=audio/basic:ftp://example.com/pub/sounds/bell-01.aud
|
||||
END:VALARM
|
||||
@@ -0,0 +1,8 @@
|
||||
BEGIN:VALARM
|
||||
TRIGGER;RELATED=END:-P2D
|
||||
ACTION:EMAIL
|
||||
ATTENDEE:mailto:john_doe@example.com
|
||||
SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
|
||||
DESCRIPTION:A draft agenda needs to be sent out to the attendees to the weekly managers meeting (MGR-LIST). Attached is a pointer the document template for the agenda file.
|
||||
ATTACH;FMTTYPE=application/msword:http://example.com/templates/agenda.doc
|
||||
END:VALARM
|
||||
@@ -0,0 +1,8 @@
|
||||
BEGIN:VALARM
|
||||
TRIGGER;RELATED=START:-P2D
|
||||
ACTION:EMAIL
|
||||
ATTENDEE:mailto:john_doe@example.com
|
||||
SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING ***
|
||||
DESCRIPTION:A draft agenda needs to be sent out to the attendees to the weekly managers meeting (MGR-LIST). Attached is a pointer the document template for the agenda file.
|
||||
ATTACH;FMTTYPE=application/msword:http://example.com/templates/agenda.doc
|
||||
END:VALARM
|
||||
@@ -0,0 +1 @@
|
||||
"""Test the getters/setters of components."""
|
||||
@@ -0,0 +1,54 @@
|
||||
"""Test the properties of the alarm."""
|
||||
|
||||
import pytest
|
||||
|
||||
from icalendar.cal import Alarm
|
||||
from icalendar.error import InvalidCalendar
|
||||
|
||||
|
||||
def test_repeat_absent():
|
||||
"""Test the absence of REPEAT."""
|
||||
assert Alarm().REPEAT == 0
|
||||
|
||||
|
||||
def test_repeat_number():
|
||||
"""Test the absence of REPEAT."""
|
||||
assert Alarm({"REPEAT": 10}).REPEAT == 10
|
||||
|
||||
|
||||
def test_set_REPEAT():
|
||||
"""Check setting the value."""
|
||||
a = Alarm()
|
||||
a.REPEAT = 10
|
||||
assert a.REPEAT == 10
|
||||
|
||||
|
||||
def test_set_REPEAT_twice():
|
||||
"""Check setting the value."""
|
||||
a = Alarm()
|
||||
a.REPEAT = 10
|
||||
a.REPEAT = 20
|
||||
assert a.REPEAT == 20
|
||||
|
||||
|
||||
def test_add_REPEAT():
|
||||
"""Check setting the value."""
|
||||
a = Alarm()
|
||||
a.add("REPEAT", 10)
|
||||
assert a.REPEAT == 10
|
||||
|
||||
|
||||
def test_invalid_repeat_value():
|
||||
"""Check setting the value."""
|
||||
a = Alarm()
|
||||
with pytest.raises(ValueError):
|
||||
a.REPEAT = "asd"
|
||||
a["REPEAT"] = "asd"
|
||||
with pytest.raises(InvalidCalendar):
|
||||
a.REPEAT # noqa: B018
|
||||
|
||||
|
||||
def test_alarm_to_string():
|
||||
a = Alarm()
|
||||
a.REPEAT = 11
|
||||
assert a.to_ical() == b"BEGIN:VALARM\r\nREPEAT:11\r\nEND:VALARM\r\n"
|
||||
@@ -0,0 +1,92 @@
|
||||
"""Test common properties of components."""
|
||||
|
||||
from datetime import date, datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
from icalendar import Event, FreeBusy, Journal, Todo, vDDDTypes
|
||||
from icalendar.cal import Component
|
||||
from icalendar.error import InvalidCalendar
|
||||
|
||||
|
||||
@pytest.fixture(params=[Event, Todo, Journal, FreeBusy])
|
||||
def dtstamp_comp(request):
|
||||
"""a component to test"""
|
||||
return request.param()
|
||||
|
||||
|
||||
def test_no_dtstamp(dtstamp_comp):
|
||||
"""We have None as a value."""
|
||||
assert dtstamp_comp.DTSTAMP is None
|
||||
|
||||
|
||||
def set_dtstamp_attribute(component: Component, value: date):
|
||||
"""Use the setter."""
|
||||
component.DTSTAMP = value
|
||||
|
||||
|
||||
def set_dtstamp_item(component: Component, value: date):
|
||||
"""Use setitem."""
|
||||
component["DTSTAMP"] = vDDDTypes(value)
|
||||
|
||||
|
||||
def set_dtstamp_add(component: Component, value: date):
|
||||
"""Use add."""
|
||||
component.add("DTSTAMP", value)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("value", "timezone", "expected"),
|
||||
[
|
||||
(datetime(2024, 10, 11, 23, 1), None, datetime(2024, 10, 11, 23, 1)),
|
||||
(datetime(2024, 10, 11, 23, 1), "Europe/Berlin", datetime(2024, 10, 11, 21, 1)),
|
||||
(datetime(2024, 10, 11, 22, 1), "UTC", datetime(2024, 10, 11, 22, 1)),
|
||||
(date(2024, 10, 10), None, datetime(2024, 10, 10)),
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
"set_dtstamp", [set_dtstamp_add, set_dtstamp_attribute, set_dtstamp_item]
|
||||
)
|
||||
def test_set_value_and_get_it(
|
||||
dtstamp_comp, value, timezone, expected, tzp, set_dtstamp
|
||||
):
|
||||
"""Set and get the DTSTAMP value."""
|
||||
dtstamp = value if timezone is None else tzp.localize(value, timezone)
|
||||
set_dtstamp(dtstamp_comp, dtstamp)
|
||||
in_utc = tzp.localize_utc(expected)
|
||||
get_value = dtstamp_comp.get("DTSTAMP").dt
|
||||
assert in_utc == get_value or set_dtstamp != set_dtstamp_attribute
|
||||
assert in_utc == dtstamp_comp.DTSTAMP
|
||||
|
||||
|
||||
@pytest.mark.parametrize("invalid_value", [None, timedelta()])
|
||||
def test_set_invalid_value(invalid_value, dtstamp_comp):
|
||||
"""Check handling of invalid values."""
|
||||
with pytest.raises(TypeError) as e:
|
||||
dtstamp_comp.DTSTAMP = invalid_value
|
||||
assert e.value.args[0] == f"DTSTAMP takes a datetime in UTC, not {invalid_value}"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("invalid_value", [None, vDDDTypes(timedelta())])
|
||||
def test_get_invalid_value(invalid_value, dtstamp_comp):
|
||||
"""Check handling of invalid values."""
|
||||
dtstamp_comp["DTSTAMP"] = invalid_value
|
||||
with pytest.raises(InvalidCalendar) as e:
|
||||
dtstamp_comp.DTSTAMP # noqa: B018
|
||||
assert (
|
||||
e.value.args[0]
|
||||
== f"DTSTAMP must be a datetime in UTC, not {getattr(invalid_value, 'dt', invalid_value)}"
|
||||
)
|
||||
|
||||
|
||||
def test_set_twice(dtstamp_comp, tzp):
|
||||
"""Set the value twice."""
|
||||
dtstamp_comp.DTSTAMP = date(2014, 1, 1)
|
||||
dtstamp_comp.DTSTAMP = date(2014, 1, 2)
|
||||
assert tzp.localize_utc(datetime(2014, 1, 2)) == dtstamp_comp.DTSTAMP
|
||||
|
||||
|
||||
def test_last_modified(dtstamp_comp, tzp):
|
||||
"""Check we can set LAST_MODIFIED in the same way as DTSTAMP"""
|
||||
dtstamp_comp.LAST_MODIFIED = date(2014, 1, 2)
|
||||
assert tzp.localize_utc(datetime(2014, 1, 2)) == dtstamp_comp.LAST_MODIFIED
|
||||
@@ -0,0 +1,62 @@
|
||||
"""This tests the exdate property.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date, datetime
|
||||
from pprint import pprint
|
||||
from typing import Union
|
||||
|
||||
import pytest
|
||||
|
||||
from icalendar import (
|
||||
Calendar,
|
||||
Event,
|
||||
Journal,
|
||||
TimezoneDaylight,
|
||||
TimezoneStandard,
|
||||
Todo,
|
||||
)
|
||||
|
||||
C_EXDATE = Union[Event, Todo, Journal, TimezoneDaylight, TimezoneStandard]
|
||||
|
||||
@pytest.fixture(params = [Event, Todo, Journal, TimezoneDaylight, TimezoneStandard])
|
||||
def c_exdate(request) -> C_EXDATE:
|
||||
"""Return a component that uses exdate."""
|
||||
return request.param()
|
||||
|
||||
|
||||
|
||||
@pytest.fixture(
|
||||
params=[
|
||||
lambda _tzp: date(2019, 10, 11),
|
||||
lambda _tzp: datetime(2000, 1, 13, 12, 1),
|
||||
lambda tzp: tzp.localize_utc(datetime(2031, 12, 1, 23, 59)),
|
||||
lambda tzp: tzp.localize(datetime(1984, 1, 13, 13, 1), "Europe/Athens"),
|
||||
]
|
||||
)
|
||||
def exdate(request, tzp):
|
||||
"""Possible values for an exdate."""
|
||||
return request.param(tzp)
|
||||
|
||||
def test_no_exdates_by_default(c_exdate):
|
||||
"""We expect no exdate by default."""
|
||||
assert c_exdate.exdates == []
|
||||
|
||||
def test_set_and_retrieve_exdate(exdate, c_exdate):
|
||||
"""Set the attribute and get the value."""
|
||||
c_exdate.add("exdate", [exdate])
|
||||
result = [exdate]
|
||||
assert c_exdate.exdates == result
|
||||
|
||||
def test_set_and_retrieve_exdates_in_list(exdate, c_exdate):
|
||||
"""Set the attribute and get the value."""
|
||||
c_exdate.add("exdate", [exdate, exdate])
|
||||
result = [exdate, exdate]
|
||||
assert c_exdate.exdates == result
|
||||
|
||||
def test_set_and_retrieve_exdates_twice(exdate, c_exdate):
|
||||
"""Set the attribute and get the value."""
|
||||
c_exdate.add("exdate", [exdate])
|
||||
c_exdate.add("exdate", [exdate])
|
||||
result = [exdate, exdate]
|
||||
assert c_exdate.exdates == result
|
||||
@@ -0,0 +1,111 @@
|
||||
"""This tests the RDATE property.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date, datetime
|
||||
from pprint import pprint
|
||||
from typing import Union
|
||||
|
||||
import pytest
|
||||
|
||||
from icalendar import (
|
||||
Calendar,
|
||||
Event,
|
||||
Journal,
|
||||
TimezoneDaylight,
|
||||
TimezoneStandard,
|
||||
Todo,
|
||||
)
|
||||
|
||||
C_RDATE = Union[Event, Todo, Journal, TimezoneDaylight, TimezoneStandard]
|
||||
|
||||
@pytest.fixture(params = [Event, Todo, Journal, TimezoneDaylight, TimezoneStandard])
|
||||
def c_rdate(request) -> C_RDATE:
|
||||
"""Return a component that uses RDATE."""
|
||||
return request.param()
|
||||
|
||||
|
||||
@pytest.fixture(
|
||||
params=[
|
||||
lambda _tzp: date(2019, 10, 11),
|
||||
lambda _tzp: datetime(2000, 1, 13, 12, 1),
|
||||
lambda tzp: tzp.localize_utc(datetime(2031, 12, 1, 23, 59)),
|
||||
lambda tzp: tzp.localize(datetime(1984, 1, 13, 13, 1), "Europe/Athens"),
|
||||
lambda _tzp: ((datetime(2000, 1, 13, 12, 1), datetime(2000, 1, 13, 12, 2))),
|
||||
lambda tzp: ((tzp.localize_utc(datetime(2001, 1, 13, 12, 1)), tzp.localize_utc(datetime(2001, 1, 13, 12, 2)))),
|
||||
]
|
||||
)
|
||||
def rdate(request, tzp):
|
||||
"""Possible values for an rdate."""
|
||||
return request.param(tzp)
|
||||
|
||||
def test_no_rdates_by_default(c_rdate):
|
||||
"""We expect no rdate by default."""
|
||||
assert c_rdate.rdates == []
|
||||
|
||||
|
||||
def test_set_and_retrieve_rdate(rdate, c_rdate):
|
||||
"""Set the attribute and get the value."""
|
||||
c_rdate.add("RDATE", [rdate])
|
||||
result = [rdate if isinstance(rdate, tuple) else (rdate, None)]
|
||||
assert c_rdate.rdates == result
|
||||
|
||||
|
||||
def test_get_example_0(calendars):
|
||||
"""Test an example rdate."""
|
||||
cal : Calendar = calendars.rfc_5545_RDATE_example
|
||||
event = cal.events[0]
|
||||
assert event.rdates == [(datetime(1997, 7, 14, 12, 30), None)]
|
||||
|
||||
|
||||
def test_get_example_1(calendars, tzp):
|
||||
"""Test an example rdate."""
|
||||
cal : Calendar = calendars.rfc_5545_RDATE_example
|
||||
event = cal.events[1]
|
||||
assert event.rdates == [(tzp.localize_utc(datetime(1997, 7, 14, 12, 30)), None)]
|
||||
|
||||
def test_get_example_2(calendars, tzp):
|
||||
"""Test an example rdate."""
|
||||
cal : Calendar = calendars.rfc_5545_RDATE_example
|
||||
event = cal.events[2]
|
||||
assert event.rdates == [(tzp.localize(datetime(1997, 7, 14, 8, 30), "America/New_York"),None)]
|
||||
|
||||
def test_get_example_3(calendars, tzp):
|
||||
"""Test an example rdate."""
|
||||
cal : Calendar = calendars.rfc_5545_RDATE_example
|
||||
event = cal.events[3]
|
||||
rdates_3 = [
|
||||
(tzp.localize_utc(datetime(1996, 4, 3, 2)), tzp.localize_utc(datetime(1996, 4, 3, 4))),
|
||||
(tzp.localize_utc(datetime(1996, 4, 4, 1)), tzp.localize_utc(datetime(1996, 4, 4, 4))),
|
||||
]
|
||||
pprint(event.rdates)
|
||||
pprint(rdates_3)
|
||||
assert event.rdates == rdates_3
|
||||
|
||||
def d(i:int) -> tuple[date, None]:
|
||||
s = str(i)
|
||||
return (date(int(s[:4]), int(s[4:6].lstrip("0")), int(s[6:].lstrip("0"))), None)
|
||||
|
||||
|
||||
RDATES_4 = list(map(d, (
|
||||
19970101,
|
||||
19970120,
|
||||
19970217,
|
||||
19970421,
|
||||
19970526,
|
||||
19970704,
|
||||
19970901,
|
||||
19971014,
|
||||
19971128,
|
||||
19971129,
|
||||
19971225,
|
||||
)))
|
||||
|
||||
|
||||
def test_get_example_4(calendars, tzp):
|
||||
"""Test an example rdate."""
|
||||
cal : Calendar = calendars.rfc_5545_RDATE_example
|
||||
event = cal.events[4]
|
||||
pprint(event.rdates)
|
||||
pprint(RDATES_4)
|
||||
assert event.rdates == RDATES_4
|
||||
@@ -0,0 +1,45 @@
|
||||
"""Test getting the rrules from a component."""
|
||||
|
||||
import pytest
|
||||
|
||||
from icalendar import (
|
||||
Component,
|
||||
Event,
|
||||
Journal,
|
||||
TimezoneDaylight,
|
||||
TimezoneStandard,
|
||||
Todo,
|
||||
vRecur,
|
||||
)
|
||||
|
||||
RRULE_0 = vRecur.from_ical("FREQ=DAILY;COUNT=10")
|
||||
RRULE_1 = vRecur.from_ical("FREQ=DAILY;UNTIL=19971224T000000Z")
|
||||
RRULE_2 = vRecur.from_ical("FREQ=DAILY;INTERVAL=2")
|
||||
RRULE_3 = vRecur.from_ical("FREQ=DAILY;INTERVAL=10;COUNT=5")
|
||||
RRULE_4 = vRecur.from_ical("FREQ=YEARLY;UNTIL=20000131T140000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA")
|
||||
|
||||
@pytest.fixture(params=[RRULE_0, RRULE_1, RRULE_2, RRULE_3, RRULE_4])
|
||||
def rrule(request) -> str:
|
||||
"""An rrule."""
|
||||
return request.param
|
||||
|
||||
@pytest.fixture(params = [Event, Todo, Journal, TimezoneDaylight, TimezoneStandard])
|
||||
def c_rrule(request) -> Component:
|
||||
"""Return a component that uses RDATE."""
|
||||
return request.param()
|
||||
|
||||
def test_no_rrules_by_default(c_rrule):
|
||||
"""We expect no rdate by default."""
|
||||
assert c_rrule.rrules == []
|
||||
|
||||
|
||||
def test_one_rrule(c_rrule, rrule):
|
||||
"""Add one rrule."""
|
||||
c_rrule.add("rrule", rrule)
|
||||
assert c_rrule.rrules == [rrule]
|
||||
|
||||
def test_two_rrules(c_rrule, rrule):
|
||||
"""Add two rrules."""
|
||||
c_rrule.add("rrule", rrule)
|
||||
c_rrule.add("rrule", RRULE_3)
|
||||
assert c_rrule.rrules == [rrule, RRULE_3]
|
||||
@@ -0,0 +1,235 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Offline Calendar//iCal Import/Export 2.8.1//EN
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
TZURL:http://tzurl.org/zoneinfo/Europe/London
|
||||
X-LIC-LOCATION:Europe/London
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19961027T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-000115
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:18471201T000115
|
||||
RDATE:18471201T000115
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
RDATE:19170408T020000
|
||||
RDATE:19180324T020000
|
||||
RDATE:19190330T020000
|
||||
RDATE:19200328T020000
|
||||
RDATE:19210403T020000
|
||||
RDATE:19220326T020000
|
||||
RDATE:19230422T020000
|
||||
RDATE:19240413T020000
|
||||
RDATE:19250419T020000
|
||||
RDATE:19260418T020000
|
||||
RDATE:19270410T020000
|
||||
RDATE:19280422T020000
|
||||
RDATE:19290421T020000
|
||||
RDATE:19300413T020000
|
||||
RDATE:19310419T020000
|
||||
RDATE:19320417T020000
|
||||
RDATE:19330409T020000
|
||||
RDATE:19340422T020000
|
||||
RDATE:19350414T020000
|
||||
RDATE:19360419T020000
|
||||
RDATE:19370418T020000
|
||||
RDATE:19380410T020000
|
||||
RDATE:19390416T020000
|
||||
RDATE:19400225T020000
|
||||
RDATE:19460414T020000
|
||||
RDATE:19470316T020000
|
||||
RDATE:19480314T020000
|
||||
RDATE:19490403T020000
|
||||
RDATE:19500416T020000
|
||||
RDATE:19510415T020000
|
||||
RDATE:19520420T020000
|
||||
RDATE:19530419T020000
|
||||
RDATE:19540411T020000
|
||||
RDATE:19550417T020000
|
||||
RDATE:19560422T020000
|
||||
RDATE:19570414T020000
|
||||
RDATE:19580420T020000
|
||||
RDATE:19590419T020000
|
||||
RDATE:19600410T020000
|
||||
RDATE:19610326T020000
|
||||
RDATE:19620325T020000
|
||||
RDATE:19630331T020000
|
||||
RDATE:19640322T020000
|
||||
RDATE:19650321T020000
|
||||
RDATE:19660320T020000
|
||||
RDATE:19670319T020000
|
||||
RDATE:19680218T020000
|
||||
RDATE:19720319T020000
|
||||
RDATE:19730318T020000
|
||||
RDATE:19740317T020000
|
||||
RDATE:19750316T020000
|
||||
RDATE:19760321T020000
|
||||
RDATE:19770320T020000
|
||||
RDATE:19780319T020000
|
||||
RDATE:19790318T020000
|
||||
RDATE:19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
RDATE:19170917T030000
|
||||
RDATE:19180930T030000
|
||||
RDATE:19190929T030000
|
||||
RDATE:19201025T030000
|
||||
RDATE:19211003T030000
|
||||
RDATE:19221008T030000
|
||||
RDATE:19230916T030000
|
||||
RDATE:19240921T030000
|
||||
RDATE:19251004T030000
|
||||
RDATE:19261003T030000
|
||||
RDATE:19271002T030000
|
||||
RDATE:19281007T030000
|
||||
RDATE:19291006T030000
|
||||
RDATE:19301005T030000
|
||||
RDATE:19311004T030000
|
||||
RDATE:19321002T030000
|
||||
RDATE:19331008T030000
|
||||
RDATE:19341007T030000
|
||||
RDATE:19351006T030000
|
||||
RDATE:19361004T030000
|
||||
RDATE:19371003T030000
|
||||
RDATE:19381002T030000
|
||||
RDATE:19391119T030000
|
||||
RDATE:19451007T030000
|
||||
RDATE:19461006T030000
|
||||
RDATE:19471102T030000
|
||||
RDATE:19481031T030000
|
||||
RDATE:19491030T030000
|
||||
RDATE:19501022T030000
|
||||
RDATE:19511021T030000
|
||||
RDATE:19521026T030000
|
||||
RDATE:19531004T030000
|
||||
RDATE:19541003T030000
|
||||
RDATE:19551002T030000
|
||||
RDATE:19561007T030000
|
||||
RDATE:19571006T030000
|
||||
RDATE:19581005T030000
|
||||
RDATE:19591004T030000
|
||||
RDATE:19601002T030000
|
||||
RDATE:19611029T030000
|
||||
RDATE:19621028T030000
|
||||
RDATE:19631027T030000
|
||||
RDATE:19641025T030000
|
||||
RDATE:19651024T030000
|
||||
RDATE:19661023T030000
|
||||
RDATE:19671029T030000
|
||||
RDATE:19711031T030000
|
||||
RDATE:19721029T030000
|
||||
RDATE:19731028T030000
|
||||
RDATE:19741027T030000
|
||||
RDATE:19751026T030000
|
||||
RDATE:19761024T030000
|
||||
RDATE:19771023T030000
|
||||
RDATE:19781029T030000
|
||||
RDATE:19791028T030000
|
||||
RDATE:19801026T030000
|
||||
RDATE:19811025T020000
|
||||
RDATE:19821024T020000
|
||||
RDATE:19831023T020000
|
||||
RDATE:19841028T020000
|
||||
RDATE:19851027T020000
|
||||
RDATE:19861026T020000
|
||||
RDATE:19871025T020000
|
||||
RDATE:19881023T020000
|
||||
RDATE:19891029T020000
|
||||
RDATE:19901028T020000
|
||||
RDATE:19911027T020000
|
||||
RDATE:19921025T020000
|
||||
RDATE:19931024T020000
|
||||
RDATE:19941023T020000
|
||||
RDATE:19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:BDST
|
||||
DTSTART:19410504T010000
|
||||
RDATE:19410504T010000
|
||||
RDATE:19420405T010000
|
||||
RDATE:19430404T010000
|
||||
RDATE:19440402T010000
|
||||
RDATE:19450402T010000
|
||||
RDATE:19470413T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
RDATE:19420809T030000
|
||||
RDATE:19430815T030000
|
||||
RDATE:19440917T030000
|
||||
RDATE:19450715T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19681026T230000
|
||||
RDATE:19681026T230000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19960101T000000
|
||||
RDATE:19960101T000000
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20241005T112701Z
|
||||
UID:17281276213728ad54d03afa44d1ca60b8c52afaece9e@sufficientlysecure.org
|
||||
SUMMARY:event with alarms android
|
||||
STATUS:CONFIRMED
|
||||
DTSTART;TZID=Europe/London:20241005T130000
|
||||
DTEND:20241005T130000Z
|
||||
LAST-MODIFIED:20241005T112701Z
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT30M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarms android
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT25M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarms android
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT5M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarms android
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,235 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Offline Calendar//iCal Import/Export 2.8.1//EN
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
TZURL:http://tzurl.org/zoneinfo/Europe/London
|
||||
X-LIC-LOCATION:Europe/London
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19961027T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-000115
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:18471201T000115
|
||||
RDATE:18471201T000115
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
RDATE:19170408T020000
|
||||
RDATE:19180324T020000
|
||||
RDATE:19190330T020000
|
||||
RDATE:19200328T020000
|
||||
RDATE:19210403T020000
|
||||
RDATE:19220326T020000
|
||||
RDATE:19230422T020000
|
||||
RDATE:19240413T020000
|
||||
RDATE:19250419T020000
|
||||
RDATE:19260418T020000
|
||||
RDATE:19270410T020000
|
||||
RDATE:19280422T020000
|
||||
RDATE:19290421T020000
|
||||
RDATE:19300413T020000
|
||||
RDATE:19310419T020000
|
||||
RDATE:19320417T020000
|
||||
RDATE:19330409T020000
|
||||
RDATE:19340422T020000
|
||||
RDATE:19350414T020000
|
||||
RDATE:19360419T020000
|
||||
RDATE:19370418T020000
|
||||
RDATE:19380410T020000
|
||||
RDATE:19390416T020000
|
||||
RDATE:19400225T020000
|
||||
RDATE:19460414T020000
|
||||
RDATE:19470316T020000
|
||||
RDATE:19480314T020000
|
||||
RDATE:19490403T020000
|
||||
RDATE:19500416T020000
|
||||
RDATE:19510415T020000
|
||||
RDATE:19520420T020000
|
||||
RDATE:19530419T020000
|
||||
RDATE:19540411T020000
|
||||
RDATE:19550417T020000
|
||||
RDATE:19560422T020000
|
||||
RDATE:19570414T020000
|
||||
RDATE:19580420T020000
|
||||
RDATE:19590419T020000
|
||||
RDATE:19600410T020000
|
||||
RDATE:19610326T020000
|
||||
RDATE:19620325T020000
|
||||
RDATE:19630331T020000
|
||||
RDATE:19640322T020000
|
||||
RDATE:19650321T020000
|
||||
RDATE:19660320T020000
|
||||
RDATE:19670319T020000
|
||||
RDATE:19680218T020000
|
||||
RDATE:19720319T020000
|
||||
RDATE:19730318T020000
|
||||
RDATE:19740317T020000
|
||||
RDATE:19750316T020000
|
||||
RDATE:19760321T020000
|
||||
RDATE:19770320T020000
|
||||
RDATE:19780319T020000
|
||||
RDATE:19790318T020000
|
||||
RDATE:19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
RDATE:19170917T030000
|
||||
RDATE:19180930T030000
|
||||
RDATE:19190929T030000
|
||||
RDATE:19201025T030000
|
||||
RDATE:19211003T030000
|
||||
RDATE:19221008T030000
|
||||
RDATE:19230916T030000
|
||||
RDATE:19240921T030000
|
||||
RDATE:19251004T030000
|
||||
RDATE:19261003T030000
|
||||
RDATE:19271002T030000
|
||||
RDATE:19281007T030000
|
||||
RDATE:19291006T030000
|
||||
RDATE:19301005T030000
|
||||
RDATE:19311004T030000
|
||||
RDATE:19321002T030000
|
||||
RDATE:19331008T030000
|
||||
RDATE:19341007T030000
|
||||
RDATE:19351006T030000
|
||||
RDATE:19361004T030000
|
||||
RDATE:19371003T030000
|
||||
RDATE:19381002T030000
|
||||
RDATE:19391119T030000
|
||||
RDATE:19451007T030000
|
||||
RDATE:19461006T030000
|
||||
RDATE:19471102T030000
|
||||
RDATE:19481031T030000
|
||||
RDATE:19491030T030000
|
||||
RDATE:19501022T030000
|
||||
RDATE:19511021T030000
|
||||
RDATE:19521026T030000
|
||||
RDATE:19531004T030000
|
||||
RDATE:19541003T030000
|
||||
RDATE:19551002T030000
|
||||
RDATE:19561007T030000
|
||||
RDATE:19571006T030000
|
||||
RDATE:19581005T030000
|
||||
RDATE:19591004T030000
|
||||
RDATE:19601002T030000
|
||||
RDATE:19611029T030000
|
||||
RDATE:19621028T030000
|
||||
RDATE:19631027T030000
|
||||
RDATE:19641025T030000
|
||||
RDATE:19651024T030000
|
||||
RDATE:19661023T030000
|
||||
RDATE:19671029T030000
|
||||
RDATE:19711031T030000
|
||||
RDATE:19721029T030000
|
||||
RDATE:19731028T030000
|
||||
RDATE:19741027T030000
|
||||
RDATE:19751026T030000
|
||||
RDATE:19761024T030000
|
||||
RDATE:19771023T030000
|
||||
RDATE:19781029T030000
|
||||
RDATE:19791028T030000
|
||||
RDATE:19801026T030000
|
||||
RDATE:19811025T020000
|
||||
RDATE:19821024T020000
|
||||
RDATE:19831023T020000
|
||||
RDATE:19841028T020000
|
||||
RDATE:19851027T020000
|
||||
RDATE:19861026T020000
|
||||
RDATE:19871025T020000
|
||||
RDATE:19881023T020000
|
||||
RDATE:19891029T020000
|
||||
RDATE:19901028T020000
|
||||
RDATE:19911027T020000
|
||||
RDATE:19921025T020000
|
||||
RDATE:19931024T020000
|
||||
RDATE:19941023T020000
|
||||
RDATE:19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:BDST
|
||||
DTSTART:19410504T010000
|
||||
RDATE:19410504T010000
|
||||
RDATE:19420405T010000
|
||||
RDATE:19430404T010000
|
||||
RDATE:19440402T010000
|
||||
RDATE:19450402T010000
|
||||
RDATE:19470413T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
RDATE:19420809T030000
|
||||
RDATE:19430815T030000
|
||||
RDATE:19440917T030000
|
||||
RDATE:19450715T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19681026T230000
|
||||
RDATE:19681026T230000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19960101T000000
|
||||
RDATE:19960101T000000
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20241005T113036Z
|
||||
UID:17281276213728ad54d03afa44d1ca60b8c52afaece9e@sufficientlysecure.org
|
||||
SUMMARY:event with alarms android
|
||||
STATUS:CONFIRMED
|
||||
DTSTART;TZID=Europe/London:20241005T130000
|
||||
DTEND:20241005T130000Z
|
||||
LAST-MODIFIED:20241005T112701Z
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT30M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarms android
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT25M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarms android
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT5M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarms android
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,225 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Offline Calendar//iCal Import/Export 2.8.1//EN
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
CALSCALE:GREGORIAN
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
TZURL:http://tzurl.org/zoneinfo/Europe/London
|
||||
X-LIC-LOCATION:Europe/London
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19961027T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:-000115
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:18471201T000115
|
||||
RDATE:18471201T000115
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
RDATE:19170408T020000
|
||||
RDATE:19180324T020000
|
||||
RDATE:19190330T020000
|
||||
RDATE:19200328T020000
|
||||
RDATE:19210403T020000
|
||||
RDATE:19220326T020000
|
||||
RDATE:19230422T020000
|
||||
RDATE:19240413T020000
|
||||
RDATE:19250419T020000
|
||||
RDATE:19260418T020000
|
||||
RDATE:19270410T020000
|
||||
RDATE:19280422T020000
|
||||
RDATE:19290421T020000
|
||||
RDATE:19300413T020000
|
||||
RDATE:19310419T020000
|
||||
RDATE:19320417T020000
|
||||
RDATE:19330409T020000
|
||||
RDATE:19340422T020000
|
||||
RDATE:19350414T020000
|
||||
RDATE:19360419T020000
|
||||
RDATE:19370418T020000
|
||||
RDATE:19380410T020000
|
||||
RDATE:19390416T020000
|
||||
RDATE:19400225T020000
|
||||
RDATE:19460414T020000
|
||||
RDATE:19470316T020000
|
||||
RDATE:19480314T020000
|
||||
RDATE:19490403T020000
|
||||
RDATE:19500416T020000
|
||||
RDATE:19510415T020000
|
||||
RDATE:19520420T020000
|
||||
RDATE:19530419T020000
|
||||
RDATE:19540411T020000
|
||||
RDATE:19550417T020000
|
||||
RDATE:19560422T020000
|
||||
RDATE:19570414T020000
|
||||
RDATE:19580420T020000
|
||||
RDATE:19590419T020000
|
||||
RDATE:19600410T020000
|
||||
RDATE:19610326T020000
|
||||
RDATE:19620325T020000
|
||||
RDATE:19630331T020000
|
||||
RDATE:19640322T020000
|
||||
RDATE:19650321T020000
|
||||
RDATE:19660320T020000
|
||||
RDATE:19670319T020000
|
||||
RDATE:19680218T020000
|
||||
RDATE:19720319T020000
|
||||
RDATE:19730318T020000
|
||||
RDATE:19740317T020000
|
||||
RDATE:19750316T020000
|
||||
RDATE:19760321T020000
|
||||
RDATE:19770320T020000
|
||||
RDATE:19780319T020000
|
||||
RDATE:19790318T020000
|
||||
RDATE:19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
RDATE:19170917T030000
|
||||
RDATE:19180930T030000
|
||||
RDATE:19190929T030000
|
||||
RDATE:19201025T030000
|
||||
RDATE:19211003T030000
|
||||
RDATE:19221008T030000
|
||||
RDATE:19230916T030000
|
||||
RDATE:19240921T030000
|
||||
RDATE:19251004T030000
|
||||
RDATE:19261003T030000
|
||||
RDATE:19271002T030000
|
||||
RDATE:19281007T030000
|
||||
RDATE:19291006T030000
|
||||
RDATE:19301005T030000
|
||||
RDATE:19311004T030000
|
||||
RDATE:19321002T030000
|
||||
RDATE:19331008T030000
|
||||
RDATE:19341007T030000
|
||||
RDATE:19351006T030000
|
||||
RDATE:19361004T030000
|
||||
RDATE:19371003T030000
|
||||
RDATE:19381002T030000
|
||||
RDATE:19391119T030000
|
||||
RDATE:19451007T030000
|
||||
RDATE:19461006T030000
|
||||
RDATE:19471102T030000
|
||||
RDATE:19481031T030000
|
||||
RDATE:19491030T030000
|
||||
RDATE:19501022T030000
|
||||
RDATE:19511021T030000
|
||||
RDATE:19521026T030000
|
||||
RDATE:19531004T030000
|
||||
RDATE:19541003T030000
|
||||
RDATE:19551002T030000
|
||||
RDATE:19561007T030000
|
||||
RDATE:19571006T030000
|
||||
RDATE:19581005T030000
|
||||
RDATE:19591004T030000
|
||||
RDATE:19601002T030000
|
||||
RDATE:19611029T030000
|
||||
RDATE:19621028T030000
|
||||
RDATE:19631027T030000
|
||||
RDATE:19641025T030000
|
||||
RDATE:19651024T030000
|
||||
RDATE:19661023T030000
|
||||
RDATE:19671029T030000
|
||||
RDATE:19711031T030000
|
||||
RDATE:19721029T030000
|
||||
RDATE:19731028T030000
|
||||
RDATE:19741027T030000
|
||||
RDATE:19751026T030000
|
||||
RDATE:19761024T030000
|
||||
RDATE:19771023T030000
|
||||
RDATE:19781029T030000
|
||||
RDATE:19791028T030000
|
||||
RDATE:19801026T030000
|
||||
RDATE:19811025T020000
|
||||
RDATE:19821024T020000
|
||||
RDATE:19831023T020000
|
||||
RDATE:19841028T020000
|
||||
RDATE:19851027T020000
|
||||
RDATE:19861026T020000
|
||||
RDATE:19871025T020000
|
||||
RDATE:19881023T020000
|
||||
RDATE:19891029T020000
|
||||
RDATE:19901028T020000
|
||||
RDATE:19911027T020000
|
||||
RDATE:19921025T020000
|
||||
RDATE:19931024T020000
|
||||
RDATE:19941023T020000
|
||||
RDATE:19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:BDST
|
||||
DTSTART:19410504T010000
|
||||
RDATE:19410504T010000
|
||||
RDATE:19420405T010000
|
||||
RDATE:19430404T010000
|
||||
RDATE:19440402T010000
|
||||
RDATE:19450402T010000
|
||||
RDATE:19470413T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
RDATE:19420809T030000
|
||||
RDATE:19430815T030000
|
||||
RDATE:19440917T030000
|
||||
RDATE:19450715T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:BST
|
||||
DTSTART:19681026T230000
|
||||
RDATE:19681026T230000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0000
|
||||
TZOFFSETTO:+0000
|
||||
TZNAME:GMT
|
||||
DTSTART:19960101T000000
|
||||
RDATE:19960101T000000
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20241005T130738Z
|
||||
UID:17281336589228ad54d03afa44d1ca60b8c52afaece9e@sufficientlysecure.org
|
||||
SUMMARY:event with alarm acknowledged
|
||||
STATUS:CONFIRMED
|
||||
DTSTART;TZID=Europe/London:20241005T141700
|
||||
DTEND:20241005T141700Z
|
||||
LAST-MODIFIED:20241005T130738Z
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT10M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:event with alarm acknowledged
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,60 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Google Inc//Google Calendar 70.9054//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:Nicco Kunzmann
|
||||
X-WR-TIMEZONE:Europe/London
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
X-LIC-LOCATION:Europe/Berlin
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:GMT+2
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:GMT+1
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20241004T181500Z
|
||||
DTEND:20241004T190000Z
|
||||
DTSTAMP:20241004T180026Z
|
||||
UID:79fs7pkqvht9m5igs0vjv1sfra@google.com
|
||||
CREATED:20241004T175920Z
|
||||
LAST-MODIFIED:20241004T175928Z
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:event with alarms
|
||||
TRANSP:OPAQUE
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-P0DT0H10M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-P0DT0H14M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:EMAIL
|
||||
ATTENDEE:mailto:niccokunzmann@googlemail.com
|
||||
TRIGGER:-P0DT0H15M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
SUMMARY:Alarm notification
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-P0DT0H15M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,60 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Google Inc//Google Calendar 70.9054//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:Nicco Kunzmann
|
||||
X-WR-TIMEZONE:Europe/London
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Berlin
|
||||
X-LIC-LOCATION:Europe/Berlin
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:GMT+2
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:GMT+1
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20241004T181500Z
|
||||
DTEND:20241004T190000Z
|
||||
DTSTAMP:20241004T175945Z
|
||||
UID:79fs7pkqvht9m5igs0vjv1sfra@google.com
|
||||
CREATED:20241004T175920Z
|
||||
LAST-MODIFIED:20241004T175928Z
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:event with alarms
|
||||
TRANSP:OPAQUE
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-P0DT0H10M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-P0DT0H14M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:EMAIL
|
||||
ATTENDEE:mailto:niccokunzmann@googlemail.com
|
||||
TRIGGER:-P0DT0H15M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
SUMMARY:Alarm notification
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-P0DT0H15M0S
|
||||
DESCRIPTION:This is an event reminder
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,624 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T173412Z
|
||||
LAST-MODIFIED:20241023T173453Z
|
||||
DTSTAMP:20241023T173453Z
|
||||
UID:731b9b91-cf72-499b-bbc9-c53c28e21fc7
|
||||
SUMMARY:event
|
||||
DTSTART;TZID=Europe/London:20241023T190000
|
||||
DTEND;TZID=Europe/London:20241023T200000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:2
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT1M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT24M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,626 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T173412Z
|
||||
LAST-MODIFIED:20241023T173630Z
|
||||
DTSTAMP:20241023T173630Z
|
||||
UID:731b9b91-cf72-499b-bbc9-c53c28e21fc7
|
||||
SUMMARY:event
|
||||
X-MOZ-LASTACK:20241023T173630Z
|
||||
DTSTART;TZID=Europe/London:20241023T190000
|
||||
DTEND;TZID=Europe/London:20241023T200000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:3
|
||||
X-MOZ-SNOOZE-TIME:20241023T174130Z
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT1M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT24M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,625 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T173412Z
|
||||
LAST-MODIFIED:20241023T174207Z
|
||||
DTSTAMP:20241023T174207Z
|
||||
UID:731b9b91-cf72-499b-bbc9-c53c28e21fc7
|
||||
SUMMARY:event
|
||||
X-MOZ-LASTACK:20241023T174207Z
|
||||
DTSTART;TZID=Europe/London:20241023T190000
|
||||
DTEND;TZID=Europe/London:20241023T200000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:4
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT1M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT24M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,626 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T173412Z
|
||||
LAST-MODIFIED:20241023T173630Z
|
||||
DTSTAMP:20241023T173630Z
|
||||
UID:731b9b91-cf72-499b-bbc9-c53c28e21fc7
|
||||
SUMMARY:event
|
||||
X-MOZ-LASTACK:20241023T173630Z
|
||||
DTSTART;TZID=Europe/London:20241023T190000
|
||||
DTEND;TZID=Europe/London:20241023T200000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:3
|
||||
X-MOZ-SNOOZE-TIME:20241023T174130Z
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT1M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT24M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,624 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T173412Z
|
||||
LAST-MODIFIED:20241023T173453Z
|
||||
DTSTAMP:20241023T173453Z
|
||||
UID:731b9b91-cf72-499b-bbc9-c53c28e21fc7
|
||||
SUMMARY:event
|
||||
DTSTART;TZID=Europe/London:20241023T190000
|
||||
DTEND;TZID=Europe/London:20241023T200000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:2
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT1M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT24M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,625 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T131035Z
|
||||
LAST-MODIFIED:20241023T141941Z
|
||||
DTSTAMP:20241023T141941Z
|
||||
UID:b9a23b47-f109-4e7a-908c-75e925b27def
|
||||
SUMMARY:event with alarms
|
||||
X-MOZ-LASTACK:20241023T141941Z
|
||||
DTSTART;TZID=Europe/London:20241023T150000
|
||||
DTEND;TZID=Europe/London:20241023T160000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:6
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT15M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT45M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,624 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T131035Z
|
||||
LAST-MODIFIED:20241023T131141Z
|
||||
DTSTAMP:20241023T131141Z
|
||||
UID:b9a23b47-f109-4e7a-908c-75e925b27def
|
||||
SUMMARY:event with alarms
|
||||
DTSTART;TZID=Europe/London:20241023T150000
|
||||
DTEND;TZID=Europe/London:20241023T160000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:2
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT15M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT45M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,626 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/London
|
||||
X-TZINFO:Europe/London[2024a]
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:-000115
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:18471201T000000
|
||||
RDATE:18471201T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19160521T020000
|
||||
RDATE:19160521T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19161001T030000
|
||||
RDATE:19161001T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19170408T020000
|
||||
RDATE:19170408T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19170917T030000
|
||||
RDATE:19170917T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19180324T020000
|
||||
RDATE:19180324T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19180930T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1MO;UNTIL=19190929T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19190330T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19200328T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19201025T030000
|
||||
RDATE:19201025T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19210403T020000
|
||||
RDATE:19210403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19211003T030000
|
||||
RDATE:19211003T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19220326T020000
|
||||
RDATE:19220326T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19221008T030000
|
||||
RDATE:19221008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19230422T020000
|
||||
RDATE:19230422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19240413T020000
|
||||
RDATE:19240413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19230916T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=3SU;UNTIL=19240921T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19250419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19260418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19270410T020000
|
||||
RDATE:19270410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19280422T020000
|
||||
RDATE:19280422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19290421T020000
|
||||
RDATE:19290421T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19300413T020000
|
||||
RDATE:19300413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19310419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19320417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19251004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19321002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19330409T020000
|
||||
RDATE:19330409T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19331008T030000
|
||||
RDATE:19331008T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19340422T020000
|
||||
RDATE:19340422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19350414T020000
|
||||
RDATE:19350414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19360419T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19370418T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19380410T020000
|
||||
RDATE:19380410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19341007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19381002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19390416T020000
|
||||
RDATE:19390416T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19400225T020000
|
||||
RDATE:19400225T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410504T020000
|
||||
RDATE:19410504T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19410810T030000
|
||||
RDATE:19410810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420405T020000
|
||||
RDATE:19420405T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19420809T030000
|
||||
RDATE:19420809T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430404T020000
|
||||
RDATE:19430404T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19430815T030000
|
||||
RDATE:19430815T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440402T020000
|
||||
RDATE:19440402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19440917T030000
|
||||
RDATE:19440917T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450402T020000
|
||||
RDATE:19450402T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19391119T030000
|
||||
RDATE:19391119T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19450715T030000
|
||||
RDATE:19450715T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19460414T020000
|
||||
RDATE:19460414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470316T020000
|
||||
RDATE:19470316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+020000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470413T020000
|
||||
RDATE:19470413T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19451007T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19461006T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+020000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19470810T030000
|
||||
RDATE:19470810T030000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19471102T030000
|
||||
RDATE:19471102T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19480314T020000
|
||||
RDATE:19480314T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19490403T020000
|
||||
RDATE:19490403T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19481031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19491030T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19501022T030000
|
||||
RDATE:19501022T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19511021T030000
|
||||
RDATE:19511021T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19521026T030000
|
||||
RDATE:19521026T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19500416T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19530419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19540411T020000
|
||||
RDATE:19540411T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19550417T020000
|
||||
RDATE:19550417T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19560422T020000
|
||||
RDATE:19560422T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19570414T020000
|
||||
RDATE:19570414T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19580420T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=3SU;UNTIL=19590419T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19600410T020000
|
||||
RDATE:19600410T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19531004T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU;UNTIL=19601002T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19610326T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19630331T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19640322T020000
|
||||
RDATE:19640322T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19611029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19641025T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19651024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19661023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19650321T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19670319T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19671029T030000
|
||||
RDATE:19671029T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19681027T000000
|
||||
RDATE:19681027T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19680218T020000
|
||||
RDATE:19680218T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19711031T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19751026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19761024T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19771023T030000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19720319T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU;UNTIL=19800316T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19781029T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19801026T030000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19811025T020000
|
||||
RDATE:19811025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19821024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19831023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19841028T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19871025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19881023T020000
|
||||
RDATE:19881023T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19891029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=19921025T020000
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19931024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4SU;UNTIL=19951022T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:Europe/London(DST)
|
||||
DTSTART:19810329T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU;UNTIL=19960331T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:Europe/London(STD)
|
||||
DTSTART:19961027T020000
|
||||
RDATE:19961027T020000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETTO:+010000
|
||||
TZOFFSETFROM:+000000
|
||||
TZNAME:(DST)
|
||||
DTSTART:19970330T010000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETTO:+000000
|
||||
TZOFFSETFROM:+010000
|
||||
TZNAME:(STD)
|
||||
DTSTART:19971026T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
CREATED:20241023T131035Z
|
||||
LAST-MODIFIED:20241023T135202Z
|
||||
DTSTAMP:20241023T135202Z
|
||||
UID:b9a23b47-f109-4e7a-908c-75e925b27def
|
||||
SUMMARY:event with alarms
|
||||
X-MOZ-LASTACK:20241023T135202Z
|
||||
DTSTART;TZID=Europe/London:20241023T150000
|
||||
DTEND;TZID=Europe/London:20241023T160000
|
||||
TRANSP:OPAQUE
|
||||
X-MOZ-GENERATION:4
|
||||
X-MOZ-SNOOZE-TIME:20241023T135702Z
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT15M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
BEGIN:VALARM
|
||||
ACTION:DISPLAY
|
||||
TRIGGER:-PT45M
|
||||
DESCRIPTION:Mozilla Standardbeschreibung
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,61 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:custom_America/New_York
|
||||
LAST-MODIFIED:20050809T050000Z
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19670430T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19671029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0500
|
||||
TZNAME:EST
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19740106T020000
|
||||
RDATE:19750223T020000
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19760425T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T070000Z
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19870405T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T070000Z
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:20070311T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:20071104T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0500
|
||||
TZNAME:EST
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:noend123
|
||||
DTSTART;TZID=custom_America/New_York;VALUE=DATE-TIME:20140829T080000
|
||||
DTEND;TZID=custom_America/New_York;VALUE=DATE-TIME:20140829T100000
|
||||
SUMMARY:an event with a custom tz name
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,61 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
UID:noend123
|
||||
DTSTART;TZID=custom_America/New_York_Forward_reference;VALUE=DATE-TIME:20140829T080000
|
||||
DTSTART;TZID=custom_America/New_York_Forward_reference;VALUE=DATE-TIME:20140829T100000
|
||||
SUMMARY:an event with a custom tz name
|
||||
END:VEVENT
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:custom_America/New_York_Forward_reference
|
||||
LAST-MODIFIED:20050809T050000Z
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19670430T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T070000Z
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19671029T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T060000Z
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0500
|
||||
TZNAME:EST
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19740106T020000
|
||||
RDATE:19750223T020000
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19760425T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T070000Z
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19870405T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T070000Z
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:20070311T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
TZNAME:EDT
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
DTSTART:20071104T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0500
|
||||
TZNAME:EST
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,41 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,2 @@
|
||||
BEGIN:VCALENDAR
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,7 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:An Event with too many semicolons
|
||||
DTSTART;;VALUE=DATE-TIME:20140409T093000
|
||||
UID:abc
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,7 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Plönë.org//NONSGML plone.app.event//EN
|
||||
VERSION:2.0
|
||||
X-WR-CALNAME:äöü ÄÖÜ €
|
||||
X-WR-CALDESC:test non ascii: äöü ÄÖÜ €
|
||||
X-WR-RELCALID:12345
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,23 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Plönë.org//NONSGML plone.app.event//EN
|
||||
X-WR-CALDESC:test non ascii: äöü ÄÖÜ €
|
||||
X-WR-CALNAME:äöü ÄÖÜ €
|
||||
X-WR-RELCALID:12345
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Non-ASCII Test: ÄÖÜ äöü €
|
||||
DTSTART:20101010T100000Z
|
||||
DTEND:20101010T120000Z
|
||||
UID:123456
|
||||
CREATED:20101010T000000Z
|
||||
DESCRIPTION:icalendar should be able to de/serialize non-ascii.
|
||||
LOCATION:Tribstrül
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:åäö
|
||||
DTSTART:20101010T000000Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
DESCRIPTION:äöüßÄÖÜ
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,40 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:collective/icalendar
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:Holidays
|
||||
X-WR-TIMEZONE:Etc/GMT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:New Year's Day
|
||||
DTSTART:20220101
|
||||
DTEND:20220101
|
||||
DESCRIPTION:Happy New Year!
|
||||
UID:636a0cc1dbd5a1667894465@icalendar
|
||||
DTSTAMP:20221108T080105Z
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Orthodox Christmas
|
||||
DTSTART:20220107
|
||||
DTEND:20220107
|
||||
LOCATION:Russia
|
||||
DESCRIPTION:It is Christmas again!
|
||||
UID:636a0cc1dbfd91667894465@icalendar
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:International Women's Day
|
||||
DTSTART:20220308
|
||||
DTEND:20220308
|
||||
DESCRIPTION:May the feminine be honoured!
|
||||
UID:636a0cc1dc0f11667894465@icalendar
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,14 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20140401T000000Z
|
||||
DTEND:20140401T010000Z
|
||||
DTSTAMP:20140401T000000Z
|
||||
SUMMARY:Broken Eevnt
|
||||
CLASS:PUBLIC
|
||||
STATUS:CONFIRMED
|
||||
TRANSP:OPAQUE
|
||||
END:VEVENT
|
||||
X
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,25 @@
|
||||
BEGIN:VCALENDAR
|
||||
X-SOURCE-URL:https://github.com/pimutils/khal/issues/152#issuecomment-387410353
|
||||
VERSION:2.0
|
||||
PRODID:-//PIMUTILS.ORG//NONSGML khal / icalendar //EN
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Event
|
||||
DTSTART;TZID=America/Chicago;VALUE=DATE-TIME:20180327T080000
|
||||
DTEND;TZID=America/Chicago;VALUE=DATE-TIME:20180327T090000
|
||||
DTSTAMP:20180323T200333Z
|
||||
RECURRENCE-ID;RANGE=THISANDFUTURE:20180327T130000Z
|
||||
SEQUENCE:10
|
||||
RDATE;TZID="Central Standard Time";VALUE=PERIOD:20180327T080000/20180327T0
|
||||
90000,20180403T080000/20180403T090000,20180410T080000/20180410T090000,2018
|
||||
0417T080000/20180417T090000,20180424T080000/20180424T090000,20180501T08000
|
||||
0/20180501T090000,20180508T080000/20180508T090000,20180515T080000/20180515
|
||||
T090000,20180522T080000/20180522T090000,20180529T080000/20180529T090000,20
|
||||
180605T080000/20180605T090000,20180612T080000/20180612T090000,20180619T080
|
||||
000/20180619T090000,20180626T080000/20180626T090000,20180703T080000/201807
|
||||
03T090000,20180710T080000/20180710T090000,20180717T080000/20180717T090000,
|
||||
20180724T080000/20180724T090000,20180731T080000/20180731T090000
|
||||
ATTENDEE;CN="XYZ";PARTSTAT=ACCEPTED;ROLE=CHAIR;RSVP=
|
||||
FALSE:mailto:xyz@xyz.com
|
||||
CLASS:PUBLIC
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,55 @@
|
||||
BEGIN:VCALENDAR
|
||||
X-SOURCE-URL:https://github.com/pimutils/khal/issues/152#issuecomment-933635248
|
||||
VERSION:2.0
|
||||
PRODID:-//PIMUTILS.ORG//NONSGML khal / icalendar //EN
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Western/Central Europe
|
||||
BEGIN:STANDARD
|
||||
DTSTART:19501029T020000
|
||||
RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=10
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:19500326T020000
|
||||
RRULE:FREQ=YEARLY;BYMINUTE=0;BYHOUR=2;BYDAY=-1SU;BYMONTH=3
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:(omitted)
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T160000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T163000
|
||||
DTSTAMP:20211004T150245Z
|
||||
UID:BF5109494E67AAE20025875100566D31-Lotus_Notes_Generated
|
||||
RECURRENCE-ID;RANGE=THISANDFUTURE:20211101T150000Z
|
||||
SEQUENCE:0
|
||||
RDATE;TZID="Western/Central Europe";VALUE=PERIOD:20211101T160000/20211101T
|
||||
163000,20211206T160000/20211206T163000,20220103T160000/20220103T163000,202
|
||||
20207T160000/20220207T163000
|
||||
ATTENDEE;CN="(omitted)";PARTSTAT=ACCEPTED;ROLE=CHAIR;RSVP=FAL
|
||||
SE:mailto:omitted@example.com
|
||||
CLASS:PUBLIC
|
||||
TRANSP:OPAQUE
|
||||
X-LOTUS-APPTTYPE:3
|
||||
X-LOTUS-AUDIOVIDEOFLAGS:0
|
||||
X-LOTUS-BROADCAST:FALSE
|
||||
X-LOTUS-CHANGE-INST-DATES:20211101T150000Z\,20211206T150000Z\,20220103T150
|
||||
000Z\,20220207T150000Z
|
||||
X-LOTUS-CHILD-UID:567EFBAF6CBD07FC0025875100566D3B
|
||||
X-LOTUS-INITIAL-RDATES:20211101T150000Z\,20211206T150000Z\,20220103T150000
|
||||
Z\,20220207T150000Z
|
||||
X-LOTUS-LASTALL-RDATES;TZID="Western/Central Europe":20211101T160000\,2021
|
||||
1206T160000\,20220103T160000\,20220207T160000
|
||||
X-LOTUS-NOTESVERSION:2
|
||||
X-LOTUS-NOTICETYPE:I
|
||||
X-LOTUS-RECURID;RANGE=THISANDFUTURE:20211101T150000Z
|
||||
X-LOTUS-UPDATE-SEQ:2
|
||||
X-LOTUS-UPDATE-WISL:$W:1\;$O:1\;$M:1\;RequiredAttendees:1\;INetRequiredNam
|
||||
es:1\;AltRequiredNames:1\;StorageRequiredNames:1\;OptionalAttendees:1\;INe
|
||||
tOptionalNames:1\;AltOptionalNames:1\;StorageOptionalNames:1\;ApptUNIDURL:
|
||||
1\;STUnyteConferenceURL:1\;STUnyteConferenceID:1\;SametimeType:1\;WhiteBoa
|
||||
rdContent:1\;STRoomName:1\;$S:2\;$B:2\;$L:2\;$E:2\;$R:2
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,28 @@
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:REQUEST
|
||||
PRODID:Microsoft CDO for Microsoft Exchange
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:GMT +0100 (Standard) / GMT +0200 (Daylight)
|
||||
BEGIN:STANDARD
|
||||
DTSTART:16010101T030000
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:16010101T020000
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTAMP:20150703T071009Z
|
||||
DTSTART;TZID="GMT +0100 (Standard) / GMT +0200 (Daylight)":20150703T100000
|
||||
SUMMARY:Sprint 25 Daily Standup
|
||||
DTEND;TZID="GMT +0100 (Standard) / GMT +0200 (Daylight)":20150703T103000
|
||||
RRULE:FREQ=DAILY;UNTIL=20150722T080000Z;INTERVAL=1;BYDAY=MO, TU, WE, TH, FR
|
||||
;WKST=SU
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,7 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20150905T090000Z
|
||||
DTEND:20150905T100000Z
|
||||
UID:123
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,8 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20150905T090000Z
|
||||
DTEND:20150905T100000Z
|
||||
UID:123
|
||||
X-APPLE-RADIUS=49.91307046514149
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,2 @@
|
||||
BEGIN:MYCOMP
|
||||
END:MYCOMP
|
||||
@@ -0,0 +1,7 @@
|
||||
BEGIN:MYCOMPTOO
|
||||
DTSTAMP:20150121T080000
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20150122
|
||||
UID:12345
|
||||
END:VEVENT
|
||||
END:MYCOMPTOO
|
||||
@@ -0,0 +1,5 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:UNKNOWN
|
||||
UID:1234
|
||||
END:UNKNOWN
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,24 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//TEST//TEST//EN
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:UTC+11
|
||||
BEGIN:STANDARD
|
||||
DTSTART;VALUE=DATE:20170101
|
||||
TZNAME:UTC+11
|
||||
TZOFFSETFROM:+1100
|
||||
TZOFFSETTO:+1100
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DESCRIPTION:TESTING
|
||||
DTEND;TZID=UTC+11:20170228T233000
|
||||
DTSTAMP:20170227T064302Z
|
||||
DTSTART;TZID=UTC+11:20170228T230000
|
||||
RESOURCES:Court 4
|
||||
SEQUENCE:0
|
||||
STATUS:Confirmed
|
||||
SUMMARY:TESTIN
|
||||
UID:1961094_636238800000000000
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,23 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:(UTC-03:00) Brasília
|
||||
BEGIN:STANDARD
|
||||
TZNAME:Brasília standard
|
||||
DTSTART:16010101T235959
|
||||
TZOFFSETFROM:-0200
|
||||
TZOFFSETTO:-0300
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=3SA;BYMONTH=2
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:Brasília daylight
|
||||
DTSTART:16010101T235959
|
||||
TZOFFSETFROM:-0300
|
||||
TZOFFSETTO:-0200
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SA;BYMONTH=10
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID="(UTC-03:00) Brasília":20170511T133000
|
||||
DTEND;TZID="(UTC-03:00) Brasília":20170511T140000
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,21 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//davmail.sf.net/NONSGML DavMail Calendar V1.1//EN
|
||||
METHOD:REPLY
|
||||
BEGIN:VFREEBUSY
|
||||
DTSTAMP:20120131T123000Z
|
||||
ORGANIZER:MAILTO:organizer@domain.tld
|
||||
DTSTART:20120101T000000Z
|
||||
DTEND:20120201T000000Z
|
||||
UID:null
|
||||
ATTENDEE:MAILTO:attendee@domain.tld
|
||||
FREEBUSY;FBTYPE=BUSY:20120103T091500Z/20120103T101500Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120113T130000Z/20120113T150000Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120116T130000Z/20120116T150000Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120117T091500Z/20120117T101500Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120118T160000Z/20120118T163000Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120124T083000Z/20120124T093000Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120124T123000Z/20120124T143000Z
|
||||
FREEBUSY;FBTYPE=BUSY:20120131T091500Z/20120131T101500Z
|
||||
END:VFREEBUSY
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,14 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//davmail.sf.net/NONSGML DavMail Calendar V1.1//EN
|
||||
METHOD:REPLY
|
||||
BEGIN:VFREEBUSY
|
||||
DTSTAMP:20120131T123000Z
|
||||
ORGANIZER:MAILTO:organizer@domain.tld
|
||||
DTSTART:20120101T000000Z
|
||||
DTEND:20120201T000000Z
|
||||
UID:null
|
||||
ATTENDEE:MAILTO:attendee@domain.tld
|
||||
FREEBUSY;FBTYPE=BUSY:20120103T091500Z/20120103T101500Z,20120113T130000Z/20120113T150000Z,20120116T130000Z/20120116T150000Z,20120117T091500Z/20120117T101500Z,20120118T160000Z/20120118T163000Z,20120124T083000Z/20120124T093000Z,20120124T123000Z/20120124T143000Z,20120131T091500Z/20120131T101500Z
|
||||
END:VFREEBUSY
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,6 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Event with bare string as argument for categories
|
||||
CATEGORIES:Lecture
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,32 @@
|
||||
BEGIN:VCALENDAR
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
VERSION:2.0
|
||||
PRODID:-//Sixt//RAC//EN
|
||||
BEGIN:VFREEBUSY
|
||||
FREEBUSY;FBTYPE=FREE:20190624T063000Z/20190624T163000Z
|
||||
ORGANIZER;CN=Sixt SE
|
||||
X-ORGANIZER2;CN=Sixt SE;CN2=Test!
|
||||
UID:SIXT_9879691160
|
||||
DTSTAMP:20190612T104813Z
|
||||
END:VFREEBUSY
|
||||
BEGIN:VEVENT
|
||||
CLASS:PUBLIC
|
||||
DESCRIPTION:\nVotre véhicule avec le numéro de réservation xxxxxxxxxxx sera à votre disposition le 24.06.2019 à 08:30 heures (heure locale). Retour prévu : Ferney-Voltaire AP de Genève Cointrin Sect(F), le 24.06.2019 à 18:30 heures.\nVous trouverez des informations relatives à la modification ou à l'annulation de votre réservation sous http://www.sixt.fr\n
|
||||
DTSTART:20190624T063000Z
|
||||
DTSTAMP:20190612T104813Z
|
||||
DTEND:20190624T163000Z
|
||||
LOCATION:Sixt Genève Aéroport secteur France, AP de Genève Cointrin Sect(F), 01210 Ferney-Voltaire, FR
|
||||
PRIORITY:5
|
||||
TRANSP:TRANSPARENT
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:Sixt : détails de votre réservation
|
||||
UID:SIXT_9879691160
|
||||
BEGIN:VALARM
|
||||
TRIGGER:-PT30M
|
||||
ACTION:DISPLAY
|
||||
DESCRIPTION:\nLe véhicule avec la n° de réservation xxxxxxxxxxx sera à votre disposition entre 24.06.2019 et 08:30 heures (heure locale) à l'agence Genève Aéroport secteur France. Retour prévu : Ferney-Voltaire AP de Genève Cointrin Sect(F), le 24.06.2019 à 18:30 heures.\nTrouver des informations de localisation et modifier / annuler votre réservation ici: http://www.sixt.fr\n
|
||||
END:VALARM
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,36 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:-//Podio API//EN//view-exporter//52593453
|
||||
METHOD:REQUEST
|
||||
X-WR-CALNAME:view52593586
|
||||
X-WR-TIMEZONE:Europe/Berlin
|
||||
CALSCALE:GREGORIAN
|
||||
X-COMMENT-USAGE:This calendar does not contain recurring events!
|
||||
X-COMMENT-GENERATOR:PHP Version 8.0.16
|
||||
BEGIN:VEVENT
|
||||
STATUS:CONFIRMED
|
||||
SEQUENCE:0
|
||||
TRANSP:OPAQUE
|
||||
CLASS:PUBLIC
|
||||
UID:20055546456446
|
||||
SUMMARY:Termin 4353 und"so"
|
||||
DESCRIPTION;ALTREP="data:text/html,%3Cbody%3E%3Cp%3EToller%20%3Cstron
|
||||
g%20class%3D%22text-bold%22%3ETermin%3C%2Fstrong%3E%20f%C3%BCr%3C%2Fp
|
||||
%3E%3Cblockquote%3E%3Cp%3Emal%20%3Cem%20class%3D%22text-italic%22%3Ez
|
||||
u%22gucken%22%3C%2Fem%3E%3C%2Fp%3E%3C%2Fblockquote%3E%3Cp%3E%3Cu%20cl
|
||||
ass%3D%22text-underline%22%3Eund%3C%2Fu%3E%20%3Cdel%3Eso%3C%2Fdel%3E%
|
||||
3Cbr%2F%3E%3C%2Fp%3E%3C%2Fbody%3E":Toller Termin fürmal zu\"gucken\"
|
||||
und so
|
||||
X-ALT-DESC;FMTTYPE=text/html:<html><head></head><body><p>Toller <stro
|
||||
ng class="text-bold">Termin</strong> für</p><blockquote><p>mal <em c
|
||||
lass="text-italic">zu"gucken"</em></p></blockquote><p><u class="text-
|
||||
underline">und</u> <del>so</del><br/></p></body></html>
|
||||
URL:https://podio.com/xxxxxxyyyyyy/zpodio-testgelande/apps/calen
|
||||
dar/items/5
|
||||
LOCATION:online
|
||||
DTSTART:20220222T183000Z
|
||||
DTEND:20220222T193000Z
|
||||
DTSTAMP:20220220T142821Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
X-COMMENT:Cached from 2022-02-20 14:28:21 - new at most every 1800sec.
|
||||
@@ -0,0 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
UID:0cab49a0-1167-40f0-bfed-ecb4d117047d
|
||||
DTSTAMP:20221019T102950Z
|
||||
DTSTART;TZID=/Europe/Stockholm:20221021T200000
|
||||
DTEND;TZID=/Europe/Stockholm:20221021T210000
|
||||
SUMMARY:Just chatting
|
||||
DESCRIPTION:Just Chatting.
|
||||
CATEGORIES:Just Chatting
|
||||
RRULE:FREQ=WEEKLY;BYDAY=FR
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,29 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:/Europe/CUSTOM
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:CEST
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:CET
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:0cab49a0-1167-40f0-bfed-ecb4d117047d
|
||||
DTSTAMP:20221019T102950Z
|
||||
DTSTART;TZID=/Europe/CUSTOM:20221021T200000
|
||||
DTEND;TZID=/Europe/CUSTOM:20221021T210000
|
||||
SUMMARY:Just chatting
|
||||
DESCRIPTION:Just Chatting.
|
||||
CATEGORIES:Just Chatting
|
||||
RRULE:FREQ=WEEKLY;BYDAY=FR
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,18 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:icalendar-2023
|
||||
BEGIN:VEVENT
|
||||
UID:ical-jacadzaca-3
|
||||
SUMMARY: Some very different event ':'
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T160000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T163000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:ical-jacadzaca-4
|
||||
SUMMARY: Some very different other event
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T164000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T165000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,11 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:icalendar-2023
|
||||
BEGIN:VEVENT
|
||||
UID:1
|
||||
SUMMARY: Some event ':'
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T160000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T163000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,18 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:icalendar-2023
|
||||
BEGIN:VEVENT
|
||||
UID:1
|
||||
SUMMARY: Some event ':'
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T160000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T163000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:2
|
||||
SUMMARY: Some other event
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T164000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T165000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,18 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:icalendar-2023
|
||||
BEGIN:VEVENT
|
||||
UID:2
|
||||
SUMMARY: Some other event
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T164000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T165000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:1
|
||||
SUMMARY: Some event ':'
|
||||
DTSTART;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T160000
|
||||
DTEND;TZID="Western/Central Europe";VALUE=DATE-TIME:20211101T163000
|
||||
DTSTAMP:20211004T150245Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,5 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=CUSTOM_tzid;VALUE=DATE-TIME:20140829T080000
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,20 @@
|
||||
BEGIN:VCALENDAR
|
||||
DESCRIPTION:We leave the timezones out but we use common names so that they are added.
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=America/New_York;VALUE=DATE-TIME:20140829T080000
|
||||
DTEND;TZID=America/Los_Angeles;VALUE=DATE-TIME:20140829T080000
|
||||
RDATE;VALUE=PERIOD;TZID=Europe/Berlin:20240913T120000/PT2H
|
||||
SUMMARY:an event with a custom tz name
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
RECURRENCE-ID;TZID=Europe/Moscow:20190309T020000
|
||||
END:VEVENT
|
||||
BEGIN:VTODO
|
||||
DUE;TZID=Asia/Singapore;VALUE=DATE-TIME:20140829T080000
|
||||
END:VTODO
|
||||
BEGIN:VEVENT
|
||||
RDATE;TZID=Mexico/General:20190309T020000
|
||||
RDATE;TZID=America/Noronha:20190309T020000
|
||||
DTSTAMP:19920901T130000Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,44 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:MyTimezone
|
||||
BEGIN:STANDARD
|
||||
COMMENT:The timezone starts at 2024-01-01 with +12h offset
|
||||
TZOFFSETFROM:+1000
|
||||
TZOFFSETTO:+1200
|
||||
DTSTART:20240101T000000
|
||||
TZNAME:winter
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
COMMENT:The timezone goes from +12h to +10h at 8 am
|
||||
TZOFFSETFROM:+1200
|
||||
TZOFFSETTO:+1000
|
||||
DTSTART:20240505T080000
|
||||
TZNAME:summer
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:0
|
||||
SUMMARY:This event is clearly in winter
|
||||
DTSTART;TZID=MyTimezone;VALUE=DATE-TIME:20240303T080000
|
||||
X-TZNAME:winter
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:1
|
||||
SUMMARY:This event is clearly in summer
|
||||
X-TZNAME:summer
|
||||
DTSTART;TZID=MyTimezone;VALUE=DATE-TIME:20240803T080000
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:2
|
||||
SUMMARY:Transition is from 8am -> 6am, so 8:00:01 is summer
|
||||
X-TZNAME:summer
|
||||
DTSTART;TZID=MyTimezone;VALUE=DATE-TIME:20240505T080001
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:3
|
||||
SUMMARY:Transition is from 8am -> 6am, so 7:00:01 is winter
|
||||
RFC5545 does not allow us to be at the later TZ.
|
||||
X-TZNAME:winter
|
||||
DTSTART;TZID=MyTimezone;VALUE=DATE-TIME:20240505T070001
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,12 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VFREEBUSY
|
||||
FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:19970308T160000Z/PT8H30M
|
||||
END:VFREEBUSY
|
||||
BEGIN:VFREEBUSY
|
||||
FREEBUSY:19970308T160000Z/PT3H,19970308T200000Z/PT1H
|
||||
END:VFREEBUSY
|
||||
BEGIN:VFREEBUSY
|
||||
FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H
|
||||
,19970308T230000Z/19970309T000000Z
|
||||
END:VFREEBUSY
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,8 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
RELATED-TO:jsmith.part7.19960817T083000.xyzMail@example.com
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
RELATED-TO;RELTYPE=SIBLING:19960401-080045-4000F192713@example.com
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,27 @@
|
||||
BEGIN:VCALENDAR
|
||||
METHOD:PUBLISH
|
||||
PRODID:Microsoft Exchange Server 2010
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Eastern Standard Time
|
||||
BEGIN:STANDARD
|
||||
DTSTART:16010101T020000
|
||||
TZOFFSETFROM:-0400
|
||||
TZOFFSETTO:-0500
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:16010101T020000
|
||||
TZOFFSETFROM:-0500
|
||||
TZOFFSETTO:-0400
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:minimal-demo-event-est-20241028@example.com
|
||||
SUMMARY:Anonymous Test Event for TZID
|
||||
DTSTART;TZID=Eastern Standard Time:20241028T170000
|
||||
DTEND;TZID=Eastern Standard Time:20241028T180000
|
||||
DTSTAMP:20250514T023916Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,80 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION
|
||||
|
||||
:2.0
|
||||
PRODID
|
||||
|
||||
:-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
|
||||
METHOD
|
||||
|
||||
:PUBLISH
|
||||
BEGIN:VEVENT
|
||||
UID
|
||||
|
||||
:956630271
|
||||
SUMMARY
|
||||
|
||||
:Christmas Day
|
||||
CLASS
|
||||
|
||||
:PUBLIC
|
||||
X-MOZILLA-ALARM-DEFAULT-UNITS
|
||||
|
||||
:minutes
|
||||
X-MOZILLA-ALARM-DEFAULT-LENGTH
|
||||
|
||||
:15
|
||||
X-MOZILLA-RECUR-DEFAULT-UNITS
|
||||
|
||||
:weeks
|
||||
X-MOZILLA-RECUR-DEFAULT-INTERVAL
|
||||
|
||||
:1
|
||||
DTSTART
|
||||
|
||||
;VALUE=DATE
|
||||
:20031225
|
||||
DTEND
|
||||
|
||||
;VALUE=DATE
|
||||
:20031226
|
||||
DTSTAMP
|
||||
|
||||
:20020430T114937Z
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
BEGIN:VCALENDAR
|
||||
VERSION
|
||||
:2.0
|
||||
PRODID
|
||||
:-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
|
||||
METHOD
|
||||
:PUBLISH
|
||||
BEGIN:VEVENT
|
||||
UID
|
||||
:911737808
|
||||
SUMMARY
|
||||
:Boxing Day
|
||||
CLASS
|
||||
:PUBLIC
|
||||
X-MOZILLA-ALARM-DEFAULT-UNITS
|
||||
:minutes
|
||||
X-MOZILLA-ALARM-DEFAULT-LENGTH
|
||||
:15
|
||||
X-MOZILLA-RECUR-DEFAULT-UNITS
|
||||
:weeks
|
||||
X-MOZILLA-RECUR-DEFAULT-INTERVAL
|
||||
:1
|
||||
DTSTART
|
||||
;VALUE=DATE
|
||||
:20030501
|
||||
DTSTAMP
|
||||
:20020430T114937Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID
|
||||
:wh4t3v3r
|
||||
DTSTART;VALUE=DATE:20031225
|
||||
SUMMARY:Christmas again!
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,52 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//tzurl.org//NONSGML Olson 2014g//EN
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:custom_Pacific/Fiji
|
||||
TZURL:http://tzurl.org/zoneinfo/Pacific/Fiji
|
||||
X-LIC-LOCATION:Pacific/Fiji
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+1200
|
||||
TZOFFSETTO:+1300
|
||||
DTSTART:20101024T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=21,22,23,24,25,26,27;BYDAY=SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
DTSTART:20140119T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=18,19,20,21,22,23,24;BYDAY=SU
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+115544
|
||||
TZOFFSETTO:+1200
|
||||
DTSTART:19151026T000000
|
||||
RDATE:19151026T000000
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+1200
|
||||
TZOFFSETTO:+1300
|
||||
DTSTART:19981101T020000
|
||||
RDATE:19981101T020000
|
||||
RDATE:19991107T020000
|
||||
RDATE:20091129T020000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+1300
|
||||
TZOFFSETTO:+1200
|
||||
DTSTART:19990228T030000
|
||||
RDATE:19990228T030000
|
||||
RDATE:20000227T030000
|
||||
RDATE:20100328T030000
|
||||
RDATE:20110306T030000
|
||||
RDATE:20120122T030000
|
||||
RDATE:20130120T030000
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:noend123
|
||||
DTSTART;TZID=custom_Pacific/Fiji;VALUE=DATE-TIME:20140829T080000
|
||||
DTSTART;TZID=custom_Pacific/Fiji;VALUE=DATE-TIME:20140829T100000
|
||||
SUMMARY:an event with a custom tz name
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,21 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Google Inc//Google Calendar 70.9054//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
BEGIN:VEVENT
|
||||
DESCRIPTION:Perfectly OK event
|
||||
DTSTART;VALUE=DATE:20080303
|
||||
DTEND;VALUE=DATE:20080304
|
||||
RRULE:FREQ=DAILY;UNTIL=20080323T235959Z
|
||||
EXDATE;VALUE=DATE:20080311
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
DESCRIPTION:Wrong event
|
||||
DTSTART;VALUE=DATE:20080303
|
||||
DTEND;VALUE=DATE:20080304
|
||||
RRULE:FREQ=DAILY;UNTIL=20080323T235959Z
|
||||
EXDATE;VALUE=DATE:20080311
|
||||
EXDATE;VALUE=DATE:
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,11 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Prague
|
||||
BEGIN:STANDARD
|
||||
DTSTART:18500101T000000
|
||||
TZNAME:PMT
|
||||
TZOFFSETFROM:+5744
|
||||
TZOFFSETTO:+5744
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,32 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
X-WR-CALNAME;VALUE=TEXT:Test RDATE
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:America/Vancouver
|
||||
BEGIN:STANDARD
|
||||
DTSTART:20221106T020000
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
RDATE:20231105T020000
|
||||
TZNAME:PST
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:20230312T020000
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
RDATE:20240310T020000
|
||||
TZNAME:PDT
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:1
|
||||
DESCRIPTION:Test RDATE
|
||||
DTSTART;TZID=America/Vancouver:20230920T120000
|
||||
DTEND;TZID=America/Vancouver:20230920T140000
|
||||
EXDATE;TZID=America/Vancouver:20231220T120000
|
||||
RDATE;VALUE=PERIOD;TZID=America/Vancouver:20231213T120000/20231213T150000
|
||||
RRULE:FREQ=MONTHLY;COUNT=9;INTERVAL=1;BYDAY=+3WE;BYMONTH=1,2,3,4,5,9,10,11,
|
||||
12;WKST=MO
|
||||
SUMMARY:Test RDATE
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,7 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Example calendar with a ': ' in the summary
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
SUMMARY:Another event with a ': ' in the summary
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,21 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID://RESEARCH IN MOTION//BIS 3.0
|
||||
METHOD:REQUEST
|
||||
BEGIN:VEVENT
|
||||
SEQUENCE:2
|
||||
X-RIM-REVISION:0
|
||||
SUMMARY:Test meeting from BB
|
||||
X-MICROSOFT-CDO-ALLDAYEVENT:TRUE
|
||||
CLASS:PUBLIC
|
||||
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandXS":MAILTO:rembrand@xs4all.nl
|
||||
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandDX":MAILTO:rembrand@daxlab.com
|
||||
ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN="RembrandSB":MAILTO:rembspam@xs4all.nl
|
||||
UID:XRIMCAL-628059586-522954492-9750559
|
||||
DTSTART;VALUE=DATE:20120814
|
||||
DTEND;VALUE=DATE:20120815
|
||||
DESCRIPTION:Test meeting from BB
|
||||
DTSTAMP:20120813T151458Z
|
||||
ORGANIZER:mailto:rembrand@daxlab.com
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,33 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
UID:0
|
||||
RDATE:19970714T123000
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:1
|
||||
RDATE:19970714T123000Z
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:2
|
||||
RDATE;TZID=America/New_York:19970714T083000
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:3
|
||||
RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,
|
||||
19960404T010000Z/PT3H
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:4
|
||||
RDATE;VALUE=DATE:19970101,19970120,19970217,19970421,
|
||||
19970526,19970704,19970901,19971014,19971128,19971129,19971225
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:5
|
||||
RDATE;VALUE=DATE:19970101,19970120,19970217,19970421,
|
||||
19970526,19970704,19970901,19971014,19971128,19971129,19971225
|
||||
RDATE;VALUE=PERIOD:19960403T020000Z/19960403T040000Z,
|
||||
19960404T010000Z/PT3H
|
||||
RDATE:19970714T123000Z
|
||||
RDATE;TZID=America/New_York:19970714T083000
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,6 @@
|
||||
BEGIN:VCALENDAR
|
||||
X-PARAM;NEWLINE=^n;ALL=^^^'^n;UNKNOWN=^a^ ^asd:asd
|
||||
BEGIN:VEVENT
|
||||
ATTENDEE;CN=George Herman ^'Babe^' Ruth:mailto:babe@example.com
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,29 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID://RESEARCH IN MOTION//BIS 3.0
|
||||
METHOD:REQUEST
|
||||
BEGIN:VEVENT
|
||||
UID:4.3.1
|
||||
DTSTART;VALUE=DATE:20130210
|
||||
RRULE:RSCALE=CHINESE;FREQ=YEARLY
|
||||
SUMMARY:Chinese New Year
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:4.3.2
|
||||
DTSTART;VALUE=DATE:20130906
|
||||
RRULE:RSCALE=ETHIOPIC;FREQ=MONTHLY;BYMONTH=13
|
||||
SUMMARY:First day of 13th month
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:4.3.3
|
||||
DTSTART;VALUE=DATE:20140208
|
||||
RRULE:RSCALE=HEBREW;FREQ=YEARLY;BYMONTH=5L;BYMONTHDAY=8;SKIP=FORWARD
|
||||
SUMMARY:Anniversary
|
||||
END:VEVENT
|
||||
BEGIN:VEVENT
|
||||
UID:4.3.4
|
||||
DTSTART;VALUE=DATE:20120229
|
||||
RRULE:RSCALE=GREGORIAN;FREQ=YEARLY;SKIP=FORWARD
|
||||
SUMMARY:Anniversary
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VCALENDAR
|
||||
BEGIN:VEVENT
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VCALENDAR
|
||||
X-SOMETIME;VALUE=TIME:172010
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,55 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:posix/Europe/Vaduz
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+002946
|
||||
TZOFFSETTO:+0100
|
||||
DTSTART:19011213T211538
|
||||
RDATE;VALUE=DATE-TIME:19011213T211538
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
DTSTART:19810329T020000
|
||||
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
|
||||
END:DAYLIGHT
|
||||
BEGIN:DAYLIGHT
|
||||
TZNAME:CEST
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
DTSTART:19410505T010000
|
||||
RDATE;VALUE=DATE-TIME:19410505T010000
|
||||
RDATE;VALUE=DATE-TIME:19420504T010000
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
DTSTART:19810927T030000
|
||||
RRULE:FREQ=YEARLY;COUNT=15;BYDAY=-1SU;BYMONTH=9
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
DTSTART:19961027T030000
|
||||
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
|
||||
END:STANDARD
|
||||
BEGIN:STANDARD
|
||||
TZNAME:CET
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
DTSTART:19411006T020000
|
||||
RDATE;VALUE=DATE-TIME:19411006T020000
|
||||
RDATE;VALUE=DATE-TIME:19421005T020000
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
UID:123
|
||||
DTSTART;TZID=posix/Europe/Vaduz:20120213T100000
|
||||
SUMMARY=testevent
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,27 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:Microsoft Exchange Server 2010
|
||||
METHOD:REQUEST
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Pacific Standard Time
|
||||
BEGIN:STANDARD
|
||||
DTSTART:16010101T020000
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
|
||||
TZOFFSETFROM:-0700
|
||||
TZOFFSETTO:-0800
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:16010101T020000
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
|
||||
TZOFFSETFROM:-0800
|
||||
TZOFFSETTO:-0700
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
SUMMARY;LANGUAGE=en-US:Test 4
|
||||
DTSTART;TZID="Pacific Standard Time":20170224T120000
|
||||
DTEND;TZID="Pacific Standard Time":20170224T123000
|
||||
DTSTAMP:20170224T180431Z
|
||||
UID:040000008200E00074C5B7101A82E0080000000090E19664858ED20100000000000000
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,23 @@
|
||||
BEGIN:VCALENDAR
|
||||
VERSION:2.0
|
||||
PRODID:Microsoft Exchange Server 2010
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Tokyo Standard Time
|
||||
BEGIN:STANDARD
|
||||
DTSTART:16010101T000000
|
||||
TZOFFSETFROM:+0900
|
||||
TZOFFSETTO:+0900
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:16010101T000000
|
||||
TZOFFSETFROM:+0900
|
||||
TZOFFSETTO:+0900
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID="Tokyo Standard Time":20170224T120000
|
||||
DTEND;TZID="Tokyo Standard Time":20170224T123000
|
||||
UID:blafoobar
|
||||
SUMMARY:this is an event
|
||||
END:VEVENT
|
||||
END:VCALENDARD
|
||||
@@ -0,0 +1,36 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Plone.org//NONSGML plone.app.event//EN
|
||||
VERSION:2.0
|
||||
X-WR-CALNAME:test create calendar
|
||||
X-WR-CALDESC:icalendar test
|
||||
X-WR-RELCALID:12345
|
||||
X-WR-TIMEZONE:Europe/Vienna
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Vienna
|
||||
X-LIC-LOCATION:Europe/Vienna
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:CEST
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:CET
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=Europe/Vienna:20120213T100000
|
||||
DTEND;TZID=Europe/Vienna:20120217T180000
|
||||
DTSTAMP:20101010T091010Z
|
||||
CREATED:20101010T091010Z
|
||||
UID:123456
|
||||
SUMMARY:artsprint 2012
|
||||
DESCRIPTION:sprinting at the artsprint
|
||||
LOCATION:aka bild, wien
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
@@ -0,0 +1,48 @@
|
||||
BEGIN:VCALENDAR
|
||||
PRODID:-//Google Inc//Google Calendar 70.9054//EN
|
||||
VERSION:2.0
|
||||
CALSCALE:GREGORIAN
|
||||
METHOD:PUBLISH
|
||||
X-WR-CALNAME:ITC
|
||||
X-WR-TIMEZONE:Europe/Zurich
|
||||
X-WR-CALDESC:ITC Bookings
|
||||
BEGIN:VTIMEZONE
|
||||
TZID:Europe/Zurich
|
||||
X-LIC-LOCATION:Europe/Zurich
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
TZOFFSETTO:+0200
|
||||
TZNAME:CEST
|
||||
DTSTART:19700329T020000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0100
|
||||
TZNAME:CET
|
||||
DTSTART:19701025T030000
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
END:STANDARD
|
||||
END:VTIMEZONE
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=Europe/Zurich:20161028T140000
|
||||
DTEND;TZID=Europe/Zurich:20161028T143000
|
||||
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
|
||||
DTSTAMP:20161031T192828Z
|
||||
UID:BFE33ADD-5553-48B5-B5A5-F9DA5CA4C393
|
||||
CREATED:20161029T121229Z
|
||||
DESCRIPTION:Some Description
|
||||
LAST-MODIFIED:20161029T121229Z
|
||||
LOCATION:Roadstar 16\n12764 Happyville\nDenmark
|
||||
SEQUENCE:0
|
||||
STATUS:CONFIRMED
|
||||
SUMMARY:Daily Sync
|
||||
TRANSP:OPAQUE
|
||||
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS="Röadstar 16\n12764 Happyvi
|
||||
lle\nDenmark";X-APPLE-MAPKIT-HANDLE=CAESARoSCWYTYFhHQBEGfw4hQCIBDQoHRGVubW
|
||||
FyaxJES0hhcHB5dmlsbGUqSGFwcHl2aWxsZTIHSGFwcHl2aWxsZToEMTI3NjRCDQpSb2Fkc3Rh
|
||||
cloCMTZiUm9hZHN0YXIgMTYBEU1vcmRvcgENCk1vcmRvcioSUm9hZHN0YXIgMTYyUm9hZHN0YX
|
||||
IgMTYxMjc2NCBIYXBweXZpbGxlMgdEZW5tYXJrOThA=;X-APPLE-RADIUS=49.913058665846
|
||||
98;X-APPLE-REFERENCEFRAME=1;X-TITLE=:geo:52.382762,7.528319
|
||||
END:VEVENT
|
||||
END:VCALENDAR
|
||||
358
.venv/lib/python3.9/site-packages/icalendar/tests/conftest.py
Normal file
358
.venv/lib/python3.9/site-packages/icalendar/tests/conftest.py
Normal file
@@ -0,0 +1,358 @@
|
||||
try:
|
||||
from backports import zoneinfo # type: ignore # noqa: PGH003
|
||||
except ImportError:
|
||||
import zoneinfo
|
||||
from typing import Generator
|
||||
|
||||
import pytest
|
||||
|
||||
import icalendar
|
||||
|
||||
from . import timezone_ids
|
||||
|
||||
try:
|
||||
import pytz
|
||||
except ImportError:
|
||||
pytz = None
|
||||
import itertools
|
||||
import sys
|
||||
import uuid
|
||||
from pathlib import Path
|
||||
|
||||
from dateutil import tz
|
||||
|
||||
from icalendar.cal import Calendar, Component
|
||||
from icalendar.timezone import TZP
|
||||
from icalendar.timezone import tzp as _tzp
|
||||
|
||||
HAS_PYTZ = pytz is not None
|
||||
if HAS_PYTZ:
|
||||
PYTZ_UTC = [
|
||||
pytz.utc,
|
||||
pytz.timezone("UTC"),
|
||||
]
|
||||
PYTZ_IN_TIMEZONE = [
|
||||
lambda dt, tzname: pytz.timezone(tzname).localize(dt),
|
||||
]
|
||||
PYTZ_TZP = ["pytz"]
|
||||
else:
|
||||
PYTZ_UTC = []
|
||||
PYTZ_IN_TIMEZONE = []
|
||||
PYTZ_TZP = []
|
||||
|
||||
|
||||
class DataSource:
|
||||
"""A collection of parsed ICS elements (e.g calendars, timezones, events)"""
|
||||
|
||||
def __init__(self, data_source_folder: Path, parser):
|
||||
self._parser = parser
|
||||
self._data_source_folder = data_source_folder
|
||||
|
||||
def keys(self):
|
||||
"""Return all the files that could be used."""
|
||||
return [
|
||||
p.stem
|
||||
for p in self._data_source_folder.iterdir()
|
||||
if p.suffix.lower() == ".ics"
|
||||
]
|
||||
|
||||
def __getitem__(self, attribute):
|
||||
"""Parse a file and return the result stored in the attribute."""
|
||||
if attribute.endswith(".ics"):
|
||||
source_file = attribute
|
||||
attribute = attribute[:-4]
|
||||
else:
|
||||
source_file = attribute + ".ics"
|
||||
source_path = self._data_source_folder / source_file
|
||||
if not source_path.is_file():
|
||||
raise AttributeError(f"{source_path} does not exist.")
|
||||
with source_path.open("rb") as f:
|
||||
raw_ics = f.read()
|
||||
source = self._parser(raw_ics)
|
||||
if not isinstance(source, list):
|
||||
source.raw_ics = raw_ics
|
||||
source.source_file = source_file
|
||||
self.__dict__[attribute] = source
|
||||
return source
|
||||
|
||||
def __contains__(self, key):
|
||||
"""key in self.keys()"""
|
||||
if key.endswith(".ics"):
|
||||
key = key[:-4]
|
||||
return key in self.keys()
|
||||
|
||||
def __getattr__(self, key):
|
||||
return self[key]
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self.__dict__)
|
||||
|
||||
@property
|
||||
def multiple(self):
|
||||
"""Return a list of all components parsed."""
|
||||
return self.__class__(
|
||||
self._data_source_folder, lambda data: self._parser(data, multiple=True)
|
||||
)
|
||||
|
||||
|
||||
HERE = Path(__file__).parent
|
||||
CALENDARS_FOLDER = HERE / "calendars"
|
||||
TIMEZONES_FOLDER = HERE / "timezones"
|
||||
EVENTS_FOLDER = HERE / "events"
|
||||
ALARMS_FOLDER = HERE / "alarms"
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def calendars(tzp):
|
||||
return DataSource(CALENDARS_FOLDER, icalendar.Calendar.from_ical)
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def timezones(tzp):
|
||||
return DataSource(TIMEZONES_FOLDER, icalendar.Timezone.from_ical)
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def events(tzp):
|
||||
return DataSource(EVENTS_FOLDER, icalendar.Event.from_ical)
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def alarms(tzp):
|
||||
return DataSource(ALARMS_FOLDER, icalendar.Alarm.from_ical)
|
||||
|
||||
|
||||
@pytest.fixture(params=PYTZ_UTC + [zoneinfo.ZoneInfo("UTC"), tz.UTC, tz.gettz("UTC")])
|
||||
def utc(request, tzp):
|
||||
return request.param
|
||||
|
||||
|
||||
@pytest.fixture(
|
||||
params=PYTZ_IN_TIMEZONE
|
||||
+ [
|
||||
lambda dt, tzname: dt.replace(tzinfo=tz.gettz(tzname)),
|
||||
lambda dt, tzname: dt.replace(tzinfo=zoneinfo.ZoneInfo(tzname)),
|
||||
]
|
||||
)
|
||||
def in_timezone(request, tzp):
|
||||
return request.param
|
||||
|
||||
|
||||
# exclude broken calendars here
|
||||
ICS_FILES_EXCLUDE = (
|
||||
"big_bad_calendar.ics",
|
||||
"issue_104_broken_calendar.ics",
|
||||
"small_bad_calendar.ics",
|
||||
"multiple_calendar_components.ics",
|
||||
"pr_480_summary_with_colon.ics",
|
||||
"parsing_error_in_UTC_offset.ics",
|
||||
"parsing_error.ics",
|
||||
)
|
||||
ICS_FILES = [
|
||||
file.name
|
||||
for file in itertools.chain(
|
||||
CALENDARS_FOLDER.iterdir(), TIMEZONES_FOLDER.iterdir(), EVENTS_FOLDER.iterdir()
|
||||
)
|
||||
if file.name not in ICS_FILES_EXCLUDE
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture(params=ICS_FILES)
|
||||
def ics_file(tzp, calendars, timezones, events, request):
|
||||
"""An example ICS file."""
|
||||
ics_file = request.param
|
||||
print("example file:", ics_file)
|
||||
for data in calendars, timezones, events:
|
||||
if ics_file in data:
|
||||
return data[ics_file]
|
||||
raise ValueError(f"Could not find file {ics_file}.")
|
||||
|
||||
|
||||
FUZZ_V1 = [key for key in CALENDARS_FOLDER.iterdir() if "fuzz-testcase" in str(key)]
|
||||
|
||||
|
||||
@pytest.fixture(params=FUZZ_V1)
|
||||
def fuzz_v1_calendar(request):
|
||||
"""Clusterfuzz calendars."""
|
||||
return request.param
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def x_sometime():
|
||||
"""Map x_sometime to time"""
|
||||
icalendar.cal.types_factory.types_map["X-SOMETIME"] = "time"
|
||||
yield
|
||||
icalendar.cal.types_factory.types_map.pop("X-SOMETIME")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def factory():
|
||||
"""Return a new component factory."""
|
||||
return icalendar.ComponentFactory()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def vUTCOffset_ignore_exceptions():
|
||||
icalendar.vUTCOffset.ignore_exceptions = True
|
||||
yield
|
||||
icalendar.vUTCOffset.ignore_exceptions = False
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def event_component(tzp):
|
||||
"""Return an event component."""
|
||||
c = Component()
|
||||
c.name = "VEVENT"
|
||||
return c
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def c(tzp):
|
||||
"""Return an empty component."""
|
||||
c = Component()
|
||||
return c
|
||||
|
||||
|
||||
comp = c
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def calendar_component(tzp):
|
||||
"""Return an empty component."""
|
||||
c = Component()
|
||||
c.name = "VCALENDAR"
|
||||
return c
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def filled_event_component(c, calendar_component):
|
||||
"""Return an event with some values and add it to calendar_component."""
|
||||
e = Component(summary="A brief history of time")
|
||||
e.name = "VEVENT"
|
||||
e.add("dtend", "20000102T000000", encode=0)
|
||||
e.add("dtstart", "20000101T000000", encode=0)
|
||||
calendar_component.add_component(e)
|
||||
return e
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def calendar_with_resources(tzp):
|
||||
c = Calendar()
|
||||
c["resources"] = 'Chair, Table, "Room: 42"'
|
||||
return c
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def tzp(tzp_name) -> Generator[TZP, None, None]:
|
||||
"""The timezone provider."""
|
||||
_tzp.use(tzp_name)
|
||||
yield _tzp
|
||||
_tzp.use_default()
|
||||
|
||||
|
||||
@pytest.fixture(params=PYTZ_TZP + ["zoneinfo"])
|
||||
def other_tzp(request, tzp):
|
||||
"""This is annother timezone provider.
|
||||
|
||||
The purpose here is to cross test: pytz <-> zoneinfo.
|
||||
tzp as parameter makes sure we test the cross product.
|
||||
"""
|
||||
return TZP(request.param)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def pytz_only(tzp, tzp_name) -> str:
|
||||
"""Skip tests that are not running under pytz."""
|
||||
assert tzp.uses_pytz()
|
||||
return tzp_name
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def zoneinfo_only(tzp, request, tzp_name) -> str:
|
||||
"""Skip tests that are not running under zoneinfo."""
|
||||
assert tzp.uses_zoneinfo()
|
||||
return tzp_name
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def no_pytz(tzp_name) -> str:
|
||||
"""Do not run tests with pytz."""
|
||||
assert tzp_name != "pytz"
|
||||
return tzp_name
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def no_zoneinfo(tzp_name) -> str:
|
||||
"""Do not run tests with zoneinfo."""
|
||||
assert tzp_name != "zoneinfo"
|
||||
return tzp_name
|
||||
|
||||
|
||||
def pytest_generate_tests(metafunc):
|
||||
"""Parametrize without skipping:
|
||||
|
||||
tzp_name will be parametrized according to the use of
|
||||
- pytz_only
|
||||
- zoneinfo_only
|
||||
- no_pytz
|
||||
- no_zoneinfo
|
||||
|
||||
See https://docs.pytest.org/en/6.2.x/example/parametrize.html#deferring-the-setup-of-parametrized-resources
|
||||
"""
|
||||
if "tzp_name" in metafunc.fixturenames:
|
||||
tzp_names = PYTZ_TZP + ["zoneinfo"]
|
||||
if "zoneinfo_only" in metafunc.fixturenames:
|
||||
tzp_names = ["zoneinfo"]
|
||||
if "pytz_only" in metafunc.fixturenames:
|
||||
tzp_names = PYTZ_TZP
|
||||
assert not (
|
||||
"zoneinfo_only" in metafunc.fixturenames
|
||||
and "pytz_only" in metafunc.fixturenames
|
||||
), "Use pytz_only or zoneinfo_only but not both!"
|
||||
for name in ["pytz", "zoneinfo"]:
|
||||
if f"no_{name}" in metafunc.fixturenames and name in tzp_names:
|
||||
tzp_names.remove(name)
|
||||
metafunc.parametrize("tzp_name", tzp_names, scope="module")
|
||||
|
||||
|
||||
class DoctestZoneInfo(zoneinfo.ZoneInfo):
|
||||
"""Constent ZoneInfo representation for tests."""
|
||||
|
||||
def __repr__(self):
|
||||
return f"ZoneInfo(key={self.key!r})"
|
||||
|
||||
|
||||
def doctest_print(obj):
|
||||
"""doctest print"""
|
||||
if isinstance(obj, bytes):
|
||||
obj = obj.decode("UTF-8")
|
||||
print(str(obj).strip().replace("\r\n", "\n").replace("\r", "\n"))
|
||||
|
||||
|
||||
def doctest_import(name, *args, **kw):
|
||||
"""Replace the import mechanism to skip the whole doctest if we import pytz."""
|
||||
if name == "pytz":
|
||||
return pytz
|
||||
return __import__(name, *args, **kw)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def env_for_doctest(monkeypatch):
|
||||
"""Modify the environment to make doctests run."""
|
||||
monkeypatch.setitem(sys.modules, "zoneinfo", zoneinfo)
|
||||
monkeypatch.setattr(zoneinfo, "ZoneInfo", DoctestZoneInfo)
|
||||
from icalendar.timezone.zoneinfo import ZONEINFO
|
||||
uid = uuid.UUID("d755cef5-2311-46ed-a0e1-6733c9e15c63", version=4)
|
||||
monkeypatch.setattr(uuid, "uuid4", lambda: uid)
|
||||
|
||||
monkeypatch.setattr(ZONEINFO, "utc", zoneinfo.ZoneInfo("UTC"))
|
||||
return {"print": doctest_print}
|
||||
|
||||
|
||||
@pytest.fixture(params=timezone_ids.TZIDS)
|
||||
def tzid(request: pytest.FixtureRequest) -> str:
|
||||
"""Return a timezone id to be used with pytz or zoneinfo.
|
||||
|
||||
This goes through all the different timezones possible.
|
||||
"""
|
||||
return request.param
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER;CN=Society\, 2014:that
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER;CN=Society\\ 2014:that
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER;CN=Society\; 2014:that
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER;CN=Society\: 2014:that
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER;CN=that\, that\; %th%%at%\ that\::это\, то\; that\ %th%%at%\:
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,7 @@
|
||||
BEGIN:VEVENT
|
||||
DTSTART:19960401T010000
|
||||
DTEND:19960401T020000
|
||||
RRULE:FREQ=DAILY;COUNT=100
|
||||
EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z
|
||||
SUMMARY:A recurring event with exdates
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,12 @@
|
||||
BEGIN:VEVENT
|
||||
DTSTART;TZID=Europe/Vienna:20120327T100000
|
||||
DTEND;TZID=Europe/Vienna:20120327T180000
|
||||
RRULE:FREQ=WEEKLY;UNTIL=20120703T080000Z;BYDAY=TU
|
||||
EXDATE;TZID=Europe/Vienna:20120529T100000
|
||||
EXDATE;TZID=Europe/Vienna:20120403T100000
|
||||
EXDATE;TZID=Europe/Vienna:20120410T100000
|
||||
EXDATE;TZID=Europe/Vienna:20120501T100000
|
||||
EXDATE;TZID=Europe/Vienna:20120417T100000
|
||||
DTSTAMP:20130716T120638Z
|
||||
SUMMARY:A Recurring event with multiple exdates, one per line.
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ATTENDEE;RSVP=TRUE:mailto:someone@example.com
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,9 @@
|
||||
BEGIN:VEVENT
|
||||
DTSTART:20101010T100000Z
|
||||
DTEND:20101010T120000Z
|
||||
CREATED:20101010T100000Z
|
||||
UID:123456
|
||||
SUMMARY:Non-ASCII Test: ÄÖÜ äöü €
|
||||
DESCRIPTION:icalendar should be able to handle non-ascii: €äüöÄÜÖ.
|
||||
LOCATION:Tribstrül
|
||||
END:VEVENT
|
||||
@@ -0,0 +1,3 @@
|
||||
BEGIN:VEVENT
|
||||
ORGANIZER;CN="Джон Доу":mailto:john.doe@example.org
|
||||
END:VEVENT
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user