§
    šŠtjV6  ã                  ó@  — d dl m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mZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ  ej        e¦  «        Zdd„Z G d„ d¦  «        Z G d„ deeef         ¦  «        Z  G d„ d¦  «        Z! G d„ d¦  «        Z"dS )é    )ÚannotationsN)ÚAsyncIteratorÚIteratorÚMapping)ÚTracebackType)ÚAnyÚcast)ÚRunnableConfig)ÚAsyncThreadStream)ÚSyncThreadStream)ÚLangGraphClientÚSyncLangGraphClient)ÚDataDecoder)ÚCommandÚinputr   Úreturnc                óx   — t          | t          ¦  «        r$| j        s| j        rt	          d¦  «        ‚| j        S | S )a‡  Translate a local `Command` into the v3 wire `input`, else passthrough.

    The v3 server decides start-vs-resume from thread state (an interrupted
    run or pending interrupts) and, on resume, wraps the whole `input` as
    `{"resume": input}` itself. So a resume `Command` must surface its raw
    `resume` value as the wire `input` (not the serialized dataclass, which
    the server would double-wrap). The v3 `run.start` path has no `goto` /
    `update` channel, so those are rejected.

    `langgraph_sdk` is upstream of `langgraph`, so this `Command`-aware
    marshalling lives here on the adapter (langgraph) side of the boundary.
    z}RemoteGraph v3 streaming supports `Command(resume=...)` only; `goto` / `update` are not supported by the v3 `run.start` path.)Ú
isinstancer   ÚgotoÚupdateÚNotImplementedErrorÚresume)r   s    úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langgraph/pregel/_remote_run_stream.pyÚ_translate_command_inputr      sP   € õ �%�Ñ!Ô!ð ØŒ:ð 	˜œð 	Ý%ðRñô ð ð Œ|ÐØ€Ló    c                  ó2   — e Zd ZdZdd„Zdd
„Zdd„Zdd„ZdS )Ú_ChannelProjectionuË  Decoded projection for a wire channel the SDK doesn't type natively.

    Subscribes to `channel` and decodes each event's `params["data"]` through the
    SDK's `DataDecoder` â€” the same decoder the SDK's own plain-payload projections
    (`values` / `updates` / `checkpoints` / `tasks`) use, which yields the item
    shape that local's `UpdatesTransformer` / `CheckpointsTransformer` /
    `TasksTransformer` / `CustomTransformer` push, so iterating this matches the
    corresponding local projection. Iterate with `for` against a sync stream and
    `async for` against an async stream (matching the underlying SDK). Opening
    the subscription requires the stream to be entered (`with` / `async with`).
    Úsdkú$AsyncThreadStream | SyncThreadStreamÚchannelÚstrr   ÚNonec                ó"   — || _         || _        d S ©N)Ú_sdkÚ_channel)Úselfr   r    s      r   Ú__init__z_ChannelProjection.__init__9   s   € ØˆŒ	ØˆŒˆˆr   úIterator[Any]c              #  óî   K  — t          | j        ¦  «        }t          t          t                   | j                             | j        g¦  «        ¦  «        }|D ]}|                     |¦  «        E d {V —† Œd S r$   )r   r&   r	   r   r   r%   Ú	subscribeÚfeed)r'   ÚdecoderÚeventsÚevents       r   Ú__iter__z_ChannelProjection.__iter__=   s|   è è € å˜dœmÑ,Ô,ˆÝ•h�s”m T¤Y×%8Ò%8¸$¼-¸Ñ%IÔ%IÑJÔJˆØð 	+ð 	+ˆEØ—|’| EÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð	+ð 	+r   úAsyncIterator[Any]c                ó*   — |                       ¦   «         S r$   )Ú_aiter©r'   s    r   Ú	__aiter__z_ChannelProjection.__aiter__D   s   € Ø�{Š{‰}Œ}Ðr   c               óþ   K  — t          | j        ¦  «        }t          t          t                   | j                             | j        g¦  «        ¦  «        }|2 3 d {V —†}|                     |¦  «        D ]}|W V — ŒŒ%6 d S r$   )r   r&   r	   r   r   r%   r+   r,   )r'   r-   r.   r/   Úitems        r   r3   z_ChannelProjection._aiterG   s›   è è € å˜dœmÑ,Ô,ˆÝ•m¥CÔ(¨$¬)×*=Ò*=¸t¼}¸oÑ*NÔ*NÑOÔOˆØ!ð 	ð 	ð 	ð 	ð 	ð 	ð 	�%ØŸš UÑ+Ô+ð ð �Ø�
