+
    }¯³j>H  ã                   ól  € R t ^ RIt^ RIHtHt ^ RIHtHtHt ^ RIH	t	H
t
Ht  ! R R4      tR*R lt ! R R	4      t ! R
 R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]! ]]4       ]! ]]R^RR7      t]P-                  4        ]! ]]R^RR7      t]P-                  4        ]! ]]RRRR7      t]P-                  4        ]! R]RR R!R7      t]P-                  4        ]! R"]R#R$R%R7      t]P-                  4        ]! R&]R'R(R)R7      t]P-                  4        R# )+z1Implementation of the Range type and adaptation

N)ÚProgrammingErrorÚInterfaceError)Ú	ISQLQuoteÚadaptÚregister_adapter)Únew_typeÚnew_array_typeÚregister_typec                   óð   a € ] tR t^#t o RtRtRR ltR tR t]	R 4       t
]	R 4       t]	R 4       t]	R	 4       t]	R
 4       t]	R 4       t]	R 4       tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ÚRangeam  Python representation for a PostgreSQL |range|_ type.

:param lower: lower bound for the range. `!None` means unbound
:param upper: upper bound for the range. `!None` means unbound
:param bounds: one of the literal strings ``()``, ``[)``, ``(]``, ``[]``,
    representing whether the lower or upper bounds are included
:param empty: if `!True`, the range is empty

Nc                ó”   € V'       g+   VR9  d   \        RV: 24      hWn        W n        W0n        R# R;V n        ;V n        V n        R# )ú[)zbound flags not valid: N)r   z(]z()z[])Ú
ValueErrorÚ_lowerÚ_upperÚ_bounds)ÚselfÚlowerÚupperÚboundsÚemptys   &&&&&ÚP/home/luca/screen-checking/.venv/lib/python3.14/site-packages/psycopg2/_range.pyÚ__init__ÚRange.__init__/   sE   € ßØÐ5Ô5Ü Ð#:¸6¹*Ð!EÓFÐFàŒKØŒKØ!ŽLà7;Ð;ˆDŒKÐ;˜$œ+¨®ó    c                óÜ   € V P                   f   V P                  P                   R2# RP                  V P                  P                  V P                  V P
                  V P                   4      # )Nz(empty=True)z{}({!r}, {!r}, {!r}))r   Ú	__class__Ú__name__Úformatr   r   ©r   s   &r   Ú__repr__ÚRange.__repr__:   sV   € Ø�<‰<ÒØ—n‘n×-Ñ-Ð.¨lÐ;Ð;à)×0Ñ0°·±×1HÑ1HØ—‘˜TŸ[™[¨$¯,©,ó8ð 8r   c                óâ   € V P                   f   R# V P                   ^ ,          \        V P                  4      R\        V P                  4      V P                   ^,          .pRP	                  V4      # )Nr   z, Ú )r   Ústrr   r   Újoin)r   Úitemss   & r   Ú__str__ÚRange.__str__A   sY   € Ø�<‰<ÒÙð �L‰L˜�OÜ�—‘ÓØÜ�—‘ÓØ�L‰L˜�Oð
