Ë
    iKêjnÑ  ã                    ó‚  — d dl Zd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dl m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, er5d dl-m.Z. eej                    e.d«      f   Z/eej                    e.d«      f   Z0nlejb                  je                  d«      xZ3rAeej                   e3j]                  d«      f   Z/eej                   e3j]                  d«      f   Z0nej                   xZ/Z0dZ4dZ5 ejl                  d¬«      Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@e4e5z   fd„ZAd„ ZB ej                   d dd«      ZC ej                   d!dd«      ZD ejl                  d"¬#«      ZE ejl                  d¬$«      ZF ejl                  d%¬#«      ZGd&ZH ejl                  dd¬'«       ejl                  dd¬(«       ejl                  d¬#«      fZI ej                   d)dd«       ej                   d)d*d«       ej                   d+dd«       ej                   d,dd«       ej                   d-dd«       ej                   d.dd«       ej                   d/dd«       ej                   d0dd«       ej                   d1dd«       ej                   d2dd«       ej                   d3d*d«       ej                   d4d*d«       ej                   d5d*d«       ej                   d6d*d«       ej                   d7dd«       ej                   d8dd«       ej                   d9dd«       ej                   d:d*d«       ej                   d;d*d«       ej                   d<d*d«       ej                   d=dd«       ej                   d>d*d«       ej                   d?dd«       ej                   d@dd«       ej                   dAdd«       ej                   dBd*d«       ej                   dCd*d«       ej                   dDdd«      fZJeJ ej                   dEdd«       ej                   dFdd«       ej                   dGddHdIdJdK«      fz   ZKdL„ ZLdM„ ZMdN„ ZN e	dO¬P«      dQ„ «       ZO e	dR¬P«      dS„ «       ZP G dT„ dUeQ«      ZR G dV„ dWe(«      ZSe	 	 d{ddXœdYe/dz  dZe/dz  d[e(d   dz  d\e(e/   fd]„«       ZTe	 	 d{d^d_œdYej                   dz  dZej                   dz  d[e(ejª                     d`eVd\e(e0   f
da„«       ZTe	 	 d{d^d_œdYddZdd[e(ejª                  dz     d`eVd\e(ej                      f
db„«       ZT e,d^¬c«      	 	 d{dd^ddœdYej                   dz  dZej                   dz  d[e(ejª                  dz     dz  d`eVd\e(ej                      f
de„«       ZT ej®                  dFdd«      ZXdf„ ZY G dg„ dhe(«      ZZ e,d^¬c«      ej¶                  j¸                  ej¶                  jº                  f e"«       dXœdYej¶                  dZej¶                  d[e(ejª                  dz     d\e(ej¶                     fdi„«       Z^dj„ Z_ G dk„ dle(«      Z` e,d^¬c«      ej®                  j¸                  ej®                  jº                  fdYej®                  dZej®                  d\e(ej®                     fdm„«       Za G dn„ doe(«      Zb e,d^¬c«      ejl                  j¸                  ejl                  jº                  fdYejl                  dZejl                  d\e(ejl                     fdp„«       Zcedq„ «       Zddr„ Ze e,d^¬c«      d^dsœdteVd\e(ef   fdu„«       Zg e,d^¬c«      dvdwœdxeVd\e(dy   fdz„«       ZhehZiy)|é    N)ÚcacheÚ	lru_cacheÚpartial)Ú	resources)ÚPath)ÚTYPE_CHECKINGÚ	AnnotatedÚAnyÚoverload)ÚCannotInvertÚInvalidArgument)ÚChoiceT)Ú
check_typeÚcheck_valid_interval)Úsampled_from)Úunwrap_strategies)ÚjustÚnoneÚnothing)ÚFilteredStrategyÚOneOfStrategyÚSampledFromStrategyÚSearchStrategyÚcurrent_filter_call_siteÚone_of)Údefines_strategy)ÚTimezone.Úannotated_types)ÚyearÚmonthÚday)ÚhourÚminuteÚsecondÚmicrosecondé   )Úmicrosecondsc                 óT  — t        | t        «      r˜t        | j                  «      dk(  r€| j                  st| j
                  t        j                  t        j                  t        j                  t        j                  t        j                  fv r| j
                  | j                  d   fS y)z˜Return ``(op, bound)`` for filter conditions like ``partial(op, bound)``,
    with a single positional argument to one of the five comparison operators.r&   r   N)Ú
isinstancer   ÚlenÚargsÚkeywordsÚfuncÚopÚltÚleÚeqÚgeÚgt)Ú	conditions    úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/strategies/_internal/datetime.pyÚ_comparator_boundr6   6   sn   € ô 	�9œgÔ&Ü�	—‘Ó 1Ò$Ø×"Ò"Ø�N‰NœrŸu™u¤b§e¡e¬R¯U©U´B·E±E¼2¿5¹5ÐAÑAà�~‰~˜yŸ~™~¨aÑ0Ð0Ð0Øó    c                 ó¨  — | t         j                  t         j                  fv r	  ||| t         j                  u rdnd«      }t         j                  ||ft         j                  ||ft         j
                  ||ft         j                  ||ft         j                  ||fi|    \  }}t        ||«      }t        ||«      }||k  ry||fS # t        $ r Y yw xY w)aP  Narrow [min_value, max_value] to satisfy the condition ``func(arg, x)``.

    ``shift(value, steps)`` moves value by that many of the smallest representable
    steps, raising OverflowError if the result would be unrepresentable.  Returns
    the narrowed (min_value, max_value), or None if no values can satisfy the
    condition.
    r&   éÿÿÿÿN)	r.   r/   r3   ÚOverflowErrorr0   r1   r2   ÚmaxÚmin)r-   ÚargÚ	min_valueÚ	max_valueÚshiftÚloÚhis          r5   Ú_narrowed_boundsrC   C   sÒ   € ð ”—‘”r—u‘uˆ~Ñð	Ù˜ $¬"¯%©%¡-™Q°RÓ8ˆCô
 	�‰��YÐÜ
�‰��YÐÜ
�‰��SˆzÜ
�‰�	˜3ÐÜ
�‰�	˜3Ððð ñ�F€Bˆô 
ˆR�Ó	€BÜ	ˆR�Ó	€BØ	ˆB‚wØØˆrˆ6€Møô ò 	Ùð	ús   ¤C Ã	CÃCc                 óÜ  — t        | «      } t        | t        «      rut        d„ | j                  D «       «      rY| j
                  D �ch c]$  }|€dnt        |t        j                  «      rdnd’Œ& }}t        |«      dk(  r|j                  «       S dS t        | t        «      rB| j                  D �ch c]  }t        |«      ’Œ }}t        |«      dk(  r|j                  «       S dS yc c}w c c}w )z‘Classify the values a timezones= strategy can generate: "none" if only
    None, "aware" if only tzinfo instances, or "unknown" if we can't tell.c              3   ó*   K  — | ]  ^}}|d k(  –— Œ y­w)ÚfilterN© )Ú.0ÚnameÚ_s      r5   ú	<genexpr>z"_timezones_kind.<locals>.<genexpr>c   s   è ø€ ò 6Ø%˜T Aˆ�Õñ6ùs   ‚r   ÚawareÚunknownr&   )r   r)   r   ÚallÚ_transformationsÚelementsÚdtÚtzinfor*   Úpopr   Úoriginal_strategiesÚ_timezones_kind)ÚstratÚeÚkindsÚss       r5   rU   rU   _   sÜ   € ô ˜eÓ$€EÜ�%Ô,Ô-´#ñ 6Ø).×)?Ñ)?ô6ô 3ð
 —^‘^ö
àð �i‰F´
¸1¼b¿i¹iÔ0H¡WÈiÑWð
ˆð 
ô " %›j¨Ašoˆu�y‰y‹{Ð<°9Ð<Ü�%œÔ'Ø-2×-FÑ-FÖG¨” Õ#ÐGˆÐGÜ! %›j¨Ašoˆu�y‰y‹{Ð<°9Ð<Øùò
ùò Hs   Á)C$Â/C)c                 ó’   — t        | t        j                  «      syt        | «      j                  }|dk(  xs |j                  d«      S )NFÚpytzzpytz.)r)   rQ   rR   ÚtypeÚ
__module__Ú
startswith)ÚtzÚmodules     r5   Úis_pytz_timezonera   q   s=   € Ü�bœ"Ÿ)™)Ô$ØÜ�"‹X× Ñ €FØ�VÑÒ9˜v×0Ñ0°Ó9Ð9r7   c                 óx   — t        |«      r|j                  | | j                   ¬«      S | j                  |¬«      S )N)Úis_dst©rR   )ra   ÚlocalizeÚfoldÚreplace)ÚvalueÚtimezones     r5   Úreplace_tzinforj   x   s9   € Ü˜Ô!ð × Ñ  °5·:±:¨~Ð Ó>Ð>Ø�=‰= ˆ=Ó)Ð)r7   c                 ó~   — | j                  d¬«      t        j                  j                  z
  | j	                  «       z
  S )a+  A sort key ordering aware datetimes by the moment they refer to.

    Unlike comparison of datetimes which share a tzinfo - which falls back to
    ignoring both the timezone and the fold attribute - this respects the fold,
    and unlike .astimezone() it cannot overflow near datetime.min/max.
    Nrd   )rg   rQ   Údatetimer<   Ú	utcoffset©rh   s    r5   Ú_instantro   ‹   s.   € ð �=‰= ˆ=Ó%¬¯©¯©Ñ7¸%¿/¹/Ó:KÑKÐKr7   c                 ó¬   — t        | j                  d¬«      |«      j                  «       t        | j                  d¬«      |«      j                  «       k7  S )Nr   )rf   r&   )rj   rg   rm   )rh   r_   s     r5   Ú
