§
    eŠtjèé  ã                  óH  — d Z ddlmZ ddl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 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 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! 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( er6d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m0Z0 dd*lm1Z1 dd+lm2Z2  e&j3        d,d-¦  «        Z4dzd2„Z5ed/e6eee6d3f                  e
e6         f         Z7ed4e6e6e
e6         f         Z8ed1e6d3e
e6         f         Z9ee7         Z: G d5„ d6e¦  «        Z;d{dA„Z<e	 	 	 	 d|d}dM„¦   «         Z=ed~dN„¦   «         Z=	 	 	 	 dd€dQ„Z=dR„ Z>d�dT„Z?dU„ Z@dV„ ZAdW„ ZBdX„ ZCdY„ ZDdZ„ ZEd[„ ZFd‚d`„ZGda„ ZHe	 dƒd„db„¦   «         ZIed…de„¦   «         ZI	 	 d†d‡dg„ZIe	 dƒd„dh„¦   «         ZJed…di„¦   «         ZJ	 	 d†d‡dj„ZJ G dk„ dlej/        e         ¦  «        ZKdˆdo„ZLdp„ ZMd‰dv„ZNdw„ ZOdx„ ZPdy„ ZQdS )ŠziFunctions used by compiler.py to determine the parameters rendered
within INSERT and UPDATE statements.

é    )ÚannotationsN)ÚAny)ÚCallable)Úcast)ÚDict)ÚIterable)ÚList)ÚMutableMapping)Ú
NamedTuple)ÚOptional)Úoverload)ÚSequence)ÚSet)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   )Ú	coercions)Údml)Úelements)Úroles)Ú_DefaultDescriptionTuple)Úisinsert)ÚColumnClause)Údefault_is_clause_element)Údefault_is_sequence)ÚSelect)ÚTableClauseé   )Úexc)Úutil)ÚLiteral)Ú_BindNameForColProtocol)ÚSQLCompiler)Ú_DMLColumnElement)ÚDMLState)Ú
ValuesBase)ÚColumnElement)ÚKeyedColumnElement)Ú_SQLExprDefault)ÚColumnÚREQUIREDa8  
Placeholder for the value within a :class:`.BindParameter`
which is required to be present when the statement is passed
to :meth:`_engine.Connection.execute`.

This symbol is typically used when a :func:`_expression.insert`
or :func:`_expression.update` statement is compiled without parameter
values present.

ÚcúColumnElement[Any]ÚreturnúColumnClause[Any]c                ó^   — t          | t          ¦  «        st          j        d| ›�¦  «        ‚| S )Nz5Can't create DML statement against column expression )Ú
isinstancer   r    ÚCompileError)r-   s    úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/sql/crud.pyÚ_as_dml_columnr5   K   s;   € Ý�a�Ñ&Ô&ð 
ÝÔØIÀAÐIÐIñ
ô 
ð 	
ð €Hó    r*   úKeyedColumnElement[Any]c                  óN   — e Zd ZU ded<   ded<   dZded<   dZded<   d	Zd
ed<   d	S )Ú_CrudParamszList[_CrudParamElementStr]Úsingle_paramsú$List[Sequence[_CrudParamElementStr]]Úall_multi_paramsFÚboolÚis_default_metavalue_onlyÚuse_insertmanyvaluesNzOptional[Sequence[Column[Any]]]Úuse_sentinel_columns)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r>   r?   r@   © r6   r4   r9   r9   k   s`   € € € € € € Ø-Ð-Ð-Ñ-Ø:Ð:Ð:Ñ:Ø&+ÐÐ+Ð+Ð+Ñ+Ø!&ÐÐ&Ð&Ð&Ñ&Ø<@ÐÐ@Ð@Ð@Ñ@Ð@Ð@r6   r9   Úcompilerr$   Ústmtr'   Úcompile_stater&   Útoplevelr=   Úkwr   c                óâ	  ‡ ‡‡— g ‰ _         g ‰ _        g ‰ _        g ‰ _        |                     dd¦  «        }|�|                     dd¦  «         d|vs
J d¦   «         ‚t          ‰ ||¦  «        \  Š}}|‰ _        |j        r|j	        rt          j        d¦  «        ‚|j        r)t          ‰ ||d|‰|dd||¦  «         t          g g ¦  «        S ‰ j        €-|j        r&t          ˆ fd„|j        j        D ¦   «         g ¦  «        S t'          |¦  «        rJ|j        rC|j        }|€J ‚|d         }	t-          |	                     ¦   «         ¦  «        }
ˆfd	„|	D ¦   «         Šnj|j        r!|j        }	|j        }
|	€J ‚ˆfd
„|	D ¦   «         ŠnB|j        r7|j        }	t-          |	                     ¦   «         ¦  «        }
ˆfd„|	D ¦   «         Šndx}
Š‰ j        €i }n.|
r‰€J ‚ˆˆfd„‰ j        D ¦   «         }nˆfd„‰ j        D ¦   «         }g }|
�t5          ‰ |||
‰||¦  «         i }t7          j        |¦  «        r|j        rt=          ‰ |||
|||||¦	  «	         t'          |¦  «        r.|j        r'|j        rJ ‚tA          ‰ ||||‰|||||¦  «         d}d}ntC          ‰ ||||‰|||||¦  «        \  }}|�rm|
�rjtE          |¦  «         #                    ˆfd„|
D ¦   «         ¦  «         $                    |¦  «        }|�r&t7          j        |¦  «        rÞtE          d„ |
D ¦   «         ¦  «         $                    |j%        g¦  «        }| $                    |j&        ¦  «        }|rQ|j        r‰ j'        sC‰ j'        sd}nd}t          j        |› dd (                    d„ |D ¦   «         ¦  «        › d�¦  «        ‚|r=‰ j'        sJ ‚t          j        dd (                    d„ |D ¦   «         ¦  «        › �¦  «        ‚t          j        dd (                    d„ |D ¦   «         ¦  «        z  ¦  «        ‚d}t'          |¦  «        rP|j        rI|j        rJ ‚tS          ‰ ||tU          d|¦  «        tU          d‰¦  «        |¦  «        }t          ||¦  «        S |sk‰ j+        rd‰ j,        j-        rXt]          |j        j        d         ¦  «        ‰ j/         0                    |j        j        d         ¦  «        ‰ j,        j1        dfg}d}t          |g |||¬¦  «        S )aQ  create a set of tuples representing column/string pairs for use
    in an INSERT or UPDATE statement.

    Also generates the Compiled object's postfetch, prefetch, and
    returning column collections, used for default handling and ultimately
    populating the CursorResult's prefetch_cols() and postfetch_cols()
    collections.

    Úvisiting_cteNÚaccumulate_bind_namesz;Don't know how to handle insert within insert without a CTEzVCan't compile statement that includes returning() and return_defaults() simultaneouslyrE   c           
     óˆ   •— g | ]>}|j         °	|‰j                             |¦  «        t          ‰|d d¬¦  «        |j        ff‘Œ?S )NT)Úrequired)Ú_omit_from_statementsÚpreparerÚformat_columnÚ_create_bind_paramÚkey)Ú.0r-   rF   s     €r4   ú
