+
    }¯³j²€  ã                  ó4  € ^ RI Ht ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt  ^RI!Ht ^RI"H#t# ^RI$H%t% ^RI&H't' ]'       d   ^R I(H)t) ^R!I"H*t* ^R"I"H+t+ ]! R#]	R$7      t,]'RQ,          t-]%'       d
   R%R&/t.R'R&/t/M/ t./ t/]P`                  ! RRR(R&/].B  ! R) R*]],,          4      4       t1 ! R+ R,]]1],,          ,          4      t2 ! R- R.] PF                  ],,          4      t3 ! R/ R0]3]1],,          ,          4      t4 ! R1 R2]4],,          4      t5 ! R3 R4]3]]1],,          ,          ,          4      t6 ! R5 R6]6],,          4      t7 ! R7 R8]4]8,          4      t9 ! R9 R:]4]8,          4      t: ! R; R<]4],          4      t; ! R= R>]4],          4      t< ! R? R@]4],          4      t= ! RA RB]4],          4      t> ! RC RD]6]8,          4      t? ! RE RF]6]8,          4      t@ ! RG RH]6],          4      tA ! RI RJ]6],          4      tB ! RK RL]6],          4      tC ! RM RN]6],          4      tDRStERTtFRO RP ltGR# )Ué    )ÚannotationsN)Údate)Údatetime)Ú	timedelta)ÚDecimal)ÚAny)Úcast)ÚGeneric)ÚList)ÚOptional)Úoverload)ÚSequence)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnion)ÚADJACENT_TO)ÚCONTAINED_BY)ÚCONTAINS)ÚNOT_EXTEND_LEFT_OF)ÚNOT_EXTEND_RIGHT_OF)ÚOVERLAP)ÚSTRICTLY_LEFT_OF)ÚSTRICTLY_RIGHT_OF)Útypes)Ú	operators)Ú
TypeEngine)Úpy310)ÚLiteral)ÚColumnElement)Ú_TE)ÚTypeEngineMixinÚ_T)ÚboundÚslotsTÚkw_onlyÚfrozenc                  óö  a € ] tR t^;t0 o $ RtRtR]R&    RtR]R&    ]'       d2   ]	P                  ! RR7      tR]R	&   ]	P                  ! R
R7      tR]R&   M2]	P                  ! RJRR/]B tR]R	&   ]	P                  ! RJRR
/]B tR]R&   ]'       g   RKR	RRR
/R R llltR R lt]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       tR  R! ltR" R# ltRLR$ R% lltR& R' ltR( R) ltR* R+ lt]tR, R- lt R. R/ lt!]!t"R0 R1 lt#]#t$R2 R3 lt%R4 R5 lt&R6 R7 lt'R8 R9 lt(R: R; lt)R< R= lt*R> R? lt+R@ RA lt,RB RC lt-RD RE lt.RF RG lt/RH RI lt0RJt1R# )MÚRangea+  Represent a PostgreSQL range.

E.g.::

    r = Range(10, 50, bounds="()")

The calling style is similar to that of psycopg and psycopg2, in part
to allow easier migration from previous SQLAlchemy versions that used
these objects directly.

:param lower: Lower bound value, or None
:param upper: Upper bound value, or None
:param bounds: keyword-only, optional string value that is one of
 ``"()"``, ``"[)"``, ``"(]"``, ``"[]"``.  Defaults to ``"[)"``.
:param empty: keyword-only, optional bool indicating this is an "empty"
 range

.. versionadded:: 2.0

NúOptional[_T]ÚlowerÚupperú[))ÚdefaultÚ_BoundsTypeÚboundsFÚboolÚemptyr/   c               ó(   € V ^8„  d   QhRRRRRRRR/# )é   r,   r+   r-   r1   r0   r3   r2   © )Úformats   "Úf/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sqlalchemy/dialects/postgresql/ranges.pyÚ__annotate__ÚRange.__annotate__a   s2   € ÷ 	ñ 	àð	ð  ð	ð
  ð	ð ñ	ó    c          
     	óL   € V P                   P                  R VRVRVRV/4       R# )r,   r-   r1   r3   N)Ú__dict__Úupdate)Úselfr,   r-   r1   r3   s   &&&$$r8   Ú__init__ÚRange.__init__a   s/   € ð �M‰M× Ñ à˜UØ˜UØ˜fØ˜Uð	ör;   c               ó   € V ^8„  d   QhRR/# ©r5   Úreturnr2   r6   )r7   s   "r8   r9   r:   s   s   € ÷ ñ ˜$ñ r;   c                	ó$   € V P                   '       * # ©N©r3   ©r?   s   &r8   Ú__bool__ÚRange.__bool__s   s   € Ø—:‘:Œ~Ðr;   c               ó   € V ^8„  d   QhRR/# rC   r6   )r7   s   "r8   r9   r:   w   s   € ÷ ñ ˜ñ r;   c                ó   € V P                   # ©z$A synonym for the 'empty' attribute.rG   rH   s   &r8   ÚisemptyÚRange.isemptyv   ó   € ð �z‰zÐr;   c               ó   € V ^8„  d   QhRR/# rC   r6   )r7   s   "r8   r9   r:   }   s   € ÷ ñ ˜$ñ r;   c                ó   € V P                   # rM   rG   rH   s   &r8   Úis_emptyÚRange.is_empty|   rP   r;   c               ó   € V ^8„  d   QhRR/# rC   r6   )r7   s   "r8   r9   r:   ƒ   ó   € ÷ %ñ %˜4ñ %r;   c                ó.   € V P                   ^ ,          R8H  # )z,Return True if the lower bound is inclusive.Ú[©r1   rH   s   &r8   Ú	lower_incÚRange.lower_inc‚   ó   € ð �{‰{˜1�~ Ñ$Ð$r;   c               ó   € V ^8„  d   QhRR/# rC   r6   )r7   s   "r8   r9   r:   ‰   ó   € ÷ 5ñ 5˜4ñ 5r;   c                óP   € V P                   '       * ;'       d    V P                  RJ # )zCReturn True if this range is non-empty and lower bound is
infinite.N)r3   r,   rH   s   &r8   Ú	lower_infÚRange.lower_infˆ   ó!   € ð
 —:‘:Œ~×4Ð4 $§*¡*°Ð"4Ð4r;   c               ó   € V ^8„  d   QhRR/# rC   r6   )r7   s   "r8   r9   r:   �   rV   r;   c                ó.   € V P                   ^,          R8H  # )z,Return True if the upper bound is inclusive.Ú]rY   rH   s   &r8   Ú	upper_incÚRange.upper_inc�   r\   r;   c               ó   € V ^8„  d   QhRR/# rC   r6   )r7   s   "r8   r9   r:   –   r^   r;   c                óP   € V P                   '       * ;'       d    V P                  RJ # )zGReturn True if this range is non-empty and the upper bound is