ˆð �w‰w�u‹~Ðr   c                ó   € V P                   # )z:The lower bound of the range. `!None` if empty or unbound.)r   r   s   &r   r   ÚRange.lowerN   ó   € ð �{‰{Ðr   c                ó   € V P                   # )z:The upper bound of the range. `!None` if empty or unbound.)r   r   s   &r   r   ÚRange.upperS   r+   r   c                ó   € V P                   RJ # )z`!True` if the range is empty.N©r   r   s   &r   ÚisemptyÚRange.isemptyX   s   € ð �|‰|˜tÐ#Ð#r   c                ó>   € V P                   f   R# V P                  RJ # )z0`!True` if the range doesn't have a lower bound.NF©r   r   r   s   &r   Ú	lower_infÚRange.lower_inf]   ó    € ð �<‰<ÒÙØ�{‰{˜dÐ"Ð"r   c                ó>   € V P                   f   R# V P                  RJ # )z1`!True` if the range doesn't have an upper bound.NF©r   r   r   s   &r   Ú	upper_infÚRange.upper_infd   r6   r   c                ój   € V P                   e   V P                  f   R# V P                   ^ ,          R8H  # )z4`!True` if the lower bound is included in the range.FÚ[r3   r   s   &r   Ú	lower_incÚRange.lower_inck   ó-   € ð �<‰<Ò 4§;¡;Ò#6ÙØ�|‰|˜A� #Ñ%Ð%r   c                ój   € V P                   e   V P                  f   R# V P                   ^,          R8H  # )z4`!True` if the upper bound is included in the range.FÚ]r8   r   s   &r   Ú	upper_incÚRange.upper_incr   r?   r   c                óV  € V P                   f   R# V P                  e>   V P                   ^ ,          R8X  d   WP                  8  d   R# MWP                  8:  d   R# V P                  e@   V P                   ^,          R8X  d   WP                  8”  d   R#  R# WP                  8¼  d   R# R# )NFr<   rA   T©r   r   r   )r   Úxs   &&r   Ú__contains__ÚRange.__contains__y   s‹   € Ø�<‰<ÒÙà�;‰;Ò"Ø�|‰|˜A� #Ô%Ø—{‘{”?Ù ð #ð Ÿ™Ô#Ù à�;‰;Ò"Ø�|‰|˜A� #Ô%Ø—{‘{”?Ù ð #ñ ð Ÿ™Ô#Ù ár   c                ó   € V P                   R J# ©Nr/   r   s   &r   Ú__bool__ÚRange.__bool__�   s   € Ø�|‰| 4Ð'Ð'r   c                óè   € \        V\        4      '       g   R # V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # ©F)Ú
isinstancer   r   r   r   ©r   Úothers   &&r   Ú__eq__ÚRange.__eq__’   s[   € Ü˜%¤×'Ò'ÙØ—‘˜uŸ|™|Ñ+÷ .ð .Ø—‘˜uŸ|™|Ñ+÷.ð .à—‘ §¡Ñ-ð	/r   c                ó.   € V P                  V4      '       * # rJ   )rR   rP   s   &&r   Ú__ne__ÚRange.__ne__™   s   € Ø—;‘;˜uÓ%Ô%Ð%r   c                óZ   € \        V P                  V P                  V P                  34      # rJ   )Úhashr   r   r   r   s   &r   Ú__hash__ÚRange.__hash__œ   s    € Ü�T—[‘[ $§+¡+¨t¯|©|Ð<Ó=Ð=r   c                ó°   € \        V\        4      '       g   \        # R F3  p\        W4      p\        W4      pW48X  d   K!  Vf    R# Vf    R# W48  u # 	  R# )r   TF©r   r   r   )rO   r   ÚNotImplementedÚgetattr)r   rQ   ÚattrÚ
self_valueÚother_values   &&   r   Ú__lt__ÚRange.__lt__£   s\   € Ü˜%¤×'Ò'Ü!Ð!Û3ˆDÜ  Ó,ˆJÜ! %Ó.ˆKØÔ(ÙØÒ#ÚØÒ$Úà!Ñ/Ò/ñ 4ñ r   c                ó4   € W8X  d   R # V P                  V4      # ©T)rb   rP   s   &&r   Ú__le__ÚRange.__le__³   ó   € ØŒ=Ùà—;‘;˜uÓ%Ð%r   c                ó\   € \        V\        4      '       d   VP                  V 4      # \        # rJ   )rO   r   rb   r]   rP   s   &&r   Ú__gt__ÚRange.__gt__¹   s$   € Ü�eœU×#Ò#Ø—<‘< Ó%Ð%ä!Ð!r   c                ó4   € W8X  d   R # V P                  V4      # re   )rj   rP   s   &&r   Ú__ge__ÚRange.__ge__¿   rh   r   c                ó~   € V P                    Uu/ uF"  p\        W4      '       g   K  V\        W4      bK$  	  up# u upi rJ   )Ú	__slots__Úhasattrr^   )r   Úslots   & r   Ú__getstate__ÚRange.__getstate__Å   s>   € àŸšó?Ù&�¬'°$×*=ô *�”g˜dÓ)Ò)Ù&ñ?ð 	?ùò ?s   �:§:c                óP   € VP                  4        F  w  r#\        WV4       K  	  R # rJ   )r&   Úsetattr)r   Ústaterr   Úvalues   &&  r   Ú__setstate__ÚRange.__setstate__É   s   € Ø Ÿ;™;ž=‰KˆDÜ�D Ö&ó )r   rE   r\   )NNr   F)r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rp   r   r    r'   Úpropertyr   r   r0   r4   r9   r=   rB   rG   rK   rR   rU   rY   rb   rf   rj   rm   rs   ry   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   #   sè   ø‡ € ñð 0€Iô	<ò8òð ñó ðð ñó ðð ñ$ó ð$ð ñ#ó ð#ð ñ#ó ð#ð ñ&ó ð&ð ñ&ó ð&òò,(ò/ò&ò>òò &ò"ò&ò?÷'ð 'r   r   c                ó†   € \         P                  WV4      pTP                  V'       * ;'       d    T;'       g    R4       V# )a™  Create and register an adapter and the typecasters to convert between
a PostgreSQL |range|_ type and a PostgreSQL `Range` subclass.

:param pgrange: the name of the PostgreSQL |range| type. Can be
    schema-qualified
:param pyrange: a `Range` strict subclass, or just a name to give to a new
    class
:param conn_or_curs: a connection or cursor used to find the oid of the
    range and its subtype; the typecaster is registered in a scope limited
    to this object, unless *globally* is set to `!True`
:param globally: if `!False` (default) register the typecaster only on
    *conn_or_curs*, otherwise register it globally
:return: `RangeCaster` instance responsible for the conversion

If a string is passed to *pyrange*, a new `Range` subclass is created
with such name and will be available as the `~RangeCaster.range` attribute
of the returned `RangeCaster` object.

The function queries the database on *conn_or_curs* to inspect the
*pgrange* type and raises `~psycopg2.ProgrammingError` if the type is not
found.  If querying the database is not advisable, use directly the
`RangeCaster` class and register the adapter and typecasters using the
provided functions.

N)ÚRangeCasterÚ_from_dbÚ	_register)ÚpgrangeÚpyrangeÚconn_or_cursÚgloballyÚcasters   &&&& r   Úregister_ranger�   Î   s;   € ô4 ×!Ñ! '°LÓA€FØ
×Ñ˜”\×2Ð2 l×:Ð:°dÔ;Ø€Mr   c                   ó@   a € ] tR t^ít o RtRtR tR tR tR t	Rt
V tR# )ÚRangeAdapterz–`ISQLQuote` adapter for `Range` subclasses.

