Ë
    	°ëjND  ã                  óD  — U d dl mZ d dlZd dlZ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 d dlmZmZ ddlmZmZ ddlmZ 	 ddlmZ g d	¢Z ej0                  d
«      j2                  Z G d„ dej6                  «      Zej:                  Zej<                  Zej>                  Zej@                  Z ejB                  Z!ejD                  Z"eeefZ#e e!e"fZ$ G d„ dej6                  «      Z%e%jL                  de%jN                  de%jP                  de%jR                  de%jT                  de%jV                  de%jX                  de%jZ                  de%j\                  de%j^                  de%j`                  de%jb                  de%jd                  de%jf                  de%jh                  diZ5de6d<   e%jL                  e%jN                  e%jP                  e%jR                  e%jX                  e%jZ                  e%j\                  e%j^                  e%j`                  e%jb                  e%jd                  e%jf                  hZ7e%jL                  e%jN                  e%jT                  hZ8ejr                   G d „ d!«      «       Z:ejr                   G d"„ d#«      «       Z;	 	 d&	 	 	 	 	 	 	 d'd$„Z<dd%l=m>Z> y# e$ r
 ddlmZ Y �ŒUw xY w)(é    )ÚannotationsN)Ú	GeneratorÚSequence)ÚCallableÚSelfé   )ÚPayloadTooBigÚProtocolError)Ú	BytesLike)Ú
apply_mask)ÚOpcodeÚ	CloseCodeÚFrameÚCloses   [\x09-\x0D\x20-\x7E]*c                  ó(   — e Zd ZdZd\  ZZZd\  ZZZ	y)r   z#Opcode values for WebSocket frames.)r   r   é   )é   é	   é
   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCONTÚTEXTÚBINARYÚCLOSEÚPINGÚPONG© ó    ú^/home/oem/CyberBrain26-unified/dev-env/.venv/lib/python3.12/site-packages/websockets/frames.pyr   r   !   s   „ Ù-à)Ñ€Dˆ$�Ø(Ñ€Eˆ4‘r!   r   c                  óL   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZy)r   z-Close code values for WebSocket close frames.iè  ié  iê  ië  ií  iî  iï  ið  iñ  iò  ió  iô  iõ  iö  i÷  N)r   r   r   r   ÚNORMAL_CLOSUREÚ
GOING_AWAYÚPROTOCOL_ERRORÚUNSUPPORTED_DATAÚNO_STATUS_RCVDÚABNORMAL_CLOSUREÚINVALID_DATAÚPOLICY_VIOLATIONÚMESSAGE_TOO_BIGÚMANDATORY_EXTENSIONÚINTERNAL_ERRORÚSERVICE_RESTARTÚTRY_AGAIN_LATERÚBAD_GATEWAYÚTLS_HANDSHAKEr    r!   r"   r   r   3   sT   „ Ù7à€NØ€JØ€NØÐà€NØÐØ€LØÐØ€OØÐØ€NØ€OØ€OØ€KØ�Mr!   r   ÚOKz
going awayzprotocol errorzunsupported datazno status received [internal]zabnormal closure [internal]zinvalid frame payload datazpolicy violationzmessage too bigzmandatory extensionzinternal errorzservice restartztry again laterzbad gatewayz TLS handshake failure [internal]zdict[int, str]ÚCLOSE_CODE_EXPLANATIONSc                  ó  — e Zd ZU dZded<   ded<   dZded<   d	Zded
<   d	Zded<   d	Zded<    e	e
j                  j                  dd«      «      Zeded	ediZdd„Zdd„Zedddœ	 	 	 	 	 	 	 	 	 dd„«       Zddœ	 	 	 	 	 dd„Zdd„Zy)r   aN  
    WebSocket frame.

    Attributes:
        opcode: Opcode.
        data: Payload data.
        fin: FIN bit.
        rsv1: RSV1 bit.
        rsv2: RSV2 bit.
        rsv3: RSV3 bit.

    Only these fields are needed. The MASK bit, payload length and masking-key
    are handled on the fly when parsing and serializing frames.

    r   Úopcoder   ÚdataTÚboolÚfinFÚrsv1Úrsv2Úrsv3ÚWEBSOCKETS_MAX_LOG_SIZEÚ75c                óŽ  — | j                   j                  | j                  «      }| j                  «       \  }}||k(  rdn|rdnd}t	        | j
                  «      › dt	        | j
                  «      dk(  rdnd› �}| j                  rdnd}dj                  t        d	|||g«      «      }| j                  j                  › d