�
�
�
�
ðð "˜6˜6s   ÁA<N)r   r   r    r!   r   r"   ©r   r)   ©r   r1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r0   r5   r3   © r   r   r   r   ,   sn   € € € € € ð
ð 
ð ð  ð  ð  ð+ð +ð +ð +ðð ð ð ðð ð ð ð ð r   r   c                  óD   — e Zd ZdZdZdZeez   Zdd„Zdd„Zdd„Z	dd„Z
dS )Ú_ProjectionRegistryu­  Read-only name -> projection registry mirroring local `GraphRunStream.extensions`.

    Resolution follows the langchain-protocol wire channels, and every entry
    yields the same decoded item shape local does (`params.data`):

    - `values` / `messages` / `tool_calls` / `subgraphs` resolve to the SDK's
      decoded typed projections. `tool_calls` is the `tools` channel â€” tool
      *execution* events, distinct from the tool-call *inputs* inside `messages`.
    - `updates` / `checkpoints` / `tasks` / `custom` have no typed SDK
      projection, so they resolve to a `_ChannelProjection` that subscribes to
      the channel and yields `params.data` â€” matching the local transformer
      output for those channels.
    - any other name is a specific custom-extension channel
      (`thread.extensions[name]`, i.e. `custom:<name>`).

    `lifecycle` is intentionally absent: local derives a status payload from it
    rather than yielding `params.data`, and the SDK consumes it as control-plane
    (driving `output` / `interrupted`), so its shape can't be matched â€” it
    remains reachable via the raw `events` iterator. `debug` is absent too: it
    is not a v3 wire channel.
    )ÚvaluesÚmessagesÚ
