§
    
 @g0  ã                   ó6  — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ ddlmZ  G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZeZdS )aZ
  

.. dialect:: sqlite+aiosqlite
    :name: aiosqlite
    :dbapi: aiosqlite
    :connectstring: sqlite+aiosqlite:///file_path
    :url: https://pypi.org/project/aiosqlite/

The aiosqlite dialect provides support for the SQLAlchemy asyncio interface
running on top of pysqlite.

aiosqlite is a wrapper around pysqlite that uses a background thread for
each connection.   It does not actually use non-blocking IO, as SQLite
databases are not socket-based.  However it does provide a working asyncio
interface that's useful for testing and prototyping purposes.

Using a special asyncio mediation layer, the aiosqlite dialect is usable
as the backend for the :ref:`SQLAlchemy asyncio <asyncio_toplevel>`
extension package.

This dialect should normally be used only with the
:func:`_asyncio.create_async_engine` engine creation function::

    from sqlalchemy.ext.asyncio import create_async_engine
    engine = create_async_engine("sqlite+aiosqlite:///filename")

The URL passes through all arguments to the ``pysqlite`` driver, so all
connection arguments are the same as they are for that of :ref:`pysqlite`.

.. _aiosqlite_udfs:

User-Defined Functions
----------------------

aiosqlite extends pysqlite to support async, so we can create our own user-defined functions (UDFs)
in Python and use them directly in SQLite queries as described here: :ref:`pysqlite_udfs`.

.. _aiosqlite_serializable:

Serializable isolation / Savepoints / Transactional DDL (asyncio version)
-------------------------------------------------------------------------

Similarly to pysqlite, aiosqlite does not support SAVEPOINT feature.

The solution is similar to :ref:`pysqlite_serializable`. This is achieved by the event listeners in async::

    from sqlalchemy import create_engine, event
    from sqlalchemy.ext.asyncio import create_async_engine

    engine = create_async_engine("sqlite+aiosqlite:///myfile.db")

    @event.listens_for(engine.sync_engine, "connect")
    def do_connect(dbapi_connection, connection_record):
        # disable aiosqlite's emitting of the BEGIN statement entirely.
        # also stops it from emitting COMMIT before any DDL.
        dbapi_connection.isolation_level = None

    @event.listens_for(engine.sync_engine, "begin")
    def do_begin(conn):
        # emit our own BEGIN
        conn.exec_driver_sql("BEGIN")

.. warning:: When using the above recipe, it is advised to not use the
   :paramref:`.Connection.execution_options.isolation_level` setting on
   :class:`_engine.Connection` and :func:`_sa.create_engine`
   with the SQLite driver,
   as this function necessarily will also alter the ".isolation_level" setting.

é    N)Úpartialé   )ÚSQLiteExecutionContext)ÚSQLiteDialect_pysqliteé   )Úpool)Úutil)ÚAdaptedConnection)Úawait_fallback)Ú
await_onlyc                   óP   — e Zd ZdZdZd„ Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
d
„ Zdd„Zd„ ZdS )ÚAsyncAdapt_aiosqlite_cursor)Ú_adapt_connectionÚ_connectionÚdescriptionÚawait_Ú_rowsÚ	arraysizeÚrowcountÚ	lastrowidFc                 ó|   — || _         |j        | _        |j        | _        d| _        d| _        d | _        g | _        d S )Nr   éÿÿÿÿ)r   r   r   r   r   r   r   )ÚselfÚadapt_connections     úX/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.pyÚ__init__z$AsyncAdapt_aiosqlite_cursor.__init__m   s@   € Ø!1ˆÔØ+Ô7ˆÔØ&Ô-ˆŒØˆŒØˆŒØˆÔØˆŒ
ˆ
ˆ
ó    c                 ó   — g | j         d d …<   d S ©N©r   ©r   s    r   Úclosez!AsyncAdapt_aiosqlite_cursor.closev   s   € ØˆŒ
�1�1�1‰ˆˆr   Nc                 óÂ  — 	 |                       | j                             ¦   «         ¦  «        }|€)|                       |                     |¦  «        ¦  «         n)|                       |                     ||¦  «        ¦  «         |j        rN|j        | _        dx| _        | _        | j        s,|                       |                     ¦   «         ¦  «        | _	        nd | _        |j        | _        |j        | _        | j        s)|                       | 
                    ¦   «         ¦  «         d S || _        d S # t          $ r%}| j                             |¦  «         Y d }~d S d }~ww xY w)Nr   )r   r   ÚcursorÚexecuter   r   r   Úserver_sideÚfetchallr   r"   Ú_cursorÚ	Exceptionr   Ú_handle_exception)r   Ú	operationÚ