infinite.N)r3   r-   rH   s   &r8   Ú	upper_infÚRange.upper_inf•   rb   r;   c               ó   € V ^8„  d   QhRR/# )r5   rD   zAbstractSingleRange[_T]r6   )r7   s   "r8   r9   r:   �   s   € ÷ %ñ %Ð$;ñ %r;   c                	ó   € \        4       # rF   )ÚAbstractSingleRangerH   s   &r8   Ú__sa_type_engine__ÚRange.__sa_type_engine__œ   s   € ä"Ó$Ð$r;   c               ó    € V ^8„  d   QhRRRR/# )r5   Úvaluer$   rD   r2   r6   )r7   s   "r8   r9   r:       s   € ÷ 
ñ 
 Rð 
¨Dñ 
r;   c                ó>  € V P                   '       d   R# V P                  fK   V P                  RJ ;'       g5    V P                  ^,          R8X  d   WP                  8  # WP                  8*  # V P                  f5   V P                  ^ ,          R8X  d   WP                  8„  # WP                  8¬  # V P                  ^ ,          R8X  d   WP                  8„  MWP                  8¬  ;'       d5    V P                  ^,          R8X  d   WP                  8  # WP                  8*  # )z3Return True if this range contains the given value.FNÚ)Ú()r3   r,   r-   r1   ©r?   rr   s   &&r8   Ú_contains_valueÚRange._contains_value    s  € ð �:�:ˆ:Ùà�:‰:ÒØ—:‘: Ð%÷ ð à—;‘;˜q•> SÔ(ð Ÿ
™
Ñ"ðð Ÿj™jÑ(ðð �:‰:Òð —;‘;˜q•> SÔ(ð Ÿ
™
Ñ"ðð Ÿj™jÑ(ðð �{‰{˜1�~ Ô$ð —J‘JÒàŸ*™*Ñ$÷
ð 
ð �{‰{˜1�~ Ô$ð —J‘JÑð	
ð Ÿ*™*Ñ$ð	
r;   c               ó   € V ^8„  d   QhRR/# )r5   rD   r   r6   )r7   s   "r8   r9   r:   ¾   s   € ÷ ñ  Cñ r;   c                ó¦  € \        V P                  \        4      '       g!   \        V P                  \        4      '       d   ^# \        V P                  \        4      '       g!   \        V P                  \        4      '       d   R# \        V P                  \
        4      '       g!   \        V P                  \
        4      '       d   \        ^R7      # R# )uA   Determine the â€œstepâ€� for this range, if it is a discrete one.N)Údays)Ú
isinstancer,   Úintr-   r   r   r   rH   s   &r8   Ú_get_discrete_stepÚRange._get_discrete_step¾   s‚   € ô �d—j‘j¤#×&Ò&¬*°T·Z±ZÄ×*EÒ*EÙÜ˜Ÿ
™
¤H×-Ò-´Ø�J‰Jœ÷2
ò 2
ñ
 Ü˜Ÿ
™
¤D×)Ò)¬Z¸¿
¹
ÄD×-IÒ-IÜ !Ô$Ð$ár;   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r5   Úvalue1r+   Úbound1ÚstrÚvalue2Úbound2Úonly_valuesr2   rD   r}   r6   )r7   s   "r8   r9   r:   Ò   sN   € ÷ Wñ WàðWð ðWð ð	Wð
 ðWð ðWð 