_ambiguousrq   •   sK   € ô 	�u—}‘}¨!�}Ó,¨bÓ1×;Ñ;Ó=Ü˜%Ÿ-™-¨Q˜-Ó/°Ó4×>Ñ>Ó@ñ	Aðr7   c                 ó|  — | j                   €y	 | j                  t        j                  j                  «      j                  | j                   «      }| j                   |j                   ur"| j                  «       |j                  «       k7  ry| j                   |j                   u sJ d«       ‚| |k7  S # t
        $ r Y yw xY w)zôThis function tests whether the given datetime can be round-tripped to and
    from UTC.  It is an exact inverse of (and very similar to) the dateutil method
    https://dateutil.readthedocs.io/en/stable/tz.html#dateutil.tz.datetime_exists
    FTz'so only the naive portions are compared)rR   Ú
astimezonerQ   ri   Úutcr:   rm   )rh   Ú	roundtrips     r5   Údatetime_does_not_existrv   ž   s¯   € ð ‡|�|ÐØð	ð ×$Ñ$¤R§[¡[§_¡_Ó5×@Ñ@ÀÇÁÓNˆ	ð 	�‰˜I×,Ñ,Ñ,Ø�O‰OÓ ×!4Ñ!4Ó!6Ò6ð
 à�<‰<˜9×+Ñ+Ñ+ÐVÐ-VÓVÐ+Ø�IÑÐøô# ò ñ
 ðús   �AB/ Â/	B;Â:B;c                 ó–   — | dz  dk(  d| dz  dk(  | dz  dk7  z  z
  z  }|dk(  }d|dk7  |dk7  z  |dk7  z  |d	k7  z  z
  }d
|z
  |d|z
  z  z
  S )zùBranchless equivalent of ``monthrange(year, month)[1]`` for valid inputs.

    Written using only arithmetic and (in)equality, with no branching or indexing.
    This avoids concretizing the input or adding more path constraints than necessary.
    é   r   r&   éd   i�  é   é   é	   é   é   é   rG   )r   r    ÚleapÚis_febÚ	is_30_days        r5   Ú_num_days_in_monthrƒ   À   sz   € ð �1‰H˜‰M˜a 4¨#¡:°¡?°t¸c±zÀQ±Ñ"GÑGÑH€DØ�a‰Z€FØ�U˜a‘Z E¨Q¡JÑ/°5¸A±:Ñ>À%È2Á+ÑNÑN€IØ�	‰>˜F a¨$¡hÑ/Ñ/Ð/r7   c                 ó®  — t        |t        j                  t        j                  t        j                  f«      sJ ‚t        |«      t        |«      k(  sJ ‚||k  sJ ‚d}d}i }|D ]Í  }t        t        j                  j                  |«      }|dk(  rt        |d   |d   «      }	n$t        t        j                  j                  |«      }	||t        ||«      |z
  z  z   }
|	|t        ||«      |	z
  z  z   }|dk(  r| j                  |
|d¬«      }n| j                  |
|«      }|||<   |||
k(  z  }|||k(  z  }ŒÏ t        |d«      r| j                  dd«      |d<   |S )	Nr&   r!   r   r    éÐ  ©Úshrink_towardsrf   r   )r)   rQ   ÚdateÚtimerl   r\   Úgetattrr<   rƒ   r;   Údraw_integerÚhasattr)Údatar>   r?   Úduration_namesÚcap_lowÚcap_highÚresultrI   Únatural_lowÚnatural_highÚlowÚhighÚvals                r5   Údraw_capped_multipartr—   Ì   sd  € ô �i¤"§'¡'¬2¯7©7´B·K±KÐ!@ÔAÐAÐAÜ�	‹?œd 9›oÒ-Ð-Ð-Ø˜	Ò!Ð!Ð!ð €GØ€HØ€FØò ,ˆÜœbŸk™kŸo™o¨tÓ4ˆØ�5Š=Ü-¨f°V©n¸fÀW¹oÓN‰Lä"¤2§;¡;§?¡?°DÓ9ˆLð ˜G¤w¨y¸$Ó'?À+Ñ'MÑNÑNˆØ˜h¬'°)¸TÓ*BÀ\Ñ*QÑRÑRˆØ�6Š>Ø×#Ñ# C¨¸dÐ#ÓC‰Cà×#Ñ# C¨Ó.ˆCØˆˆt‰Ø˜S C™ZÑ(ˆØ˜s d™{Ñ+‰ð#,ô$ ˆy˜&Ô!ð ×*Ñ*¨1¨aÓ0ˆˆv‰Ø€Mr7   c                 ó   — | |t         z  z   S ©N)Ú_MICROSECOND©rh   Ústepss     r5   Ú_shift_datetimer�   ú   s   € Ø�5œ<Ñ'Ñ'Ð'r7   i  i  r{   ©Údays)Úsecondsi¸  gš™™™™™©?)r    r'   )Úhoursr'   i´  é   iµ  i¶  i·  i¸  i¹  iº  i»  i¼  i½  i¾  i¿  iÁ  iÄ  iÆ  iÇ  iÈ  iÉ  iÊ  iÌ  iÍ  iÏ  iÖ  iÙ  iÜ  iß  iá  i²  r…   iö  é   r   é   é   c           	      óÄ   — t        j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  «      S )zÕBounds may be datetime subclasses such as ``pandas.Timestamp``, whose
    arithmetic can overflow its narrower representable range, and whose type
    must not leak into one side of a draw_capped_multipart window.)	rQ   rl   r   r    r!   r"   r#   r$   r%   rn   s    r5   Ú_as_naive_datetimer§   D  sH   € ô �;‰;Ø�
‰
Ø�‰Ø�	‰	Ø�
‰
Ø�‰Ø�‰Ø×Ñóð r7   c                 óÒ   — | j                  t        j                  j                  ¬«      j	                  |«      }|j                  «       |j                  «       |j                  «       fS )Nrd   )rg   rQ   ri   rt   rs   rm   ÚdstÚtzname)Úinstantr_   rL   s      r5   Ú	_tz_stater¬   S  sE   € Ø�O‰O¤2§;¡;§?¡?ˆOÓ3×>Ñ>¸rÓB€EØ�O‰OÓ˜uŸy™y›{¨E¯L©L«NÐ;Ð;r7   c                 óð  — t        | t        j                  «      ryg }|t        || «      }}||k  r«	 t	        |t
        z   |«      }t        || «      }||k(  r||}}Œ/||}	}|	|z
  t        kD  rL||	|z
  dz  z   j                  d¬«      }
|
|k  r||	|z
  dz  z   }
t        |
| «      |k(  r|
}n|
}	|	|z
  t        kD  rŒL|j                  |	«       |	t        |	| «      }}||k  rŒ«t        |«      S # t        $ r |}Y Œ¯w xY w)a¨  Naive UTC instants in (lo, hi] at which ``tz`` first reports a changed
    (utcoffset, dst, tzname), called "transitions". Daylights savings time is a transition,
    for example.

    Found by scanning at _PROBE_STEP resolution and bisecting each change down to the
    second. Because we resume scanning from each boundary we find, several
    transitions within a single step are all found; the only way to hide one
    is a pair of transitions less than _PROBE_STEP apart which revert to the
    exact prior state.  The closest real pair of transitions is just under
    seven days apart, above our six-day step, so in practice we
    find every transition of every zone.
    rG   rz   r   )r%   )r)   rQ   ri   r¬   r<   Ú_PROBE_STEPr:   Ú_SECONDrg   ÚappendÚtuple)r_   rA   rB   ÚtransitionsÚatÚstateÚprobeÚprobedr”   r•   Úmids              r5   Ú_probe_transitionsr¸   X  s/  € ô �"”b—k‘kÔ"ð Ø€KØ”I˜b "Ó%ˆ€BØ