parametersr(   Úerrors        r   r%   z#AsyncAdapt_aiosqlite_cursor.executey   sX  € ð	<Ø—k’k $Ô"2×"9Ò"9Ñ";Ô";Ñ<Ô<ˆGàÐ!Ø—’˜GŸOšO¨IÑ6Ô6Ñ7Ô7Ð7Ð7à—’˜GŸOšO¨I°zÑBÔBÑCÔCÐCàÔ"ð 	1Ø#*Ô#6�Ô Ø13Ð3�” ¤àÔ'ð AØ!%§¢¨W×-=Ò-=Ñ-?Ô-?Ñ!@Ô!@�D”Jøà#'�Ô Ø!(Ô!2�”Ø 'Ô 0�”àÔ#ð 'Ø—’˜GŸMšM™OœOÑ,Ô,Ð,Ð,Ð,à&�”��øÝð 	<ð 	<ð 	<ØÔ"×4Ò4°UÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøs   ‚D"D/ Ä&D/ Ä/
EÄ9EÅEc                 ó¢  — 	 |                       | j                             ¦   «         ¦  «        }|                       |                     ||¦  «        ¦  «         d | _        |j        | _        |j        | _        |                       |                     ¦   «         ¦  «         d S # t          $ r%}| j	         
                    |¦  «         Y d }~d S d }~ww xY wr   )r   r   r$   Úexecutemanyr   r   r   r"   r)   r   r*   )r   r+   Úseq_of_parametersr(   r-   s        r   r/   z'AsyncAdapt_aiosqlite_cursor.executemany”   sÎ   € ð	<Ø—k’k $Ô"2×"9Ò"9Ñ";Ô";Ñ<Ô<ˆGØ�KŠK˜×+Ò+¨IÐ7HÑIÔIÑJÔJÐJØ#ˆDÔØ$Ô.ˆDŒNØ#Ô,ˆDŒMØ�KŠK˜Ÿš™œÑ(Ô(Ð(Ð(Ð(øÝð 	<ð 	<ð 	<ØÔ"×4Ò4°UÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøs   ‚BB Â
CÂ)C	Ã	Cc                 ó   — d S r   © )r   Ú
inputsizess     r   Úsetinputsizesz)AsyncAdapt_aiosqlite_cursor.setinputsizesŸ   s   € Øˆr   c              #   ób   K  — | j         r%| j                              d¦  «        V — | j         °#d S d S ©Nr   ©r   Úpopr!   s    r   Ú__iter__z$AsyncAdapt_aiosqlite_cursor.__iter__¢   sJ   è è € ØŒjð 	$Ø”*—.’. Ñ#Ô#Ð#Ð#Ð#ð Œjð 	$ð 	$ð 	$ð 	$ð 	$r   c                 óH   — | j         r| j                              d¦  «        S d S r6   r7   r!   s    r   Úfetchonez$AsyncAdapt_aiosqlite_cursor.fetchone¦   s%   € ØŒ:ð 	Ø”:—>’> !Ñ$Ô$Ð$à�4r   c                 óh   — |€| j         }| j        d|…         }| j        |d …         | j        d d …<   |S r6   )r   r   )r   ÚsizeÚretvals      r   Ú	fetchmanyz%AsyncAdapt_aiosqlite_cursor.fetchmany¬   s=   € Øˆ<Ø”>ˆDà”˜A˜d˜FÔ#ˆØœ
 4 5 5Ô)ˆŒ