tool_callsÚ	subgraphs)ÚupdatesÚcheckpointsÚtasksÚcustomr   r   r   r"   c                ó   — || _         d S r$   )r%   )r'   r   s     r   r(   z_ProjectionRegistry.__init__m   s   € ØˆŒ	ˆ	ˆ	r   Únamer!   r   c                óž   — || j         v rt          | j        |¦  «        S || j        v rt	          | j        |¦  «        S | j        j        |         S r$   )Ú_TYPEDÚgetattrr%   Ú_DECODEDr   Ú
extensions)r'   rJ   s     r   Ú__getitem__z_ProjectionRegistry.__getitem__p   sP   € Ø�4”;ÐÐÝ˜4œ9 dÑ+Ô+Ð+Ø�4”=Ð Ð Ý% d¤i°Ñ6Ô6Ð6ØŒyÔ# DÔ)Ð)r   úIterator[str]c                ó*   — t          | j        ¦  «        S r$   )ÚiterÚ_NATIVEr4   s    r   r0   z_ProjectionRegistry.__iter__w   s   € Ý�D”LÑ!Ô!Ð!r   Úintc                ó*   — t          | j        ¦  «        S r$   )ÚlenrT   r4   s    r   Ú__len__z_ProjectionRegistry.__len__z   s   € Ý�4”<Ñ Ô Ð r   N)r   r   r   r"   )rJ   r!   r   r   )r   rQ   )r   rU   )r:   r;   r<   r=   rL   rN   rT   r(   rP   r0   rX   r>   r   r   r@   r@   P   s„   € € € € € ðð ð. ?€Fà<€HØ�xÑ€Gðð ð ð ð*ð *ð *ð *ð"ð "ð "ð "ð!ð !ð !ð !ð !ð !r   r@   c                  ó  — e Zd ZdZd*d„Zd+d„Zd,d„Zed-d„¦   «         Zed.d„¦   «         Z	ed/d„¦   «         Z
ed-d„¦   «         Zed-d„¦   «         Zed-d„¦   «         Zed-d„¦   «         Zed0d!„¦   «         Zd1d"„Zd2d$„Zd3d(„Zd)S )4Ú_RemoteGraphRunStreamz9Sync adapter: SyncThreadStream -> GraphRunStream surface.Úsync_clientr   Ú
sdk_threadr   r   r   ÚconfigúRunnableConfig | NoneÚmetadataúdict[str, Any] | Noner   r"   c               ó|   — || _         || _        t          |¦  «        ||dœ| _        d | _        d| _        d | _        d S ©N)r   r]   r_   F)Ú_clientr%   r   Ú_start_kwargsÚ_run_idÚ_closedÚ_events_iter)r'   r[   r\   r   r]   r_   s         r   r(   z_RemoteGraphRunStream.__init__�   sP   € ð #ˆŒØˆŒ	å-¨eÑ4Ô4ØØ ð.
ð .
ˆÔð
 $(ˆŒØˆŒØ26ˆÔÐÐr   c                ó  — | j         rt          d¦  «        ‚| j                             ¦   «          	  | j        j        j        di | j        ¤Ž}n/# t          $ r"  | j        j        t          j
        ¦   «         Ž  ‚ w xY w|d         | _        | S )Nz$_RemoteGraphRunStream already closedÚrun_idr>   )rf   ÚRuntimeErrorr%   Ú	__enter__ÚrunÚstartrd   ÚBaseExceptionÚ__exit__ÚsysÚexc_infore   ©r'   Úresults     r   rk   z_RemoteGraphRunStream.__enter__•   sŸ   € ØŒ<ð 	GÝÐEÑFÔFÐFØŒ	×ÒÑÔÐð	Ø(�T”Y”]Ô(Ð>Ð>¨4Ô+=Ð>Ð>ˆFˆFøÝð 	ð 	ð 	ØˆDŒIÔ¥¤¡¤Ð/Ð/Øð	øøøð ˜hÔ'ˆŒØˆs   ±A Á,A:Úexc_typeútype[BaseException] | NoneÚexcúBaseException | NoneÚtbúTracebackType | Nonec                ó^   — | j         rd S d| _         | j                             |||¦  «         d S ©NT)rf   r%   ro   ©r'   rt   rv   rx   s       r   ro   z_RemoteGraphRunStream.__exit__¡   s:   € ð Œ<ð 	ØˆFØˆŒØŒ	×Ò˜8 S¨"Ñ-Ô-Ð-Ð-Ð-r   c                ó   — | j         j        S r$   ©r%   Úoutputr4   s    r   r   z_RemoteGraphRunStream.output¬   s   € àŒyÔÐr   Úboolc                ó   — | j         j        S )ap  Whether the remote run is currently paused at an interrupt.

        Reads the SDK's current value without blocking. This differs from
        local `GraphRunStream.interrupted`, which drives the run to terminal
        before returning the flag. Sync callers needing a wait-for-interrupt
        pattern should switch to the async API and drain a projection.
        ©r%   Úinterruptedr4   s    r   rƒ   z!_RemoteGraphRunStream.interrupted°   s   € ð ŒyÔ$Ð$r   ú	list[Any]c                ó4   — t          | j        j        ¦  «        S )z?Current outstanding interrupt payloads (non-blocking snapshot).©Úlistr%   Ú
