+
    ¾¾j¨C  ã                  ó   € R t ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RI	H
t
 ^ RIt^ RIt^ RIHtHtHtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHt ^ RIHt ^ RIHt ]
'       d   ^ RI H!t!  ! R R]4      t" ! R R]4      t# ! R R]4      t$. ROt%R# )z0:rfc:`5545` components for timezone information.)Úannotations)Údefaultdict)ÚdateÚdatetimeÚ	timedeltaÚtzinfo)ÚTYPE_CHECKINGN)Úcreate_single_propertyÚexdates_propertyÚrdates_propertyÚrrules_property)Ú	Component)Úget_example)Ú
vUTCOffset)ÚTZPÚtzp)Útzid_from_tzinfo)Úto_datetime)ÚCalendarc                  ó  € ] tR t^t$ RtR]R&   RtR!tR!tR"t	]
! R^^4      t]
! R^^4      t]R#R R ll4       t]R	 R
 l4       t]R 4       t]R3R R llt]R R l4       tR R ltR$ U u. uF  p \/        V R7      NK  	  up ]! ^R7      ]! ^R7      ]! ^R7      ]! ^R7      ]! ^R7      ]! ^R7      ]! ^R7      ]! ^R7      .,           t]R]]3R R ll4       t]]]]3R R ll4       t]R R l4       t]R R l4       tR tR# u up i )%ÚTimezonez½
A "VTIMEZONE" calendar component is a grouping of component
properties that defines a time zone. It is used to describe the
way in which a time zone changes its offset from UTC over time.
z)list[TimezoneStandard | TimezoneDaylight]ÚsubcomponentsÚ	VTIMEZONEi²  iö  c               ó    € V ^8„  d   QhRRRR/# )é   ÚnameÚstrÚreturnr   © )Úformats   "ÚU/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/cal/timezone.pyÚ__annotate__ÚTimezone.__annotate__3   s   € ÷ =ñ =˜3ð =°Hñ =ó    c                ó8   € V P                  \        RV4      4      # )z0Return the timezone example with the given name.Ú	timezones)Ú	from_icalr   )Úclsr   s   &&r    ÚexampleÚTimezone.example2   s   € ð �}‰}œ[¨°dÓ;Ó<Ð<r#   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	componentz#TimezoneDaylight | TimezoneStandardÚtznamer   r   )r   s   "r    r!   r"   8   s   € ÷ 3#ñ 3#Ð$Gð 3#ÐQTñ 3#r#   c                ód  € V P                   pV P                  pV P                  p\        VP                  ^,           ^<,          4      ^<,          p\        VP                  VR7      p\        VP                  ^,           ^<,          4      ^<,          p\        VP                  VR7      pRV 9   d·   \        P                  P                  RV4      pVP                  VR7      pV R,          P                  4       P                  R4      p	\        P                  P                  W˜R7      p
\        P                   ! W R,          4       V
 Uu. uF  q»P                  RR7      NK  	  ppMsRV 9   dj   \#        V R,          \$        4      '       g   V R,          .pM	V R,          pV.V UUu. uF   qîP&                   F  qÿP(                  NK  	  K"  	  upp,           pMV.p\+        V4       Uu. uF  pVW#V3NK
  	  ppV P,                  R	8X  d   ^ pVV3# V P,                  R