�1�1�1‰Øˆr   c                 ó<   — | j         d d …         }g | j         d d …<   |S r   r    )r   r>   s     r   r'   z$AsyncAdapt_aiosqlite_cursor.fetchall´   s%   € Ø”˜A˜A˜A”ˆØˆŒ
�1�1�1‰Øˆr   r   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r&   r   r"   r%   r/   r4   r9   r;   r?   r'   r2   r   r   r   r   \   s³   € € € € € ð	€Ið €Kðð ð ðð ð ð<ð <ð <ð <ð6	<ð 	<ð 	<ðð ð ð$ð $ð $ðð ð ðð ð ð ðð ð ð ð r   r   c                   ó@   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zd	d„Zd„ Z	ˆ xZ
S )
ÚAsyncAdapt_aiosqlite_ss_cursorr(   Tc                 óH   •—  t          ¦   «         j        |i |¤Ž d | _        d S r   )Úsuperr   r(   )r   ÚargÚkwÚ	__class__s      €r   r   z'AsyncAdapt_aiosqlite_ss_cursor.__init__Á   s*   ø€ Ø�‰ŒÔ˜#Ð$ Ð$Ð$Ð$ØˆŒˆˆr   c                 ó~   — | j         �5|                      | j                              ¦   «         ¦  «         d | _         d S d S r   )r(   r   r"   r!   s    r   r"   z$AsyncAdapt_aiosqlite_ss_cursor.closeÅ   s=   € ØŒ<Ð#Ø�KŠK˜œ×*Ò*Ñ,Ô,Ñ-Ô-Ð-ØˆDŒLˆLˆLð $Ð#r   c                 óZ   — |                       | j                             ¦   «         ¦  «        S r   )r   r(   r;   r!   s    r   r;   z'AsyncAdapt_aiosqlite_ss_cursor.fetchoneÊ   ó"   € Ø�{Š{˜4œ<×0Ò0Ñ2Ô2Ñ3Ô3Ð3r   Nc                 óp   — |€| j         }|                      | j                             |¬¦  «        ¦  «        S )N)r=   )r   r   r(   r?   )r   r=   s     r   r?   z(AsyncAdapt_aiosqlite_ss_cursor.fetchmanyÍ   s3   € Øˆ<Ø”>ˆDØ�{Š{˜4œ<×1Ò1°tÐ1Ñ<Ô<Ñ=Ô=Ð=r   c                 óZ   — |                       | j                             ¦   «         ¦  «        S r   )r   r(   r'   r!   s    r   r'   z'AsyncAdapt_aiosqlite_ss_cursor.fetchallÒ   rN   r   r   )rA   rB   rC   rD   r&   r   r"   r;   r?   r'   Ú__classcell__©rK   s   @r   rF   rF   º   s…   ø€ € € € € ð €Ià€Kðð ð ð ð ð ð  ð  ð
4ð 4ð 4ð>ð >ð >ð >ð
4ð 4ð 4ð 4ð 4ð 4ð 4r   rF   c                   ó�   — e Zd Z ee¦  «        ZdZd„ Zed„ ¦   «         Z	e	j
        d„ ¦   «         Z	d„ Zdd„Zd„ Zd	„ Zd
„ Zd„ Zd„ ZdS )ÚAsyncAdapt_aiosqlite_connection)Údbapic                 ó"   — || _         || _        d S r   )rU   r   )r   rU   Ú
connections      r   r   z(AsyncAdapt_aiosqlite_connection.__init__Ú   s   € ØˆŒ
Ø%ˆÔÐÐr   c                 ó   — | j         j        S r   )r   Úisolation_levelr!   s    r   rY   z/AsyncAdapt_aiosqlite_connection.isolation_levelÞ   s   € àÔÔ/Ð/r   c                 óP  — d„ }t          || j        j        |¦  «        }t          j        ¦   «                              ¦   «         }| j        j                             ||f¦  «         	 |                      |¦  «        S # t          $ r }|  
                    |¦  «         Y d }~d S d }~ww xY w)Nc                 ó   — || _         d S r   )rY   )rW   Úvalues     r   Úset_isoz@AsyncAdapt_aiosqlite_connection.isolation_level.<locals>.set_isoé   s   € Ø).ˆJÔ&Ð&Ð&r   )r   r   Ú_connÚasyncioÚget_event_loopÚcreate_futureÚ_txÚ