|› d|› d�S )aÏ  
        Return a human-readable representation of a frame.

        This function is intended for logging and debugging. It doesn't aim to
        support round-tripping because payloads can be too long for displaying
        conveniently. Instead, it shows the beginning and the end. It's robust
        to incorrect data.

        It attempts to decode UTF-8 in data frames, even in binary frames,
        because those frequently contain UTF-8 data.

        Ú ÚtextÚbinaryz byter   ÚsÚ	continuedz, Nú z [ú])
ÚDEFAULT_IS_TEXTÚgetr6   Ú
_data_reprÚlenr7   r9   ÚjoinÚfilterÚname)ÚselfÚexpect_textÚ	data_reprÚis_textÚ	data_typeÚlengthÚ	non_finalÚmetadatas           r"   Ú__str__zFrame.__str__“   s¹   € ð ×*Ñ*×.Ñ.¨t¯{©{Ó;ˆØ!Ÿ_™_Ó.Ñˆ	�7à%¨Ò0‘BÁ±vÈhˆ	Ü˜Ÿ	™	“NÐ# 5¬s°4·9±9«~ÀÒ/B©ÈÐ(LÐMˆØŸ(š(‘B¨ˆ	Ø—9‘9œV D¨9°f¸iÐ*HÓIÓJˆà—+‘+×"Ñ"Ð# 1 Y K¨r°(°¸1Ð=Ð=r!   c                ó  — d}d}| j                   s'd| j                  j                  | j                  «      fS | j                  t        u r-	 t        t        j                  | j                   «      «      }d}�n| j                  t        v rlt        | j                   «      r1t        t        | j                   «      j                  d«      «      }d}�nÂdj                  d	„ | j                   D «       «      }d}�nœt!        | j                   «      d
| j"                  z  kD  r¨t        | j                   dd| j"                  z  dz   «      }t        | j                   d| j"                  z  dz  d «      }t%        || j                  t&        k7  ¬«      xr t%        || j(                  ¬«      }|rzt        ||z   j                  d¬«      «      }n[t        | j                   «      }t%        || j                  t&        k7  | j(                  ¬«      }|rt        |j                  d¬«      «      }|sr| j                   }t!        |«      | j"                  dz  kD  r3| j"                  dz  dz
  dz  }dj                  |dd|z   d|| d g«      }dj                  d„ |D «       «      }t!        |«      | j"                  kD  r$| j"                  dz  dz
  }|dd|z   dz   || d z   }||fS # t        t        f$ r' dj                  d„ | j                   D «       «      }d}Y Œuw xY w)zí
        Return a human-readable representation of the payload.

        Also returns whether the payload is text.

        The representation is elided to fit ``MAX_LOG_SIZE``.

        This is a helper for the __str__ method.

        r@   Nz''TrE   c              3  ó$   K  — | ]  }|d ›–— Œ
 y­w©Ú02xNr    ©Ú.0Úbytes     r"   ú	<genexpr>z#Frame._data_repr.<locals>.<genexpr>Ã   ó   è ø€ Ò$I°t¨¨S z£]Ñ$Iùó   ‚FÚasciic              3  ó$   K  — | ]  }|d ›–— Œ
 y­wrY   r    r[   s     r"   r^   z#Frame._data_repr.<locals>.<genexpr>Ï   r_   r`   é   r   é   éüÿÿÿ)Úmust_start_clean)Úmust_end_cleanÚreplace)Úerrors)rf   rg   r   r!   r   s     c              3  ó$   K  — | ]  }|d ›–— Œ
 y­wrY   r    r[   s     r"   r^   z#Frame._data_repr.<locals>.<genexpr>ú   s   è ø€ Ò$F°t¨¨S z£]Ñ$Fùr`   z...)r7   rG   rH   r6   r   Ústrr   Úparser
   ÚUnicodeDecodeErrorrK   ÚCTRL_OPCODESÚis_space_or_printable_asciiÚreprÚbytesÚdecoderJ   ÚMAX_LOG_SIZEÚis_utf8_fragmentr   r9   )rN   rP   rQ   Ú
data_startÚdata_endr7   rB   Úcuts           r"   rI   zFrame._data_reprª   sÑ  € ð ˆ	Ø#ˆà�yŠyØ˜×-Ñ-×1Ñ1°$·+±+Ó>Ð>Ð>ð
 �;‰;œ%Ñð Ü¤§¡¨D¯I©IÓ 6Ó7�	Ø’ð �[‰[œLÑ(Ü*¨4¯9©9Ô5Ü ¤ t§y¡yÓ!1×!8Ñ!8¸Ó!AÓB�	Ø’àŸH™HÑ$I¸t¿y¹yÔ$IÓI�	Ø’ô �4—9‘9‹~  D×$5Ñ$5Ñ 5Ò5ô # 4§9¡9Ð-I¨q°4×3DÑ3DÑ/DÈÑ/IÐ#JÓK�
Ü  §¡¨2°×0AÑ0AÑ+AÀQÑ+FÐ+HÐ!IÓJ�Ü*ØØ%)§[¡[´DÑ%8ôò ô 'ØØ#'§8¡8ôð ñ Ü $ j°8Ñ&;×%CÑ%CÈ9Ð%CÓ%UÓ V‘Iô ˜TŸY™YÓ'�Ü*ØØ%)§[¡[´DÑ%8Ø#'§8¡8ô�ñ
 Ü $ T§[¡[¸	 [Ó%BÓ C�Iñ
 ØŸ™�Ü�v“; ×!2Ñ!2°aÑ!7Ò7Ø×,Ñ,°Ñ1°AÑ5¸!Ñ;�Cà ŸX™X v¨i°°C±Ð'8¸+ÀvÈsÈdÈeÀ}Ð&UÓV�FØŸH™HÑ$F¸vÔ$FÓF�	ô ˆy‹>˜D×-Ñ-Ò-Ø×#Ñ# qÑ(¨1Ñ,ˆCØ! ) A¨¡GÐ,¨uÑ4°yÀ#ÀÀÐ7GÑGˆIà˜'Ð!Ð!øôA "Ô#5Ð6ò  ØŸH™HÑ$I¸t¿y¹yÔ$IÓI�	Ø’ð ús   Á*K Ë3LÌLN)Úmax_sizeÚ
extensionsc             #  ó  K  —  |d«      E d{  –—† }t        j                  d|«      \  }}|dz  rdnd}|dz  rdnd}	|dz  rdnd}
|d	z  rdnd}	 t        |d
z  «      }|dz  rdnd|k7  rt	        d«      ‚|dz  }|dk(  r) |d«      E d{  –—† }t        j                  d|«      \  }n-|dk(  r( |d«      E d{  –—† }t        j                  d|«      \  }|�||kD  rt        ||«      ‚|r |d«      E d{  –—† } ||«      E d{  –—† }|rt        |«      } | ||||	|
|«      }|€g }t        |«      D ]  }|j                  ||¬«      }Œ |j                  «        |S 7 �ŒQ# t        $ r}t	        d«      |‚d}~ww xY w7 Œó7 ŒÇ7 ŒŒ7 Œ~­w)aá  
        Parse a WebSocket frame.

        This is a generator-based coroutine.

        Args:
            read_exact: Generator-based coroutine that reads the requested
                bytes or raises an exception if there isn't enough data.
            mask: Whether the frame should be masked i.e. whether the read
                happens on the server side.
            max_size: Maximum payload size in bytes.
            extensions: List of extensions, applied in reverse order.

        Raises:
            EOFError: If the connection is closed without a full WebSocket frame.
            PayloadTooBig: If the frame's payload size exceeds ``max_size``.
            ProtocolError: If the frame contains incorrect values.

        r   Nú!BBé€   TFé@   é    é   é   zinvalid opcodezincorrect maskingé   é~   ú!Hr   z!Qrc   )rx   )