ˆrŠ'ð	Ü˜œ[Ñ(¨"Ó-ˆEô ˜5 "Ó%ˆØ�UŠ?Ø˜v�ˆBØØ˜ˆTˆØ�S‰jœ7Ò"ð ˜$ ™*¨Ñ)Ñ)×2Ñ2¸qÐ2ÓAˆCØ�cŠzØ˜T C™Z¨1Ñ,Ñ,�Ü˜˜bÓ! UÒ*Ø‘à�ð �S‰jœ7Ó"ð 	×Ñ˜4Ô Øœ) D¨"Ó-ˆEˆð+ ˆr‹'ô, �ÓÐøô' ò 	ØŠEð	ús   ²C' Ã'C5Ã4C5i   )Úmaxsizec                 ó,   — t        | t        t        «      S r™   )r¸   Ú_SCAN_LOÚ_SCAN_HI)r_   s    r5   Ú_transitionsr½   †  s   € ä˜b¤(¬HÓ5Ð5r7   é   c                 ó  ‡‡‡‡— 	 | €d}na‰t         kD  r"	 ‰t        z   }t        | ‰t	        ‰|«      «      }n6‰t
        k  r"	 ‰t        z
  }t        | t        ‰|«      ‰«      }nt        | «      }t        ˆˆfd„t        |t        z   «      D «       «      Š‰syt        j                  ddd«      Št	        t        t        ‰«      «      ˆˆfd„¬«      }‰|fS # t        $ r ‰}Y ŒÁw xY w# t        $ r ‰}Y Œ§w xY w# t        $ r Y yw xY w)zÐThe interesting instants for ``tz`` within the window of UTC instants
    [lo, hi], as a sorted tuple of naive datetimes, plus the index to shrink
    towards.

    Returns ``((), 0)`` if there are none.
    rG   ©rG   r   c              3   ó@   •K  — | ]  }‰|cxk  r‰k  sŒn n|–— Œ y ­wr™   rG   ©rH   ÚtrB   rA   s     €€r5   rK   z(_interesting_instants.<locals>.<genexpr>ª  s    øè ø€ ò ØÀ"ÈÄ-ÈRÆ-Œñùs   ƒ”
r…   r&   c                 ó&   •— t        ‰|    ‰z
  «      S r™   )Úabs)ÚiÚinstantsÚshrink_targets    €€r5   ú<lambda>z'_interesting_instants.<locals>.<lambda>°  s   ø€ ´c¸(À1¹+ÈÑ:UÓ6V€ r7   ©Úkey)r¼   Ú_FALLBACK_SCANr:   r¸   r<   r»   r;   r½   Ú	Exceptionr±   ÚsortedÚ_INTERESTING_INSTANTSrQ   rl   Úranger*   )	r_   rA   rB   r²   ÚcapÚfloorÚnearestrÇ   rÈ   s	    ``    @@r5   Ú_interesting_instantsrÔ   ‹  s  û€ ðØˆ:Ø‰KØ”(Š]ðØœ>Ñ)�ô -¨R°´S¸¸S³\ÓB‰KØ”(Š]ðØœ^Ñ+�ô -¨R´°R¸³ÀÓD‰Kä& rÓ*ˆKô ô Ü˜+Ô(=Ñ=Ó>ôó €Hñ ØÜ—K‘K  a¨Ó+€MÜ”%œ˜H›Ó&Ô,VÔW€GØ�WÐÐøô- !ò Ø’ðûô !ò Ø’ðûô
 ò ÙðúsW   †C4 •	C ž!C4 Á 	C# Á	#C4 ÃC ÃC4 ÃC Ã C4 Ã#C1Ã.C4 Ã0C1Ã1C4 Ã4	D Ã?D c                   ó   — e Zd ZdZy)Ú_UnrepresentableBoundz?No wall time in the timezone lies within the strategy's bounds.N)Ú__name__r]   Ú__qualname__Ú__doc__rG   r7   r5   rÖ   rÖ   ´  s   „ ÚIr7   rÖ   c                   ór   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	ed
eedf   fd„Zd„ Zˆ fd„Zˆ xZS )ÚDatetimeStrategyc                 óN  •‡	‡
— t         ‰| �  «        t        |t        «      sJ ‚t        |t        «      sJ ‚|d uxr |j
                  d uxs |d uxr |j
                  d u| _        | j                  rÕ||fD ]-  }|€Œt        |t        j                  «      r|j
                  �Œ-J ‚ |€t        j                  d¬«      n
t        |«      | _        |€Lt        j                  j                  t        j                  j                  z
  t        j                  d¬«      z   n
t        |«      | _        | j                  | j                  k  s<J ‚||fD ],  }t        |t        j                  «      sJ ‚|j
                  €Œ,J ‚ ||k  sJ ‚|| _        || _        || _        || _        | j                  rÁt        j                  d«      t        j                  j                  t        j                  j                  z
  }}t        j                  j                  t        t        | j                  |«      |«      z   Š
t        j                  j                  t        t        | j                  |«      |«      z   Š	n|t        j                  d¬«      }t        t        j                  j                  |z   t'        |«      «      |z
  Š
t        t        j                  j                  |z
  t'        |«      «      |z   Š	‰
‰	f| _        t+        ˆ	ˆ
fd„t,        D «       «      xs t/        | j"                  «      dk7  | _        y )Néþÿÿÿrž   rz   r   r&   c              3   ó>   •K  — | ]  }‰|cxk  xr ‰k  nc –— Œ y ­wr™   rG   rÂ   s     €€r5   rK   z,DatetimeStrategy.__init__.<locals>.<genexpr>å  s   øè ø€ Ò"P°Q 2¨¦=¨b§= =Ñ"Pùs   ƒr   )ÚsuperÚ__init__r)   r   ÚboolrR   rL   rQ   rl   Ú	timedeltaro   Úmin_instantr;   r<   Úmax_instantr>   r?   Útz_stratÚallow_imaginaryr§   Úinstant_windowÚanyrÏ   rU   Útricky_possible)Úselfr>   r?   Útimezones_stratræ   rh   ÚzeroÚwholeÚmarginrB   rA   Ú	__class__s            @@€r5   rà   zDatetimeStrategy.__init__¹  sœ  ú€ Ü‰ÑÔÜ˜/¬>Ô:Ð:Ð:Ü˜/¬4Ô0Ð0Ð0Ø tÐ+ÒL°	×0@Ñ0@ÈÐ0Lò 
Ø˜TÐ!ÒB i×&6Ñ&6¸dÐ&Bð 	Œ
ð �:Š:Ø# YÐ/ò �Ø‘}Ü˜u¤b§k¡kÔ2°u·|±|Ñ7Oðð ðð *3Ð):”—‘ "Õ%ÄÈÓ@Sð Ôð
 Ð$ô —‘—‘¤"§+¡+§/¡/Ñ1´B·L±LÀaÔ4HÒHä˜iÓ(ð Ôð
 ×#Ñ# t×'7Ñ'7Ò7Ð7Ð7à# YÐ/ò ,�Ü! %¬¯©Ô5Ð5Ð5Ø—|‘|Ñ+Ð+Ð+ð,ð  	Ò)Ð)Ð)Ø"ˆŒØ"ˆŒØ'ˆŒØ.ˆÔð �:Š:ÜŸ,™, q›/¬2¯;©;¯?©?¼R¿[¹[¿_¹_Ñ+L�%ˆDÜ—‘—‘¤3¤s¨4×+;Ñ+;¸TÓ'BÀEÓ#JÑJˆBÜ—‘—‘¤3¤s¨4×+;Ñ+;¸TÓ'BÀEÓ#JÑJ‰Bä—\‘\ qÔ)ˆFÜ”R—[‘[—_‘_ vÑ-Ô/AÀ)Ó/LÓMÐPVÑVˆBÜ”R—[‘[—_‘_ vÑ-Ô/AÀ)Ó/LÓMÐPVÑVˆBØ! 2˜hˆÔÜ"Ô"PÔ:OÔ"PÓPò  
Ü˜DŸM™MÓ*¨fÑ4ð 	Õr7   c                 ó¢  — |j                  | j                  «      }| j                  r6t        |t        j
                  «      st        d|›d| j                  ›d�«      ‚| j                  r(|j                  t        «      r| j                  ||«      }n| j                  ||«      }| j                  st        |«      r|j                  |› d�«       |S )NzDrew z from the timezones strategy zo, but with aware min_value/max_value bounds the timezones strategy must only generate tzinfo objects (not None)z* does not exist (usually a DST transition))Údrawrå   rL   r)   rQ   rR   r   ré   Údraw_booleanÚ	_TRICKY_PÚdraw_tricky_datetimeÚ_draw_ordinary_datetimeræ   rv   Úmark_invalid©rê   r�   r_   r‘   s       r5   Údo_drawzDatetimeStrategy.do_drawé  sÁ   € ð �Y‰Y�t—}‘}Ó%ˆØ�:Š:œj¨¬R¯Y©YÔ7Ü!Ø˜�vÐ:¸4¿=¹=Ð:Kð LHð Hóð ð
 ×Ò D×$5Ñ$5´iÔ$@Ø×.Ñ.¨t°RÓ8‰Fà×1Ñ1°$¸Ó;ˆFð ×$Ò$Ô*AÀ&Ô*IØ×Ñ  Ð(RÐSÔTØˆr7   c                 ób   — | j                   r| j                  ||«      S | j                  ||«      S r™   )rL   Údraw_aware_datetimeÚdraw_naive_datetime)rê   r�   r_   s      r5   rõ   z(DatetimeStrategy._draw_ordinary_datetimeþ  s/   € Ø�:Š:Ø×+Ñ+¨D°"Ó5Ð5Ø×'Ñ'¨¨bÓ1Ð1r7   c                 óœ  — 	 t        |g| j                  ¢­Ž \  }}| j                  r	 | j	                  |«      }|€d}n| j                  | j                  f}|s| j                  ||«      S ||j                  dt        |«      dz
  |¬«         }t        |j                  dt        t        «      dz
  «         }|�I|j                  t        j                  j                  ¬«      j!                  |«      j                  d¬«      }d„ |D «       \  }}	t#        t%        ||«      |	«      }