interruptsr4   s    r   rˆ   z _RemoteGraphRunStream.interrupts»   s   € õ �D”IÔ(Ñ)Ô)Ð)r   c                ó   — | j         j        S ©z<Live state-snapshot projection (mirrors local `run.values`).©r%   rA   r4   s    r   rA   z_RemoteGraphRunStream.valuesÀ   ó   € ð ŒyÔÐr   c                ó   — | j         j        S ©z>Live message-stream projection (mirrors local `run.messages`).©r%   rB   r4   s    r   rB   z_RemoteGraphRunStream.messagesÅ   ó   € ð ŒyÔ!Ð!r   c                ó   — | j         j        S ©z;Subgraph-handle projection (mirrors local `run.subgraphs`).©r%   rD   r4   s    r   rD   z_RemoteGraphRunStream.subgraphsÊ   ó   € ð ŒyÔ"Ð"r   c                ó   — | j         j        S ©zËTool-execution projection (the `tools` channel).

        These are tool *execution* events (started / output / finished),
        distinct from the tool-call *inputs* carried inside `messages`.
        ©r%   rC   r4   s    r   rC   z _RemoteGraphRunStream.tool_callsÏ   ó   € ð ŒyÔ#Ð#r   úMapping[str, Any]c                ó*   — t          | j        ¦  «        S ©z=Name -> projection registry (mirrors local `run.extensions`).©r@   r%   r4   s    r   rO   z _RemoteGraphRunStream.extensionsØ   ó   € õ # 4¤9Ñ-Ô-Ð-r   c                ó€  — | j         rd S d| _         | j        �_	 | j        j                             | j        j        | j        d¬¦  «         n,# t          $ r t           	                    dd¬¦  «         Y nw xY w	 | j         
                    ¦   «          d S # t          $ r  t           	                    dd¬¦  «         Y d S w xY w©NTF)Úwaitzabort: runs.cancel failed)rq   zabort: sdk.close failed©rf   re   rc   ÚrunsÚcancelr%   Ú	thread_idÚ	ExceptionÚloggerÚdebugÚcloser4   s    r   Úabortz_RemoteGraphRunStream.abortÝ   sê   € ØŒ<ð 	ØˆFØˆŒØŒ<Ð#ðIØ”Ô!×(Ò(¨¬Ô)<¸d¼lÐQVÐ(ÑWÔWÐWÐWøÝð Ið Ið IÝ—’Ð8À4�ÑHÔHÐHÐHÐHðIøøøð	CØŒI�OŠOÑÔÐÐÐøÝð 	Cð 	Cð 	CÝ�LŠLÐ2¸TˆLÑBÔBÐBÐBÐBÐBð	Cøøøs#   ™1A Á&A4Á3A4Á8B Â&B=Â<B=r)   c                óZ   — | j         €t          | j        j        ¦  «        | _         | j         S r$   )rg   rS   r%   r.   r4   s    r   r0   z_RemoteGraphRunStream.__iter__ë   s)   € ØÔÐ$Ý $ T¤YÔ%5Ñ 6Ô 6ˆDÔØÔ Ð r   Únamesr!   úIterator[tuple[str, Any]]c              '  ód   K  — | j                              t          |¦  «        ¦  «        E d {V —† d S r$   )r%   Úinterleave_projectionsr‡   )r'   r«   s     r   Ú
interleavez _RemoteGraphRunStream.interleaveð   s:   è è € Ø”9×3Ò3µD¸±K´KÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@r   N)r[   r   r\   r   r   r   r]   r^   r_   r`   r   r"   )r   rZ   ©rt   ru   rv   rw   rx   ry   r   r"   ©r   r   ©r   r€   ©r   r„   ©r   r™   ©r   r"   r8   )r«   r!   r   r¬   )r:   r;   r<   r=   r(   rk   ro   Úpropertyr   rƒ   rˆ   rA   rB   rD   rC   rO   r©   r0   r¯   r>   r   r   rZ   rZ   ~   sœ  € € € € € ØCÐCð7ð 7ð 7ð 7ð(
ð 
ð 
ð 
ð	.ð 	.ð 	.ð 	.ð ð ð  ð  ñ „Xð ð ð%ð %ð %ñ „Xð%ð ð*ð *ð *ñ „Xð*ð ð ð  ð  ñ „Xð ð ð"ð "ð "ñ „Xð"ð ð#ð #ð #ñ „Xð#ð ð$ð $ð $ñ „Xð$ð ð.ð .ð .ñ „Xð.ðCð Cð Cð Cð!ð !ð !ð !ð
Að Að Að Að Að Ar   rZ   c                  óÊ   — e Zd ZdZd&d„Zd'd„Zd(d„Zd)d„Zd*d„Zd+d„Z	e
d)d„¦   «         Ze
d)d„¦   «         Ze
d)d„¦   «         Ze
d)d„¦   «         Ze
d,d!„¦   «         Zd-d"„Zd.d$„Zd%S )/Ú_AsyncRemoteGraphRunStreamz@Async adapter: AsyncThreadStream -> AsyncGraphRunStream surface.Úclientr   r\   r   r   r   r]   r^   r_   r`   r   r"   c               ó|   — || _         || _        t          |¦  «        ||dœ| _        d | _        d| _        d | _        d S rb   )rc   r%   r   rd   re   rf   Ú_events_aiter)r'   r¹   r\   r   r]   r_   s         r   r(   z#_AsyncRemoteGraphRunStream.__init__÷   sP   € ð ˆŒØˆŒ	å-¨eÑ4Ô4ØØ ð.
ð .
ˆÔð
 $(ˆŒØˆŒØ8<ˆÔÐÐr   c              ƒ  ó@  K  — | j         rt          d¦  «        ‚| j                             ¦   «         ƒ d {V —† 	  | j        j        j        di | j        ¤Žƒ d {V —†}n5# t          $ r(  | j        j        t          j
        ¦   «         Ž ƒ d {V —† ‚ w xY w|d         | _        | S )Nz)_AsyncRemoteGraphRunStream already closedri   r>   )rf   rj   r%   Ú