This is an abstract class: concrete classes must set a `name` class
attribute or override `getquoted()`.
Nc                ó   € Wn         R # rJ   )Úadapted)r   r‘   s   &&r   r   ÚRangeAdapter.__init__õ   s   € ØŽr   c                ó2   € V P                   \        J d   V # R # rJ   )Ú_protor   )r   Úprotos   &&r   Ú__conform__ÚRangeAdapter.__conform__ø   s   € Ø�;‰;œ)Ó#ØˆKñ $r   c                ó   € Wn         R # rJ   )Ú_conn)r   Úconns   &&r   ÚprepareÚRangeAdapter.prepareü   s   € ØŽ
r   c                ó
  € V P                   f   \        R4      hV P                  pVP                  '       d#   RV P                   P	                  R4      ,           # VP
                  eT   \        VP
                  4      p\        VR4      '       d   VP                  V P                  4       VP                  4       pMRpVP                  eT   \        VP                  4      p\        VR4      '       d   VP                  V P                  4       VP                  4       pMRpV P                   P	                  R4      R,           V,           R,           V,           R,           VP                  P	                  R4      ,           R	,           # )
NzMRangeAdapter must be subclassed overriding its name or the getquoted() methods	   'empty'::Úutf8r›   s   NULLó   (s   , s   , 's   '))ÚnameÚNotImplementedErrorr‘   r0   Úencoder   r   rq   r›   r™   Ú	getquotedr   r   )r   ÚrÚar   r   s   &    r   r£   ÚRangeAdapter.getquotedÿ   s&  € Ø�9‰9ÒÜ%ð,ó-ð -ð �L‰LˆØ�9�9ˆ9Ø $§)¡)×"2Ñ"2°6Ó":Õ:Ð:à�7‰7ÒÜ�a—g‘g“ˆAÜ�q˜)×$Ò$Ø—	‘	˜$Ÿ*™*Ô%Ø—K‘K“M‰EàˆEà�7‰7ÒÜ�a—g‘g“ˆAÜ�q˜)×$Ò$Ø—	‘	˜$Ÿ*™*Ô%Ø—K‘K“M‰EàˆEà�y‰y×Ñ Ó'¨$Õ.°Õ6¸Õ>ÀÕFØõØ—y‘y×'Ñ'¨Ó/õ0Ø27õ8ð 	8r   )r™   r‘   )r   r{   r|   r}   r~   r    r   r–   r›   r£   r€   r�   r‚   s   @r   r�   r�   í   s*   ø‡ € ñð
 €Dòòò÷8ð 8r   r�   c                   ó¶   a € ] tR tRt o RtRR ltR t]R 4       t]	P                  ! R]	P                  4      t]	P                  ! R4      tRR	 ltRR
 ltRtV tR# )r…   i  zùHelper class to convert between `Range` and PostgreSQL range types.