<listcomp>z$_get_crud_params.<locals>.<listcomp>Ð   sh   ø€ ð 	ð 	ð 	ð ØÔ.ð	àØÔ%×3Ò3°AÑ6Ô6Ý& x°°DÀ4ÐHÑHÔHØ”U�Hð	ð	ð 	ð 	r6   r   c                ó&   •— h | ]} ‰|¦  «        ’ŒS rE   rE   ©rU   rT   Ú_column_as_keys     €r4   ú	<setcomp>z#_get_crud_params.<locals>.<setcomp>ê   ó#   ø€ Ð:Ð:Ð:¨s�~�~ cÑ*Ô*Ð:Ð:Ð:r6   c                ó&   •— h | ]} ‰|¦  «        ’ŒS rE   rE   rX   s     €r4   rZ   z#_get_crud_params.<locals>.<setcomp>ï   r[   r6   c                ó&   •— h | ]} ‰|¦  «        ’ŒS rE   rE   rX   s     €r4   rZ   z#_get_crud_params.<locals>.<setcomp>ó   r[   r6   c                ó:   •— i | ]}|‰v¯ ‰|¦  «        t           “ŒS rE   ©r,   )rU   rT   rY   Úspd_str_keys     €€r4   ú
<dictcomp>z$_get_crud_params.<locals>.<dictcomp>ý   s:   ø€ ð 
ð 
ð 
àØ˜+Ð%Ð%ð ˆN˜3ÑÔ¥à%Ð%Ð%r6   c                ó2   •— i | ]} ‰|¦  «        t           “ŒS rE   r_   rX   s     €r4   ra   z$_get_crud_params.<locals>.<dictcomp>  s2   ø€ ð 
ð 
ð 
Ø.1ˆNˆN˜3ÑÔ¥ð
ð 
ð 
r6   Fc              3  ó4   •K  — | ]\  }} ‰|¦  «        V — Œd S ©NrE   )rU   ÚkÚvrY   s      €r4   ú	<genexpr>z#_get_crud_params.<locals>.<genexpr>L  s1   øè è € ÐNÐN±°°1˜.˜.¨Ñ+Ô+ÐNÐNÐNÐNÐNÐNr6   c              3  ób   K  — | ]*\  }}t          |t          ¦  «        r|j        ®!|j        V — Œ+d S rd   )r2   r   Útable)rU   r-   rf   s      r4   rg   z#_get_crud_params.<locals>.<genexpr>R  sP   è è € ð 'ð 'á˜˜1Ý! !¥\Ñ2Ô2ð'ð 89´wÐ7Jð ”Gà7JÐ7JÐ7JÐ7Jð'ð 'r6   z<Backend does not support additional tables in the SET clausez/Statement is not a multi-table UPDATE statementz'; cannot include columns from table(s) ú, c              3  ó,   K  — | ]}d |j         › d �V — ŒdS ©ú'N©Údescription©rU   Úts     r4   rg   z#_get_crud_params.<locals>.<genexpr>m  sK   è è € ð &Að &AØ*+ð ';¨!¬-Ð&:Ð&:Ð&:ð &Að &Að &Að &Að &Að &Ar6   z in SET clausez7Multi-table UPDATE statement does not include table(s) c              3  ó,   K  — | ]}d |j         › d �V — ŒdS rl   rn   rp   s     r4   rg   z#_get_crud_params.<locals>.<genexpr>x  sC   è è € ð &8ð &8à !ð !5 A¤MÐ 4Ð 4Ð 4ð&8ð &8ð &8ð &8ð &8ð &8r6   zUnconsumed column names: %sc              3  ó   K  — | ]}|›V — Œd S rd   rE   )rU   r-   s     r4   rg   z#_get_crud_params.<locals>.<genexpr>€  s$   è è € Ð8Ð8¨Q Q QÐ8Ð8Ð8Ð8Ð8Ð8r6   úSequence[_CrudParamElementStr]úCallable[..., str]T)r>   r?   r@   )2Ú	postfetchÚinsert_prefetchÚupdate_prefetchÚimplicit_returningÚgetÚpopÚ_key_getters_for_crud_columnÚ_get_bind_name_for_colÚ
_returningÚ_return_defaultsr    r3   ÚisdeleteÚ_setup_delete_return_defaultsr9   Úcolumn_keysÚ_no_parametersri   ÚcolumnsÚ_compile_state_isinsertÚ_has_multi_parametersÚ_multi_parametersÚlistÚitemsÚ_ordered_valuesÚ_dict_parametersÚ!_get_stmt_parameter_tuples_paramsr   ÚisupdateÚis_multitableÚ_get_update_multitable_paramsÚ_select_namesÚ_scan_insert_from_select_colsÚ
_scan_colsÚsetÚintersectionÚ
differenceÚ	dml_tableÚ_extra_fromsÚ'render_table_with_column_in_update_fromÚjoinÚ_extend_values_for_multiparamsr   Úfor_executemanyÚdialectÚsupports_default_metavaluer5   rQ   rR   Údefault_metavalue_token)rF   rG   rH   rI   rJ   rL   Ú_getattr_col_keyÚ_col_bind_nameÚmpÚspdÚstmt_parameter_tuplesÚ
parametersÚvaluesÚcheck_columnsr?   r@   ÚcheckÚtables_mentionedÚmulti_not_in_fromÚpreambler>   Úmulti_extended_valuesrY   r`   s   `                     @@r4   Ú_get_crud_paramsr¬   s   se  øøø€ ðP €HÔØ!€HÔØ!€HÔØ"$€HÔà—6’6˜.¨$Ñ/Ô/€LØÐð
 	�ŠÐ&¨Ñ-Ô-Ð-à rÐ)Ð)Ð)ØDñ 	*Ô)Ð)õ 	% X¨t°]ÑCÔCñ	ØØØð '5€HÔ#à„ð 
˜4Ô0ð 
ÝÔð/ñ
ô 
ð 	
ð
 Ôð #Ý%ØØØØØØØØØØØñ	