ñWr;   c                ó˜  € VR9   pVR9   pYu;J d   f   M MWg8X  d   ^ # V'       d   R# ^# Vf   V'       d   R# ^# Vf   V'       d   ^# R# W$8X  d	   W8X  d   ^ # VR9   pVR9   p	V P                  4       p
V
e[   V'       d   V'       g   W,          pRpMV'       d   W,          pRpV'       d   V	'       g   W:,          pRp	MV	'       d   W:,          pRp	W8  d   R# W8”  d   ^# V'       d   ^ # V'       d   V	'       d   ^ # V'       g   V	'       g   Wg8X  d   ^ # V'       d   ^# R# V'       g   V'       d   ^# R# V	'       g   V'       d   R# ^# ^ # )zÜCompare two range bounds.

Return -1, 0 or 1 respectively when `value1` is less than,
equal to or greater than `value2`.

When `only_value` is ``True``, do not consider the *inclusivity*
of the edges, just their values.
TF>   ru   rX   éÿÿÿÿ>   rX   re   )r~   )r?   r�   r‚   r„   r…   r†   Úvalue1_is_lower_boundÚvalue2_is_lower_boundÚ
value1_incÚ
value2_incÚsteps   &&&&&&     r8   Ú_compare_edgesÚRange._compare_edgesÒ   s=  € ð" !'¨*Ñ 4ÐØ &¨*Ñ 4Ðð ×#Ó#Ø$Ô=Ùç2�rÐ9¸Ð9ØŠ^ß.�2Ð5°AÐ5ØŠ^ß-�1Ð5°2Ð5ð Ô Ô 0Ùà˜zÑ)ˆ
Ø˜zÑ)ˆ
Ø×&Ñ&Ó(ˆàÒ÷ %ß!Ø•N�FØ!%�JøçØ•N�FØ!&�Jß$ß!Ø•N�FØ!%�JøçØ•N�FØ!&�JàŒ?ØˆIØŒ_ÙßÙ÷ ŸjÙß¯
Ø(ÔAÙç 5˜1Ð=¸2Ð=ßß1�qÐ9°rÐ9ßß2�rÐ9¸Ð9ár;   c               ó    € V ^8„  d   QhRRRR/# )r5   Úotherr   rD   r2   r6   )r7   s   "r8   r9   r:   +  s   € ÷ 
ñ 
˜Cð 
 Dñ 
r;   c                ó  € \        V\        4      '       g   \        # V P                  '       d   VP                  '       d   R# V P                  VP                  8w  d   R# V P                  pV P
                  ^ ,          pVP                  pVP
                  ^ ,          pV P                  pV P
                  ^,          pVP                  pVP
                  ^,          p	V P                  W#WE4      ^ 8H  ;'       d    V P                  WgW‰4      ^ 8H  # )zpCompare this range to the `other` taking into account
bounds inclusivity, returning ``True`` if they are equal.
TF)r|   r*   ÚNotImplementedr3   r,   r1   r-   rŽ   ©
r?   r‘   ÚslowerÚslower_bÚolowerÚolower_bÚsupperÚsupper_bÚoupperÚoupper_bs
   &&        r8   Ú__eq__ÚRange.__eq__+  sÓ   € ô
 ˜%¤×'Ò'Ü!Ð!à�:�:ˆ:˜%Ÿ+Ÿ+˜+ÙØ�Z‰Z˜5Ÿ;™;Ô&Ùà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆØ—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆð ×Ñ °&ÓCÀqÑH÷ Mð MØ×#Ñ# F°fÓGÈ1ÑLð	
r;   c               ó    € V ^8„  d   QhRRRR/# ©r5   r‘   ú	Range[_T]rD   r2   r6   )r7   s   "r8   r9   r:   F  s   € ÷ ñ  )ð °ñ r;   c                ó²  € V P                   '       d   R# VP                   '       d   R# V P                  pV P                  ^ ,          pVP                  pVP                  ^ ,          pV P                  W#WE4      ^ 8  d   R# V P                  pV P                  ^,          pVP                  pVP                  ^,          p	V P                  WgW‰4      ^ 8”  d   R# R# )z7Determine whether this range is a contained by `other`.TF)r3   r,   r1   rŽ   r-   r”   s
   &&        r8   Úcontained_byÚRange.contained_byF  s©   € ð �:�:ˆ:Ùð �;�;ˆ;Ùà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆà×Ñ˜v°ÓBÀQÔFÙà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆà×Ñ˜v°ÓBÀQÔFÙár;   c               ó    € V ^8„  d   QhRRRR/# )r5   rr   zUnion[_T, Range[_T]]rD   r2   r6   )r7   s   "r8   r9   r:   c  s   € ÷ /ñ /Ð2ð /°tñ /r;   c                ór   € \        V\        4      '       d   VP                  V 4      # V P                  V4      # )z.Determine whether this range contains `value`.)r|   r*   r£   rw   rv   s   &&r8   ÚcontainsÚRange.containsc  s3   € ô �eœU×#Ò#Ø×%Ñ% dÓ+Ð+à×'Ñ'¨Ó.Ð.r;   c               ó    € V ^8„  d   QhRRRR/# r    r6   )r7   s   "r8   r9   r:   m  s   € ÷ ñ ˜ið ¨Dñ r;   c                ó
  € V P                   '       g   VP                   '       d   R# V P                  pV P                  ^ ,          pV P                  pV P                  ^,          pVP                  pVP                  ^ ,          pVP                  pVP                  ^,          p	V P	                  W#Wg4      ^ 8¼  d   V P	                  W#W‰4      ^ 8:  d   R# V P	                  WgW#4      ^ 8¼  d   V P	                  WgWE4      ^ 8:  d   R# R# )z3Determine whether this range overlaps with `other`.FT©r3   r,   r1   r-   rŽ   ©
r?   r‘   r•   r–   r™   rš   r—   r˜   r›   rœ   s
   &&        r8   ÚoverlapsÚRange.overlapsm  sÑ   € ð �:�:ˆ:˜ŸŸ˜Ùà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆØ—‘ˆØ—<‘< •?ˆð ×Ñ °&ÓCÀqÔHØ×#Ñ# F°fÓGÈ1ÔLáð ×Ñ °&ÓCÀqÔHØ×#Ñ# F°fÓGÈ1ÔLáár;   c               ó    € V ^8„  d   QhRRRR/# r    r6   )r7   s   "r8   r9   r:   �  s   € ÷ Kñ K ið K°Dñ Kr;   c                óô   € V P                   '       g   VP                   '       d   R# V P                  pV P                  ^,          pVP                  pVP                  ^ ,          pV P	                  W#WE4      ^ 8  # )zBDetermine whether this range is completely to the left of `other`.F)r3   r-   r1   r,   rŽ   )r?   r‘   r™   rš   r—   r˜   s   &&    r8   Ústrictly_left_ofÚRange.strictly_left_of�  ó^   € ð �:�:ˆ:˜ŸŸ˜Ùà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆð ×"Ñ" 6°VÓFÈÑJÐJr;   c               ó    € V ^8„  d   QhRRRR/# r    r6   )r7   s   "r8   r9   r:   ž  s   € ÷ Kñ K yð K°Tñ Kr;   c                óô   € V P                   '       g   VP                   '       d   R# V P                  pV P                  ^ ,          pVP                  pVP                  ^,          pV P	                  W#WE4      ^ 8„  # )zCDetermine whether this range is completely to the right of `other`.Fr«   )r?   r‘   r•   r–   r›   rœ   s   &&    r8   Ústrictly_right_ofÚRange.strictly_right_ofž  r³   r;   c               ó    € V ^8„  d   QhRRRR/# r    r6   )r7   s   "r8   r9   r:   ¯  s   € ÷ Lñ L¨	ð L°dñ Lr;   c                óô   € V P                   '       g   VP                   '       d   R# V P                  pV P                  ^ ,          pVP                  pVP                  ^ ,          pV P                  W#WE4      ^ 8¬  # )z>Determine whether this does not extend to the left of `other`.F)r3   r,   r1   rŽ   )r?   r‘   r•   r–   r—   r˜   s   &&    r8   Únot_extend_left_ofÚRange.not_extend_left_of¯  ó^   € ð �:�:ˆ:˜ŸŸ˜Ùà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆð ×"Ñ" 6°VÓFÈ!ÑKÐKr;   c               ó    € V ^8„  d   QhRRRR/# r    r6   )r7   s   "r8   r9   r:   ¾  s   € ÷ Lñ L¨ð L°tñ Lr;   c                óô   € V P                   '       g   VP                   '       d   R# V P                  pV P                  ^,          pVP                  pVP                  ^,          pV P                  W#WE4      ^ 8*  # )z?Determine whether this does not extend to the right of `other`.F)r3   r-   r1   rŽ   )r?   r‘   r™   rš   r›   rœ   s   &&    r8   Únot_extend_right_ofÚRange.not_extend_right_of¾  r¼   r;   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r5   r�   r+   r‚   rƒ   r„   r…   rD   r2   r6   )r7   s   "r8   r9   r:   Í  s<   € ÷ -ñ -àð-ð ð-ð ð	-ð
 ð-ð 
ñ-r;   c                ó–  € V P                  WW4R4      pVR8X  dJ   V P                  4       pVf   R# VR8X  d   VR8X  d   WV,
          8H  # W8H  # VR8X  d   W8H  # WV,
          8H  # V^ 8X  d_   VR8X  d   VR8X  g   VR8X  d   VR8X  d   V P                  4       pVe   R# VR8H  ;'       d    VR8H  ;'       g    VR8H  ;'       d    VR8H  # R# )zLDetermine whether an upper bound is immediately successive to a
lower bound.TFre   rX   rt   ru   rˆ   )rŽ   r~   )r?   r�   r‚   r„   r…   Úresr�   s   &&&&&  r8   Ú_upper_edge_adjacent_to_lowerÚ#Range._upper_edge_adjacent_to_lowerÍ  sö   € ð ×!Ñ! &°&À$ÓGˆØ�"Œ9Ø×*Ñ*Ó,ˆDØŠ|ÙØ˜Œ}Ø˜S”=Ø!¨d¥]Ñ2Ð2à!Ñ+Ð+à˜S”=Ø!Ñ+Ð+à!¨d¥]Ñ2Ð2Ø�AŒXð ˜#”Ø˜c”MØ˜S”=Ø˜c”Mà×.Ñ.Ó0�ØÒ#Ùà˜#‘÷ "ð "Ø˜c‘M÷"ð "à˜S‘=÷ "ð "Ø˜c‘Mð	ñ r;   c               ó    € V ^8„  d   QhRRRR/# r    r6   )r7   s   "r8   r9   r:   ü  s   € ÷ 
ñ 
 ð 