Objects of this class are usually created by `register_range()`. Manual
creation could be useful if querying the database is not advisable: in
this case the oids must be provided.
Nc                óJ  € W@n         V P                  W4       V P                  P                  ;'       g!    V P                  P                  P
                  p\        V3W`P                  4      V n        Ve'   \        V3VR,           V P                  4      V n
        R # R V n
        R # )NÚARRAY)Úsubtype_oidÚ_create_rangesÚadapterr    r   r   r   ÚparseÚ
typecasterr   Úarray_typecaster)r   rˆ   r‰   Úoidrª   Ú	array_oidr    s   &&&&&& r   r   ÚRangeCaster.__init__$  s   € Ø&ÔØ×Ñ˜GÔ-à�|‰|× Ñ ×CÐC D§L¡L×$:Ñ$:×$CÑ$Cˆä" C 6¨4·±Ó<ˆŒàÒ Ü$2Ø�˜d W�n¨d¯o©oó%?ˆDÖ!ð %)ˆDÖ!r   c                ó<  € RV n         \        V\        4      '       d)   \        V\        3/ 4      V n         WP                   n        M' \        V\        4      '       d   V\        Jd   Wn         V P                   f   \        R4      hRV n         \        V\        4      '       d   \        V\        3/ 4      V n        \        V\        4      '       d   V\        Jd   W n        T P                  f   \        R4      hR#   \         d     Lœi ; i  \         d     L9i ; i)z0Create Range and RangeAdapter classes if needed.Nz:pgrange must be a string or a RangeAdapter strict subclassz1pyrange must be a type or a Range strict subclass)
r¬   rO   r$   Útyper�   r    Ú
issubclassÚ	TypeErrorÚranger   )r   rˆ   r‰   s   &&&r   r«   ÚRangeCaster._create_ranges2  s  € ð ˆŒÜ�gœs×#Ò#Ü ¬,¨¸"Ó=ˆDŒLØ '�L‰LÕðÜ˜g¤|×4Ò4Ø#¬<Ó7Ø#*”Lð �<‰<ÒÜØLóNð Nð ˆŒ
ð	Ü˜'¤3×'Ò'Ü! '¬E¨8°RÓ8�”
Ü˜'¤5×)Ò)¨g¼UÓ.BØ$”
ð �:‰:ÒÜØCóEð Eñ øô! ô Ùðûô ô 	Ùð	ús%   Á&C< ÂAD Ã<D
Ä	D
ÄDÄDc                ó\  € ^ RI Hp ^ RIHp V! V4      w  rgVP                  P
                  R8  d'   \        RVP                  P
                  ,          4      hVP                  pRV9   d   VP                  R^4      w  ršMTp
Rp	VP                  RW©34       VP                  4       pV'       gw    RpVP                  V8X  d   VP                  R	4       R
pVP                  RV34       VP                  4       pV'       d   VR,          w  r©X'       d   TP                  R4       W„8w  d#   VP                  '       g   VP                  4        V'       g   \        RV R24      hVR,          w  rÞp\        WWÞVR7      #   \         d     Li ; i  X'       d   TP                  R4       i i ; i)zlReturn a `RangeCaster` instance for the type *pgrange*.

Raise `ProgrammingError` if the type is not found.
)ÚSTATUS_IN_TRANSACTION)Ú_solve_conn_cursiX` z'range types not available in version %sÚ.Úpublicz¯select rngtypid, rngsubtype, typarray
from pg_range r
join pg_type t on t.oid = rngtypid
join pg_namespace ns on ns.oid = typnamespace
where typname = %s and ns.nspname = %s;
FzSAVEPOINT register_typeTz³SELECT rngtypid, rngsubtype, typarray, typname, nspname
from pg_range r
join pg_type t on t.oid = rngtypid
join pg_namespace ns on ns.oid = typnamespace
WHERE t.oid = %s::regtype
:é   NNz#ROLLBACK TO SAVEPOINT register_typezPostgreSQL range 'z' not found:Nr¾   N©r°   rª   r±   )Úpsycopg2.extensionsrº   Úpsycopg2.extrasr»   ÚinfoÚserver_versionr   ÚstatusÚsplitÚexecuteÚfetchoneÚ
autocommitÚrollbackr…   )r   r    r‰   rŠ   rº   r»   rš   ÚcursÚconn_statusÚschemaÚtnameÚrecÚ	savepointr´   ÚsubtypeÚarrays   &&&&            r   r†   ÚRangeCaster._from_dbU  sš  € õ 	>Ý4Ù% lÓ3‰
ˆà�9‰9×#Ñ# eÔ+Ü"Ð#LØ—)‘)×*Ñ*õ$+ó ,ð ,ð —k‘kˆð �$Œ;Ø ŸJ™J s¨AÓ.‰MˆF�EàˆEØˆFð 	�‰ð ð €_ô	ð �m‰m‹oˆçðHØ!�	ð —;‘;Ð"7Ô7Ø—L‘LÐ!:Ô;Ø $�Ià—‘ð ð €Xôð —m‘m“o�ßØ$'¨¥G‘M�EçØ—L‘LÐ!FÔGð Ô/¸¿¿¸Ø�M‰MŒOçÜ"Ø$ T F¨+Ð6ó8ð 8ð  # 2�wÑˆ�uä˜4Ø°Uô<ð 	<øô) $ô Ùðû÷ Ø—L‘LÐ!FÕGð ús*   Â09E> Ã)#F Å>FÆ	F ÆFÆF ÆF+a]  
        ( \(|\[ )                   # lower bound flag
        (?:                         # lower bound:
          " ( (?: [^"] | "")* ) "   #   - a quoted string
          | ( [^",]+ )              #   - or an unquoted string
        )?                          #   - or empty (not catched)
        ,
        (?:                         # upper bound:
          " ( (?: [^"] | "")* ) "   #   - a quoted string
          | ( [^"\)\]]+ )           #   - or an unquoted string
        )?                          #   - or empty (not catched)
        ( \)|\] )                   # upper bound flag
        z	(["\\])\1c                óž  € Vf   R # VR8X  d   V P                  RR7      # V P                  P                  V4      pVf   \        RV R24      hVP	                  ^4      pVf2   VP	                  ^4      pVe   V P
                  P                  RV4      pVP	                  ^4      pVf2   VP	                  ^4      pVe   V P
                  P                  RV4      pVe9   VP                  V P                  V4      pVP                  V P                  V4      pVP	                  ^4      VP	                  ^4      ,           pV P                  WEV4      # )Nr   T)r   zfailed to parse range: 'Ú'z\1)	r·   Ú	_re_rangeÚmatchr   ÚgroupÚ_re_undoubleÚsubÚcastrª   )r   ÚsÚcurÚmr   r   r   s   &&&    r   r­   ÚRangeCaster.parse²  s&  € ØŠ9Ùà�Œ<Ø—:‘: D�:Ó)Ð)à�N‰N× Ñ  Ó#ˆØŠ9Ü Ð#;¸A¸3¸aÐ!@ÓAÐAà—‘˜“
ˆØŠ=Ø—G‘G˜A“JˆEØÒ Ø×)Ñ)×-Ñ-¨e°UÓ;�à—‘˜“
ˆØŠ=Ø—G‘G˜A“JˆEØÒ Ø×)Ñ)×-Ñ-¨e°UÓ;�àŠ?Ø—H‘H˜T×-Ñ-¨uÓ5ˆEØ—H‘H˜T×-Ñ-¨uÓ5ˆEà—‘˜“˜aŸg™g a›jÕ(ˆà�z‰z˜%¨Ó/Ð/r   c                óº   € \        V P                  V4       V P                  e   \        V P                  V4       \        V P                  V P
                  4       R # rJ   )r	   r®   r¯   r   r·   r¬   )r   Úscopes   &&r   r‡   ÚRangeCaster._registerÑ  s>   € Ü�d—o‘o uÔ-Ø× Ñ Ò,Ü˜$×/Ñ/°Ô7ä˜Ÿ™ T§\¡\Ö2r   )r¬   r¯   r·   rª   r®   rJ   )r   r{   r|   r}   r~   r   r«   Úclassmethodr†   ÚreÚcompileÚVERBOSErÕ   rØ   r­   r‡   r€   r�   r‚   s   @r   r…   r…     sj   ø‡ € ñô)ò!EðF ñJ<ó ðJ<ðX —
’
ð ð �Z‰Zó€Ið —:’:˜lÓ+€Lô0÷>3ò 3r   r…   c                   ó   € ] tR tRtRtRtR# )ÚNumericRangeiÙ  z¸A `Range` suitable to pass Python numeric types to a PostgreSQL range.