ô 	
ð 	
õ ˜2˜rÑ"Ô"Ð"ð ÔÐ#¨Ô(DÐ#Ýð	ð 	ð 	ð 	ð œÔ+ð	ñ 	ô 	ð ñ
ô 
ð 	
õ( 	  Ñ.Ô.ð3àÔ/ð3ð Ô,ˆØˆ~ˆ~ˆ~Ø�ŒeˆÝ $ S§Y¢Y¡[¤[Ñ 1Ô 1ÐØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆˆØ	Ô	&ð 
3ØÔ,ˆØ -Ô =ÐØˆˆˆØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆˆØ	Ô	'ð 3ØÔ,ˆÝ $ S§Y¢Y¡[¤[Ñ 1Ô 1ÐØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆˆà.2Ð2Ð ð ÔÐ#Øˆ
ˆ
Ø	ð 

ØÐ&Ð&Ð&ð
ð 
ð 
ð 
ð 
àÔ+ð
ñ 
ô 
ˆ
ˆ
ð
ð 
ð 
ð 
Ø5=Ô5Ið
ñ 
ô 
ˆ
ð
 *,€FàÐ(Ý)ØØØØ!ØØØñ	
ô 	
ð 	
ð 35€Mõ „|�MÑ"Ô"ð 
 }Ô'Bð 
Ý%ØØØØ!ØØØØØñ
	
ô 
	
ð 
	
õ ˜}Ñ-Ô-ð !
°$Ô2Dð !
ð !Ô6Ð6Ð6Ð6å%ØØØØØØØØØØØñ	
ô 	
ð 	
ð  %ÐØ#ÐÐå5?ØØØØØØØØØØØñ6
ô 6
Ñ2ÐÐ2ð ñ 8Ð+ñ 8å�
‰OŒOßŠ\ÐNÐNÐNÐNÐ8MÐNÑNÔNÑNÔNßŠZ˜Ñ&Ô&ð 	ð
 ñ 2	åŒ|˜MÑ*Ô*ð +Ý#&ð 'ð 'à 5ð'ñ 'ô 'ñ $ô $÷ ’*˜mÔ5Ð6Ñ7Ô7ð	 !ð %5×$?Ò$?Ø!Ô.ñ%ô %Ð!ð $ð  Ø%Ô3ð à#ÔKð ð $ÔKð ð7ð !˜ð Nð !õ Ô*Ø#ð +ð +à ŸIšIð &Að &AØ/?ð&Añ &Aô &Añ Aô Að+ð +ð +ñô ð ð 'ð 
Ø#ÔKÐKÐKÐKÝÔ*ðð !ŸIšIð &8ð &8à%6ð&8ñ &8ô &8ñ 8ô 8ðð ñô ð õ Ô"Ø-Ø—9’9Ð8Ð8°%Ð8Ñ8Ô8Ñ8Ô8ñ:ñô ð ð
 !&Ðõ 	  Ñ.Ô.ð#)àÔ/ð#)ð
 Ô%Ð%Ð%Ð%Ý >ØØØÝØ0Øñô õ Ð% ~Ñ6Ô6Øñ
!
ô 
!
Ðõ ˜6Ð#8Ñ9Ô9Ð9àð)àÔ$ð)ð ÔÔ7ð)õ ˜tœzÔ1°!Ô4Ñ5Ô5ØÔ!×/Ò/°´
Ô0BÀ1Ô0EÑFÔFØÔ Ô8Øð	ð
ˆð %)Ð!åØØ
Ø";Ø1Ø1ðñ ô ð r6   .FÚcolÚvalueÚprocessúLiteral[True]rO   ÚnameúOptional[str]Úforce_anonymousÚstrc                ó   — d S rd   rE   )rF   r­   r®   r¯   rO   r±   r³   rJ   s           r4   rS   rS   ³  s	   € ð ˆ#r6   c                ó   — d S rd   rE   )rF   r­   r®   rJ   s       r4   rS   rS   À  ó	   € ð ˆ#r6   Tú'Union[str, elements.BindParameter[Any]]c                óŠ   — |rd }n	|€|j         }t          j        |||j        |¬¦  «        }d|_        |r |j        | fi |¤ŽS |S )N)Útype_rO   T)rT   r   ÚBindParameterÚtypeÚ_is_crudÚ_compiler_dispatch)	rF   r­   r®   r¯   rO   r±   r³   rJ   Ú	bindparams	            r4   rS   rS   É  st   € ð ð ØˆˆØ	ˆØŒwˆåÔ&Øˆe˜3œ8¨hðñ ô €Ið €IÔØð Ø+ˆyÔ+¨HÐ;Ð;¸Ð;Ð;Ð;àÐr6   c                óä   — d|v }|s7|j         r0t          |j        t          j        ¦  «        r|| j        d|j        f<   |j        j        r|                     |j        ¦  «        } |j	        | fi |¤ŽS )NrL   r¿   )
Úuniquer2   rT   r   Ú_truncated_labelÚtruncated_namesr¼   Ú_isnullÚ_with_binary_element_typer¾   )rF   r­   r®   r±   rJ   Úis_ctes         r4   Ú_handle_values_anonymous_paramrÇ   â  s”   € ð( ˜rÐ!€Fð ðBàŒLðBõ �u”y¥(Ô";Ñ<Ô<ðBð
 >BˆÔ  +¨u¬yÐ!9Ñ:à„zÔð :ð ×/Ò/°´Ñ9Ô9ˆà#ˆ5Ô# HÐ3Ð3°Ð3Ð3Ð3r6   ú¢Tuple[Callable[[Union[str, ColumnClause[Any]]], Union[str, Tuple[str, str]]], Callable[[ColumnClause[Any]], Union[str, Tuple[str, str]]], _BindNameForColProtocol]c                óf  ‡‡— t          j        |¦  «        rX|j        rQt          |j        ¦  «        Št	          j        t          j        t          j	        ¦  «        Šdˆˆfd„}dˆfd„}dˆfd
„}n?t	          j        t          j        t          j	        ¦  «        }t          j        d¦  «        x}}|||fS )NrT   úUnion[ColumnClause[Any], str]r/   úUnion[str, Tuple[str, str]]c                ól   •—  ‰| ¦  «        }t          | d¦  «        r| j        ‰v r| j        j        |fS |S )Nri   )Úhasattrri   r±   )rT   Ústr_keyÚ_etÚ
c_key_roles     €€r4   rY   z4_key_getters_for_crud_column.<locals>._column_as_key  sD   ø€ ð !�j ‘o”oˆGÝ�s˜GÑ$Ô$ð ¨¬°cÐ)9Ð)9Øœ	œ¨Ð0Ð0à�r6   r­   r0   c                óJ   •— | j         ‰v r| j         j        | j        fS | j        S rd   )ri   r±   rT   ©r­   rÏ   s    €r4   rŸ   z6_key_getters_for_crud_column.<locals>._getattr_col_key%  s*   ø€ ð Œy˜CÐÐØœ	œ¨¬Ð0Ð0à”w�r6   r´   c                ó–   •— | j         ‰v r9t          rt          | j         t          ¦  «        sJ ‚| j         j        ›d| j        ›�S | j        S )NÚ_)ri   r   r2   r   r±   rT   rÒ   s    €r4   r    z4_key_getters_for_crud_column.<locals>._col_bind_name-  sN   ø€ ØŒy˜CÐÐÝ ð >Ý% c¤iµÑ=Ô=Ð=Ð=Ð=Ø"%¤)¤. . .°#´'°'Ð:Ð:à”w�r6   )rT   rÊ   r/   rË   )r­   r0   r/   rË   )r­   r0   r/   r´   )r   r�   r—   r“   Ú	functoolsÚpartialr   Úexpect_as_keyr   ÚDMLColumnRoleÚoperatorÚ
attrgetter)rF   rG   rH   rY   rŸ   r    rÏ   rÐ   s         @@r4   r|   r|     sü   øø€ õ „|�MÑ"Ô"ð *G }Ô'Að *Gõ �-Ô,Ñ-Ô-ˆåÔ&ÝÔ#¥UÔ%8ñ
ô 
ˆ
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	õ #Ô*ÝÔ#¥UÔ%8ñ
ô 
ˆõ -5Ô,?ÀÑ,FÔ,FÐFÐ˜>àÐ+¨^Ð;Ð;r6   c                ó”  ‡‡— ˆˆfd„‰j         D ¦   «         }| j        d         d         ‰u sJ ‚‰j        | j        d         d<   g }‰j        rJt	          |¦  «        }‰j        j        D ].}||vr(|j        r!|j        j        s| 	                    |¦  «         Œ/|D ]o} ||¦  «        }||v rK||vrG| 
                    |¦  «         | 	                    || j                             |¦  «        d df¦  «         Œ\t          | ‰|||
¦  «         Œp|r¾|                     |¦  «         | j        d         d         }t          |t           ¦  «        s5t#          j        dd                     d„ |D ¦   «         ¦  «        › d	�¦  «        ‚|                     ¦   «         }t+          |j        ¦  «        d
„ |D ¦   «         z   |_        || j        d         d<   d S d S )Nc                óF   •— g | ]}‰j         j         ‰|¦  «                 ‘ŒS rE   )ri   r-   )rU   r±   rY   rG   s     €€r4   rV   z1_scan_insert_from_select_cols.<locals>.<listcomp>K  s,   ø€ ÐNÐNÐN°4ˆDŒJŒL˜˜¨Ñ-Ô-Ô.ÐNÐNÐNr6   éÿÿÿÿÚ
selectableÚinsert_from_selectrE   z_Can't extend statement for INSERT..FROM SELECT to include additional default-holding column(s) rj   c              3  ó>   K  — | ]\  }}}}t          |¦  «        V — Œd S rd   )Úrepr)rU   rÔ   rT   s      r4   rg   z0_scan_insert_from_select_cols.<locals>.<genexpr>v  s0   è è € ÐLÐL©L¨A¨s°A°q�d 3™iœiÐLÐLÐLÐLÐLÐLr6   z~.  Convert the selectable to a subquery() first, or pass include_defaults=False to Insert.from_select() to skip these columns.c                ó   — g | ]	\  }}}}|‘Œ
S rE   rE   )rU   rÔ   Úexprs      r4   rV   z1_scan_insert_from_select_cols.<locals>.<listcomp>}  s3   € ð M
ð M
ð M
Ù"�Q˜˜4 ˆDðM
ð M
ð M
r6   )r�   ÚstackÚselectÚ#include_insert_from_select_defaultsr“   ri   r„   ÚdefaultÚis_sentinelÚappendr{   rQ   rR   Ú&_append_param_insert_select_hasdefaultÚextendr2   r   r    r3   r™   Ú	_generaterˆ   Ú_raw_columns)rF   rG   rH   r¤   rŸ   rY   r    r¦   r¥   rI   rJ   ÚcolsÚadd_select_colsÚcol_setr­   r-   Úcol_keyÚins_from_selects    `   `            r4   r‘   r‘   >  sS  øø€ ð OÐNÐNÐNÐN¸4Ô;MÐNÑNÔN€DàŒ>˜"Ô˜lÔ+¨tÐ3Ð3Ð3Ð3à/3¬{€H„N�2ÔÐ+Ñ,à68€OØÔ/ð !Ý�d‘)”)ˆØ”:Ô%ð 	!ð 	!ˆCð ˜7Ð"Ð"Ø”Kð #àœÔ/ð #ð —’˜CÑ Ô Ð øàð ð ˆØ"Ð" 1Ñ%Ô%ˆØ�jÐ Ð  W°MÐ%AÐ%AØ�NŠN˜7Ñ#Ô#Ð#Ø�MŠM˜1˜hÔ/×=Ò=¸aÑ@Ô@À$ÈÐKÑLÔLÐLÐLå2Ø˜$  ?°Bñô ð ð ð ð CØ�Š�oÑ&Ô&Ð&Ø"œ.¨Ô,Ð-AÔBˆÝ˜/­6Ñ2Ô2ð 		ÝÔ"ðð —I’IÐLÐL¸OÐLÑLÔLÑLÔLðð ð ñô ð ð *×3Ò3Ñ5Ô5ˆå'+¨OÔ,HÑ'IÔ'Ið M
ð M
Ø&5ðM
ñ M
ô M
ñ (
ˆÔ$ð 4CˆŒ�rÔÐ/Ñ0Ð0Ð0ð%Cð Cr6   c                ó  ‡‡‡‡— t          | ‰||	¦  «        \  }}}}}}|j        s	|j        sJ ‚|j        rJˆfd„|j        D ¦   «         }t	          |¦  «        Šˆfd„|D ¦   «         ˆfd„‰j        j        D ¦   «         z   }n‰j        j        }t          |¦  «        }|r |j	        s‰j        j
        }| j        j        }nd x}}‰j        rt	          ‰j        ¦  «        }nt	          ¦   «         }| j        }|D �]Y} ||¦  «        }||v r"||vrt          | ‰||||||||||||