put_nowaitr   r)   r*   )r   r\   r]   ÚfunctionÚfuturer-   s         r   rY   z/AsyncAdapt_aiosqlite_connection.isolation_levelâ   s¿   € ð	/ð 	/ð 	/õ ˜7 DÔ$4Ô$:¸EÑBÔBˆÝÔ'Ñ)Ô)×7Ò7Ñ9Ô9ˆàÔÔ×'Ò'¨°Ð(:Ñ;Ô;Ð;ð	*Ø—;’;˜vÑ&Ô&Ð&øÝð 	*ð 	*ð 	*Ø×"Ò" 5Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð	*øøøs   Á&A; Á;
B%ÂB Â B%c                 ó¬   — 	 |                        | j        j        |i |¤Ž¦  «         d S # t          $ r }|                      |¦  «         Y d }~d S d }~ww xY wr   )r   r   Úcreate_functionr)   r*   )r   ÚargsrJ   r-   s       r   rg   z/AsyncAdapt_aiosqlite_connection.create_functionö   sz   € ð	*Ø�KŠKÐ8˜Ô(Ô8¸$ÐEÀ"ÐEÐEÑFÔFÐFÐFÐFøÝð 	*ð 	*ð 	*Ø×"Ò" 5Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð	*øøøs   ‚%) ©
A³AÁAFc                 óB   — |rt          | ¦  «        S t          | ¦  «        S r   )rF   r   )r   r&   s     r   r$   z&AsyncAdapt_aiosqlite_connection.cursorü   s&   € Øð 	5Ý1°$Ñ7Ô7Ð7å.¨tÑ4Ô4Ð4r   c                 óL   — |                        | j        j        |i |¤Ž¦  «        S r   )r   r   r%   )r   rh   rJ   s      r   r%   z'AsyncAdapt_aiosqlite_connection.execute  s*   € Ø�{Š{Ð3˜4Ô+Ô3°TÐ@¸RÐ@Ð@ÑAÔAÐAr   c                 óº   — 	 |                       | j                             ¦   «         ¦  «         d S # t          $ r }|                      |¦  «         Y d }~d S d }~ww xY wr   )r   r   Úrollbackr)   r*   ©r   r-   s     r   rl   z(AsyncAdapt_aiosqlite_connection.rollback  ss   € ð	*Ø�KŠK˜Ô(×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4øÝð 	*ð 	*ð 	*Ø×"Ò" 5Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð	*øøøó   ‚,0 °
AºAÁAc                 óº   — 	 |                       | j                             ¦   «         ¦  «         d S # t          $ r }|                      |¦  «         Y d }~d S d }~ww xY wr   )r   r   Úcommitr)   r*   rm   s     r   rp   z&AsyncAdapt_aiosqlite_connection.commit  ss   € ð	*Ø�KŠK˜Ô(×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2øÝð 	*ð 	*ð 	*Ø×"Ò" 5Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð	*øøørn   c                 óÒ   — 	 |                       | j                             ¦   «         ¦  «         d S # t          $ r Y d S t          $ r }|                      |¦  «         Y d }~d S d }~ww xY wr   )r   r   r"   Ú
ValueErrorr)   r*   rm   s     r   r"   z%AsyncAdapt_aiosqlite_connection.close  sŽ   € ð	*Ø�KŠK˜Ô(×.Ò.Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1øÝð 		ð 		ð 		ð ˆDˆDÝð 	*ð 	*ð 	*Ø×"Ò" 5Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð	*øøøs   ‚,0 °
A&½	A&ÁA!Á!A&c                 ó’   — t          |t          ¦  «        r1|j        d         dk    r | j        j                             d¦  «        |‚|‚)Nr   úno active connection)Ú
isinstancerr   rh   rU   ÚsqliteÚOperationalErrorrm   s     r   r*   z1AsyncAdapt_aiosqlite_connection._handle_exception!  sP   € å�u�jÑ)Ô)ð	à”
˜1”Ð!7Ò7Ð7à”*Ô#×4Ò4Ø&ñô àðð ˆKr   N)F)rA   rB   rC   Ústaticmethodr   r   rD   r   ÚpropertyrY   Úsetterrg   r$   r%   rl   rp   r"   r*   r2   r   r   rT   rT   Ö   sâ   € € € € € Øˆ\˜*Ñ%Ô%€FØ€Ið&ð &ð &ð ð0ð 0ñ „Xð0ð Ôð*ð *ñ Ôð*ð&*ð *ð *ð5ð 5ð 5ð 5ðBð Bð Bð*ð *ð *ð*ð *ð *ð*ð *ð *ð 	ð 	ð 	ð 	ð 	r   rT   c                   ó(   — e Zd ZdZ ee¦  «        ZdS )Ú'AsyncAdaptFallback_aiosqlite_connectionr2   N)rA   rB   rC   rD   rx   r   r   r2   r   r   r|   r|   -  s"   € € € € € Ø€Iàˆ\˜.Ñ)Ô)€F€F€Fr   r|   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚAsyncAdapt_aiosqlite_dbapic                 óX   — || _         || _        d| _        |                      ¦   «          d S )NÚqmark)Ú	aiosqliterv   Ú
paramstyleÚ_init_dbapi_attributes)r   r�   rv   s      r   r   z#AsyncAdapt_aiosqlite_dbapi.__init__4  s/   € Ø"ˆŒØˆŒØ!ˆŒØ×#Ò#Ñ%Ô%Ð%Ð%Ð%r   c           	      óü   — dD ]&}t          | |t          | j        |¦  «        ¦  «         Œ'dD ]&}t          | |t          | j        |¦  «        ¦  «         Œ'dD ]&}t          | |t          | j        |¦  «        ¦  «         Œ'd S )N)ÚDatabaseErrorÚErrorÚIntegrityErrorÚNotSupportedErrorrw   ÚProgrammingErrorÚsqlite_versionÚsqlite_version_info)ÚPARSE_COLNAMESÚPARSE_DECLTYPES)ÚBinary)ÚsetattrÚgetattrr�   rv   )r   Únames     r   rƒ   z1AsyncAdapt_aiosqlite_dbapi._init_dbapi_attributes:  s    € ð	
ð 
	?ð 
	?ˆDõ �D˜$¥¨¬¸Ñ =Ô =Ñ>Ô>Ð>Ð>à9ð 	<ð 	<ˆDÝ�D˜$¥¨¬°TÑ :Ô :Ñ;Ô;Ð;Ð;àð 	<ð 	<ˆDÝ�D˜$¥¨¬°TÑ :Ô :Ñ;Ô;Ð;Ð;ð	<ð 	<r   c                 ó>  — |                      dd¦  «        }|                      dd ¦  «        }|r	 ||i |¤Ž}n | j        j        |i |¤Ž}d|_        t	          j        |¦  «        rt          | t          |¦  «        ¦  «        S t          | t          |¦  «        ¦  «        S )NÚasync_fallbackFÚasync_creator_fnT)