ÚstructÚunpackr   Ú
ValueErrorr
   r	   r   Úreversedrr   Úcheck)ÚclsÚ
read_exactÚmaskrx   ry   r7   Úhead1Úhead2r9   r:   r;   r<   r6   ÚexcrS   Ú
mask_bytesÚframeÚ	extensions                     r"   rl   zFrame.parse  sÅ  è ø€ ñ: % Q›-×'ˆÜ—}‘} U¨DÓ1‰ˆˆuð ˜jÒ(‰d¨eˆØ˜zÒ)‰t¨uˆØ˜zÒ)‰t¨uˆØ˜zÒ)‰t¨uˆð	;Ü˜E JÑ.Ó/ˆFð ˜JÒ&‰D¨E°dÒ:ÜÐ 3Ó4Ð4à˜Ñ#ˆØ�SŠ=Ù(¨›m×+ˆDÜŸ™ d¨DÓ1‰I‰VØ�sŠ]Ù(¨›m×+ˆDÜŸ™ d¨DÓ1‰IˆVØÐ F¨XÒ$5Ü ¨Ó1Ð1ÙÙ$.¨q£M×1ˆJñ % VÓ,×,ˆÙÜ˜d JÓ/ˆDá�F˜D # t¨T°4Ó8ˆàÐØˆJÜ! *Ó-ò 	?ˆIØ×$Ñ$ U°XÐ$Ó>‰Eð	?ð 	�‰ŒàˆðW (úô ò 	;ÜÐ 0Ó1°sÐ:ûð	;úð ,øð ,øð
 2øð -úsw   ‚FŽE�AFÁE" Á,FÂE?Â-FÂ9FÂ:<FÃ6FÃ7FÄFÄAFÅ"	E<Å+E7Å7E<Å<FÆFÆFÆF©ry   c               óF  — | j                  «        |€g }|D ]  }|j                  | «      } Œ t        j                  «       }| j                  rdnd| j
                  rdndz  | j                  rdndz  | j                  rdndz  | j                  z  }|rdnd}t        | j                  «      }|dk  r*|j                  t        j                  d|||z  «      «       nZ|dk  r+|j                  t        j                  d	||dz  |«      «       n*|j                  t        j                  d