¨tñ 
r;   c                óž  € V P                   '       g   VP                   '       d   R# V P                  pV P                  ^ ,          pV P                  pV P                  ^,          pVP                  pVP                  ^ ,          pVP                  pVP                  ^,          p	V P	                  WEWg4      ;'       g    V P	                  W‰W#4      # )z8Determine whether this range is adjacent to the `other`.F)r3   r,   r1   r-   rÄ   r¬   s
   &&        r8   Úadjacent_toÚRange.adjacent_toü  s¥   € ð �:�:ˆ:˜ŸŸ˜Ùà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆØ—‘ˆØ—<‘< •?ˆà×1Ñ1Ø˜fó
÷ 
ð 
à×/Ñ/Ø˜fó
ð	
r;   c               ó    € V ^8„  d   QhRRRR/# ©r5   r‘   r¡   rD   r6   )r7   s   "r8   r9   r:     s   € ÷ ,
ñ ,
˜9ð ,
¨ñ ,
r;   c           	     ó~  € V P                   '       d   V# VP                   '       d   V # V P                  V4      '       g#   V P                  V4      '       g   \        R4      hV P                  pV P
                  ^ ,          pV P                  pV P
                  ^,          pVP                  pVP
                  ^ ,          pVP                  pVP
                  ^,          p	V P                  W#Wg4      ^ 8  d   Tp
TpMTp
TpV P                  WEW‰4      ^ 8”  d   TpTpMTpT	p\        W¬\        \        W½,           4      R7      # )z¦Compute the union of this range with the `other`.

This raises a ``ValueError`` exception if the two ranges are
"disjunct", that is neither adjacent nor overlapping.
zAAdding non-overlapping and non-adjacent ranges is not implementedrY   )r3   r­   rÈ   Ú
ValueErrorr,   r1   r-   rŽ   r*   r	   r0   ©r?   r‘   r•   r–   r™   rš   r—   r˜   r›   rœ   ÚrlowerÚrlower_bÚrupperÚrupper_bs   &&            r8   ÚunionÚRange.union  s  € ð �:�:ˆ:ØˆLØ�;�;ˆ;ØˆKà�}‰}˜U×#Ò#¨D×,<Ñ,<¸U×,CÒ,CÜð-óð ð
 —‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆØ—‘ˆØ—<‘< •?ˆà×Ñ˜v°ÓBÀQÔFØˆFØ‰HàˆFØˆHà×Ñ˜v°ÓBÀQÔFØˆFØ‰HàˆFØˆHäØ¤4¬°XÕ5HÓ#Iô
ð 	
r;   c               ó    € V ^8„  d   QhRRRR/# rË   r6   )r7   s   "r8   r9   r:   @  s   € ÷ !ñ !˜Yð !¨9ñ !r;   c                	ó$   € V P                  V4      # rF   )rÓ   ©r?   r‘   s   &&r8   Ú__add__ÚRange.__add__@  s   € Ø�z‰z˜%Ó Ð r;   c               ó    € V ^8„  d   QhRRRR/# rË   r6   )r7   s   "r8   r9   r:   C  s"   € ÷ JCñ JC 	ð JC¨iñ JCr;   c           	     óN  € V P                   '       g   VP                   '       d   V # V P                  pV P                  ^ ,          pV P                  pV P                  ^,          pVP                  pVP                  ^ ,          pVP                  pVP                  ^,          p	V P	                  W#Wg4      p
V P	                  WEW‰4      pV
^ 8  d   V^ 8”  d   \        R4      hV P	                  W#W‰4      pV P	                  WEWg4      pV^ 8”  g   V^ 8  d   V # V
^ 8¼  d   V^ 8:  d   \        RRRR7      # V
^ 8:  do   V^ 8¼  dh   V^ 8:  da   VR8X  d   RMRpVR8w  d-   VR8w  d&   V P	                  W#Wn4      ^ 8X  d   \        RRRR7      # \        VV\        \        W>,           4      R7      # V
^ 8¼  do   V^ 8¼  dh   V^ 8:  da   V	R8X  d   R	MRpVR8w  d-   VR8w  d&   V P	                  W�WE4      ^ 8X  d   \        RRRR7      # \        VV\        \        Wõ,           4      R7      # Q R
T  RT 24       h)z¯Compute the difference between this range and the `other`.