|
t#        ||
|z
  «      z
  }|
t#        ||	|
z
  «      z   }t'        |||«      }t)        t        j*                  di |¤Ž|¬	«      }| j                  r%| j-                  |«      s|j/                  |›d
�«       |S # t        $ r	 d\  }}Y �Œ�w xY w# t
        $ r d}Y �Œ‘w xY w)z6Draw a tricky datetime using the interesting instants.rÀ   NrG   r   r&   r†   rd   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr™   )r§   )rH   Úbs     r5   rK   z8DatetimeStrategy.draw_tricky_datetime.<locals>.<genexpr>!  s   è ø€ Ò8¨AÔ$ Q×'Ñ8ùs   ‚©ri   ú is outside the bounds)rÔ   rç   Ú	TypeErrorrL   Ú_wall_clock_windowrÖ   r>   r?   rõ   r‹   r*   Ú_TRICKY_WIDTHSrg   rQ   ri   rt   rs   r<   r;   r—   rj   rl   Ú	in_boundsrö   )rê   r�   r_   rÇ   rÓ   Úwindowr«   ÚwidthrA   rB   Úcenterr”   r•   r‘   rh   s                  r5   rô   z%DatetimeStrategy.draw_tricky_datetime  sÈ  € ð	&Ü 5°bÐ O¸4×;NÑ;NÒ OÑˆH�gð �:Š:ðØ×0Ñ0°Ó4�ð ˆ~Ø‘à—n‘n d§n¡nÐ5ˆFÙà×/Ñ/°°bÓ9Ð9ØØ×Ñ˜a¤ X£°Ñ!2À7ÐÓKñ
ˆô ˜t×0Ñ0°´C¼Ó4GÈ!Ñ4KÓLÑMˆØˆ>ð —‘¤r§{¡{§¡�Ó7ß‘˜B“ß‘ �Ó%ð ñ
 9°Ô8‰ˆˆBÜ”S˜ "Ó% rÓ*ˆØ”s˜5 &¨2¡+Ó.Ñ.ˆØœ˜E 2¨¡;Ó/Ñ/ˆÜ& t¨S°$Ó7ˆÜœrŸ{™{Ñ4¨VÑ4¸rÔBˆØ�:Š:˜dŸn™n¨UÔ3ð ×Ñ  	Ð)?Ð@ÔAØˆøôI ò 	&Ø %ÑˆH“gð	&ûô
 )ò Ø“ðús"   ‚F' ¨F< Æ'F9Æ8F9Æ<GÇ
Gc                 ó\   — | j                   t        |«      cxk  xr | j                  k  S c S r™   )rã   ro   rä   ©rê   rh   s     r5   r  zDatetimeStrategy.in_bounds-  s(   € Ø×Ñ¤8¨E£?ÖF°d×6FÑ6FÑFÐFÑFÐFr7   c                 óò  — 	 | j                  |«      }€<| j	                  |t
        j                  j                  «      }	 |j                  |«      S t        |g|¢­Ž }t        t        j                  di |¤Ž|¬«      }| j                  |«      s|j                  |›d�«       |S # t        $ r$}|j                  t        |«      «       Y d }~Œ¹d }~ww xY w# t        $ r |j                  |›d|›�«       Y Œ¤w xY w)Nú is not representable in rÿ   r   rG   )r  rÖ   rö   Ústrrú   rQ   ri   rt   rs   r:   r—   rj   rl   r  )rê   r�   r_   r  Úerrrh   r‘   s          r5   rú   z$DatetimeStrategy.draw_aware_datetime0  sô   € ð	(Ø×,Ñ,¨RÓ0ˆFð ˆ>ð ×,Ñ,¨T´2·;±;·?±?ÓCˆEðOØ×'Ñ'¨Ó+Ð+ô ' tÐ5¨fÒ5ˆÜœrŸ{™{Ñ4¨VÑ4¸rÔBˆØ�~‰~˜eÔ$à×Ñ  	Ð)?Ð@ÔAØˆøô) %ò 	(Ø×Ñœc #›h×'Ñ'ûð	(ûô !ò OØ×!Ñ! U IÐ-FÀrÀfÐ"MÖNðOús)   ‚B$ Á C Â$	CÂ-CÃCÃC6Ã5C6c                 ó6  ‡— ˆfd„} || j                   t        j                  j                  «      } || j                  t        j                  j
                  «      }||kD  s4||z
  t        j                  d¬«      k  rt        |‰«      st        |‰«      ry||fS )a  The naive (min, max) wall-clock bounds for drawing in ``tz``, or
        None to draw in UTC and convert.  A pure function of (bounds, tz),
        shared by generation and inversion; raises _UnrepresentableBound when
        no wall time in ``tz`` lies within the bounds.c                 óZ  •— | €|S 	 | j                  ‰«      j                  d ¬«      S # t        $ ry | j                  d ¬«      t        j                  j
                  z
  t        j                  d¬«      k  }||t        j                  j
                  u k(  r|cY S t        | ›d‰›�«      d ‚w xY w)Nrd   rz   rž   r  )rs   rg   r:   rQ   rl   r<   râ   rÖ   )ÚboundÚextremeÚnear_minr_   s      €r5   Ú