¦  «         �n|rê|j        r,|r*|rt#          | ‰|||
¦  «         nçt%          | ‰|||
¦  «         nÓ|j        �#|j        j        r|�t+          | ‰||||
¦  «         n©|j        �>|r||v r|                     |¦  «         n†|j        s| j                             |¦  «         nd|r||v r|                     |¦  «         nH|j        r$|‰j        j
        ur|j        st5          |¦  «         n|j        rt7          | |‰||||
¦  «         ||v r||vr|                     |¦  «         �Œ[|r;|                     |¦  «        Š|                     ˆfd„‰j        D ¦   «         ¦  «         ||fS )Nc                ó&   •— g | ]} ‰|¦  «        ‘ŒS rE   rE   rX   s     €r4   rV   z_scan_cols.<locals>.<listcomp>œ  s0   ø€ ð 
ð 
ð 
Ø$'ˆNˆN˜3ÑÔð
ð 
ð 
r6   c                óz   •— g | ]7}t          |t          ¦  «        r |‰j        j        v ¯%‰j        j        |         ‘Œ8S rE   )r2   r´   ri   r-   )rU   rT   rG   s     €r4   rV   z_scan_cols.<locals>.<listcomp>   sO   ø€ ð 
ð 
ð 
àÝ˜#�sÑ#Ô#ð
ð ),¨t¬z¬|Ð(;Ð(;ð ŒJŒL˜Ôà(;Ð(;Ð(;r6   c                ó&   •— g | ]}|j         ‰v¯|‘ŒS rE   )rT   )rU   r-   Úordered_keyss     €r4   rV   z_scan_cols.<locals>.<listcomp>¤  s%   ø€ ÐBÐBÐB�1¨¬°\Ð(AÐ(AˆQÐ(AÐ(AÐ(Ar6   c              3  ó$   •K  — | ]
}|‰v ¯|V — Œd S rd   rE   )rU   r-   Úremaining_supplementals     €r4   rg   z_scan_cols.<locals>.<genexpr>1  s;   øè è € ð +
ð +
àØÐ*Ð*Ð*ð à*Ð*Ð*Ð*ð+
ð +
r6   )Ú_get_returning_modifiersr�   r   Ú_parameter_orderingr“   ri   r-   r„   r…   r†   Ú_autoincrement_columnrœ   Ú#insert_null_pk_still_autoincrementsÚ_supplemental_returningry   Ú_append_param_parameterÚprimary_keyÚ!_append_param_insert_pk_returningÚ$_append_param_insert_pk_no_returningrç   rè   Ú_append_param_insert_hasdefaultÚserver_defaultré   rv   ÚnullableÚ"_warn_pk_with_no_anticipated_valueÚ_append_param_updater•   rë   )rF   rG   rH   r¤   rŸ   rY   r    r¦   r¥   rI   rJ   Úneed_pksry   Úimplicit_return_defaultsÚpostfetch_lastrowidr?   r@   Úparameter_orderingrî   r   Úautoincrement_colrý   Úsupplemental_returningÚcompiler_implicit_returningr-   rñ   r÷   rù   s    `   `                    @@r4   r’   r’   ƒ  s)  øøøø€ õ( 	! ¨4°ÀÑIÔIñØØØ ØØØð Ô!Ð; ]Ô%;Ð;Ð;Ð;àÔ(ð "ð
ð 
ð 
ð 
Ø+8Ô+Lð
ñ 
ô 
Ðõ Ð-Ñ.Ô.ˆð
ð 
ð 
ð 
à)ð
ñ 
ô 
ð CÐBÐBÐB˜œ
œÐBÑBÔBñ	Cˆˆð ŒzÔ!ˆå& }Ñ5Ô5€HØð 	G˜Ô;ð 	Gð !œJÔ<ÐàÔÔ@ð 	,Ð+ð CGÐFÐÐ?àÔ#ð 'Ý!$ TÔ%AÑ!BÔ!BÐÐå!$¡¤Ðà"*Ô"=Ðð
 ð i2ñ i2ˆð #Ð" 1Ñ%Ô%ˆà�jÐ Ð  W°MÐ%AÐ%Aõ $ØØØØØØØØ"Ø(Ø#ØØ!Ø3Øñô ð ñ ð( ð C	ð Œ}ð 36 ð 36ð
 &ð õ
 6Ø  $¨¨6°2ñô ð ð õ 9Ø  $¨¨6°2ñô ð ð ð ”Ð&ð ”yÔ,ð Ø(Ð4å3Ø  $¨Ð+CÀVÈRñô ð øð Ô!Ð-ð ,ð 1°Ð5MÐ0MÐ0MØ/×6Ò6°qÑ9Ô9Ð9Ð9Øœð 1ØÔ&×-Ò-¨aÑ0Ô0Ð0øà)ð 6¨aÐ3KÐ.KÐ.KØ+×2Ò2°1Ñ5Ô5Ð5Ð5ð ”ð6à˜TœZÔ=Ð=Ð=Øœ