This raises a ``ValueError`` exception if the two ranges are
"disjunct", that is neither adjacent nor overlapping.
z5Subtracting a strictly inner range is not implementedNTrG   rX   rt   re   rY   ru   zUnhandled case computing z - )	r3   r,   r1   r-   rŽ   rÍ   r*   r	   r0   )r?   r‘   r•   r–   r™   rš   r—   r˜   r›   rœ   Úsl_vs_olÚsu_vs_ouÚsl_vs_ouÚsu_vs_olrÒ   rÐ   s   &&              r8   Ú
differenceÚRange.differenceC  s  € ð �:�:ˆ:˜ŸŸ˜ØˆKà—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆØ—‘ˆØ—<‘< •?ˆà×&Ñ& v¸ÓJˆØ×&Ñ& v¸ÓJˆØ�aŒ<˜H qœLÜØGóð ð ×&Ñ& v¸ÓJˆØ×&Ñ& v¸ÓJˆð �aŒ<˜8 aœ<ØˆKð �qŒ=˜X¨œ]Ü˜˜t¨4Ô0Ð0ð �qŒ=˜X¨œ]¨x¸1¬}Ø&¨#œo‘s°3ˆHà˜C”Ø ”OØ×'Ñ'¨¸&ÓKØôô ˜T 4¨tÔ4Ð4äØØÜ¤¨XÕ-@ÓAôð ð �qŒ=˜X¨œ]¨x¸1¬}Ø&¨#œo‘s°3ˆHà˜C”Ø ”OØ×'Ñ'¨¸&ÓKØôô ˜T 4¨tÔ4Ð4äØØÜ¤¨XÕ-@ÓAôð ð 	CÐ1°$°°s¸5¸'ÐBÓBˆur;   c               ó    € V ^8„  d   QhRRRR/# rË   r6   )r7   s   "r8   r9   r:   �  s   € ÷ &ñ &˜Yð &¨9ñ &r;   c                	ó$   € V P                  V4      # rF   )rà   r×   s   &&r8   Ú__sub__ÚRange.__sub__�  s   € Ø�‰˜uÓ%Ð%r;   c               ó    € V ^8„  d   QhRRRR/# rË   r6   )r7   s   "r8   r9   r:   ’  s   € ÷ $
ñ $
 )ð $
°	ñ $
r;   c           	     óP  € V P                   '       g*   VP                   '       g   V P                  V4      '       g   \        RRRR7      # V P                  pV P                  ^ ,          pV P
                  pV P                  ^,          pVP                  pVP                  ^ ,          pVP
                  pVP                  ^,          p	V P                  W#Wg4      ^ 8  d   Tp
TpMTp
TpV P                  WEW‰4      ^ 8”  d   TpT	pMTpTp\        V
V\        \        W½,           4      R7      # )zTCompute the intersection of this range with the `other`.

.. versionadded:: 2.0.10

NTrG   rY   )	r3   r­   r*   r,   r1   r-   rŽ   r	   r0   rÎ   s   &&            r8   ÚintersectionÚRange.intersection’  sü   € ð �:�:ˆ:˜ŸŸ˜¨D¯M©M¸%×,@Ò,@Ü˜˜t¨4Ô0Ð0à—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—;‘;˜q•>ˆØ—‘ˆØ—<‘< •?ˆØ—‘ˆØ—<‘< •?ˆà×Ñ˜v°ÓBÀQÔFØˆFØ‰HàˆFØˆHà×Ñ˜v°ÓBÀQÔFØˆFØ‰HàˆFØˆHäØØÜœ XÕ%8Ó9ô
ð 	
r;   c               ó    € V ^8„  d   QhRRRR/# rË   r6   )r7   s   "r8   r9   r:   ¸  s   € ÷ (ñ (˜Yð (¨9ñ (r;   c                	ó$   € V P                  V4      # rF   )rè   r×   s   &&r8   Ú__mul__ÚRange.__mul__¸  s   € Ø× Ñ  Ó'Ð'r;   c               ó   € V ^8„  d   QhRR/# ©r5   rD   rƒ   r6   )r7   s   "r8   r9   r:   »  s   € ÷ !ñ !˜ñ !r;   c                	ó"   € V P                  4       # rF   )Ú
_stringifyrH   s   &r8   Ú__str__ÚRange.__str__»  s   € Ø�‰Ó Ð r;   c               ó   € V ^8„  d   QhRR/# rï   r6   )r7   s   "r8   r9   r:   ¾  s   € ÷ 
"ñ 
"˜Cñ 
"r;   c                	ó¾   € V P                   '       d   R # V P                  V P                  r!Vf   RMTpVf   RMTp\        RV P                  4      w  r4V V RV V 2# )r3   Ú zTuple[str, str]Ú,)r3   r,   r-   r	   r1   )r?   ÚlÚrÚb0Úb1s   &    r8   rñ   ÚRange._stringify¾  s_   € Ø�:�:ˆ:Ùà�z‰z˜4Ÿ:™:ˆ1Ø’)‰B ˆØ’)‰B ˆäÐ'¨¯©Ó5‰ˆà��a�S˜˜!˜˜R˜DÐ!Ð!r;   r6   )NN)F)2Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   Ú__annotations__r-   r   ÚdataclassesÚfieldr1   r3   Ú	dc_kwonlyr   r@   rI   ÚpropertyrN   rS   rZ   r`   rf   rj   ro   rw   r~   rŽ   r�   r£   r§   Ú__contains__r­   r±   Ú
__lshift__r¶   Ú
__rshift__rº   r¿   rÄ   rÈ   rÓ   rØ   rà   rä   rè   rì   rò   rñ   Ú__static_attributes__)Ú__conditional_annotations__s   @r8   r*   r*   ;   sÏ  ø‡ � ñð* €Eˆ<ÓØà€Eˆ<ÓØçØ)×/Ò/¸Ô=ˆ�Ó=Ø!×'Ò'°Ô6ˆˆtÔ6à)×/Ò/ÑJ¸ÐJÀ	ÑJˆ�ÓJØ!×'Ò'ÑC°ÐC¸ÑCˆˆtÓCçñ	ð
 #'ð	ð  ÷	ð 	õ$ð ôó ðð
 ôó ðð
 ô%ó ð%ð
 ô5ó ð5ð ô%ó ð%ð
 ô5ó ð5ð ô%ó ð%õ