8X  d   ^pXV3# u upi u uppi u upi )z—extract offsets and transition times from a VTIMEZONE component
:param component: a STANDARD or DAYLIGHT component
:param tzname: the name of the zone
)ÚdaysÚsecondsÚRRULEz(offsetfrom)©r   úutf-8)ÚdtstartNÚRDATEÚSTANDARDÚDAYLIGHT)ÚTZOFFSETFROMÚ
TZOFFSETTOÚDTSTARTÚintr/   r   r.   ÚdateutilÚtzÚtzoffsetÚreplaceÚto_icalÚdecodeÚrruleÚrrulestrr   Úfix_rrule_untilÚ
isinstanceÚlistÚdtsÚdtÚsetr   )r+   r,   Ú
offsetfromÚoffsettor3   Ú
offsetto_sÚoffsetfrom_sÚtziÚrrstartrB   rA   rG   Ú
transtimesÚrdatesÚtreeÚleafÚ	transtimeÚtransitionsÚis_dsts   &&                 r    Ú_extract_offsetsÚTimezone._extract_offsets7   sü  € ð ×+Ñ+ˆ
Ø×'Ñ'ˆØ×#Ñ#ˆô
 ˜(×*Ñ*¨RÕ/°2Õ5Ó6¸Õ;ˆ
Ü (§-¡-¸ÔDˆÜ˜J×.Ñ.°Õ3°rÕ9Ó:¸RÕ?ˆÜ J§O¡O¸\ÔJˆ
ð �iÔô —+‘+×&Ñ& ~°zÓBˆCØ—o‘o¨S�oÓ1ˆGà  Õ)×1Ñ1Ó3×:Ñ:¸7ÓCˆHÜ—N‘N×+Ñ+¨HÐ+ÓFˆEÜ×Ò °Õ'9Ô:ñ
 =BÓB¹E°bŸ*™*¨D˜*Ö1¹EˆJÐBˆJð ˜	Ô!Ü˜i¨Õ0´$×7Ò7Ø# GÕ,Ð-‘à" 7Õ+�Ø!˜¹&Ô%V¹&°$ÏXÌXÀT§g¤gÉX¡g¹&Ò%VÕV‰Jà!˜ˆJô HKÈ:Äó
ÙGV¸)ˆY˜
¨fÓ5Áð 	ð 
ð �>‰>˜ZÔ'ØˆFð �{Ð"Ð"ð �^‰^˜zÔ)ØˆFØ�{Ð"Ð"ùò) Cùó &Wùò
s   ÅH"Æ#&H'Ç$H-c                óJ   € W9   d   V R,          p K  VP                  V 4       V # )z?
:param tzname: Candidate tzname
:param tznames: Other tznames
Ú_1)Úadd)r,   Útznamess   &&r    Ú_make_unique_tznameÚTimezone._make_unique_tznamem   s$   € ð ÔØ�d�NŠFØ�‰�FÔØˆr#   Tc               ó    € V ^8„  d   QhRRRR/# )r   r   r   Úlookup_tzidÚboolr   )r   s   "r    r!   r"   y   s   € ÷ )ñ )˜ð )°ñ )r#   c                óz   € V'       d#   VP                   ! V P                  4      pVe   V# VP                  ! V 4      # )a®  convert this VTIMEZONE component to a timezone object

:param tzp: timezone provider to use
:param lookup_tzid: whether to use the TZID property to look up existing
                    timezone definitions with tzp.
                    If it is False, a new timezone will be created.
                    If it is True, the existing timezone will be used
                    if it exists, otherwise a new timezone will be created.
)ÚtimezoneÚtz_nameÚcreate_timezone)Úselfr   r_   r<   s   &&& r    Úto_tzÚTimezone.to_tzy   s4   € ÷ Ø—’˜dŸl™lÓ+ˆBØŠ~Ø�	Ø×"Ò" 4Ó(Ð(r#   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r    r!   r"   Š   s   € ÷ 	;ñ 	;˜ñ 	;r#   c                ó|   €  \        V R,          4      #   \         d    T R,          P                  RR4      u # i ; i)zœReturn the name of the timezone component.

Please note that the names of the timezone are different from this name
and may change with winter/summer time.
ÚTZIDÚasciir>   )r   ÚUnicodeEncodeErrorÚencode©re   s   &r    rc   ÚTimezone.tz_name‰   s<   € ð	;Ü�t˜F•|Ó$Ð$øÜ!ô 	;Ø˜•<×&Ñ& w°	Ó:Ò:ð	;ús   ‚ ”$;º;c               ó   € V ^8„  d   QhRR/# )r   r   z=tuple[list[datetime], list[tuple[timedelta, timedelta, str]]]r   )r   s   "r    r!   r"   •   s   € ÷ D1ñ D1à	FñD1r#   c           
     óè  € V P                   p. p/ p\        4       pV P                  4        FU  p\        V\        4      '       d   K   \        VR,          4      pV P                  WV4      w  W6&   pVP                  V4       KW  	  VP                  4        V UU	U
u. uF  w  r‰ q¨V	,
          NK  	  pp	pp
. p\        V4       Fñ  w  pw  réppR	pVV,          '       g   \!        ^ R
7      pMµ\#        V^,
          RR4       F7  pW2V,          ^,          ,          '       d   K!  WòV,          ^,          ,
          p M	  V'       gQ   \#        V\%        V4      4       F7  pW2V,          ^,          ,          '       d   K!  WòV,          ^,          ,
          p M	  VR	J d	   Wù,
          pVP'                  VVV34       Kó  	  W¼3#   \         d/    TR,          P                  RR4      pT P                  Yd4      p EL—\         dq    T RTR,          P                  4       P                  R4       RTR,          P                  4        RTR,          P                  4        2pT P                  Yd4      p ELi ; iu up
p	pi )z”Return a tuple of (transition_times, transition_info)