ð >õ 3°1Ñ5Ô5Ð5øàÔ#ð 	õ !ØØØØØ(ØØñô ð ð Ð'Ð'Ð'ØÐ4Ð4Ð4à'×.Ò.¨qÑ1Ô1Ð1ùàð 
ð "8×!BÒ!BØ'ñ"
ô "
Ðð 	$×*Ò*ð +
ð +
ð +
ð +
àÔ1ð+
ñ +
ô +
ñ 	
ô 	
ð 	
ð& !Ð"6Ð7Ð7r6   c                ó  ‡— t          | |||	¦  «        ^}}}}|sd S |j        r| j                             |¦  «         |j        rAt          | j        ¦  «        Š| j                             ˆfd„|j        D ¦   «         ¦  «         d S d S )Nc              3  ó$   •K  — | ]
}|‰v¯|V — Œd S rd   rE   )rU   r-   Úir_sets     €r4   rg   z0_setup_delete_return_defaults.<locals>.<genexpr>`  s0   øè è € ð +
ð +
Ø°qÀ°°ˆA°°°°ð+
ð +
r6   )rú   Ú_return_defaults_columnsry   rë   rþ   r“   )rF   rG   rH   r¤   rŸ   rY   r    r¦   r¥   rI   rJ   rÔ   r	  r  s                @r4   r�   r�   G  sÎ   ø€ õ *BØ�$˜ xñ*ô *Ð&€A€qÐ
" Qð $ð ØˆàÔ$ð EØÔ#×*Ò*Ð+CÑDÔDÐDàÔ#ð 
Ý�XÔ0Ñ1Ô1ˆØÔ#×*Ò*ð +
ð +
ð +
ð +
ØÔ3ð+
ñ +
ô +
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r6   c                óÖ  — |                      |¦  «        }|                     d¦  «        d u}| j                             ||j        ¬¦  «        }t          ¦   «         }t          j        |¦  «        r}|r1|j        r*||u r&|	rd| _	        n|r| j
                             |¦  «         t          | ||f|t          u t          |¦  «        r|j        s ||¦  «        nd ||¦  «        z  ||dœ|¤Ž}�nc|j        r„|rB|j        €;|j        r4||u r0|r| j
                             |¦  «         n| j        j	        rd| _	        t'          | ||ft          |¦  «        r|j        s ||¦  «        nd ||¦  «        z  |dœ|¤Ž}nØ | j        |                     ¦   «         fd|i|¤Ž}|j        r<|r||v r| j
                             |¦  «         nŽ| j                             |¦  «         ns|j        r1|r| j
                             |¦  «         nO| j        j	        rd| _	        n;|r||v r| j
                             |¦  «         n| j                             |¦  «         |
                     ||||f¦  «         d S )NrL   ©Ú	use_tableTz%s_m0)rO   r±   rM   r³   )r±   rM   rM   )r{   rz   rQ   rR   Úinclude_table_with_column_exprsr“   r   Ú_is_literalr   r
  ry   ré   rS   r,   r…   r†   Ú_is_bind_parameterr®   rœ   rÇ   r¯   Ú
self_groupr�   rv   )rF   rG   rH   r-   rñ   r¤   r    ry   r	  r
  r¥   r  rý   rJ   r®   Úhas_visiting_cteÚ	col_valueÚaccumulated_bind_namess                     r4   rÿ   rÿ   e  s^  € ð  �NŠN˜7Ñ#Ô#€Eà—v’v˜nÑ-Ô-°TÐ9ÐØÔ!×/Ò/Ø	�]ÔBð 0ñ ô €Iõ (+¡u¤uÐåÔ˜UÑ#Ô#ð W-à/ð	6à”ð	6ð Ð&Ð&Ð&ð
 #ð 6Ø/3�Ô,Ð,Ø#ð 6ØÔ+×2Ò2°1Ñ5Ô5Ð5å"ØØØð
ð �hÐ&õ /¨}Ñ=Ô=ð1à$Ô:ð1��˜qÑ!Ô!Ð!ð ˜~˜~¨aÑ0Ô0Ñ0à"8Ø,ð
ð 
ð ð
ð 
ˆ‰ð 
Ô	!ð :-à/ð	4à”Ð#Ø”ð $àÐ&Ð&Ð&ð "ð 4ØÔ+×2Ò2°1Ñ5Ô5Ð5Ð5ØÔ!Ô5ð 4Ø/3�Ô,å.ØØØð
õ /¨}Ñ=Ô=ð1à$Ô:ð1��˜qÑ!Ô!Ð!ð ˜~˜~¨aÑ0Ô0Ñ0à"8ð
ð 
ð ð
ð 
ˆˆð !�Ô Ø×ÒÑÔð
ð 
à"8ð
ð ð
ð 
ˆð Ô!ð 	-Ø'ð -¨AÐ1IÐ,IÐ,IØÔ+×2Ò2°1Ñ5Ô5Ð5Ð5ð Ô"×)Ò)¨!Ñ,Ô,Ð,Ð,àŒ}ð -Ø%ð 8ØÔ/×6Ò6°qÑ9Ô9Ð9Ð9ØÔ%Ô9ð 8Ø37�HÔ0øà)ð 
-¨qÐ4LÐ/LÐ/LØÔ+×2Ò2°1Ñ5Ô5Ð5Ð5ð Ô"×)Ò)¨!Ñ,Ô,Ð,à
‡M‚M�1�i Ð(>Ð?Ñ@Ô@Ð@Ð@Ð@r6   c           	     ó�  — |j         ��t|j         j        r’| j        j        rj|j         j        r| j        j        sRt          ¦   «         }|                     || j         	                    |¦  «         | j
        |j         fd|i|¤Ž|f¦  «         | j                             |¦  «         dS |j         j        r…t          ¦   «         }|                     || j         	                    |¦  «         | j
        |j         j                             ¦   «         fd|i|¤Ž|f¦  «         | j                             |¦  «         dS |                     || j         	                    |¦  «        t          | |fi |¤Ž|j        ff¦  «         dS ||j        j        u s|j        �| j                             |¦  «         dS |j        st+          |¦  «         dS dS )z—Create a primary key expression in the INSERT statement where
    we want to populate result.inserted_primary_key and RETURNING
    is available.

    NrM   )rç   Úis_sequencerœ   Úsupports_sequencesÚoptionalÚsequences_optionalr“   ré   rQ   rR   r¯   ry   Úis_clause_elementÚargr  Ú"_create_insert_prefetch_bind_paramrT   ri   rü   r  r  r  )rF   rG   r-   r¥   rJ   r  s         r4   r  r  Ú  s6  € ð 	„yÑØŒ9Ô ð -	ØÔÔ2ð Ø”IÔ&ðàÔ'Ô:ðõ 47±5´5Ð&Ø—’àØ Ô)×7Ò7¸Ñ:Ô:Ø(˜Ô(ØœIðð à2Hðð !ðð ð
 /ð	ñô ð ð Ô'×.Ò.¨qÑ1Ô1Ð1Ð1Ð1ØŒYÔ(ð 	Ý%(¡U¤UÐ"Ø�MŠMàØÔ%×3Ò3°AÑ6Ô6Ø$�HÔ$Øœ	œ×0Ò0Ñ2Ô2ðð à.Dðð ðð ð
 +ð	ñô ð ð Ô'×.Ò.¨qÑ1Ô1Ð1Ð1Ð1ð
 �MŠMàØÔ%×3Ò3°AÑ6Ô6Ý6°xÀÐIÐIÀbÐIÐIØ”U�Hð	ñô ð ð ð ð 
ˆdŒjÔ.Ð	.Ð	.°!Ô2BÐ2NØÔ#×*Ò*¨1Ñ-Ô-Ð-Ð-Ð-ØŒZð .õ 	+¨1Ñ-Ô-Ð-Ð-Ð-ð.ð .r6   c           	     ó(  — |j         �0|j         j        rp| j        j        r|j         j        rX| j        j        rL||j        j        u rƒ| j        j        sw|j         �|j         j        r| j        j        s|j         €Q| j        j	        rE| 
                    || j                             |¦  «        t          | |fi |¤Ž|j        ff¦  «         dS |j         €-|j        €&|j        s||j        j        urt#          |¦  «         dS | j        j        r	d| _        dS dS )ao  Create a primary key expression in the INSERT statement where
    we want to populate result.inserted_primary_key and we cannot use
    RETURNING.

    Depending on the kind of default here we may create a bound parameter
    in the INSERT statement and pre-execute a default generation function,
    or we may use cursor.lastrowid if supported by the dialect.


    NT)rç   r  rœ   r  r   r!  ri   rü   r
  Ú"preexecute_autoincrement_sequencesré   rQ   rR   r$  rT   r  r  r  ©rF   rG   r-   r¥   rJ   s        r4   r  r    sn  € ð 	
Œ	Ðð ”	Ô%ð	 	ð Ô Ô3ð 	ð œ	Ô*ð 	ð $Ô+Ô>ð 	ð 	
ˆTŒZÔ-Ð-Ð-ð Ô Ô4ð 	.ð ”IÐ)Øœ	Ô-ð *à Ô(Ô;ð *ð ”IÐ%Ø Ô(ÔKð &ð 	�ŠàØÔ!×/Ò/°Ñ2Ô2Ý2°8¸QÐEÐEÀ"ÐEÐEØ”�ð	ñ	
ô 	
ð 	
ð 	
ð 	
ð 	
Œ	ÐØÔÐ$Ø”
ð %à�T”ZÔ5Ð5Ð5õ 	+¨1Ñ-Ô-Ð-Ð-Ð-Ø	Ô	Ô	-ð ,ð
 (,ˆÔ$Ð$Ð$ð,ð ,r6   c           	     óž  — |j         j        rÁ| j        j        r¯|j         j        r| j        j        s™t          ¦   «         }|                     || j         	                    |¦  «         | j
        |j         fd|i|¤Ž|f¦  «         |r ||v r| j                             |¦  «         d S |j        s | j                             |¦  «         d S d S d S d S |j         j        r°t          ¦   «         }|                     || j         	                    |¦  «         | j
        |j         j                             ¦   «         fd|i|¤Ž|f¦  «         |r ||v r| j                             |¦  «         d S |j        s| j                             |¦  «         d S d S |                     || j         	                    |¦  «        t#          | |fi |¤Ž|j        ff¦  «         d S )NrM   )rç   r  rœ   r  r   r!  r“   ré   rQ   rR   r¯   ry   r   rv   r"  r#  r  r$  rT   )rF   rG   r-   r	  r¥   rJ   r  s          r4   r  r  d  si  € ð 	„yÔð 1
ØÔÔ.ð 	-Ø”	Ô"ð	-Ø*2Ô*:Ô*Mð	-õ 03©u¬uÐ"Ø�MŠMàØÔ%×3Ò3°AÑ6Ô6Ø$�HÔ$Øœ	ðð à.Dðð ðð ð
 +ð	ñô ð ð (ð -¨AÐ1IÐ,IÐ,IØÔ+×2Ò2°1Ñ5Ô5Ð5Ð5Ð5Ø”]ð -ØÔ"×)Ò)¨!Ñ,Ô,Ð,Ð,Ð,ð'	-ð 	-ð 	-ð 	-ð$-ð -à	
ŒÔ	$ð 
Ý!$¡¤ÐØ�ŠàØÔ!×/Ò/°Ñ2Ô2Ø �Ô Ø”I”M×,Ò,Ñ.Ô.ðð à*@ðð ðð ð
 'ð	ñ	
ô 	
ð 	
ð $ð 	)¨Ð-EÐ(EÐ(EØÔ'×.Ò.¨qÑ1Ô1Ð1Ð1Ð1Ø”ð 	)àÔ×%Ò% aÑ(Ô(Ð(Ð(Ð(ð	)ð 	)ð 	�ŠàØÔ!×/Ò/°Ñ2Ô2Ý2°8¸QÐEÐEÀ"ÐEÐEØ”�ð	ñ	
ô 	
ð 	
ð 	
ð 	
r6   r¥   úList[_CrudParamElementSQLExpr]úDict[str, Any]ÚNonec           	     ób  — t          |j        ¦  «        rr| j        j        rb|j        j        r| j        j        sL|                     || j                             |¦  «        |j         	                    ¦   «         df¦  «         d S d S d S t          |j        ¦  «        rO|                     || j                             |¦  «        |j        j                             ¦   «         df¦  «         d S |                     || j                             |¦  «        t          | |fddi|¤Ž|j        ff¦  «         d S )NrE   r¯   F)r   rç   rœ   r  r   r!  ré   rQ   rR   Ú
next_valuer   r#  r  r$  rT   r'  s        r4   rê   rê   ›  sy  € õ ˜1œ9Ñ%Ô%ð 
ØÔÔ.ð 
	Ø”	Ô"ð
	Ø*2Ô*:Ô*Mð
	ð �MŠMàØÔ%×3Ò3°AÑ6Ô6Ø”I×(Ò(Ñ*Ô*Øð	ñô ð ð ð ð
	ð 
	ð 
	ð 
	õ 
# 1¤9Ñ	-Ô	-ð 
Ø�ŠàØÔ!×/Ò/°Ñ2Ô2Ø”	”×(Ò(Ñ*Ô*Øð	ñ	
ô 	
ð 	
ð 	
ð 	
ð 	�ŠàØÔ!×/Ò/°Ñ2Ô2Ý2Ø˜aðð Ø).ðØ24ðð ð ”�ðñ		
ô 		
ð 		
ð 		
ð 		
r6   c           	     ó  — |j         }|j        �ø|j        j        sì|j        j        r™|                     || j                             ||¬¦  «         | j        |j        j         	                    ¦   «         fi |¤Ždf¦  «         |r ||v r| j
                             |¦  «         d S | j                             |¦  «         d S |                     || j                             ||¬¦  «        t          | |fi |¤Ž|j        ff¦  «         d S |j        �>|r ||v r| j
                             |¦  «         d S | j                             |¦  «         d S |r.|j        s|j        s$||v r| j
                             |¦  «         d S d S d S d S )Nr  rE   )r  Úonupdater  r"  ré   rQ   rR   r¯   r#  r  ry   rv   Ú"_create_update_prefetch_bind_paramrT   Úserver_onupdater  r   )rF   rH   rG   r-   r	  r¥   rJ   Úinclude_tables           r4   r  r  Ä  s
  € ð "ÔA€MØ„zÐ a¤jÔ&<ÐØŒ:Ô'ð 	Ø�MŠMàØÔ%×3Ò3ØØ"/ð 4ñ ô ð %�HÔ$ Q¤Z¤^×%>Ò%>Ñ%@Ô%@ÐGÐGÀBÐGÐGØðñ
ô 
ð 
ð (ð -¨AÐ1IÐ,IÐ,IØÔ+×2Ò2°1Ñ5Ô5Ð5Ð5Ð5àÔ"×)Ò)¨!Ñ,Ô,Ð,Ð,Ð,à�MŠMàØÔ%×3Ò3ØØ"/ð 4ñ ô õ 7°xÀÐIÐIÀbÐIÐIØ”U�Hðñ
ô 
ð 
ð 
ð 
ð 
Ô	Ð	&Ø#ð 	)¨Ð-EÐ(EÐ(EØÔ'×.Ò.¨qÑ1Ô1Ð1Ð1Ð1àÔ×%Ò% aÑ(Ô(Ð(Ð(Ð(à ð.àÔ*ð.à26Ô2Gð.ð Ð)Ð)Ð)àÔ#×*Ò*¨1Ñ-Ô-Ð-Ð-Ð-ð.ð .ð *Ð)ð.ð .r6   c                ó   — d S rd   rE   ©rF   r-   r¯   rJ   s       r4   r$  r$  ò  r·   r6   úLiteral[False]úelements.BindParameter[Any]c                ó   — d S rd   rE   r4  s       r4   r$  r$  û  ó	   € ð #& #r6   ú'Union[elements.BindParameter[Any], str]c                ó^   — t          | |d f||dœ|¤Ž}| j                             |¦  «         |S ©N)r¯   r±   )rS   rw   ré   ©rF   r-   r¯   r±   rJ   Úparams         r4   r$  r$    óO   € õ Ø�!�TðØ#*°ðð Ø9;ðð €Eð Ô×#Ò# AÑ&Ô&Ð&Ø€Lr6   c                ó   — d S rd   rE   r4  s       r4   r0  r0    r·   r6   c                ó   — d S rd   rE   r4  s       r4   r0  r0    r8  r6   c                ó^   — t          | |d f||dœ|¤Ž}| j                             |¦  «         |S r;  )rS   rx   ré   r<  s         r4   r0  r0  $  r>  r6   c                  ón   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zej	        dd„¦   «         Z
ej	        dd	„¦   «         Zd
S )Ú_multiparam_columnTc                óz   — || _         d|j        |dz   fz  | _        || _        |j        | _        |j        | _        d S )Nú%s_m%dr   )ÚindexrT   Úoriginalrç   r¼   )ÚselfrG  rF  s      r4   Ú__init__z_multiparam_column.__init__5  s>   € ØˆŒ
Ø˜xœ|¨U°Q©YÐ7Ñ7ˆŒØ ˆŒØÔ'ˆŒØ”MˆŒ	ˆ	ˆ	r6   c                ó   — t          ¦   «         ‚rd   ©ÚNotImplementedError)rH  ÚotherrJ   s      r4   Úcomparez_multiparam_column.compare<  ó   € Ý!Ñ#Ô#Ð#r6   c                ó   — t          ¦   «         ‚rd   rK  )rH  rJ   s     r4   Ú_copy_internalsz"_multiparam_column._copy_internals?  rO  r6   c                ól   — t          |t          ¦  «        o|j        | j        k    o|j        | j        k    S rd   )r2   rC  rT   rG  )rH  rM  s     r4   Ú__eq__z_multiparam_column.__eq__B  s7   € å�uÕ0Ñ1Ô1ð 0Ø”	˜TœXÒ%ð0à” $¤-Ò/ð	
r6   r/   r   c                ó4   — t          j        | j        ¦  «        S ©z1used by default.py -> _process_execute_defaults())r   Ú_from_column_defaultrç   ©rH  s    r4   Ú_default_description_tuplez-_multiparam_column._default_description_tupleI  s   € õ (Ô<¸T¼\ÑJÔJÐJr6   c                ó4   — t          j        | j        ¦  «        S rU  )r   rV  r/  rW  s    r4   Ú_onupdate_description_tuplez._multiparam_column._onupdate_description_tupleO  s   € õ (Ô<¸T¼]ÑKÔKÐKr6   N)r/   r   )rA   rB   rC   Ú_is_multiparam_columnrI  rN  rQ  rS  r!   Úmemoized_propertyrX  rZ  rE   r6   r4   rC  rC  2  s¨   € € € € € Ø Ðð"ð "ð "ð$ð $ð $ð$ð $ð $ð
ð 
ð 
ð 
ÔðKð Kð Kñ ÔðKð
 
ÔðLð Lð Lñ ÔðLð Lð Lr6   rC  rF  Úintc                óp  — |j         st          j        d|z  ¦  «        ‚t          |j         ¦  «        r* | j        |j         j                             ¦   «         fi |¤ŽS |j         j        r | j        |j         fi |¤ŽS t          ||¦  «        }t          |t          j        ¦  «        sJ ‚t          | |fddi|¤ŽS )Nz�INSERT value for column %s is explicitly rendered as a boundparameter in the VALUES clause; a Python-side value or SQL expression is requiredr¯   T)rç   r    r3   r   r¯   r#  r  r  rC  r2   r   ÚInsertr$  )rF   rG   r-   rF  rJ   r­   s         r4   Ú _process_multiparam_default_bindr`  V  sð   € ð Œ9ð 
ÝÔð@àBCñDñ
ô 
ð 	
õ
 