õ<÷(Wõr
õ6õ:/ð €Lõõ@Kð "€JõKð #€JõLõLõ-õ^
õ,,
õ\!õJCõX&õ$
õL(õ!÷
"ñ 
"r;   r*   c                  ó0   € ] tR tRtRt]R R l4       tRtR# )Ú
MultiRangeiË  a  Represents a multirange sequence.

This list subclass is an utility to allow automatic type inference of
the proper multi-range SQL type depending on the single range values.
This is useful when operating on literal multi-ranges::

    import sqlalchemy as sa
    from sqlalchemy.dialects.postgresql import MultiRange, Range

    value = literal(MultiRange([Range(2, 4)]))

    select(tbl).where(tbl.c.value.op("@")(MultiRange([Range(-3, 7)])))

.. versionadded:: 2.0.26

.. seealso::

    - :ref:`postgresql_multirange_list_use`.
c               ó   € V ^8„  d   QhRR/# )r5   rD   zAbstractMultiRange[_T]r6   )r7   s   "r8   r9   ÚMultiRange.__annotate__á  s   € ÷ $ñ $Ð$:ñ $r;   c                	ó   € \        4       # rF   )ÚAbstractMultiRangerH   s   &r8   ro   ÚMultiRange.__sa_type_engine__à  s   € ä!Ó#Ð#r;   r6   N)rý   rþ   rÿ   r   r  r  ro   r
  r6   r;   r8   r  r  Ë  s   † ñð( ô$ó ô$r;   r  c                  ó¬   a € ] tR tRtRtRtRt]R R l4       t]R R l4       tR V 3R	 llt ! R
 R]	P                  ]],          ,          4      tRtV ;t# )ÚAbstractRangeiå  z0Base class for single and multi Range SQL types.Tc               ó$   € V ^8„  d   QhRRRRRR/# )r5   Úclsz	Type[_TE]Úkwr   rD   r"   r6   )r7   s   "r8   r9   ÚAbstractRange.__annotate__í  s   € ×:Ñ:˜Ð:¨#Ð:°#Ñ:r;   c                	ó   € R # rF   r6   ©r?   r  r  s   &&,r8   ÚadaptÚAbstractRange.adaptì  s   € Ù7:r;   c               ó$   € V ^8„  d   QhRRRRRR/# )r5   r  zType[TypeEngineMixin]r  r   rD   úTypeEngine[Any]r6   )r7   s   "r8   r9   r  ð  s$   € ÷ ñ Ø(ðØ03ðà	ñr;   c                	ó   € R # rF   r6   r  s   &&,r8   r  r  ï  s   € ñ r;   c               ó$   € V ^8„  d   QhRRRRRR/# )r5   r  z-Type[Union[TypeEngine[Any], TypeEngineMixin]]r  r   rD   r  r6   )r7   s   "r8   r9   r  ô  s(   € ÷  &ñ  &à:ð &ð ð &ð 
ñ	 &r;   c                óÔ   <€ \        V\        \        34      '       d>   WP                  Jd/   V P                  p\        V R2WP                  3RV/4      ! 4       # \        SV `  V4      # )zéDynamically adapt a range type to an abstract impl.

For example ``INT4RANGE().adapt(_Psycopg2NumericRange)`` should
produce a type that will have ``_Psycopg2NumericRange`` behaviors
and also render as ``INT4RANGE`` in SQL and DDL.

Ú	RangeImplÚ__visit_name__)Ú
issubclassÚAbstractSingleRangeImplÚAbstractMultiRangeImplÚ	__class__r#  ÚtypeÚsuperr  )r?   r  r  Ú
visit_namer'  s   &&, €r8   r  r  ô  so   ø€ ô �sÔ4Ô6LÐM×NÒNØŸ>™>Ó)ð ×,Ñ,ˆJÜØ�,˜iÐ(Ø—n‘nÐ%Ø! :Ð.ôó ð ô ‘7‘= Ó%Ð%r;   c                  ó¦   € ] tR tRtRtR R ltR R ltR R ltR	 R
 lt]t	R R lt
]
tR R ltR R ltR R ltR R ltR R ltR R ltRtR# )Ú AbstractRange.comparator_factoryi  z-Define comparison operations for range types.c               ó$   € V ^8„  d   QhRRRRRR/# )r5   r‘   r   r  rD   úColumnElement[bool]r6   )r7   s   "r8   r9   Ú-AbstractRange.comparator_factory.__annotate__  s"   € ÷ 	6ñ 	6 #ð 	6¨Sð 	6Ð5Hñ 	6r;   c                óB   € V P                   P                  \        V4      # )zÎBoolean expression. Returns true if the right hand operand,
which can be an element or a range, is contained within the
column.

kwargs may be ignored by this operator but are required for API
conformance.
)ÚexprÚoperater   )r?   r‘   r  s   &&,r8   r§   Ú)AbstractRange.comparator_factory.contains  s   € ð —9‘9×$Ñ$¤X¨uÓ5Ð5r;   c               ó    € V ^8„  d   QhRRRR/# ©r5   r‘   r   rD   r.  r6   )r7   s   "r8   r9   r/  #  s   € ÷ 	:ñ 	: cð 	:Ð.Añ 	:r;   c                óB   € V P                   P                  \        V4      # )z[Boolean expression. Returns true if the column is contained
within the right hand operand.
)r1  r2  r   r×   s   &&r8   r£   Ú-AbstractRange.comparator_factory.contained_by#  s   € ð —9‘9×$Ñ$¤\°5Ó9Ð9r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  )  s   € ÷ 	5ñ 	5 #ð 	5Ð*=ñ 	5r;   c                óB   € V P                   P                  \        V4      # )zlBoolean expression. Returns true if the column overlaps
(has points in common with) the right hand operand.
)r1  r2  r   r×   s   &&r8   r­   Ú)AbstractRange.comparator_factory.overlaps)  s   € ð —9‘9×$Ñ$¤W¨eÓ4Ð4r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  /  s   € ÷ 	>ñ 	>¨#ð 	>Ð2Eñ 	>r;   c                óB   € V P                   P                  \        V4      # )z[Boolean expression. Returns true if the column is strictly
left of the right hand operand.
)r1  r2  r   r×   s   &&r8   r±   Ú1AbstractRange.comparator_factory.strictly_left_of/  s   € ð —9‘9×$Ñ$Ô%5°uÓ=Ð=r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  7  s   € ÷ 	?ñ 	?¨3ð 	?Ð3Fñ 	?r;   c                óB   € V P                   P                  \        V4      # )z\Boolean expression. Returns true if the column is strictly
right of the right hand operand.
)r1  r2  r   r×   s   &&r8   r¶   Ú2AbstractRange.comparator_factory.strictly_right_of7  s   € ð —9‘9×$Ñ$Ô%6¸Ó>Ð>r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  ?  s   € ÷ 	Añ 	A¨Sð 	AÐ5Hñ 	Ar;   c                óB   € V P                   P                  \        V4      # )zoBoolean expression. Returns true if the range in the column
does not extend right of the range in the operand.
)r1  r2  r   r×   s   &&r8   r¿   Ú4AbstractRange.comparator_factory.not_extend_right_of?  s   € ð —9‘9×$Ñ$Ô%8¸%Ó@Ð@r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  E  s   € ÷ 	@ñ 	@¨Cð 	@Ð4Gñ 	@r;   c                óB   € V P                   P                  \        V4      # )znBoolean expression. Returns true if the range in the column
does not extend left of the range in the operand.
)r1  r2  r   r×   s   &&r8   rº   Ú3AbstractRange.comparator_factory.not_extend_left_ofE  s   € ð —9‘9×$Ñ$Ô%7¸Ó?Ð?r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  K  s   € ÷ 	9ñ 	9 Sð 	9Ð-@ñ 	9r;   c                óB   € V P                   P                  \        V4      # )zeBoolean expression. Returns true if the range in the column
is adjacent to the range in the operand.
)r1  r2  r   r×   s   &&r8   rÈ   Ú,AbstractRange.comparator_factory.adjacent_toK  s   € ð —9‘9×$Ñ$¤[°%Ó8Ð8r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  Q  s   € ÷ 	;ñ 	;˜sð 	;Ð':ñ 	;r;   c                óV   € V P                   P                  \        P                  V4      # ©zyRange expression. Returns the union of the two ranges.
Will raise an exception if the resulting range is not
contiguous.
)r1  r2  r   Úaddr×   s   &&r8   rÓ   Ú&AbstractRange.comparator_factory.unionQ  ó   € ð
 —9‘9×$Ñ$¤Y§]¡]°EÓ:Ð:r;   c               ó    € V ^8„  d   QhRRRR/# r5  r6   )r7   s   "r8   r9   r/  X  s   € ÷ 	;ñ 	; Cð 	;Ð,?ñ 	;r;   c                óV   € V P                   P                  \        P                  V4      # rL  )r1  r2  r   Úsubr×   s   &&r8   rà   Ú+AbstractRange.comparator_factory.differenceX  rO  r;   c               ó    € V ^8„  d   QhRRRR/# )r5   r‘   r   rD   zColumnElement[Range[_T]]r6   )r7   s   "r8   r9   r/  _  s   € ÷ 	;ñ 	; cð 	;Ð.Fñ 	;r;   c                óV   € V P                   P                  \        P                  V4      # )z€Range expression. Returns the intersection of the two ranges.