- transition_times = [datetime, ...]
- transition_info = [(TZOFFSETTO, dts_offset, tzname)]

ÚTZNAMErk   r>   Ú_r9   r2   r7   r8   F©r/   éÿÿÿÿ)rc   rH   ÚwalkrD   r   r   rl   rm   r\   ÚKeyErrorr?   r@   rV   ÚextendÚsortÚ	enumerater   ÚrangeÚlenÚappend)re   ÚzonerT   Údstr[   r+   r,   Úcomponent_transitionsrS   Úosfromrs   Útransition_timesÚtransition_infoÚnumÚ
_transtimeÚostor   Ú
dst_offsetÚindexs   &                  r    Úget_transitionsÚTimezone.get_transitions•   s_  € ð �|‰|ˆØˆØˆÜ“%ˆØŸ™žˆIÜ˜)¤X×.Ò.ÙðCÜ˜Y xÕ0Ó1�ð 26×1FÑ1FØó2Ñ.ˆC‰KÐ.ð ×ÑÐ4Ö5ñ) %ð, 	×ÑÔá>Iõ
Ù>IÑ#: 9°a¸˜×Ð¹kð 	ò 
ð ˆÜ5>¸{Ö5KÑ1ˆCÑ1�* d¨DØˆJØ�t—9”9Ü&¨qÔ1‘
ô # 3¨¥7¨B°Ö3�EØ¨5Õ1°!Õ4×5Ö5Ø%)¸Õ,>¸qÕ,AÕ%A˜
Ùñ 4÷ "Ü!& s¬C°Ó,<Ö!=˜Ø"¨uÕ#5°aÕ#8×9Ö9Ø)-¸EÕ0BÀ1Õ0EÕ)E˜JÙ!ñ ">ð  Ó&Ø!%¥�JØ×"Ñ" D¨*°dÐ#;Ö<ñ- 6Lð.  Ð0Ð0øôe &ô CØ" 8Õ,×3Ñ3°G¸YÓG�Ø×1Ñ1°&ÓB“Üô Cð �f˜A˜i¨	Õ2×:Ñ:Ó<×CÑCÀGÓLÐMÈQØ  Õ0×8Ñ8Ó:Ð;¸1Ø  Õ.×6Ñ6Ó8Ð9ð;ð ð
 ×1Ñ1°&ÓB“ðCüô
s%   ÁF8ÂI-Æ85I*Ç0I*Ç9A-I*É)I*©r.   )Úhours)Úminutesrt   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   rb   r   Útzidz
str | NoneÚ
first_dater   Ú	last_dater   r   r   )r   s   "r    r!   r"   ì   sC   € ÷ Zñ ZàðZð ðZð ð	Zð
 ðZð 