# 1¤9Ñ	-Ô	-ð 
ØˆxÔ ¤	¤× 8Ò 8Ñ :Ô :ÐAÐA¸bÐAÐAÐAØ	
ŒÔ	ð 
ð  ˆxÔ ¤	Ð0Ð0¨RÐ0Ð0Ð0å   EÑ*Ô*ˆÝ˜$¥¤
Ñ+Ô+Ð+Ð+Ð+Ý1Ø�cð
ð 
Ø#'ð
Ø+-ð
ð 
ð 	
r6   c	                ó$  — d„ |pdD ¦   «         }	|j         }
t          ¦   «         }|j        D �]N}|
 o|j                             |¦  «         }|j        D �]$}||	v �r|rt          j        d|j        › d�¦  «        ‚| 	                    |¦  «         || ||¦  «        <   |	|         }|  
                    ||
¬¦  «        }t          j        |¦  «        r+t          | ||f|t          u  ||¦  «        dœ|¤Ž}|j        f}nc|j        r  ||¦  «        }t#          | ||fd|i|¤Ž}|f}n<| j                             |¦  «          | j
        |                     ¦   «         fi |¤Ž}d}|                     ||||f¦  «         �Œ&�ŒP|D �]}|j        D �]}||	v rŒ|j        �Õ|j        j        sÉ|j        j        rq|                     ||  
                    ||