wall_clockz7DatetimeStrategy._wall_clock_window.<locals>.wall_clockO  s®   ø€ Øˆ}Ø�ðØ×'Ñ'¨Ó+×3Ñ3¸4Ð3Ó@Ð@øÜ ò ð !Ÿ=™=°˜=Ó5¼¿¹¿¹ÑGÌ"Ï,É,ØôKñ �ð  ¬2¯;©;¯?©?Ð :Ò;Ø"’NÜ+Ø�iÐ8¸¸Ð?óàððús   ‡ ( ¨A.B*ÂB*r&   rž   N)r>   rQ   rl   r<   r?   r;   râ   rq   )rê   r_   r  Ú	min_localÚ	max_locals    `   r5   r  z#DatetimeStrategy._wall_clock_windowI  sy   ø€ ô	ñ( ˜tŸ~™~¬r¯{©{¯©Ó?ˆ	Ù˜tŸ~™~¬r¯{©{¯©Ó?ˆ	Ø�yÒ Ø˜	Ñ!¤R§\¡\°qÔ%9Ò9Ü˜I rÔ*¬j¸ÀBÔ.GàØ˜)Ð#Ð#r7   c           
      ó"  — t        || j                  | j                  «      }	 t        t	        j
                  di |¤Ž|¬«      S # t        t        f$ r< |j                  d| j                  ›d| j                  ›d| j                  ›d�«       Y y w xY w)Nrÿ   z"Failed to draw a datetime between z and z with timezone from ú.rG   )
r—   r>   r?   rj   rQ   rl   Ú
ValueErrorr:   rö   rå   r÷   s       r5   rû   z$DatetimeStrategy.draw_naive_datetimel  s„   € Ü& t¨T¯^©^¸T¿^¹^ÓLˆð	Ü!¤"§+¡+Ñ"7°Ñ"7À"ÔEÐEøÜœMÐ*ò 	Ø×ÑØ4°T·^±^Ð4FÀeØ—>‘>Ð$Ð$8¸¿¹Ð8IÈðLöð	ús   £A ÁABÂBrh   Úreturn.c                 ón  — | j                   rdnd}| j                  rÈt        |«      t        j                  us|j
                  €t        |›d�«      ‚	 | j                  |«      }t        |«      }|st        |›d| ›�«      ‚|r| j                  st        |›d�«      ‚g | j                  j                  |j
                  «      ¢|¢| j                  ||j
                  |¬«      ¢­S t        |«      t        j                  urt        |›d	�«      ‚|j                  d ¬
«      }| j                  |cxk  r| j                   k  s*n t        |›d| j                  ›d| j                   ›d�«      ‚| j                  st        |«      rt        |›d�«      ‚g | j                  j                  |j
                  «      ¢|¢|j"                  ‘|j$                  ‘|j&                  ‘|j(                  ‘|j*                  ‘|j,                  ‘|j.                  ‘|j0                  ‘­S # t        $ r t        d|›d| ›�«      d ‚w xY w)N)FrG   z is not an aware datetimezcould not locate z relative to z outside the instant bounds of z4 is an imaginary datetime, but allow_imaginary=False©Ú	imaginaryz is not a datetimerd   ú
 outside [ú, ú])ré   rL   r\   rQ   rl   rR   r   r  rv   rÍ   ræ   rå   Ú_invertÚ_invert_aware_fieldsrg   r>   r?   r   r    r!   r"   r#   r$   r%   rf   )rê   rh   Útricky_selectorr  r  Únaives         r5   r   zDatetimeStrategy._invertv  sa  € ð '+×&:Ò&:™(ÀˆØ�:Š:Ü�E‹{¤"§+¡+Ñ-°·±Ð1EÜ" e YÐ.GÐ#HÓIÐIðØ ŸN™N¨5Ó1�	Ü3°EÓ:�	ñ
 Ü" e YÐ.MÈdÈXÐ#VÓWÐWÙ ×!5Ò!5Ü"Ø�iÐSÐTóð ðØ—‘×&Ñ& u§|¡|Ó4ðà ðð ×*Ñ*¨5°%·,±,È)Ð*ÓTñð ô
 �‹;œbŸk™kÑ)Ü % Ð*<Ð=Ó>Ð>Ø—‘ T�Ó*ˆØ—‘ %Ô9¨4¯>©>Ô9ÜØ�)˜: d§n¡nÐ%7°r¸$¿.¹.Ð9KÈ1ÐMóð ð ×#Ò#Ô(?ÀÔ(FÜØ�)ÐOÐPóð ð

Ø�]‰]×"Ñ" 5§<¡<Ó0ð
àð
ð �J‰Jð
ð �K‰Kð	
ð
 �I‰Ið
ð �J‰Jð
ð �L‰Lð
ð �L‰Lð
ð ×Ñð
ð �J‰Jñ
ð 	
øô9 ò Ü"Ø'¨ y°¸d¸XÐFóàððús   ÁH ÈH4c                óœ  — 	 | j                  |«      }|€f|rt        d|›�«      ‚	 |j	                  t
        j                  j                  «      }| j                  |t
        j                  j                  d¬«      S |\  }}|j                  d ¬«      }	||	cxk  r|k  sn t        |›d| ›d|›�«      ‚|	j                  |	j                  |	j                  |	j                  |	j                  |	j                   |	j"                  |j$                  fS # t        $ r}t        t        |«      «      d ‚d }~ww xY w# t        $ r t        |›d�«      d ‚w xY w)Nz1the UTC drawing frame cannot reproduce imaginary z is not representable in UTCFr  rd   z% is outside the wall-clock window of z in )r  rÖ   r   r  rs   rQ   ri   rt   r:   r!  rg   r   r    r!   r"   r#   r$   r%   rf   )
rê   rh   r_   r  r  r  Ú	utc_valuer  r  r#  s
             r5   r!  z%DatetimeStrategy._invert_aware_fields©  s]  € ð	3Ø×,Ñ,¨RÓ0ˆFð ˆ>ñ Ü"ØGÈÀyÐQóð ðWØ!×,Ñ,¬R¯[©[¯_©_Ó=�	ð ×,Ñ,Øœ2Ÿ;™;Ÿ?™?°eð -ó ð ð  &Ñˆ	�9Ø—‘ T�Ó*ˆØ˜UÔ/ iÔ/ÜØ�)Ð@ÀÀÈÈRÈFÐSóð ð �J‰JØ�K‰KØ�I‰IØ�J‰JØ�L‰LØ�L‰LØ×ÑØ�J‰Jð	
ð 		
øô- %ò 	3Üœs 3›xÓ(¨dÐ2ûð	3ûô !ò WÜ" e YÐ.JÐ#KÓLÐRVÐVðWús"   ‚D ¦)D2 Ä	D/ÄD*Ä*D/Ä2Ec                 óN  •— t        |«      x}��êt        |d   x}t        j                  «      �rÊ|d   }	 |j	                  «       d u}|s£|j                  �€£| j                  �s–t        | j                  «      dk(  �r}t        ||| j                  | j                  t        «      }|€
t!        «       S || j                  | j                  fk(  r| S t#        || j                  | j$                  dœŽS | j                  r| j                  | j                  }}ny| j                  | j                  ft        j                  j&                  t        j                  j(                  fk(  rt        | j                  «      dk7  rd x}}nt        ‰| �  |«      S t+        |«      }	|t,        j.                  t,        j0                  t,        j2                  fv r|�t+        |«      |	k  r|}|t,        j4                  t,        j6                  t,        j2                  fv r|�|	t+        |«      k  r|}|�`|�^t+        |«      t+        |«      }}
||
k  s9|t,        j.                  t,        j4                  fv r!|
|cxk(  r|	k(  rt!        «       S  n
t!        «       S || j                  u r|| j                  u r| }n"t9        ||| j                  | j$                  «      }|t,        j.                  t,        j4                  fv rt;        ||ft=        «       f«      S |S t        ‰| �  |«      S # t
        $ r t        ‰| �  |«      cY S w xY w)Nr&   r   r   ©Ú	timezonesræ   )r6   r)   rQ   rl   rm   rÍ   rß   rF   rR   rL   rU   rå   rC   r>   r?   r�   r   Ú	datetimesræ   r<   r;   ro   r.   r/   r0   r1   r3   r2   rÛ   r   r   )rê   r4   Úparsedr=   r-   Úbound_awareÚboundsr>   r?   rË   rA   rB   r‘   rï   s                €r5   rF   zDatetimeStrategy.filterÏ  sÂ  ø€ Ü'¨	Ó2Ð2ˆFÑ?ÄJØ˜!‘9ÐˆCœbŸk™kõE