Will raise an exception if the resulting range is not
contiguous.
)r1  r2  r   Úmulr×   s   &&r8   rè   Ú-AbstractRange.comparator_factory.intersection_  rO  r;   r6   N)rý   rþ   rÿ   r   r  r§   r£   r­   r±   r  r¶   r	  r¿   rº   rÈ   rÓ   rà   rè   r
  r6   r;   r8   Úcomparator_factoryr,    sQ   † Ù;õ	6õ	:õ	5õ	>ð &ˆ
õ	?ð 'ˆ
õ	Aõ	@õ	9õ	;õ	;÷	;ñ 	;r;   rX  r6   )rý   rþ   rÿ   r   r  Úrender_bind_castÚ__abstract__r   r  r   Ú
Comparatorr*   r   rX  r
  Ú__classcell__)r'  s   @r8   r  r  å  s_   ø† Ù:àÐà€LàÜ:ó Ø:àôó ð÷ &ð  &ôDN;˜Z×2Ñ2°5¸µ:Õ>÷ N;ò N;r;   r  c                  ó*   € ] tR tRtRtRtR R ltRtR# )rn   ig  zâBase for PostgreSQL RANGE types.

These are types that return a single :class:`_postgresql.Range` object.

.. seealso::

    `PostgreSQL range functions <https://www.postgresql.org/docs/current/static/functions-range.html>`_

Tc               ó    € V ^8„  d   QhRRRR/# )r5   rr   z
Range[Any]rD   r   r6   )r7   s   "r8   r9   Ú AbstractSingleRange.__annotate__t  s   € ÷ %ñ %¨*ð %¸ñ %r;   c                	óè  € VP                   e   VP                   MVP                  p\        V\        4      '       d&   \	        V4      '       d   \        4       # \        4       # \        V\        \        34      '       d   \        4       # \        V\        4      '       d'   VP                  '       g   \        4       # \        4       # \        V\        4      '       d   \        4       # \         P"                  # rF   )r,   r-   r|   r}   Ú	_is_int32Ú	INT4RANGEÚ	INT8RANGEr   ÚfloatÚNUMRANGEr   ÚtzinfoÚTSRANGEÚ	TSTZRANGEr   Ú	DATERANGEÚsqltypesÚNULLTYPE)r?   rr   Úspecs   && r8   Ú_resolve_for_literalÚ(AbstractSingleRange._resolve_for_literalt  s¥   € Ø#Ÿk™kÒ5ˆu�{Š{¸5¿;¹;ˆä�dœC× Ò ô ˜×ÒÜ “{Ð"ä “{Ð"Ü˜œw¬Ð.×/Ò/Ü“:ÐÜ˜œh×'Ò'Ø$(§K§K K”7“9Ð@´Y³[Ð@Ü˜œd×#Ò#Ü“;Ðô ×$Ñ$Ð$r;   r6   N©rý   rþ   rÿ   r   r  rZ  rm  r
  r6   r;   r8   rn   rn   g  s   † ñð €L÷%ñ %r;   rn   c                  ó   € ] tR tRtRtRtR# )r%  iŠ  zMMarker for AbstractSingleRange that will apply a subclass-specific
adaptationr6   N©rý   rþ   rÿ   r   r  r
  r6   r;   r8   r%  r%  Š  ó   † õr;   r%  c                  ó*   € ] tR tRtRtRtR R ltRtR# )r  i�  zvBase for PostgreSQL MULTIRANGE types.

these are types that return a sequence of :class:`_postgresql.Range`
objects.