¬¦  «         | j
        |j        j                             ¦   «         fi |¤Ždf¦  «         | j                             |¦  «         Œ˜|                     ||  
                    ||
¬¦  «        t3          | |fd ||¦  «        i|¤Ž|j        ff¦  «         Œä|j        �| j                             |¦  «         �Œ�Œd S )Nc                óT   — i | ]%\  }}t          j        t          j        |¦  «        |“Œ&S rE   )r   Úexpectr   rØ   )rU   r-   r=  s      r4   ra   z1_get_update_multitable_params.<locals>.<dictcomp>‚  s>   € ð ð ð áˆAˆuõ 	Ô�Ô,¨aÑ0Ô0°%ðð ð r6   rE   zdBackend does not support additional tables in the SET clause; cannot include columns from table(s) 'z' in SET clause©r2  )rO   r±   r±   )r  r“   r—   r–   Úis_derived_fromr-   r    r3   ro   Úaddr¯   r   r  rS   r,   rT   r  rÇ   rv   ré   r  r/  r  r"  r#  r0  r1  )rF   rG   rH   r£   r¦   r    rŸ   r¥   rJ   Únormalized_paramsr2  Úaffected_tablesrq   Ú$we_shouldnt_be_here_if_columns_foundr-   r®   r  r  Úcbns                      r4   r�   r�   w  s¸  € ðð à-Ð3°ðñ ô Ðð
 "ÔA€Må‘e”e€OØÔ'ð /Mñ /Mˆð
 Ðð ?Ø!Ô+×;Ò;¸AÑ>Ô>Ð>ð 	-ð
 ”ð &	Mñ &	MˆAØÐ%Ð%Ñ%à7ð ÝÔ*ð%ð œMð%ð %ð %ñô ð ð  ×#Ò# AÑ&Ô&Ð&à56�Ð.Ð.¨qÑ1Ô1Ñ2Ø)¨!Ô,�à$×,Ò,¨Q¸mÐ,ÑLÔL�	ÝÔ(¨Ñ/Ô/ð 0Ý.Ø ØØðð "'­(Ð!2Ø+˜^¨AÑ.Ô.ðð ð ðð �Eð >?¼U¸HÐ*Ð*ØÔ-ð 	0Ø(˜.¨Ñ+Ô+�CÝ:Ø  ! Uðð Ø14ðØ8:ðð �Eð /2¨VÐ*Ð*àÔ&×-Ò-¨aÑ0Ô0Ð0Ø,˜HÔ,¨U×-=Ò-=Ñ-?Ô-?ÐFÐFÀ2ÐFÐF�EØ-/Ð*Ø—’˜q )¨UÐ4JÐKÑLÔLÐLùñM&	MðT ð -ñ -ˆØ”ð 	-ñ 	-ˆAØÐ%Ð%Ð%ØØ”Ð'°´
Ô0FÐ'Ø”:Ô/ð Ø—M’MàØ$×,Ò,¨Q¸mÐ,ÑLÔLØ,˜HÔ,Ø !¤
¤× 9Ò 9Ñ ;Ô ;ðð Ø?Aðð ð ðñ	ô 	ð 	ð Ô&×-Ò-¨aÑ0Ô0Ð0Ð0à—M’MàØ$×,Ò,¨Q¸mÐ,ÑLÔLÝ>Ø (¨!ðð Ø2@°.ÀÑ2CÔ2CðØGIðð ð œU˜Hðñ	ô 	ð 	ð 	ð Ô"Ð.ØÔ"×)Ò)¨!Ñ,Ô,Ð,ùñ9	-ð-ð -r6   Úinitial_valuesrt   rY   ru   r;   c           	     óX  ‡— |}|g}|                      d¦  «        d u}|j        }	|	€J ‚t          |	dd …         ¦  «        D ]é\  }
}g }ˆfd„|                     ¦   «         D ¦   «         }|D ]ª\  }}}}|j        |v rn|j        }t          j        ||         ¦  «        r&t          | |||         fd|j        |
dz   fz  |dœ|¤Ž}n: | j        ||          	                    ¦   «         fi |¤Ž}nt          | |||
|¦  «        }|                     ||||f¦  «         Œ«|                     |¦  «         Œê|S )NrL   r   c                ó.   •— i | ]\  }} ‰|¦  «        |“ŒS rE   rE   )rU   rT   rf   rY   s      €r4   ra   z2_extend_values_for_multiparams.<locals>.<dictcomp>î  s)   ø€ Ð@Ð@Ð@©&¨#¨qˆ~ˆ~˜cÑ"Ô" AÐ@Ð@Ð@r6   rE  )r±   r³   )rz   r‡   Ú	enumerater‰   rT   r   r  rS   r¯   r  r`  ré   )rF   rG   rH   rk  rY   rJ   Úvalues_0r¥   r  r¡   ÚiÚrowÚ	extensionr­   Úcol_exprr=  Úaccumulated_namesrT   Ú	new_params       `              r4   rš   rš   Ý  s—  ø€ ð €HØÐ€Fà—v’v˜nÑ-Ô-°TÐ9ÐØ	Ô	(€BØˆ>ˆ>ˆ>Ý˜B˜q˜r˜rœFÑ#Ô#ð !ð !‰ˆˆ3Ø02ˆ	à@Ð@Ð@Ð@°C·I²I±K´KÐ@Ñ@Ô@ˆà7?ð 	Lð 	LÑ3ˆC�˜5Ð"3ØŒw˜#ˆ~ˆ~Ø”g�åÔ(¨¨S¬Ñ2Ô2ð 
NÝ 2Ø ØØ˜Cœð!ð '¨#¬'°1°q±5Ð)9Ñ9Ø(8ð!ð !ð ð!ð !�I�Ið !1 Ô 0°°S´×1DÒ1DÑ1FÔ1FÐ MÐ MÈ"Ð MÐ M�I�Iå<Ø˜d C¨¨Bñô �	ð ×Ò˜c 8¨YÐ8IÐJÑKÔKÐKÐKà�Š�iÑ Ô Ð Ð à€Mr6   c                óÜ  — |D ]è\  }} ||¦  «        }	|	�|                      |	|¦  «         Œ)|                      ||j        ¬¦  «        }
t          j        |¦  «        r) | j        t          j        d ||j        ¬¦  «        fi |¤Ž}nM|j        r&|j        j	        r| 
                    |j        ¦  «        } | j        |                     ¦   «         fi |¤Ž}|                     ||