ð ˜!‘9ˆDð1Ø!Ÿm™m›o°TÐ9�ñ
 ð —J‘JÑ&Ø ŸJ›JÜ'¨¯©Ó6¸&Ó@ä-Ø˜c 4§>¡>°4·>±>Ä?ó�Fð �~Ü&›yÐ(Ø $§.¡.°$·.±.Ð!AÒAØ#˜Ü$ØØ"&§-¡-Ø(,×(<Ñ(<òð ð —:’:Ø+/¯>©>¸4¿>¹>˜y‘IØ—n‘n d§n¡nÐ5Ü—K‘K—O‘OÜ—K‘K—O‘Oð:ò ô & d§m¡mÓ4¸Ò>ð -1Ð0�I¡	ä ™7™>¨)Ó4Ð4Ü˜s“m�ØœBŸE™E¤2§5¡5¬"¯%©%Ð0Ñ0ØÐ%¬°)Ó)<¸sÒ)Bà #�IØœBŸE™E¤2§5¡5¬"¯%©%Ð0Ñ0ØÐ%¨¬x¸	Ó/BÒ)Bà #�IØÐ(¨YÐ-BÜ% iÓ0´(¸9Ó2E˜�BØ˜B’w 4¬B¯E©E´2·5±5¨>Ñ#9¸bÀB¼oÈ#ºoô  '›yÐ(ñ	 ?Nô  '›yÐ(Ø §¡Ñ.°9ÀÇÁÑ3NØ!‘Fä-Ø! 9¨d¯m©m¸T×=QÑ=Qó�Fð œBŸE™E¤2§5¡5˜>Ñ)Ü+Ø  Ô/GÓ/IÐ.Kóð ð �Ü‰w‰~˜iÓ(Ð(øôQ ò 1ô ‘w‘~ iÓ0Ò0ð1ús   ¶L	 Ì	L$Ì#L$)r×   r]   rØ   rà   rø   rõ   rô   r  rú   r  rû   r
   r±   r   r   r!  rF   Ú__classcell__©rï   s   @r5   rÛ   rÛ   ¸  s^   ø„ ô.
ò`ò*2ò
(òTGòò2!$òFð1
˜Sð 1
 U¨7°C¨<Ñ%8ó 1
òf$
÷LO)ð O)r7   rÛ   )r(  r>   r?   r(  r  c                 ó   — y r™   rG   ©r>   r?   r(  s      r5   r)  r)  !  s   € ð %(r7   T)ræ   ræ   c                 ó   — y r™   rG   ©r>   r?   r(  ræ   s       r5   r)  r)  *  s   € ð %(r7   c                 ó   — y r™   rG   r2  s       r5   r)  r)  4  s   € ð #&r7   )Úforce_reusable_valuesr'  c                ó®  — t        t        |d«       | �t        t        j                  | d«       |�t        t        j                  |d«       |�t	        |t
        «      st        d|›d�«      ‚| �| j                  €e|�|j                  €W| €t        j                  j                  n| } |€t        j                  j                  n|}|€
t        «       }t        | |dd«       nid| fd|ffD ]%  \  }}|€Œ	|j                  �Œt        |› d|›d�«      ‚ |€
t        «       }| �+|�)t        |«      t        | «      k  rt        d|›d	| ›d
�«      ‚t        | |||«      S )a¦	  datetimes(min_value=None, max_value=None, *, timezones=None, allow_imaginary=True)

    A strategy for generating datetimes, which may be timezone-aware.

    If ``min_value`` and ``max_value`` are naive datetimes, or omitted, this
    strategy works by drawing a naive datetime between them - defaulting to
    ``datetime.min`` and ``datetime.max`` respectively - and then attaching
    a timezone drawn from ``timezones``, which defaults to
    :func:`~hypothesis.strategies.none`.

    If instead both bounds are timezone-aware, they are treated as moments in
    time, and ``timezones`` defaults to :func:`~hypothesis.strategies.timezones`.
    Each generated datetime is aware, in a timezone drawn from ``timezones`` -
    which must not generate ``None`` - and lies between the two moments.
    Passing one aware and one naive bound is an error.

    ``timezones`` must be a strategy that generates either ``None``, for naive
    datetimes, or :class:`~python:datetime.tzinfo` objects for 'aware' datetimes.
    You can construct your own, though we recommend using one of these built-in
    strategies:

    * with the standard library: :func:`hypothesis.strategies.timezones`;
    * with :pypi:`dateutil <python-dateutil>`:
      :func:`hypothesis.extra.dateutil.timezones`; or
    * with :pypi:`pytz`: :func:`hypothesis.extra.pytz.timezones`.

    You may pass ``allow_imaginary=False`` to filter out "imaginary" datetimes
    which did not (or will not) occur due to daylight savings, leap seconds,
    timezone and calendar adjustments, etc.  Imaginary datetimes are allowed
    by default, because malformed timestamps are a common source of bugs.

    Because times near a change to the UTC offset are also a common source of
    bugs, this strategy deliberately generates values on or near the drawn
    timezone's daylight-saving and other offset transitions - including
    imaginary wall times, and ambiguous ones with each value of ``fold`` -
    as well as times adjacent to leap seconds and to well-known rollovers such as
    the millennium and the end of the signed 32-bit Unix epoch.

    .. note::

        Arithmetic and comparisons on timezone-aware datetimes can be very
        surprising around daylight-savings changes.  See `this CPython issue
        <https://github.com/python/cpython/issues/116035>`__ for details
        and discussion.

    Examples from this strategy shrink towards midnight on January 1st 2000,
    local time.
    ræ   r>   r?   z
timezones=zb must be a SearchStrategy that can provide tzinfo for datetimes (either None or dt.tzinfo objects)ú=z] is naive, but the other bound is timezone-aware; the bounds must be both naive or both awarezCannot have max_value=z < min_value=z, comparing as moments in time)r   rá   rQ   rl   r)   r   r   rR   r<   r;   r   r   Ú
_timezonesro   rÛ   )r>   r?   r(  ræ   rI   rh   s         r5   r)  r)  >  s‘  € ôp Œt�_Ð&7Ô8ØÐÜ”2—;‘; 	¨;Ô7ØÐÜ”2—;‘; 	¨;Ô7ØÐ¤Z°	¼>Ô%JÜØˆyˆlð Nð Nó
ð 	
ð 	Ð˜Y×-Ñ-Ð5ØÐ˜Y×-Ñ-Ð5à'0Ð'8”B—K‘K—O’O¸iˆ	Ø'0Ð'8”B—K‘K—O’O¸iˆ	ØÐÜ›ˆIÜ˜Y¨	°;ÀÕLð
 )¨)Ð4°{ÀIÐ6NÐOò 	‰KˆD�%ØÑ  U§\¡\Ñ%9Ü%Ø�f˜A˜e˜Yð 'Rð Róð ð	ð ÐÜ"›ˆIð Ð!ØÐ%Ü˜Ó#¤h¨yÓ&9Ò9ä!Ø)˜y˜l¨.¨i¨\ð :"ð "óð ô ˜I y°)¸_ÓMÐMr7   c                 ó¸   — t         j                  j                  t        | «      |t        z  z   }|j                  «       t        k7  rt        ‚|j                  «       S r™   )rQ   rl   ÚcombineÚ_ARBITRARY_DATErš   rˆ   r:   r‰   )rh   rœ   Úshifteds      r5   Ú_shift_timer<  ¥  sD   € ô �k‰k×!Ñ!¤/°5Ó9¸EÄLÑ<PÑP€GØ‡|�|ƒ~œÒ(ÜÐØ�<‰<‹>Ðr7   c                   óH   ‡ — e Zd Zˆ fd„Zd„ Zdedeedf   fd„Zˆ fd„Z	ˆ xZ
S )ÚTimeStrategyc                 óL   •— t         ‰| �  «        || _        || _        || _        y r™   )rß   rà   r>   r?   rå   )rê   r>   r?   rë   rï   s       €r5   rà   zTimeStrategy.__init__¯  s#   ø€ Ü‰ÑÔØ"ˆŒØ"ˆŒØ'ˆ�r7   c                 ó¶   — t        || j                  | j                  t        «      }|j	                  | j
                  «      }t        j                  di |¤d|i¤ŽS )NrR   rG   )r—   r>   r?   Ú	TIMENAMESrñ   rå   rQ   r‰   )rê   r�   r‘   r_   s       r5   rø   zTimeStrategy.do_drawµ  sC   € Ü& t¨T¯^©^¸T¿^¹^ÌYÓWˆØ�Y‰Y�t—}‘}Ó%ˆÜ�w‰wÑ+˜Ñ+¨Ò+Ð+r7   rh   r  .c                 óÈ  — t        |«      t        j                  urt        |›d�«      ‚|j	                  d ¬«      }| j
                  |cxk  r| j                  k  s*n t        |›d| j
                  ›d| j                  ›d�«      ‚|j                  |j                  |j                  |j                  |j                  g| j                  j                  |j                  «      ¢­S )Nz is not a timerd   r  r  r  )r\   rQ   r‰   r   rg   r>   r?   r"   r#   r$   r%   rf   rå   r   rR   )rê   rh   r#  s      r5   r   zTimeStrategy._invertº  sÄ   € Ü�‹;œbŸg™gÑ%Ü % ¨.Ð9Ó:Ð:Ø—‘ T�Ó*ˆØ—‘ %Ô9¨4¯>©>Ô9ÜØ�)˜: d§n¡nÐ%7°r¸$¿.¹.Ð9KÈ1ÐMóð ð �J‰JØ�L‰LØ�L‰LØ×ÑØ�J‰Jð
ð �]‰]×"Ñ" 5§<¡<Ó0ñ
ð 	
r7   c                 ó’  •— t        |«      x}�«t        |d   x}t        j                  «      rŒ|j                  €€t        | j                  «      dk(  rht        |d   || j                  | j                  t        «      }|€
t        «       S || j                  | j                  fk(  r| S t        |d| j                  iŽS t        ‰| �9  |«      S )Nr&   r   r   r(  )r6   r)   rQ   r‰   rR   rU   rå   rC   r>   r?   r<  r   Útimesrß   rF   ©rê   r4   r*  r=   r,  rï   s        €r5   rF   zTimeStrategy.filterÍ  s´   ø€ ô )¨Ó3Ð3ˆVÐ@Ü &¨¡)Ð+˜3¬R¯W©WÔ5Ø—
‘
Ð"Ü §¡Ó.°&Ò8ä%Ø�q‘	˜3 §¡°·±ÄóˆFð ˆ~Ü“yÐ Ø˜$Ÿ.™.¨$¯.©.Ð9Ò9Ø�Ü˜&Ð:¨D¯M©MÑ:Ð:Ü‰w‰~˜iÓ(Ð(r7   ©r×   r]   rØ   rà   rø   r
   r±   r   r   rF   r-  r.  s   @r5   r>  r>  ®  s3   ø„ ô(ò,ð

˜Sð 
 U¨7°C¨<Ñ%8ó 
÷&)ð )r7   r>  c                ó  — t        t        j                  | d«       t        t        j                  |d«       | j                  �t	        d| ›d�«      ‚|j                  �t	        d|›d�«      ‚t        | |dd«       t        | ||«      S )an  times(min_value=datetime.time.min, max_value=datetime.time.max, *, timezones=none())

    A strategy for times between ``min_value`` and ``max_value``.

    The ``timezones`` argument is handled as for :py:func:`datetimes`.

    Examples from this strategy shrink towards midnight, with the timezone
    component shrinking as for the strategy that provided it.
    r>   r?   ú
min_value=z must not have tzinfoú
max_value=)r   rQ   r‰   rR   r   r   r>  r0  s      r5   rD  rD  ã  sƒ   € ô  Œr�w‰w˜	 ;Ô/ÜŒr�w‰w˜	 ;Ô/Ø×ÑÐ#Ü   Ð,AÐBÓCÐCØ×ÑÐ#Ü   Ð,AÐBÓCÐCÜ˜ I¨{¸KÔHÜ˜	 9¨iÓ8Ð8r7   c                 ó:   — | |t        j                  d¬«      z  z   S )Nr&   rž   )rQ   râ   r›   s     r5   Ú_shift_daterK  ý  s   € Ø�5œ2Ÿ<™<¨QÔ/Ñ/Ñ/Ð/r7   c                   óH   ‡ — e Zd Zˆ fd„Zd„ Zdedeedf   fd„Zˆ fd„Z	ˆ xZ
S )ÚDateStrategyc                 ó¼   •— t         ‰| �  «        t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚||k  sJ ‚|| _        || _        y r™   )rß   rà   r)   rQ   rˆ   r>   r?   ©rê   r>   r?   rï   s      €r5   rà   zDateStrategy.__init__  sR   ø€ Ü‰ÑÔÜ˜)¤R§W¡WÔ-Ð-Ð-Ü˜)¤R§W¡WÔ-Ð-Ð-Ø˜9Ò$Ð$Ð$Ø"ˆŒØ"ˆ�r7   c           
      ót   — t        j                  di t        || j                  | j                  t
        «      ¤ŽS )NrG   )rQ   rˆ   r—   r>   r?   Ú	DATENAMES)rê   r�   s     r5   rø   zDateStrategy.do_draw
  s.   € Ü�w‰wñ 