__aenter__rl   rm   rd   rn   Ú	__aexit__rp   rq   re   rr   s     r   r½   z%_AsyncRemoteGraphRunStream.__aenter__  sÙ   è è € ØŒ<ð 	LÝÐJÑKÔKÐKØŒi×"Ò"Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð	Ø.˜4œ9œ=Ô.ÐDÐD°Ô1CÐDÐDÐDÐDÐDÐDÐDÐDˆFˆFøÝð 	ð 	ð 	Ø%�$”)Ô%¥s¤|¡~¤~Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Øð	øøøð ˜hÔ'ˆŒØˆs   ¹"A Á2Brt   ru   rv   rw   rx   ry   c              ƒ  ón   K  — | j         rd S d| _         | j                             |||¦  «        ƒ d {V —† d S r{   )rf   r%   r¾   r|   s       r   r¾   z$_AsyncRemoteGraphRunStream.__aexit__  sP   è è € ð Œ<ð 	ØˆFØˆŒØŒi×!Ò! (¨C°Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r   c              ƒ  ó*   K  — | j         j        ƒ d{V —†S )aA  Drive the remote run to completion and return the final state.

        Awaits the SDK's terminal-state awaitable, matching local
        `AsyncGraphRunStream.output()` (a method, not a property, so
        `run.output` without `await` fails at type-check time rather than
        silently yielding a coroutine).
        Nr~   r4   s    r   r   z!_AsyncRemoteGraphRunStream.output"  s%   è è € ð ”YÔ%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   r€   c              ƒ  ó   K  — | j         j        S )aÔ  Whether the remote run is currently paused at an interrupt.

        Reads the SDK's current value without blocking. This differs from
        local `AsyncGraphRunStream.interrupted()`, which drives the run to
        terminal before returning the flag. Callers that need a
        wait-for-interrupt pattern should drain a projection (e.g.,
        `async for snap in stream._sdk.values`) until the SDK's paused
        sentinel fires, then call this method.
        r‚   r4   s    r   rƒ   z&_AsyncRemoteGraphRunStream.interrupted,  s   è è € ð ŒyÔ$Ð$r   r„   c              ƒ  ó8   K  — t          | j        j        ¦  «        S )z¯Current outstanding interrupt payloads.

        Non-blocking; reads the SDK's current snapshot. See `interrupted`
        for the divergence from local v3 semantics.
        r†   r4   s    r   rˆ   z%_AsyncRemoteGraphRunStream.interrupts8  s   è è € õ �D”IÔ(Ñ)Ô)Ð)r   c                ó   — | j         j        S rŠ   r‹   r4   s    r   rA   z!_AsyncRemoteGraphRunStream.values@  rŒ   r   c                ó   — | j         j        S rŽ   r�   r4   s    r   rB   z#_AsyncRemoteGraphRunStream.messagesE  r�   r   c                ó   — | j         j        S r’   r“   r4   s    r   rD   z$_AsyncRemoteGraphRunStream.subgraphsJ  r”   r   c                ó   — | j         j        S r–   r—   r4   s    r   rC   z%_AsyncRemoteGraphRunStream.tool_callsO  r˜   r   r™   c                ó*   — t          | j        ¦  «        S r›   rœ   r4   s    r   rO   z%_AsyncRemoteGraphRunStream.extensionsX  r�   r   c              ƒ  óœ  K  — | j         rd S d| _         | j        �e	 | j        j                             | j        j        | j        d¬¦  «        ƒ d {V —† n,# t          $ r t           	                    dd¬¦  «         Y nw xY w	 | j         
                    ¦   «         ƒ d {V —† d S # t          $ r  t           	                    dd¬¦  «         Y d S w xY wrŸ   r¡   r4   s    r   r©   z _AsyncRemoteGraphRunStream.abort]  s*  è è € ØŒ<ð 	ØˆFØˆŒØŒ<Ð#ðIØ”lÔ'×.Ò.Ø”IÔ'¨¬¸Eð /ñ ô ð ð ð ð ð ð ð ð øõ ð Ið Ið IÝ—’Ð8À4�ÑHÔHÐHÐHÐHðIøøøð	CØ”)—/’/Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#øÝð 	Cð 	Cð 	CÝ�LŠLÐ2¸TˆLÑBÔBÐBÐBÐBÐBð	Cøøøs#   ›7A Á&A<Á;A<Â B! Â!&CÃ
Cr1   c                ód   — | j         €#| j        j                             ¦   «         | _         | j         S r$   )r»   r%   r.   r5   r4   s    r   r5   z$_AsyncRemoteGraphRunStream.__aiter__m  s-   € ØÔÐ%Ø!%¤Ô!1×!;Ò!;Ñ!=Ô!=ˆDÔØÔ!Ð!r   N)r¹   r   r\   r   r   r   r]   r^   r_   r`   r   r"   )r   r¸   r°   r±   r²   r³   r´   rµ   r9   )r:   r;   r<   r=   r(   r½   r¾   r   rƒ   rˆ   r¶   rA   rB   rD   rC   rO   r©   r5   r>   r   r   r¸   r¸   ô   s^  € € € € € ØJÐJð=ð =ð =ð =ð(
ð 
ð 
ð 
ð	5ð 	5ð 	5ð 	5ð&ð &ð &ð &ð
%ð 
%ð 
%ð 
%ð*ð *ð *ð *ð ð ð  ð  ñ „Xð ð ð"ð "ð "ñ „Xð"ð ð#ð #ð #ñ „Xð#ð ð$ð $ð $ñ „Xð$ð ð.ð .ð .ñ „Xð.ðCð Cð Cð Cð "ð "ð "ð "ð "ð "r   r¸   )r   r   r   r   )#Ú
__future__r   Úloggingrp   Úcollections.abcr   r   r   Útypesr   Útypingr   r	   Úlangchain_core.runnablesr
   Úlanggraph_sdk._async.streamr   Úlanggraph_sdk._sync.streamr   Úlanggraph_sdk.clientr   r   Úlanggraph_sdk.stream.decodersr   Úlanggraph.typesr   Ú	getLoggerr:   r¦   r   r   r!   r@   rZ   r¸   r>   r   r   ú<module>rÖ      sÛ  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 5Ð 5Ð 5Ð 5Ð 5Ð 5à #Ð #Ð #Ð #Ð #Ð #à	ˆÔ	˜8Ñ	$Ô	$€ðð ð ð ð.!ð !ð !ð !ð !ñ !ô !ð !ðH+!ð +!ð +!ð +!ð +!˜' # s (Ô+ñ +!ô +!ð +!ð\sAð sAð sAð sAð sAñ sAô sAð sAðl|"ð |"ð |"ð |"ð |"ñ |"ô |"ð |"ð |"ð |"r   