||dz  |«      «       |r&t        j                  d«      }|j                  |«       |rt!        | j                  «      }	n| j                  }	|j                  |	«       |j#                  «       S )aH  
        Serialize a WebSocket frame.

        Args:
            mask: Whether the frame should be masked i.e. whether the write
                happens on the client side.
            extensions: List of extensions, applied in order.

        Raises:
            ProtocolError: If the frame contains incorrect values.

        r|   r   r}   r~   r   r‚   r{   i   z!BBHz!BBQr�   rc   )rˆ   ÚencodeÚioÚBytesIOr9   r:   r;   r<   r6   rJ   r7   Úwriter„   ÚpackÚsecretsÚtoken_bytesr   Úgetvalue)
rN   r‹   ry   r‘   ÚoutputrŒ   r�   rS   r�   r7   s
             r"   Ú	serializezFrame.serializeN  sm  € ð$ 	�
‰
ŒàÐØˆJØ#ò 	*ˆIØ×#Ñ# DÓ)‰Dð	*ô —‘“ˆð  Ÿ8š8‰Z¨Ø!ŸYšY‰z¨Añ/à!ŸYšY‰z¨Añ/ð "ŸYšY‰z¨Añ/ð �k‰kñ	ð 	ñ #‘
¨ˆä�T—Y‘Y“ˆØ�CŠ<Ø�L‰LœŸ™ U¨E°5¸6±>ÓBÕCØ�eŠ^Ø�L‰LœŸ™ V¨U°E¸C±KÀÓHÕIà�L‰LœŸ™ V¨U°E¸C±KÀÓHÔIáÜ ×,Ñ,¨QÓ/ˆJØ�L‰L˜Ô$ñ Ü˜dŸi™i¨Ó4‰Dà—9‘9ˆDØ�‰�TÔà�‰Ó Ð r!   c                óü   — | j                   s| j                  s| j                  rt        d«      ‚| j                  t
        v r;t        | j                  «      dkD  rt        d«      ‚| j                  st        d«      ‚yy)z¦
        Check that reserved bits and opcode have acceptable values.

        Raises:
            ProtocolError: If a reserved bit or the opcode is invalid.

        zreserved bits must be 0é}   zcontrol frame too longzfragmented control frameN)	r:   r;   r<   r
   r6   rn   rJ   r7   r9   ©rN   s    r"   rˆ   zFrame.checkŠ  sh   € ð �9Š9˜Ÿ	š	 T§Y¢YÜÐ 9Ó:Ð:à�;‰;œ,Ñ&Ü�4—9‘9‹~ Ò#Ü#Ð$<Ó=Ð=Ø—8’8Ü#Ð$>Ó?Ð?ð ð 'r!   ©Úreturnrk   )r¢   ztuple[str, bool | None])