r8   r�   ÚconnectÚdaemonr	   Úasboolr|   r   rT   r   )r   rI   rJ   r“   Ú
creator_fnrW   s         r   r•   z"AsyncAdapt_aiosqlite_dbapi.connectM  s½   € ØŸšÐ 0°%Ñ8Ô8ˆà—V’VÐ.°Ñ5Ô5ˆ
Øð 	%Ø#˜ SÐ/¨BÐ/Ð/ˆJˆJà/˜œÔ/°Ð;¸Ð;Ð;ˆJà $ˆJÔåŒ;�~Ñ&Ô&ð 		Ý:ØÝ˜zÑ*Ô*ñô ð õ
 3ØÝ˜:Ñ&Ô&ñô ð r   N)rA   rB   rC   r   rƒ   r•   r2   r   r   r~   r~   3  sA   € € € € € ð&ð &ð &ð<ð <ð <ð&ð ð ð ð r   r~   c                   ó   — e Zd Zd„ ZdS )Ú SQLiteExecutionContext_aiosqlitec                 ó8   — | j                              d¬¦  «        S )NT)r&   )Ú_dbapi_connectionr$   r!   s    r   Úcreate_server_side_cursorz:SQLiteExecutionContext_aiosqlite.create_server_side_cursore  s   € ØÔ%×,Ò,¸Ð,Ñ>Ô>Ð>r   N)rA   rB   rC   r�   r2   r   r   rš   rš   d  s#   € € € € € ð?ð ?ð ?ð ?ð ?r   rš   c                   ód   ‡ — e Zd ZdZdZdZdZeZe	d„ ¦   «         Z