Ü# D¨$¯.©.¸$¿.¹.Ì)ÓTñ
ð 	
r7   rh   r  .c                 ó,  — t        |«      t        j                  urt        |›d�«      ‚| j                  |cxk  r| j
                  k  s*n t        |›d| j                  ›d| j
                  ›d�«      ‚|j                  |j                  |j                  fS )Nz is not a dater  r  r  )	r\   rQ   rˆ   r   r>   r?   r   r    r!   r	  s     r5   r   zDateStrategy._invert  s�   € Ü�‹;œbŸg™gÑ%Ü % ¨.Ð9Ó:Ð:Ø—‘ %Ô9¨4¯>©>Ô9ÜØ�)˜: d§n¡nÐ%7°r¸$¿.¹.Ð9KÈ1ÐMóð ð —
‘
˜EŸK™K¨¯©Ð3Ð3r7   c                 ód  •— t        |«      x}�”t        |d   x}t        j                  «      rut        |t        j                  «      s[t        |d   || j                  | j                  t        «      }|€
t        «       S || j                  | j                  fk(  r| S t        |Ž S t        ‰| �1  |«      S )Nr&   r   )r6   r)   rQ   rˆ   rl   rC   r>   r?   rK  r   Údatesrß   rF   rE  s        €r5   rF   zDateStrategy.filter  s›   ø€ ä(¨Ó3Ð3ˆVÐ@ä &¨¡)Ð+˜3¬R¯W©WÔ5Ü˜s¤B§K¡KÔ0ä%Ø�q‘	˜3 §¡°·±ÄóˆFð ˆ~Ü“yÐ Ø˜$Ÿ.™.¨$¯.©.Ð9Ò9Ø�Ü˜&�>Ð!ä‰w‰~˜iÓ(Ð(r7   rF  r.  s   @r5   rM  rM    s3   ø„ ô#ò
ð
4˜Sð 4 U¨7°C¨<Ñ%8ó 4÷)ð )r7   rM  c                 óf  — t        t        j                  | d«       t        t        j                  |d«       t        | t        j                  «      rt        d| ›d�«      ‚t        |t        j                  «      rt        d|›d�«      ‚t        | |dd«       | |k(  rt        | «      S t        | |«      S )zÉdates(min_value=datetime.date.min, max_value=datetime.date.max)

    A strategy for dates between ``min_value`` and ``max_value``.

    Examples from this strategy shrink towards January 1st 2000.
    r>   r?   rH  z# is a datetime, but expected a daterI  )	r   rQ   rˆ   r)   rl   r   r   r   rM  ©r>   r?   s     r5   rT  rT  +  s™   € ô Œr�w‰w˜	 ;Ô/ÜŒr�w‰w˜	 ;Ô/ô �)œRŸ[™[Ô)Ü   Ð,OÐPÓQÐQÜ�)œRŸ[™[Ô)Ü   Ð,OÐPÓQÐQÜ˜ I¨{¸KÔHØ�IÒÜ�I‹ÐÜ˜	 9Ó-Ð-r7   c                   ó>   ‡ — e Zd Zˆ fd„Zd„ Zdedeedf   fd„Zˆ xZ	S )ÚTimedeltaStrategyc                 ó¼   •— t         ‰| �  «        t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚||k  sJ ‚|| _        || _        y r™   )rß   rà   r)   rQ   râ   r>   r?   rO  s      €r5   rà   zTimedeltaStrategy.__init__D  sR   ø€ Ü‰ÑÔÜ˜)¤R§\¡\Ô2Ð2Ð2Ü˜)¤R§\¡\Ô2Ð2Ð2Ø˜9Ò$Ð$Ð$Ø"ˆŒØ"ˆ�r7   c                 ó`  — i }d}d}dD ]�  }t        |r| j                  nt        j                  j                  |«      }t        |r| j
                  nt        j                  j                  |«      }|j                  ||«      }|||<   |xr ||k(  }|xr ||k(  }Œ‘ t        j                  di |¤ŽS )NT)rŸ   r    r'   rG   )rŠ   r>   rQ   râ   r<   r?   r;   r‹   )	rê   r�   r‘   Ú	low_boundÚ
high_boundrI   r”   r•   r–   s	            r5   rø   zTimedeltaStrategy.do_drawL  s§   € ØˆØˆ	Øˆ
Ø7ò 	4ˆDÜ©I˜$Ÿ.š.¼2¿<¹<×;KÑ;KÈTÓRˆCÜ©Z˜4Ÿ>š>¼R¿\¹\×=MÑ=MÈtÓTˆDØ×#Ñ# C¨Ó.ˆCØˆF�4‰LØ!Ò0 c¨S¡jˆIØ#Ò3¨¨t©‰Jð	4ô �|‰|Ñ%˜fÑ%Ð%r7   rh   r  .c                 ó,  — t        |«      t        j                  urt        |›d�«      ‚| j                  |cxk  r| j
                  k  s*n t        |›d| j                  ›d| j
                  ›d�«      ‚|j                  |j                  |j                  fS )Nz is not a timedeltar  r  r  )	r\   rQ   râ   r   r>   r?   rŸ   r    r'   r	  s     r5   r   zTimedeltaStrategy._invertY  s„   € Ü�‹;œbŸl™lÑ*Ü % Ð*=Ð>Ó?Ð?Ø—‘ %Ô9¨4¯>©>Ô9ÜØ�)˜: d§n¡nÐ%7°r¸$¿.¹.Ð9KÈ1ÐMóð ð —
‘
˜EŸM™M¨5×+=Ñ+=Ð>Ð>r7   )
r×   r]   rØ   rà   rø   r
   r±   r   r   r-  r.  s   @r5   rX  rX  C  s)   ø„ ô#ò&ð?˜Sð ? U¨7°C¨<Ñ%8÷ ?r7   rX  c                 óÄ   — t        t        j                  | d«       t        t        j                  |d«       t        | |dd«       | |k(  rt	        | «      S t        | |¬«      S )zÑtimedeltas(min_value=datetime.timedelta.min, max_value=datetime.timedelta.max)

    A strategy for timedeltas between ``min_value`` and ``max_value``.

    Examples from this strategy shrink towards zero.
    r>   r?   rV  )r   rQ   râ   r   r   rX  rV  s     r5   Ú
timedeltasr_  c  sQ   € ô Œr�|‰|˜Y¨Ô4ÜŒr�|‰|˜Y¨Ô4Ü˜ I¨{¸KÔHØ�IÒÜ�I‹ÐÜ y¸IÔFÐFr7   c                 óD  — t        | t        «      sJ ‚| D ],  }t        |«      j                  |«      j	                  «       sŒ, y |j                  d«      �^ }}ddj                  |«      z   }	 t        j                  |«      |z  j	                  «       S # t        $ r Y yw xY w)NTú/ztzdata.zoneinfo.r  F)
r)   r±   r   ÚjoinpathÚexistsÚsplitÚjoinr   ÚfilesÚModuleNotFoundError)ÚtzpathrË   ÚrootÚpackage_locÚresource_nameÚpackages         r5   Ú_valid_key_cacheablerm  v  sš   € ä�fœeÔ$Ð$Ð$Øò ˆÜ�‹:×Ñ˜sÓ#×*Ñ*Õ,áðð '*§i¡i°£nÑ#ˆ�mØ$ s§x¡x°Ó'<Ñ<ˆð	Ü—O‘O GÓ,¨}Ñ<×DÑDÓFÐFøÜ"ò 	Ùð	ús   Á-%B Â	BÂBc           	      ó  — t        j                  «       5  	 t        j                  dt        «       dgt        t        j                  «       «      ¢­}ddd«       d„ }D �cg c]  } ||«      sŒ|‘Œ }}t        |«      g}| r]dD ]X  }|D �cg c]  } ||› d|› �«      sŒ|‘Œ }}|sŒ#|j                  t        |«      j                  |› d�j                  «      «       ŒZ |S # t        $ r Y Œ¼w xY w# 1 sw Y   Œ xY wc c}w c c}w )a&  SampledFromStrategy branches for IANA keys: plain keys first, then one
    branch per allowed prefix, with the prefix applied as a sampled_from
    transformation. one_of's branch selector is therefore the prefix choice,
    which shrinks towards - and can be re-encoded as - an unprefixed key.ÚignoreÚUTCNc                 óD   — | dk(  xs t        t        j                  | «      S )Nrp  )rm  ÚzoneinfoÚTZPATHrÊ   s    r5   Ú	valid_keyz+_timezone_key_strategies.<locals>.valid_key˜  s   € Ø�e‰|ÒIÔ3´H·O±OÀSÓIÐIr7   )ÚposixÚrightra  z/{})ÚwarningsÚcatch_warningsÚsimplefilterÚEncodingWarningÚ	NameErrorrÎ   rr  Úavailable_timezonesr   r°   ÚmapÚformat)Úallow_prefixr|  rt  rË   ÚplainÚbranchesÚprefixÚkeyss           r5   Ú_timezone_key_strategiesr„  ˆ  s  € ô
 