rŠ   z9Callable[[int], Generator[None, None, bytes | bytearray]]r‹   r8   rx   z
int | Nonery   ú%Sequence[extensions.Extension] | Noner¢   zGenerator[None, None, Frame])r‹   r8   ry   r£   r¢   rq   ©r¢   ÚNone)r   r   r   r   Ú__annotations__r9   r:   r;   r<   ÚintÚosÚenvironrH   rs   r   r   r   rG   rV   rI   Úclassmethodrl   r�   rˆ   r    r!   r"   r   r   u   sù   … ñð  ƒNØ
ƒOØ€CˆÓØ€Dˆ$ÓØ€Dˆ$ÓØ€Dˆ$Óñ �r—z‘z—~‘~Ð&?ÀÓFÓG€Là˜T 6¨5°%¸Ð>€Oó>ó.X"ðt ð  $Ø<@ñGàMðGð ð	Gð
 ðGð :ðGð 
&òGó ðGðZ =Añ	:!ð ð:!ð :ð	:!ð
 
ó:!ôx@r!   r   c                  óP   — e Zd ZU dZded<   ded<   dd„Zedd„«       Zdd„Zdd	„Z	y
)r   z
    Code and reason for WebSocket close frames.

    Attributes:
        code: Close code.
        reason: Close reason.

    zCloseCode | intÚcoderk   Úreasonc                ó  — d| j                   cxk  rdk  rn nd}n;d| j                   cxk  rdk  rn nd}n t        j                  | j                   d«      }| j                   › d|› d�}| j                  r|› d	| j                  › �}|S )
zU
        Return a human-readable representation of a close code and reason.

        é¸  i   Ú
registeredéˆ  zprivate useÚunknownz (ú)rE   )r¬   r4   rH   r­   )rN   ÚexplanationÚresults      r"   rV   zClose.__str__ª  s|   € ð
 �4—9‘9Ô#˜tÕ#Ø&‰KØ�T—Y‘YÔ% Õ%Ø'‰Kä1×5Ñ5°d·i±iÀÓKˆKØ—I‘I�;˜b  ¨QÐ/ˆà�;Š;Ø�x˜q §¡ Ð.ˆFàˆr!   c                óF  — t        |t        «      rt        d«      ‚t        |«      dk\  rIt	        j
                  d|dd «      \  }|dd j                  «       } | ||«      }|j                  «        |S t        |«      dk(  r | t        j                  d«      S t        d«      ‚)z÷
        Parse the payload of a close frame.

        Args:
            data: Payload of the close frame.

        Raises:
            ProtocolError: If data is ill-formed.
            UnicodeDecodeError: If the reason isn't valid UTF-8.

        z.only compressed outgoing frames use memoryviewr   rƒ   Nr   r@   zclose frame too short)Ú
isinstanceÚ
memoryviewÚAssertionErrorrJ   r„   r…   rr   rˆ   r   r(   r
   )r‰   r7   r¬   r­   Úcloses        r"   rl   zClose.parse¼  s“   € ô �dœJÔ'Ü Ð!QÓRÐRÜˆt‹9˜Š>Ü—m‘m D¨$¨r°¨(Ó3‰GˆTØ˜!˜"�X—_‘_Ó&ˆFÙ˜˜fÓ%ˆEØ�K‰KŒMØˆLÜ�‹Y˜!Š^Ù”y×/Ñ/°Ó4Ð4äÐ 7Ó8Ð8r!   c                ó˜   — | j                  «        t        j                  d| j                  «      | j                  j                  «       z   S )z:
        Serialize the payload of a close frame.

        rƒ   )rˆ   r„   r˜   r¬   r­   r”   r    s    r"   r�   zClose.serializeÖ  s4   € ð
 	�
‰
ŒÜ�{‰{˜4 §¡Ó+¨d¯k©k×.@Ñ.@Ó.BÑBÐBr!   c                ó‚   — | j                   t        v s-d| j                   cxk  rdk  st        d«      ‚ t        d«      ‚yy)z›
        Check that the close code has a valid value for a close frame.

        Raises:
            ProtocolError: If the close code is invalid.

        r¯   r±   zinvalid status codeN)r¬   ÚEXTERNAL_CLOSE_CODESr
   r    s    r"   rˆ   zClose.checkÞ  sH   € ð —	‘	Ô1Ñ1°T¸T¿Y¹YÔ5MÈÒ5MÜÐ 5Ó6Ð6ð 6NÜÐ 5Ó6Ð6ð 6NÐ1r!   Nr¡   )r7   r   r¢   r   )r¢   rq   r¤   )