e	d„ ¦   «         Zˆ fd„Zd„ Zˆ xZS )ÚSQLiteDialect_aiosqliter�   Tc                 óV   — t          t          d¦  «        t          d¦  «        ¦  «        S )Nr�   Úsqlite3)r~   Ú
__import__)Úclss    r   Úimport_dbapiz$SQLiteDialect_aiosqlite.import_dbapis  s)   € å)Ý�{Ñ#Ô#¥Z°	Ñ%:Ô%:ñ
ô 
ð 	
r   c                 ó\   — |                       |¦  «        rt          j        S t          j        S r   )Ú_is_url_file_dbr   ÚNullPoolÚ
StaticPool)r£   Úurls     r   Úget_pool_classz&SQLiteDialect_aiosqlite.get_pool_classy  s(   € à×Ò˜sÑ#Ô#ð 	#Ý”=Ð å”?Ð"r   c                 ó¤   •— t          || j        j        ¦  «        rdt          |¦  «        v rdS t	          ¦   «                              |||¦  «        S )Nrt   T)ru   rU   rw   ÚstrrH   Úis_disconnect)r   ÚerW   r$   rK   s       €r   r­   z%SQLiteDialect_aiosqlite.is_disconnect€  sQ   ø€ ÝØˆtŒzÔ*ñ
ô 
ð 	à$­¨A©¬Ð.Ð.Ø�4å‰wŒw×$Ò$ Q¨
°FÑ;Ô;Ð;r   c                 ó   — |j         S r   )r   )r   rW   s     r   Úget_driver_connectionz-SQLiteDialect_aiosqlite.get_driver_connectionˆ  s   € ØÔ%Ð%r   )rA   rB   rC   ÚdriverÚsupports_statement_cacheÚis_asyncÚsupports_server_side_cursorsrš   Úexecution_ctx_clsÚclassmethodr¤   rª   r­   r°   rQ   rR   s   @r   rŸ   rŸ   i  s—   ø€ € € € € Ø€FØ#Ðà€Hà#'Ð à8Ðàð
ð 
ñ „[ð
ð
 ð#ð #ñ „[ð#ð<ð <ð <ð <ð <ð&ð &ð &ð &ð &ð &ð &r   rŸ   )Ú__doc__r_   Ú	functoolsr   Úbaser   Úpysqliter   Ú r   r	   Úenginer
   Úutil.concurrencyr   r   r   rF   rT   r|   r~   rš   rŸ   Údialectr2   r   r   ú<module>r¿      só  ððDð DðL €€€Ø Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø .Ð .Ð .Ð .Ð .Ð .Ø *Ð *Ð *Ð *Ð *Ð *ð[ð [ð [ð [ð [ñ [ô [ð [ð|4ð 4ð 4ð 4ð 4Ð%@ñ 4ô 4ð 4ð8Tð Tð Tð Tð TÐ&7ñ Tô Tð Tðn*ð *ð *ð *ð *Ð.Mñ *ô *ð *ð.ð .ð .ð .ð .ñ .ô .ð .ðb?ð ?ð ?ð ?ð ?Ð'=ñ ?ô ?ð ?ð
 &ð  &ð  &ð  &ð  &Ð4ñ  &ô  &ð  &ðF "€€€r   