Tc               ó    € V ^8„  d   QhRRRR/# )r5   rr   zSequence[Range[Any]]rD   r   r6   )r7   s   "r8   r9   ÚAbstractMultiRange.__annotate__™  s   € ÷ %ñ %Ð*>ð %À3ñ %r;   c                	ó|  € V'       g   \         P                  # V^ ,          pVP                  e   VP                  MVP                  p\	        V\
        4      '       dO   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   \        4       # \        4       # \	        V\        \        34      '       d   \        4       # \	        V\        4      '       d'   VP                  '       g   \        4       # \        4       # \	        V\         4      '       d   \#        4       # \         P                  # )r   c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irF   )ra  )Ú.0rù   s   & r8   Ú	<genexpr>Ú:AbstractMultiRange._resolve_for_literal.<locals>.<genexpr>¤  s   é € Ð/© A”9˜Q—<�<«ùs   ‚FT)rj  rk  r,   r-   r|   r}   ÚallÚINT4MULTIRANGEÚINT8MULTIRANGEr   rd  ÚNUMMULTIRANGEr   rf  ÚTSMULTIRANGEÚTSTZMULTIRANGEr   ÚDATEMULTIRANGE)r?   rr   Úfirstrl  s   &&  r8   rm  Ú'AbstractMultiRange._resolve_for_literal™  s×   € ßä×$Ñ$Ð$Ø�a•ˆØ#Ÿk™kÒ5ˆu�{Š{¸5¿;¹;ˆä�dœC× Ò ÷ ‹sÑ/©Ó/�s�sŠsÑ/©Ó/×/Ò/Ü%Ó'Ð'ä%Ó'Ð'Ü˜œw¬Ð.×/Ò/Ü “?Ð"Ü˜œh×'Ò'Ø)-¯¯¨”<“>ÐJ¼.Ó:JÐJÜ˜œd×#Ò#Ü!Ó#Ð#ô ×$Ñ$Ð$r;   r6   Nro  r6   r;   r8   r  r  �  s   † ñð €L÷%ñ %r;   r  c                  ó   € ] tR tRtRtRtR# )r&  i³  zLMarker for AbstractMultiRange that will apply a subclass-specific
adaptationr6   Nrq  r6   r;   r8   r&  r&  ³  rr  r;   r&  c                  ó   € ] tR tRtRtR tRtR# )rb  i¸  z(Represent the PostgreSQL INT4RANGE type.r6   N©rý   rþ   rÿ   r   r  r#  r
  r6   r;   r8   rb  rb  ¸  ó
   † Ù2à „Nr;   rb  c                  ó   € ] tR tRtRtR tRtR# )rc  i¾  z(Represent the PostgreSQL INT8RANGE type.r6   Nr†  r6   r;   r8   rc  rc  ¾  r‡  r;   rc  c                  ó   € ] tR tRtRtR tRtR# )re  iÄ  z'Represent the PostgreSQL NUMRANGE type.r6   Nr†  r6   r;   r8   re  re  Ä  s
   † Ù1à„Nr;   re  c                  ó   € ] tR tRtRtR tRtR# )ri  iÊ  z(Represent the PostgreSQL DATERANGE type.r6   Nr†  r6   r;   r8   ri  ri  Ê  r‡  r;   ri  c                  ó   € ] tR tRtRtR tRtR# )rg  iÐ  ú&Represent the PostgreSQL TSRANGE type.r6   Nr†  r6   r;   r8   rg  rg  Ð  s
   † Ù0à„Nr;   rg  c                  ó   € ] tR tRtRtR tRtR# )rh  iÖ  ú(Represent the PostgreSQL TSTZRANGE type.r6   Nr†  r6   r;   r8   rh  rh  Ö  r‡  r;   rh  c                  ó   € ] tR tRtRtR tRtR# )r|  iÜ  z-Represent the PostgreSQL INT4MULTIRANGE type.r6   Nr†  r6   r;   r8   r|  r|  Ü  ó
   † Ù7à%„Nr;   r|  c                  ó   € ] tR tRtRtR tRtR# )r}  iâ  z-Represent the PostgreSQL INT8MULTIRANGE type.r6   Nr†  r6   r;   r8   r}  r}  â  r�  r;   r}  c                  ó   € ] tR tRtRtR tRtR# )r~  iè  z,Represent the PostgreSQL NUMMULTIRANGE type.r6   Nr†  r6   r;   r8   r~  r~  è  s
   † Ù6à$„Nr;   r~  c                  ó   € ] tR tRtRtR tRtR# )r�  iî  z-Represent the PostgreSQL DATEMULTIRANGE type.r6   Nr†  r6   r;   r8   r�  r�  î  r�  r;   r�  c                  ó   € ] tR tRtRtR tRtR# )r  iô  rŒ  r6   Nr†  r6   r;   r8   r  r  ô  s
   † Ù0à#„Nr;   r  c                  ó   € ] tR tRtRtR tRtR# )r€  iú  rŽ  r6   Nr†  r6   r;   r8   r€  r€  ú  s
   † Ù2à%„Nr;   r€  c               ó    € V ^8„  d   QhRRRR/# )r5   rù   z
Range[int]rD   r2   r6   )r7   s   "r8   r9   r9     s   € ÷ ñ �ð  ñ r;   c                ó
  € V P                   R J ;'       g1    \        V P                   u;8*  ;'       d
    \        8*  Mu ;'       d?    V P                  R J ;'       g)    \        V P                  u;8*  ;'       d
    \        8*  # u # rF   )r,   Ú_min_int_32Ú_max_int_32r-   )rù   s   &r8   ra  ra    sa   € Ø�G‰G�tˆO×DÐDœ{¨a¯g©g×DÔD¼ÔD÷ ð Ø	�‰�4ˆ×@Ð@œ;¨!¯'©'×@Ô@´[Ñ@ðÙ@ðr;   )z()r.   z(]z[]r6   iÿÿÿi   €)HÚ
__future__r   r  r   r   r   Údecimalr   Útypingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rö   r   rj  ÚsqlÚsql.type_apir   Úutilr   Úutil.typingr    Úsql.elementsr!   r"   r#   r$   r0   Údc_slotsr  Ú	dataclassr*   r  r  rn   r%  r  r&  r}   rb  rc  re  ri  rg  rh  r|  r}  r~  r�  r  r€  r™  r˜  ra  r6   r;   r8   Ú<module>r¤     sI  ðõ #ã Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý å "Ý #Ý Ý )Ý *Ý Ý 'Ý (Ý !Ý Ý &Ý Ý "çÝ-Ý#Ý/áˆT˜Ô€àÐ,Õ-€çØ˜ˆ€HØ˜DÐ!�Ià€HØ€Ið ×ÒÑ/˜dÐ/ hÑ/ôL
"ˆG�B�Kó L
"ó 0ðL
"ô^$��e˜B•i•ô $ô4;�H×'Ñ'¨Õ+ô ;ôD %˜-¨¨b­	Õ2ô  %ôFÐ1°"Õ5ô ô
!%˜ x°°bµ	Õ':Õ;ô !%ôHÐ/°Õ3ô ô
!Ð# CÕ(ô !ô!Ð# CÕ(ô !ô Ð" 7Õ+ô  ô!Ð# DÕ)ô !ôÐ! (Õ+ô ô!Ð# HÕ-ô !ô&Ð'¨Õ,ô &ô&Ð'¨Õ,ô &ô%Ð& wÕ/ô %ô&Ð'¨Õ-ô &ô$Ð% hÕ/ô $ô&Ð'¨Õ1ô &ð €Ø€÷r;   