PostgreSQL types :sql:`int4range`, :sql:`int8range`, :sql:`numrange` are
casted into `!NumericRange` instances.
© N©r   r{   r|   r}   r~   r€   rè   r   r   rç   rç   Ù  s   † ñó
 	r   rç   c                   ó   € ] tR tRtRtRtR# )Ú	DateRangeiâ  z#Represents :sql:`daterange` values.rè   Nré   rè   r   r   rë   rë   â  ó   † Ù-Ûr   rë   c                   ó   € ] tR tRtRtRtR# )ÚDateTimeRangeiç  z!Represents :sql:`tsrange` values.rè   Nré   rè   r   r   rî   rî   ç  s   † Ù+Ûr   rî   c                   ó   € ] tR tRtRtRtR# )ÚDateTimeTZRangeiì  z#Represents :sql:`tstzrange` values.rè   Nré   rè   r   r   rð   rð   ì  rì   r   rð   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚNumberRangeAdapteriö  z1Adapt a range if the subtype doesn't need quotes.c                óÚ  € V P                   pVP                  '       d   R # VP                  '       g4   \        VP                  4      P                  4       P                  R4      pMRpVP                  '       g4   \        VP                  4      P                  4       P                  R4      pMRpRVP                  ^ ,           V RV VP                  ^,           R2P                  R4      # )s   'empty'Úasciir#   rÔ   Ú,)r‘   r0   r4   r   r   r£   Údecoder9   r   r   r¢   )r   r¤   r   r   s   &   r   r£   ÚNumberRangeAdapter.getquotedø  s¯   € Ø�L‰LˆØ�9�9ˆ9Ùà�{�{ˆ{ô
 ˜!Ÿ'™'“N×,Ñ,Ó.×5Ñ5°gÓ>‰EàˆEà�{�{ˆ{Ü˜!Ÿ'™'“N×,Ñ,Ó.×5Ñ5°gÓ>‰EàˆEà�A—I‘I˜a•L�> % ¨¨%¨°·±¸1µ°¸aÐ@×HÑHÈÓQÐQr   rè   N)r   r{   r|   r}   r~   r£   r€   r�   r‚   s   @r   rò   rò   ö  s   ø‡ € Ù;÷Rð Rr   rò   i@  iA  r¿   iV  iW  iB  i¤  iC  Ú	daterangeiH  i:  iI  ÚtsrangeiD  iZ  iE  Ú	tstzrangeiF  i   iG  rN   )r~   rã   Úpsycopg2._psycopgr   r   rÀ   r   r   r   r   r   r	   r   r�   r�   r…   rç   rë   rî   rð   rò   Úint4range_casterr‡   Úint8range_casterÚnumrange_casterÚdaterange_casterÚtsrange_casterÚtstzrange_casterrè   r   r   Ú<module>r     sb  ðñó6 
ç >ß BÑ Bß GÑ G÷h'ñ h'ôV÷>-8ñ -8÷`y3ñ y3ôx	�5ô 	ô	�ô 	ô
	�Eô 	ô
	�eô 	ôR˜ô Rñ2 �Ð1Ô 2ñ
 Ð1°<Ø˜"¨ô.Ð à × Ñ Ô áÐ1°<Ø˜"¨ô.Ð à × Ñ Ô áÐ0°,Ø˜$¨$ô0€à × Ñ Ô á˜{¨IØ˜$¨$ô0Ð à × Ñ Ô á˜Y¨Ø˜$¨$ô0€à × Ñ Ô á˜{¨OØ˜$¨$ô0Ð à × Ñ Ö r   