|df¦  «         Œéd S )Nrd  )rº   rE   )Ú
setdefaultr¯   r  r   r  r   r»   r¼   r  rÄ   rÅ   r  ré   )rF   rH   r¤   r£   rY   r¥   rJ   re   rf   Úcolkeyrs  s              r4   rŒ   rŒ     s3  € ð &ð 0ð 0‰ˆˆ1Ø� Ñ"Ô"ˆØÐØ×!Ò! &¨!Ñ,Ô,Ð,Ð,ð  ×'Ò'Ø Ô!Nð (ñ ô ˆHõ Ô$ QÑ'Ô'ð ;Ø$�HÔ$ÝÔ*¨4°¸!¼&ÐAÑAÔAðð ØEGðð ��ð Ô'ð <¨A¬F¬Nð <ð ×3Ò3°A´FÑ;Ô;�Aà$�HÔ$ Q§\¢\¡^¤^Ð:Ð:°rÐ:Ð:�ð �MŠM˜1˜h¨¨2Ð.Ñ/Ô/Ð/Ð/ð=0ð 0r6   c                óX  — | j         }|o<t          |¦  «        o-|j         o%| j         p|j        o|j        o|j         o|j         }|o|j        o|j	        j
        du}|o1|j        o*|j        j        o|j        o| p|j        p|j        p|j        }|rd}t          |¦  «        rc|o|j        }|p|j        p|j        }	|o| j        o|j        o|	p|j        o|j        du }
d}|
r#|	r!|j        r|                      |j	        ¦  «        }n`|j        r&|j        o|j        j        o|j        o|j        }d}
d}n3|j        r&|j        o|j        j        o|j        o|j        }d}
d}nd}d}
d}|r6|j        st7          |j	        j        ¦  «        }nt7          |j        ¦  «        }nd}||p||||
|fS )z´determines RETURNING strategy, if any, for the statement.

    This is where it's determined what we need to fetch from the
    INSERT or UPDATE statement after it's invoked.

    NF)rœ   r…   Ú_inliner›   Úinsert_executemany_returningr   r~   r†   r
  ri   rü   Úinsert_returningÚ_primary_tablery   Ú_supports_implicit_returningÚfavor_returning_over_lastrowidrþ   r?   Ú!use_insertmanyvalues_wo_returningÚ_post_values_clauseÚ_sort_by_parameter_orderÚ_get_sentinel_column_for_tabler�   Úupdate_returningr€   Údelete_returningr  r“   r-   )rF   rG   rH   rI   rœ   r  r
  ry   Úshould_implicit_return_defaultsÚexplicit_returningr?   r@   r	  s                r4   rú   rú   5  sì  € ð Ô€Gð 	ð 		4Ý# MÑ2Ô2ð		4à”Ðð		4ð Ô(Ð(ð PØÔ4ÐN¸Ô9Nð		4ð ”Ðð		4ð Ô3Ð3ð ð  	ð 	9ØÔ'ð	9àŒJÔ,°DÐ8ð ð 	ð 	
ð Ô$ð	
ð
 Ô(Ô;ð	
ð Ô6ð	
ð$ %Ð$ÐN¨Ô(Nð %ØÔ2ð%àÔ$ð- ð2 ð $Ø#Ðå˜}Ñ-Ô-ð 9$àÐ8 4Ô#8ð 	(ð ,ð ,ØŒð,àÔ+ð 	ð ð ØÔ(ðàÔ,ðð #ð àÔ=ð 9ð
 Ô0°DÐ8ð 	ð"  $Ðà ð	à"ð	ð Ô-ð	ð
 $,×#JÒ#JØ”
ñ$ô $Ð øð 
Ô	ð $àÔ!ð )ØÔ,Ô?ð)àÔ:ð)ð Ô(ð	 	(ð  %ÐØ#ÐÐØ	Ô	ð $àÔ!ð )ØÔ,Ô?ð)àÔ:ð)ð Ô(ð	 	(ð  %ÐØ#ÐÐà*/Ð'Ø$ÐØ#Ðà&ð (ØÔ,ð 		Jõ (+¨4¬:¬<Ñ'8Ô'8Ð$Ð$å'*¨4Ô+HÑ'IÔ'IÐ$Ð$à#'Ð ð 	ØÐ=Ð=Ø ØØØðð r6   c                ó¼   — d| j         j        ›d| j        ›d| j         j        ›d�}t          | j         j        ¦  «        dk    r|dz  }t          j        |¦  «         d S )NzColumn 'ú.z6' is marked as a member of the primary key for table 'z×', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed.  Primary key columns typically may not store NULL.r   a0   Note that as of SQLAlchemy 1.1, 'autoincrement=True' must be indicated explicitly for composite (e.g. multicolumn) primary keys if AUTO_INCREMENT/SERIAL/IDENTITY behavior is expected for one of the columns in the primary key. CREATE TABLE statements are impacted by this change as well on most backends.)ri   Úfullnamer±   Úlenr   r!   Úwarn)r-   Úmsgs     r4   r  r  Æ  so   € € ð Œ7ÔÐÐ˜QœV˜V˜V Q¤WÔ%5Ð%5Ð%5ð	7ð õ ˆ1Œ7ÔÑÔ !Ò#Ð#Øðñ	
ˆõ 	„Iˆc�N„N€N€N€Nr6   )r-   r.   r/   r0   )rF   r$   rG   r'   rH   r&   rI   r=   rJ   r   r/   r9   ).FNF)rF   r$   r­   r.   r®   r   r¯   r°   rO   r=   r±   r²   r³   r=   rJ   r   r/   r´   )
rF   r$   r­   r.   r®   r   rJ   r   r/   r´   )TFNF)rF   r$   r­   r.   r®   r   r¯   r=   rO   r=   r±   r²   r³   r=   rJ   r   r/   r¸   )rF   r$   rG   r'   rH   r&   r/   rÈ   )rF   r$   rG   r'   r-   r0   r¥   r)  rJ   r*  r/   r+  ).)
rF   r$   r-   r.   r¯   r°   rJ   r   r/   r´   )
rF   r$   r-   r.   r¯   r5  rJ   r   r/   r6  )TN)rF   r$   r-   r.   r¯   r=   r±   r²   rJ   r   r/   r9  )rF   r$   rG   r'   r-   r7   rF  r]  rJ   r*  r/   r´   )rF   r$   rG   r'   rH   r&   rk  rt   rY   ru   rJ   r*  r/   r;   )RÚ__doc__Ú
__future__r   rÕ   rÙ   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Ú r   r   r   r   Úbaser   r   r…   r   Úschemar   r   rÞ   r   r   r    r!   Úutil.typingr"   rF   r#   r$   r%   r&   r'   r(   r)   r*   r+   Úsymbolr,   r5   r´   Ú_CrudParamElementÚ_CrudParamElementStrÚ_CrudParamElementSQLExprÚ_CrudParamSequencer9   r¬   rS   rÇ   r|   r‘   r’   r�   rÿ   r  r  r  rê   r  r$  r0  rC  r`  r�   rš   rŒ   rú   r  rE   r6   r4   ú<module>rš     s¾  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø "Ð "Ð "Ð "Ð "Ð "Ø -Ð -Ð -Ð -Ð -Ð -Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !àð 	Ø1Ð1Ð1Ð1Ð1Ð1Ø%Ð%Ð%Ð%Ð%Ð%Ø&Ð&Ð&Ð&Ð&Ð&ØÐÐÐÐÐØÐÐÐÐÐØ'Ð'Ð'Ð'Ð'Ð'Ø,Ð,Ð,Ð,Ð,Ð,Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐàˆ4Œ;Øð	ñô €ðð ð ð ð ØØØØˆcÐ$Ð$Ô%ôð ˆS„MðôÐ ð ØØØØˆS„MðôÐ ð !ØØØØˆS„MðôÐ ð Ð+Ô,Ð ðAð Að Að Að A�*ñ Aô Að Að}ð }ð }ð }ð@
 
ð
 !ØØØ!ð	ð 	ð 	ð 	ñ 
„ð	ð 
ðð ð ñ 
„ðð ØØØ!ðð ð ð ð ð2#4ð #4ð #4ðL3<ð 3<ð 3<ð 3<ðlBCð BCð BCðJA8ð A8ð A8ðH
ð 
ð 
ð<rAð rAð rAðj:.ð :.ð :.ðzJ,ð J,ð J,ðZ4
ð 4
ð 4
ðn&
ð &
ð &
ð &
ðR+.ð +.ð +.ð\ 
ð !ðð ð ð ñ 
„ðð 
ð&ð &ð &ñ 
„ð&ð Øð	ð ð ð ð ð 
ð !ðð ð ð ñ 
„ðð 
ð&ð &ð &ñ 
„ð&ð Øð	ð ð ð ð ð!Lð !Lð !Lð !Lð !L˜Ô/°Ô4ñ !Lô !Lð !LðH
ð 
ð 
ð 
ðBc-ð c-ð c-ðL+ð +ð +ð +ð\'0ð '0ð '0ðTNð Nð Nðbð ð ð ð r6   