r   r   r   r   r¦   rV   rª   rl   r�   rˆ   r    r!   r"   r   r   œ  s8   … ñð ÓØƒKóð$ ò9ó ð9ó2Cô	7r!   r   c                óà  — dt        | «      }}|s.t        dt        | «      «      }||k  r| |   }|dz  dk(  r|dz  }Œ	 |s€|dz  }t        t        | «      dz
  |«      }||k\  r^| |   }|dz  dk(  r|dz  }Œ|dz  dk(  rd}n#|dz  dk(  rd}n|d	z  dk(  rd}n|d
z  d	k(  rd}nd}|t        | «      |z
  k  rt        | «      }	 	 | || j                  «       }	dt	        |	«      vS # t
        $ r Y yw xY w)z*Guess if data is a fragment of UTF-8 text.r   rd   éÀ   r|   r   rc   éà   r   éð   éø   z\xF)rJ   ÚminÚmaxrr   rp   rm   )
r7   rf   rg   ÚstartÚendÚ	max_startr]   Úmin_endÚseq_lenrA   s
             r"   rt   rt   ê  sI  € ð ”C˜“Iˆ3€Eáä˜œ3˜t›9Ó%ˆ	Ø�iÒØ˜‘;ˆDð �jÑ  JÒ.Ø˜‘
�Øàáàˆq‰ˆÜ”c˜$“i !‘m UÓ+ˆØ�WŠnØ˜‘9ˆDà�jÑ  JÒ.Ø�q‘�Øð �jÑ  JÒ.Ø‘à˜
Ñ" jÒ0Ø‘à˜
Ñ" jÒ0Ø‘à˜
Ñ" jÒ0Ø‘ð �ð œ#˜d›) c™/Ò)Ü˜$“i�àð'Ø�E˜#ˆ×%Ñ%Ó'ˆð
 œD ›JÐ&Ð&øô	 ò Ùðús   ÃC! Ã!	C-Ã,C-r’   )FF)r7   rq   rf   r8   rg   r8   r¢   r8   )?Ú
__future__r   ÚdataclassesÚenumr•   r¨   Úrer™   r„   Úcollections.abcr   r   Útypingr   r   Ú
exceptionsr	   r
   r   Úspeedupsr   ÚImportErrorÚutilsÚ__all__ÚcompileÚ	fullmatchro   ÚIntEnumr   r   r   r   r   r   r   ÚDATA_OPCODESrn   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   r¦   r½   ÚOK_CLOSE_CODESÚ	dataclassr   r   rt   r@   ry   r    r!   r"   ú<module>rÛ      s»  ðÞ "ã Û Û 	Û 	Û 	Û Û ß /ß !ç 4Ý ð"Ý$ò
€ð )˜bŸj™jÐ)BÓC×MÑMÐ ô)ˆT�\‰\ô )ð ‡{�{€Ø‡{�{€Ø	�‰€Ø�‰€Ø‡{�{€Ø‡{�{€à�T˜6Ð!€Ø�d˜DÐ €ô�—‘ô ð. ×Ñ˜dØ×Ñ˜,Ø×ÑÐ.Ø×ÑÐ 2Ø×ÑÐ=Ø×ÑÐ =Ø×ÑÐ8Ø×ÑÐ 2Ø×ÑÐ0Ø×!Ñ!Ð#8Ø×ÑÐ.Ø×ÑÐ0Ø×ÑÐ0Ø×Ñ˜=Ø×ÑÐ?ð+Ð ˜ó ð, ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×!Ñ!Ø×ÑØ×ÑØ×ÑØ×ÑðÐ ð" ×ÑØ×ÑØ×Ñð€ð ×Ñ÷c@ð c@ó ðc@ðL	 ×Ñ÷J7ð J7ó ðJ7ð^ #Ø ðE'Ø
ðE'àðE'ð ðE'ð 
ó	E'öR øðA ò "ß!Ð!ð"ús   ÁJ ÊJÊJ