ñZr#   c                ó2  € Vf   \        V4      pVf   \        RV R24      h\        VRR 4      p\        VP                  VP
                  VP                  4      p\        VP                  VP
                  VP                  4      p\        VR4      '       d$   VP                  V4      pVP                  V4      pM$VP                  VR7      pVP                  VR7      p\        \        4      pTp	Rp
W—8  dë   T
pT	pVP                  4       p
V P                   F>  pTpV! WÍ,           4      p VP                  4       V
8X  d   TpV! WÍ,           4      pK'   TpK@  	  V	P                  4       \!        4       8H  pV	P#                  4       pVf   \%        V
4      pWºVV3pVV,          P'                  V	P                  RR7      4       V! WÀP                  R,          ,           4      p	Kð  V ! 4       pVP)                  RV4       VP)                  R	R
V RV R24       VP+                  4        FÚ  w  w  rºppp\-        V4      pVP/                  V4       VP1                  4       V8X  d,   \        VP                  VP
                  VP                  4      pV'       d   \3        4       M	\5        4       pVf   T
pVVn        V
Vn        VP)                  RV4       VVn        V'       d   VP)                  RV4       VP=                  V4       KÜ  	  V#   \         d      EKº  i ; i)a\  Return a VTIMEZONE component from a timezone object.

This works with pytz and zoneinfo and any other timezone.
The offsets are calculated from the tzinfo object.

Parameters:

:param tzinfo: the timezone object
:param tzid: the tzid for this timezone. If None, it will be extracted from the tzinfo.
:param first_date: a datetime that is earlier than anything that happens in the calendar
:param last_date: a datetime that is later than anything that happens in the calendar
:raises ValueError: If we have no tzid and cannot extract one.

.. note::
    This can take some time. Please cache the results.
NzCannot get TZID from z . Please set the tzid parameter.Ú	normalizec                ó   € V # )Nr   )rG   s   &r    Ú<lambda>Ú&Timezone.from_tzinfo.<locals>.<lambda>	  s   € ¹br#   Úlocalizer1   rj   ÚCOMMENTzThis timezone only works from z to Ú.rr   r4   ru   )r   Ú
ValueErrorÚgetattrr   ÚyearÚmonthÚdayÚhasattrr—   r>   r   rE   Ú	utcoffsetÚ_from_tzinfo_skip_searchÚOverflowErrorr   r   r,   r   r}   rZ   ÚitemsÚminÚremover   ÚTimezoneStandardÚTimezoneDaylightr7   r8   r9   Úadd_component)r'   rb   r�   r�   r‘   r“   Úfirst_datetimeÚlast_datetimeÚoffsetsÚstartÚ	offset_toÚoffset_fromÚendÚ
add_offsetÚlast_endÚis_standardr   Úkeyr<   r,   ÚstartsÚfirst_startÚsubcomponents   &&&&&                  r    Úfrom_tzinfoÚTimezone.from_tzinfoë   s×  € ð0 Š<Ü# HÓ-ˆDØŠ|Ü Ø+¨H¨:Ð5UÐVóð ô ˜H k±=ÓAˆ	Ü! *§/¡/°:×3CÑ3CÀZÇ^Á^ÓTˆÜ  §¡°·±À)Ç-Á-ÓPˆÜ�8˜Z×(Ò(Ø%×.Ñ.¨~Ó>ˆNØ$×-Ñ-¨mÓ<‰Mà+×3Ñ3¸8Ð3ÓDˆNØ)×1Ñ1¸Ð1ÓBˆMô œÓð 	ð ˆØˆ	ØÔ#Ø#ˆKØˆCØŸ™›ˆIØ!×:Ô:�
Ø�Ù Õ 0Ó1�ðØŸ-™-›/¨YÔ6Ø#&˜Ù'¨Õ(8Ó9šð 7ð ’ñ ;ð  Ÿ)™)›+¬«Ñ4ˆKØ—<‘<“>ˆDØŠ|Ü˜9“~�Ø¨4°Ð=ˆCð
 �C�L×Ñ §¡°T Ó :Ô;Ù˜c×$@Ñ$@ÀÕ$DÕDÓEŠEÙ‹UˆØ