×	 Ñ	 Ó	"ñ Oð	Ü×!Ñ! (¬OÔ<ð
  %ÐN¤v¬h×.JÑ.JÓ.LÓ'MÑNÐ÷OòJð
 0ÖB�S±9¸Sµ>ŠSÐB€EÐBÜ˜UÓ#Ð$€HÙØ(ò 	QˆFØ#(ÖI˜C©I¸¸ÀÀ#ÀÐ6GÕ,H’CÐIˆDÐIÚØ—‘¤¨TÓ 2× 6Ñ 6¸&¸ÀÐ7G×7NÑ7NÓ OÕPð	Qð €Oøô) ò 	Ùð	ú÷Oð Oüò  Cùò JsE   •C1—C"±!C1Á!C=Á/C=ÂDÂDÃ"	C.Ã+C1Ã-C.Ã.C1Ã1C:©r  r  c                 óN   — t        t        | d«       t        t        | ¬«      «      S )at  A strategy for :wikipedia:`IANA timezone names <List_of_tz_database_time_zones>`.

    As well as timezone names like ``"UTC"``, ``"Australia/Sydney"``, or
    ``"America/New_York"``, this strategy can generate:

    - Aliases such as ``"Antarctica/McMurdo"``, which links to ``"Pacific/Auckland"``.
    - Deprecated names such as ``"Antarctica/South_Pole"``, which *also* links to
      ``"Pacific/Auckland"``.  Note that most but
      not all deprecated timezone names are also aliases.
    - Timezone names with the ``"posix/"`` or ``"right/"`` prefixes, unless
      ``allow_prefix=False``.

    These strings are provided separately from Tzinfo objects - such as ZoneInfo
    instances from the timezones() strategy - to facilitate testing of timezone
    logic without needing workarounds to access non-canonical names.

    .. note::

        `The tzdata package is required on Windows
        <https://docs.python.org/3/library/zoneinfo.html#data-sources>`__.
        ``pip install hypothesis[zoneinfo]`` installs it, if and only if needed.

    On Windows, you may need to access IANA timezone data via the :pypi:`tzdata`
    package.  For non-IANA timezones, such as Windows-native names or GNU TZ
    strings, we recommend using :func:`~hypothesis.strategies.sampled_from` with
    the :pypi:`dateutil <python-dateutil>` package, e.g.
    :meth:`dateutil:dateutil.tz.tzwin.list`.
    r  r…  )r   rá   r   r„  r…  s    r5   Útimezone_keysr‡  §  s"   € ôJ Œt�\ >Ô2ÜÔ*¸ÔEÓFÐFr7   F)Úno_cacherˆ  zzoneinfo.ZoneInfoc                 óê   — t        t        | d«       | rt        j                  j                  nt        j                  }t        t        d¬«      D �cg c]  }|j                  |«      ‘Œ c}«      S c c}w )aD  A strategy for :class:`python:zoneinfo.ZoneInfo` objects.

    If ``no_cache=True``, the generated instances are constructed using
    :meth:`ZoneInfo.no_cache <python:zoneinfo.ZoneInfo.no_cache>` instead
    of the usual constructor.  This may change the semantics of your datetimes
    in surprising ways, so only use it if you know that you need to!

    .. note::

        `The tzdata package is required on Windows
        <https://docs.python.org/3/library/zoneinfo.html#data-sources>`__.
        ``pip install hypothesis[zoneinfo]`` installs it, if and only if needed.
    rˆ  Tr…  )r   rá   rr  ÚZoneInforˆ  r   r„  r}  )rˆ  Úctorrƒ  s      r5   r(  r(  Ð  sX   € ô Œt�X˜zÔ*Ù)1Œ8×Ñ×%Ò%´x×7HÑ7H€Dô Ü$<È$Ô$OÖP˜Dˆ�‰�$�ÒPóð ùÚPs   ÁA0)NN)jrl   rQ   Úoperatorr.   Úsysrw  rr  Ú	functoolsr   r   r   Ú	importlibr   Úpathlibr   Útypingr   r	   r
   r   Úhypothesis.errorsr   r   Ú%hypothesis.internal.conjecture.choicer   Úhypothesis.internal.validationr   r   Ú$hypothesis.strategies._internal.corer   Ú$hypothesis.strategies._internal.lazyr   Ú$hypothesis.strategies._internal.miscr   r   r   Ú*hypothesis.strategies._internal.strategiesr   r   r   r   r   r   Ú%hypothesis.strategies._internal.utilsr   r   r   ÚNaiveDatetimeÚAwareDatetimeÚmodulesÚgetr³   rQ  rA  râ   rš   r6   rC   rU   ra   rj   ro   rq   rv   rƒ   r—   r�   r»   r¼   r®   r¯   rÌ   ró   r  Ú_LEAP_SECONDSrÏ   r§   r¬   r¸   r½   rÔ   rÍ   rÖ   rÛ   r)  rR   rá   rˆ   r:  r<  r>  r‰   r<   r;   rD  rK  rM  rT  rX  r_  rm  r„  r  r‡  r(  r7  rG   r7   r5   ú<module>rŸ     se  ðó Û Û 
Û Û ß /Ñ /Ý Ý ß :Ó :ç ;Ý 9ß KÝ =Ý Bß DÑ D÷÷ õ CáÝ(à˜bŸk™k©8°D«>Ð9Ñ:€MØ˜bŸk™k©8°C«=Ð8Ñ9�MØ�;‰;�?‰?Ð,Ó-Ð-€RÐ-Ø˜bŸk™k¨2¯;©;°tÓ+<Ð<Ñ=€MØ˜bŸk™k¨2¯;©;°sÓ+;Ð;Ñ<�Mà$&§K¡KÐ/€M�Mà$€	Ø7€	àˆr�|‰|¨Ô+€ò
òò8ò$:ò*ò&LòòòD	0ð 09¸9Ñ/Dó+ò\(ð ˆ2�;‰;�t˜Q Ó"€Øˆ2�;‰;�t˜Q Ó"€ð ˆb�l‰l Ô"€Ø
ˆ"�,‰,˜qÔ
!€Ø�—‘ 7Ô+€ð €	à€B‡L�L˜¨Ô+Ø€B‡L�L�q qÔ)Ø€B‡L�L�aÔð€ð €B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜ÓØ€B‡K�K��a˜Óð9€ð< &Ø€B‡K�K��a˜ÓØ€B‡K�K��a˜Óà€B‡K�K��a˜˜Q  AÓ&ð	)ñ Ð òò<ò
*ñ\ �4Ôñ6ó ð6ñ �3Ôñ%ó ð%ôPJ˜Iô Jôf)�~ô f)ðR 
à&*Ø&*ð(ð .2ò	(Ø˜tÑ#ð(à˜tÑ#ð(ð ˜dÑ# dÑ*ð	(ð
 �MÑ"ò(ó 
ð(ð 
à$(Ø$(ð(ð
 !ò(Ø�{‰{˜TÑ!ð(à�{‰{˜TÑ!ð(ð ˜bŸi™iÑ(ð	(ð
 ð(ð �MÑ"ò(ó 
ð(ð 
àØð&ð
 !ò&Øð&àð&ð ˜bŸi™i¨$Ñ.Ñ/ð	&ð
 ð&ð �B—K‘KÑ ò&ó 
ð&ñ ¨Ô-à$(Ø$(ð`Nð :>Ø ò`NØ�{‰{˜TÑ!ð`Nà�{‰{˜TÑ!ð`Nð ˜bŸi™i¨$Ñ.Ñ/°$Ñ6ð	`Nð
 ð`Nð �B—K‘KÑ ò`Nó .ð`NðF �"—'‘'˜$  1Ó%€òô2)�>ô 2)ñj ¨Ô-àŸ™Ÿ™ØŸ™Ÿ™ð9ñ 37³&ò	9Ø�w‰wð9à�w‰wð9ð ˜bŸi™i¨$Ñ.Ñ/ð	9ð
 �B—G‘GÑò9ó .ð9ò20ô')�>ô ')ñT ¨Ô-àŸ™Ÿ™¸2¿7¹7¿;¹;ñ.Ø�w‰wð.Ø13·±ð.à�B—G‘GÑò.ó .ð.ô.?˜ô ?ñ@ ¨Ô-à Ÿl™l×.Ñ.Ø Ÿl™l×.Ñ.ñGØ�|‰|ðGà�|‰|ðGð �B—L‘LÑ!òGó .ðGð$ ñó ðò"ñ> ¨Ô-ð
 ò	%Gð ð	%Gð
 �CÑò%Gó .ð%GñP ¨Ô-Ø"'ò ˜4ð ¨NÐ;NÑ,Oò ó .ðð2 �
r7   