�‰ˆv�tÔØ
�‰ˆyÐ:¸:¸,ÀdÈ9È+ÐUVÐWÔXØELÇ]Á]Æ_ÑAÑ9ˆ[ V¨[¸6Ü˜f›+ˆKØ�M‰M˜+Ô&Ø×ÑÓ! YÔ.Ü& y§~¡~°y·±È	ÏÉÓV�ß1<Ô+Ô-ÔBRÓBTˆLØÒ"Ø'�Ø(3ˆLÔ%Ø&/ˆLÔ#Ø×Ñ˜X vÔ.Ø#.ˆLÔ ßØ× Ñ  ¨&Ô1Ø×Ñ˜\Ö*ñ FUð ˆ	øôG %ô äðús   Ä-'LÌLÌLc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r�   r   r   r   r�   r   r‘   r   r   r   )r   s   "r    r!   r"   I  sC   € ÷ @ñ @àð@ð ð@ð ð	@ð
 ð@ð 
ñ@r#   c                óp   € VP                   ! V4      pVf   \        RV R24      hV P                  WQW44      # )a6  Create a VTIMEZONE from a tzid like ``"Europe/Berlin"``.

:param tzid: the id of the timezone
:param tzp: the timezone provider
:param first_date: a datetime that is earlier than anything
    that happens in the calendar
:param last_date: a datetime that is later than anything
    that happens in the calendar
:raises ValueError: If the tzid is unknown.

>>> from icalendar import Timezone
>>> tz = Timezone.from_tzid("Europe/Berlin")
>>> print(tz.to_ical()[:36])
BEGIN:VTIMEZONE
TZID:Europe/Berlin

.. note::
    This can take some time. Please cache the results.
zUnkown timezone r™   )rb   rš   r·   )r'   r�   r   r�   r‘   r<   s   &&&&& r    Ú	from_tzidÚTimezone.from_tzidH  s=   € ð6 �\Š\˜$ÓˆØŠ:ÜÐ/°¨v°QÐ7Ó8Ð8Ø�‰˜r¨Ó?Ð?r#   c               ó   € V ^8„  d   QhRR/# )r   r   zlist[TimezoneStandard]r   )r   s   "r    r!   r"   i  s   € ÷ %ñ %Ð0ñ %r#   c                ó$   € V P                  R4      # )z%The STANDARD subcomponents as a list.r5   ©rv   rn   s   &r    ÚstandardÚTimezone.standardh  s   € ð �y‰y˜Ó$Ð$r#   c               ó   € V ^8„  d   QhRR/# )r   r   zlist[TimezoneDaylight]r   )r   s   "r    r!   r"   n  s   € ÷ %ñ %Ð0ñ %r#   c                ó$   € V P                  R4      # )zOThe DAYLIGHT subcomponents as a list.

These are for the daylight saving time.
r6   r¿   rn   s   &r    ÚdaylightÚTimezone.daylightm  s   € ð �y‰y˜Ó$Ð$r#   r   )rj   )rj   zLAST-MODIFIEDÚTZURL)Úpacific_fiji)é@   é    é   é   é   r   é   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   Úcanonical_orderÚrequiredÚ
singletonsr   ÚDEFAULT_FIRST_DATEÚDEFAULT_LAST_DATEÚclassmethodr(   ÚstaticmethodrV   r\   r   rf   Úpropertyrc   r‰   r   r¡   r·   r»   rÀ   rÄ   Ú__static_attributes__r‹   s   0r    r   r      s‡  ‡ ñð =Ó<à€DØ€OØ€Hð€Jñ ˜d A qÓ)ÐÙ˜T 1 aÓ(Ðàö=ó ð=ð ô3#ó ð3#ðj ñ	ó ð	ð  #¸÷ )ð  ô	;ó ð	;õD1ñP *Bó Ù)A Œ	�t×Ñ)Añ ñ 	˜ÔÙ˜Ôá˜"ÔÙ˜!ÔÙ˜!ÔÙ˜"ÔÙ˜!ÔÙ˜!Ôð	õ Ðð ð  Ø-Ø+öZó ðZðx ð Ø-Ø+ö@ó ð@ð> ô%ó ð%ð ô%ó ô%ùòe s   Á*Dr   c            	      óŒ   € ] tR tRtRtRtRtRtRt]	! RR]
3]
R]R	7      t]	! RR
]3]R]4      t]	! RR
]3]R]4      t]t]t]tRtR# )r¦   iv  zç
The "STANDARD" sub-component of "VTIMEZONE" defines the standard
time offset from UTC for a time zone. It represents a time zone's
standard time, typically used during winter months in locations
that observe Daylight Saving Time.
r5   r9   r8   r7   rG   zßThe mandatory "DTSTART" property gives the effective onset date
        and local time for the time zone sub-component definition.
        "DTSTART" in this usage MUST be specified as a date with a local
        time value.)ÚconvertÚtdz¹The mandatory "TZOFFSETTO" property gives the UTC offset for the
        time zone sub-component (Standard Time or Daylight Saving Time)
        when this observance is in use.
        aë  The mandatory "TZOFFSETFROM" property gives the UTC offset that is
        in use when the onset of this time zone observance begins.
        "TZOFFSETFROM" is combined with "DTSTART" to define the effective
        onset for the time zone sub-component definition.  For example,
        the following represents the time at which the observance of
        Standard Time took effect in Fall 1967 for New York City:

            DTSTART:19671029T020000
            TZOFFSETFROM:-0400
        r   N)r9   r8   r7   )r˜   r4   rr   r0   ÚEXDATE)rÎ   rÏ   rÐ   rÑ   rÒ   r   rÕ   rÖ   Úmultipler	   r   r   r9   r   r   r8   r7   r   rP   r
   Úexdatesr   ÚrrulesrÜ   r   r#   r    r¦   r¦   v  s�   † ñð €DØ8€Hð€Jð
 A€Há$ØØØ	ˆØð	ð ô
€Gñ (ØØØ	ˆØð	ð 	ó
€Jñ *ØØØ	ˆØð		ð 	ó€Lð" €FØ€GØ„Fr#   r¦   c                  óº   € ] tR tRtRtRt]P                  t]P                  t]P                  t	]P                  t
]P                  t]P                  t]t]t]tRtR# )r§   i´  zõ
The "DAYLIGHT" sub-component of "VTIMEZONE" defines the daylight
saving time offset from UTC for a time zone. It represents a time
zone's daylight saving time, typically used during summer months
in locations that observe Daylight Saving Time.
r6   r   N)rÎ   rÏ   rÐ   rÑ   rÒ   r   r¦   rÕ   rÖ   rá   r9   r8   r7   r   rP   r
   râ   r   rã   rÜ   r   r#   r    r§   r§   ´  s_   † ñð €DØ×(Ñ(€HØ!×,Ñ,€JØ×(Ñ(€Hà×&Ñ&€GØ!×,Ñ,€JØ#×0Ñ0€Là€FØ€GØ„Fr#   r§   )r   r§   r¦   )&rÒ   Ú
__future__r   Úcollectionsr   r   r   r   r   Útypingr   Údateutil.rruler;   Údateutil.tzÚicalendar.attrr	   r
   r   r   Úicalendar.cal.componentr   Úicalendar.cal.examplesr   Úicalendar.propr   Úicalendar.timezoner   r   Úicalendar.timezone.tzidr   Úicalendar.toolsr   Úicalendar.cal.calendarr   r   r¦   r§   Ú__all__r   r#   r    Ú<module>ró      sp   ðÙ 6å "å #ß 6Ó 6Ý  ã Û ÷ó õ .Ý .Ý %ß 'Ý 4Ý 'çÝ/ôV%ˆyô V%ôr
;�yô ;ô|�yô ò, ?‚r#   