§
    WøÁiÂÜ  ã                  óD  — 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-¦  «        Z4dyd2„Z5ed/e6eee6d3f                  e
e6         f         Z7ed4e6e6e
e6         f         Z8ed1e6d3e
e6         f         Z9ee7         Z: G d5„ d6e¦  «        Z;dzdA„Z<e	 	 	 d{d|dL„¦   «         Z=ed}dM„¦   «         Z=	 	 	 d~ddP„Z=dQ„ Z>d€dS„Z?dT„ Z@dU„ ZAdV„ ZBdW„ ZCdX„ ZDdY„ ZEdZ„ ZFd�d_„ZGd`„ ZHe	 d‚dƒda„¦   «         ZIed„dd„¦   «         ZI	 	 d…d†df„ZIe	 d‚dƒdg„¦   «         ZJed„dh„¦   «         ZJ	 	 d…d†di„ZJ G dj„ dkej/        e         ¦  «        ZKd‡dn„ZLdo„ ZMdˆdu„ZNdv„ ZOdw„ ZPdx„ 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    ú]/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/sqlalchemy/sql/crud.pyÚ_as_dml_columnr5   J   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 )Ú_CrudParamsÚ_CrudParamSequenceÚ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@   rA   © r6   r4   r9   r9   j   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 ¦   «         Šnl|j        r!|j        }	|j        }
|	€J ‚ˆfd
„|	D ¦   «         ŠnD|j        r7|j        }	t-          |	                     ¦   «         ¦  «        }
ˆfd„|	D ¦   «         Šndx}
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          ‰ ||||‰|||||¦  «        \  }}|ry|
rwtE          |¦  «         #                    ˆfd„|
D ¦   «         ¦  «         $                    |¦  «        }|r4t          j        dd %                    d„ |D ¦   «         ¦  «        z  ¦  «        ‚d}t'          |¦  «        rP|j        rI|j        rJ ‚tM          ‰ ||tO          d|¦  «        tO          d‰¦  «        |¦  «        }t          ||¦  «        S |sk‰ j(        rd‰ j)        j*        rXtW          |j        j        d         ¦  «        ‰ j,         -                    |j        j        d         ¦  «        ‰ j)        j.        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() simultaneouslyrF   c           
     óˆ   •— g | ]>}|j         °	|‰j                             |¦  «        t          ‰|d d¬¦  «        |j        ff‘Œ?S )NT)Úrequired)Ú_omit_from_statementsÚpreparerÚformat_columnÚ_create_bind_paramÚkey)Ú.0r-   rG   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 rF   rF   ©rV   rU   Ú_column_as_keys     €r4   ú	<setcomp>z#_get_crud_params.<locals>.<setcomp>é   ó#   ø€ Ð:Ð:Ð:¨s�~�~ cÑ*Ô*Ð:Ð:Ð:r6   c                ó&   •— h | ]} ‰|¦  «        ’ŒS rF   rF   rY   s     €r4   r[   z#_get_crud_params.<locals>.<setcomp>î   r\   r6   c                ó&   •— h | ]} ‰|¦  «        ’ŒS rF   rF   rY   s     €r4   r[   z#_get_crud_params.<locals>.<setcomp>ò   r\   r6   c                ó:   •— i | ]}|‰v¯ ‰|¦  «        t           “ŒS rF   ©r,   )rV   rU   rZ   Úspd_str_keys     €€r4   ú
<dictcomp>z$_get_crud_params.<locals>.<dictcomp>ü   s:   ø€ ð 
ð 
ð 
àØ˜+Ð%Ð%ð ˆN˜3ÑÔ¥à%Ð%Ð%r6   c                ó2   •— i | ]} ‰|¦  «        t           “ŒS rF   r`   rY   s     €r4   rb   z$_get_crud_params.<locals>.<dictcomp>  s2   ø€ ð 
ð 
ð 
Ø.1ˆNˆN˜3ÑÔ¥ð
ð 
ð 
r6   Fc              3  ó4   •K  — | ]\  }} ‰|¦  «        V — Œd S ©NrF   )rV   ÚkÚvrZ   s      €r4   ú	<genexpr>z#_get_crud_params.<locals>.<genexpr>K  s1   øè è € ÐNÐN±°°1˜.˜.¨Ñ+Ô+ÐNÐNÐNÐNÐNÐNr6   zUnconsumed column names: %sú, c              3  ó   K  — | ]}|›V — Œd S re   rF   )rV   r-   s     r4   rh   z#_get_crud_params.<locals>.<genexpr>Q  s$   è è € Ð8Ð8¨Q Q QÐ8Ð8Ð8Ð8Ð8Ð8r6   úSequence[_CrudParamElementStr]úCallable[..., str]T)r?   r@   rA   )/Ú	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_parametersÚtableÚ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ÚjoinÚ_extend_values_for_multiparamsr   Úfor_executemanyÚdialectÚsupports_default_metavaluer5   rR   rS   Údefault_metavalue_token)rG   rH   rI   rJ   rK   rM   Ú_getattr_col_keyÚ_col_bind_nameÚmpÚspdÚstmt_parameter_tuplesÚ
parametersÚvaluesÚcheck_columnsr@   rA   Úcheckr?   Úmulti_extended_valuesrZ   ra   s   `                  @@r4   Ú_get_crud_paramsrž   r   sÞ  øøø€ ðP €HÔØ!€HÔØ!€HÔØ"$€HÔà—6’6˜.¨$Ñ/Ô/€LØÐð
 	�ŠÐ&¨Ñ-Ô-Ð-à rÐ)Ð)Ð)ØDñ 	*Ô)Ð)õ 	% X¨t°]ÑCÔCñ	ØØØð '5€HÔ#à„ð 
˜4Ô0ð 
ÝÔð/ñ
ô 
ð 	
ð
 Ôð #Ý%ØØØØØØØØØØØñ	
ô 	
ð 	
õ ˜2˜rÑ"Ô"Ð"ð ÔÐ#¨Ô(DÐ#Ýð	ð 	ð 	ð 	ð œÔ+ð	ñ 	ô 	ð ñ
ô 
ð 	
õ( 	  Ñ.Ô.ð9àÔ/ð9ð Ô,ˆØˆ~ˆ~ˆ~Ø�ŒeˆÝ $ S§Y¢Y¡[¤[Ñ 1Ô 1ÐØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆˆØ	Ô	&ð 
9ØÔ,ˆØ -Ô =ÐØˆˆˆØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆˆØ	Ô	'ð 9ØÔ,ˆÝ $ S§Y¢Y¡[¤[Ñ 1Ô 1ÐØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆˆà48Ð8ÐÐ8  kð ÔÐ#Øˆ
ˆ
Ø	ð 

ØÐ&Ð&Ð&ð
ð 
ð 
ð 
ð 
àÔ+ð
ñ 
ô 
ˆ
ˆ
ð
ð 
ð 
ð 
Ø5=Ô5Ið
ñ 
ô 
ˆ
ð
 ')€FàÐ(Ý)ØØØØ!ØØØñ	
ô 	
ð 	
ð 35€Mõ „|�MÑ"Ô"ð 
 }Ô'Bð 
Ý%ØØØØ!ØØØØØñ
	
ô 
	
ð 
	
õ ˜}Ñ-Ô-ð !
°$Ô2Dð !
ð !Ô6Ð6Ð6Ð6å%ØØØØØØØØØØØñ	
ô 	
ð 	
ð  %ÐØ#ÐÐå5?ØØØØØØØØØØØñ6
ô 6
Ñ2ÐÐ2ð ð 
Ð+ð 
å�
‰OŒOßŠ\ÐNÐNÐNÐNÐ8MÐNÑNÔNÑNÔNßŠZ˜Ñ&Ô&ð 	ð
 ð 	ÝÔ"Ø-Ø—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]rP   ÚnameúOptional[str]Ústrc                ó   — d S re   rF   )rG   rŸ   r    r¡   rP   r£   rK   s          r4   rT   rT   „  s	   € ð ˆ#r6   c                ó   — d S re   rF   )rG   rŸ   r    rK   s       r4   rT   rT   �  ó	   € ð ˆ#r6   Tú'Union[str, elements.BindParameter[Any]]c                ó€   — |€|j         }t          j        |||j        |¬¦  «        }d|_        |r |j        | fi |¤ŽS |S )N)Útype_rP   T)rU   r   ÚBindParameterÚtypeÚ_is_crudÚ_compiler_dispatch)rG   rŸ   r    r¡   rP   r£   rK   Ú	bindparams           r4   rT   rT   ™  se   € ð €|ØŒ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 )NrM   r°   )
Úuniquer2   rU   r   Ú_truncated_labelÚtruncated_namesr­   Ú_isnullÚ_with_binary_element_typer¯   )rG   rŸ   r    r£   rK   Ú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 )NrU   úUnion[ColumnClause[Any], str]r/   úUnion[str, Tuple[str, str]]c                ól   •—  ‰| ¦  «        }t          | d¦  «        r| j        ‰v r| j        j        |fS |S )Nr{   )Úhasattrr{   r£   )rU   Ústr_keyÚ_etÚ
c_key_roles     €€r4   rZ   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 re   )r{   r£   rU   ©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Ú_)r{   r   r2   r   r£   rU   rÃ   s    €r4   r•   z4_key_getters_for_crud_column.<locals>._col_bind_nameù  sN   ø€ ØŒy˜CÐÐÝ ð >Ý% c¤iµÑ=Ô=Ð=Ð=Ð=Ø"%¤)¤. . .°#´'°'Ð:Ð:à”w�r6   )rU   r»   r/   r¼   )rŸ   r0   r/   r¼   )rŸ   r0   r/   r¥   )r   r…   Ú_extra_fromsr‹   Ú	functoolsÚpartialr   Úexpect_as_keyr   ÚDMLColumnRoleÚoperatorÚ
attrgetter)rG   rH   rI   rZ   r”   r•   rÀ   rÁ   s         @@r4   rs   rs   Ô  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 rF   )r{   r-   )rV   r£   rZ   rH   s     €€r4   rW   z1_scan_insert_from_select_cols.<locals>.<listcomp>  s,   ø€ ÐNÐNÐN°4ˆDŒJŒL˜˜¨Ñ-Ô-Ô.ÐNÐNÐNr6   éÿÿÿÿÚ
selectableÚinsert_from_selectrF   z_Can't extend statement for INSERT..FROM SELECT to include additional default-holding column(s) ri   c              3  ó>   K  — | ]\  }}}}t          |¦  «        V — Œd S re   )Úrepr)rV   rÅ   rU   s      r4   rh   z0_scan_insert_from_select_cols.<locals>.<genexpr>B  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 rF   rF   )rV   rÅ   Úexprs      r4   rW   z1_scan_insert_from_select_cols.<locals>.<listcomp>I  s3   € ð M
ð M
ð M
Ù"�Q˜˜4 ˆDðM
ð M
ð M
r6   )rˆ   ÚstackÚselectÚ#include_insert_from_select_defaultsr‹   r{   r|   ÚdefaultÚis_sentinelÚappendrr   rR   rS   Ú&_append_param_insert_select_hasdefaultÚextendr2   r   r    r3   rŽ   Ú	_generater€   Ú_raw_columns)rG   rH   rI   r™   r”   rZ   r•   r›   rš   rJ   rK   Ú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 rF   rF   rY   s     €r4   rW   z_scan_cols.<locals>.<listcomp>h  s0   ø€ ð 
ð 
ð 
Ø$'ˆNˆN˜3ÑÔð
ð 
ð 
r6   c                óz   •— g | ]7}t          |t          ¦  «        r |‰j        j        v ¯%‰j        j        |         ‘Œ8S rF   )r2   r¥   r{   r-   )rV   rU   rH   s     €r4   rW   z_scan_cols.<locals>.<listcomp>l  sO   ø€ ð 
ð 
ð 
àÝ˜#�sÑ#Ô#ð
ð ),¨t¬z¬|Ð(;Ð(;ð ŒJŒL˜Ôà(;Ð(;Ð(;r6   c                ó&   •— g | ]}|j         ‰v¯|‘ŒS rF   )rU   )rV   r-   Úordered_keyss     €r4   rW   z_scan_cols.<locals>.<listcomp>p  s%   ø€ ÐBÐBÐB�1¨¬°\Ð(AÐ(AˆQÐ(AÐ(AÐ(Ar6   c              3  ó$   •K  — | ]
}|‰v ¯|V — Œd S re   rF   )rV   r-   Úremaining_supplementals     €r4   rh   z_scan_cols.<locals>.<genexpr>ý  s;   øè è € ð +
ð +
àØÐ*Ð*Ð*ð à*Ð*Ð*Ð*ð+
ð +
r6   )Ú_get_returning_modifiersr…   r   Ú_parameter_orderingr‹   r{   r-   r|   r}   r~   Ú_autoincrement_columnr‘   Ú#insert_null_pk_still_autoincrementsÚ_supplemental_returningrp   Ú_append_param_parameterÚprimary_keyÚ!_append_param_insert_pk_returningÚ$_append_param_insert_pk_no_returningrÙ   rÚ   Ú_append_param_insert_hasdefaultÚserver_defaultrÛ   rm   ÚnullableÚ"_warn_pk_with_no_anticipated_valueÚ_append_param_updater�   rÝ   )rG   rH   rI   r™   r”   rZ   r•   r›   rš   rJ   rK   Úneed_pksrp   Úimplicit_return_defaultsÚpostfetch_lastrowidr@   rA   Úparameter_orderingrà   r   Úautoincrement_colrï   Úsupplemental_returningÚcompiler_implicit_returningr-   rã   ré   rë   s    `   `                    @@r4   rŠ   rŠ   O  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 re   rF   )rV   r-   Úir_sets     €r4   rh   z0_setup_delete_return_defaults.<locals>.<genexpr>,  s0   øè è € ð +
ð +
Ø°qÀ°°ˆA°°°°ð+
ð +
r6   )rì   Ú_return_defaults_columnsrp   rÝ   rð   r‹   )rG   rH   rI   r™   r”   rZ   r•   r›   rš   rJ   rK   rÅ   rû   r  s                @r4   rx   rx     sÎ   ø€ õ ,DØ�$˜ xñ,ô ,Ð(€QˆÐ# að $ð ØˆàÔ$ð EØÔ#×*Ò*Ð+CÑDÔDÐDàÔ#ð 
Ý�XÔ0Ñ1Ô1ˆØÔ#×*Ò*ð +
ð +
ð +
ð +
ØÔ3ð+
ñ +
ô +
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r6   c                ó¦  — |                      |¦  «        }| 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 )N©Ú	use_tableTz%s_m0)rP   r£   rN   )r£   rN   rN   )rr   rR   rS   Úinclude_table_with_column_exprsr‹   r   Ú_is_literalrò   rü   rp   rÛ   rT   r,   r}   r~   Ú_is_bind_parameterr    r‘   r¸   r¡   Ú
self_groupr…   rm   )rG   rH   rI   r-   rã   r™   r•   rp   rû   rü   rš   rþ   rï   rK   r    Ú	col_valueÚaccumulated_bind_namess                    r4   rñ   rñ   1  sD  € ð  �NŠN˜7Ñ#Ô#€EàÔ!×/Ò/Ø	�]ÔBð 0ñ ô €Iõ (+¡u¤uÐåÔ˜UÑ#Ô#ð V-à/ð	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.

    NrN   )rÙ   Úis_sequencer‘   Úsupports_sequencesÚoptionalÚsequences_optionalr‹   rÛ   rR   rS   r¡   rp   Úis_clause_elementÚargr  Ú"_create_insert_prefetch_bind_paramrU   r{   rî   rö   r÷   rø   )rG   rH   r-   rš   rK   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  r{   rî   rü   Ú"preexecute_autoincrement_sequencesrÛ   rR   rS   r  rU   rö   r÷   rø   ©rG   rH   r-   rš   rK   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 )NrN   )rÙ   r  r‘   r  r  r  r‹   rÛ   rR   rS   r¡   rp   rò   rm   r  r  r  r  rU   )rG   rH   r-   rû   rš   rK   r  s          r4   rõ   rõ   .  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 )NrF   r¡   F)r   rÙ   r‘   r  r  r  rÛ   rR   rS   Ú
next_valuer   r  r  r  rU   r  s        r4   rÜ   rÜ   e  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  rF   )r  Úonupdater  r  rÛ   rR   rS   r¡   r  r  rp   rm   Ú"_create_update_prefetch_bind_paramrU   Úserver_onupdater  rv   )rG   rI   rH   r-   rû   rš   rK   Ú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 re   rF   ©rG   r-   r¡   rK   s       r4   r  r  ¼  r¨   r6   úLiteral[False]úelements.BindParameter[Any]c                ó   — d S re   rF   r%  s       r4   r  r  Å  ó	   € ð #& #r6   ú'Union[elements.BindParameter[Any], str]c                ó^   — t          | |d f||dœ|¤Ž}| j                             |¦  «         |S ©N)r¡   r£   )rT   rn   rÛ   ©rG   r-   r¡   r£   rK   Úparams         r4   r  r  Î  óO   € õ Ø�!�TðØ#*°ðð Ø9;ðð €Eð Ô×#Ò# AÑ&Ô&Ð&Ø€Lr6   c                ó   — d S re   rF   r%  s       r4   r!  r!  Ü  r¨   r6   c                ó   — d S re   rF   r%  s       r4   r!  r!  å  r)  r6   c                ó^   — t          | |d f||dœ|¤Ž}| j                             |¦  «         |S r,  )rT   ro   rÛ   r-  s         r4   r!  r!  î  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   )ÚindexrU   ÚoriginalrÙ   r­   )Úselfr8  r7  s      r4   Ú__init__z_multiparam_column.__init__ÿ  s>   € ØˆŒ
Ø˜xœ|¨U°Q©YÐ7Ñ7ˆŒØ ˆŒØÔ'ˆŒØ”MˆŒ	ˆ	ˆ	r6   c                ó   — t          ¦   «         ‚re   ©ÚNotImplementedError)r9  ÚotherrK   s      r4   Úcomparez_multiparam_column.compare  ó   € Ý!Ñ#Ô#Ð#r6   c                ó   — t          ¦   «         ‚re   r<  )r9  rK   s     r4   Ú_copy_internalsz"_multiparam_column._copy_internals	  r@  r6   c                ól   — t          |t          ¦  «        o|j        | j        k    o|j        | j        k    S re   )r2   r4  rU   r8  )r9  r>  s     r4   Ú__eq__z_multiparam_column.__eq__  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Ù   ©r9  s    r4   Ú_default_description_tuplez-_multiparam_column._default_description_tuple  s   € õ (Ô<¸T¼\ÑJÔJÐJr6   c                ó4   — t          j        | j        ¦  «        S rF  )r   rG  r   rH  s    r4   Ú_onupdate_description_tuplez._multiparam_column._onupdate_description_tuple  s   € õ (Ô<¸T¼]ÑKÔKÐKr6   N)r/   r   )rB   rC   rD   Ú_is_multiparam_columnr:  r?  rB  rD  r!   Úmemoized_propertyrI  rK  rF   r6   r4   r4  r4  ü  s¨   € € € € € Ø Ðð"ð "ð "ð$ð $ð $ð$ð $ð $ð
ð 
ð 
ð 
ÔðKð Kð Kñ ÔðKð
 
ÔðLð Lð Lñ ÔðLð Lð Lr6   r4  r7  Ú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  r4  r2   r   ÚInsertr  )rG   rH   r-   r7  rK   rŸ   s         r4   Ú _process_multiparam_default_bindrQ     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 �]}|j        D �]}||	v rý|                     |¦  «         || ||¦  «        <   |	|         }|                      ||
¬¦  «        }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¦  «         �Œ�Œ|D �]}|j        D �]}||	v rŒ|j        �Õ|j        j        sÉ|j        j        rq|                     ||                      ||
¬¦  «         | j        |j        j                             ¦   «         fi |¤Ždf¦  «         | j                             |¦  «         Œ˜|                     ||                      ||
¬¦  «        t)          | |fd ||¦  «        i|¤Ž|j
        ff¦  «         Œä|j        �| j                             |¦  «         �Œ�Œd S )Nc                óT   — i | ]%\  }}t          j        t          j        |¦  «        |“Œ&S rF   )r   Úexpectr   rÊ   )rV   r-   r.  s      r4   rb   z1_get_update_multitable_params.<locals>.<dictcomp>L  s>   € ð ð ð áˆAˆuõ 	Ô�Ô,¨aÑ0Ô0°%ðð ð r6   rF   ©r#  )rP   r£   r£   )r  r‹   rÆ   r-   Úaddr¡   r   r	  rT   r,   rU   r
  r¸   rm   rÛ   r  r   r  r  r  r!  r"  )rG   rH   rI   r˜   r›   r•   r”   rš   rK   Únormalized_paramsr#  Úaffected_tablesÚtr-   r    r  r  Úcbns                     r4   r‡   r‡   A  sQ  € ðð à-Ð3°ðñ ô Ðð
 "ÔA€Må‘e”e€OØÔ'ð Mñ MˆØ”ð 	Mñ 	MˆAØÐ%Ð%Ð%Ø×#Ò# 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ùñ7	Mð< ð -ñ -ˆØ”ð 	-ñ 	-ˆ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_valuesrk   rZ   rl   r<   c           
     ó(  ‡— |}|g}|j         }|€J ‚t          |dd …         ¦  «        D ]è\  }	}
g }ˆfd„|
                     ¦   «         D ¦   «         }
|D ]©\  }}}}|j        |
v rm|j        }t	          j        |
|         ¦  «        r%t          | ||
|         fdd|j        |	dz   fz  i|¤Ž}n: | j        |
|                              ¦   «         fi |¤Ž}nt          | |||	|¦  «        }| 
                    ||||f¦  «         Œª| 
                    |¦  «         Œé|S )Nr   c                ó.   •— i | ]\  }} ‰|¦  «        |“ŒS rF   rF   )rV   rU   rg   rZ   s      €r4   rb   z2_extend_values_for_multiparams.<locals>.<dictcomp>£  s)   ø€ Ð@Ð@Ð@©&¨#¨qˆ~ˆ~˜cÑ"Ô" AÐ@Ð@Ð@r6   r£   r6  )r   Ú	enumerater�   rU   r   r	  rT   r¡   r  rQ  rÛ   )rG   rH   rI   r[  rZ   rK   Úvalues_0rš   r–   ÚiÚrowÚ	extensionrŸ   Úcol_exprr.  Úaccumulated_namesrU   Ú	new_params       `             r4   r�   r�   “  s}  ø€ ð €HØÐ€Fà	Ô	(€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œð!ð !ð &¨¬°!°a±%Ð(8Ñ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 )NrU  )r«   rF   )Ú
setdefaultr¡   r  r   r	  r   r¬   r­   r
  rµ   r¶   r  rÛ   )rG   rI   r™   r˜   rZ   rš   rK   rf   rg   Úcolkeyrc  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                óF  — | 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          |¦  «        rZ|o|j        }|p|j        p|j        }	|o| j        o|j        o|	p|j        }
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t5          |j	        j        ¦  «        }nt5          |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_returningrv   ru   r~   rü   r{   rî   Úinsert_returningÚ_primary_tablerp   Ú_supports_implicit_returningÚfavor_returning_over_lastrowidrð   r@   Ú!use_insertmanyvalues_wo_returningÚ_sort_by_parameter_orderÚ_get_sentinel_column_for_tabler…   Úupdate_returningrw   Údelete_returningr  r‹   r-   )rG   rH   rI   rJ   r‘   rú   rü   rp   Úshould_implicit_return_defaultsÚexplicit_returningr@   rA   rû   s                r4   rì   rì   é  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 ð $Ø#Ðå˜}Ñ-Ô-ð 1$àÐ8 4Ô#8ð 	(ð ,ð ,ØŒð,àÔ+ð 	ð ð ØÔ(ðàÔ,ðð #ÐO gÔ&Oð 	ð  $Ðà ð	à"ð	ð Ô-ð	ð
 $,×#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.)r{   Úfullnamer£   Úlenrò   r!   Úwarn)r-   Úmsgs     r4   rø   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   )rG   r$   rH   r'   rI   r&   rJ   r>   rK   r   r/   r9   ).FN)rG   r$   rŸ   r.   r    r   r¡   r¢   rP   r>   r£   r¤   rK   r   r/   r¥   )
rG   r$   rŸ   r.   r    r   rK   r   r/   r¥   )TFN)rG   r$   rŸ   r.   r    r   r¡   r>   rP   r>   r£   r¤   rK   r   r/   r©   )rG   r$   rH   r'   rI   r&   r/   r¹   )rG   r$   rH   r'   r-   r0   rš   r  rK   r  r/   r  ).)
rG   r$   r-   r.   r¡   r¢   rK   r   r/   r¥   )
rG   r$   r-   r.   r¡   r&  rK   r   r/   r'  )TN)rG   r$   r-   r.   r¡   r>   r£   r¤   rK   r   r/   r*  )rG   r$   rH   r'   r-   r7   r7  rN  rK   r  r/   r¥   )rG   r$   rH   r'   rI   r&   r[  rk   rZ   rl   rK   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"   rG   r#   r$   r%   r&   r'   r(   r)   r*   r+   Úsymbolr,   r5   r¥   Ú_CrudParamElementÚ_CrudParamElementStrÚ_CrudParamElementSQLExprr:   r9   rž   rT   r¸   rs   r‰   rŠ   rx   rñ   ró   rô   rõ   rÜ   rù   r  r!  r4  rQ  r‡   r�   r„   rì   rø   rF   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ðOð Oð Oð Oðd 
ð
 !ØØðð ð ð ñ 
„ðð 
ðð ð ñ 
„ðð ØØðð ð ð ð ð*#4ð #4ð #4ðL3<ð 3<ð 3<ð 3<ðlBCð BCð BCðJA8ð A8ð A8ðH
ð 
ð 
ð<pAð pAð pAðf:.ð :.ð :.ðzJ,ð J,ð J,ðZ4
ð 4
ð 4
ðn&
ð &
ð &
ð &
ðR+.ð +.ð +.ð\ 
ð !ðð ð ð ñ 
„ðð 
ð&ð &ð &ñ 
„ð&ð Øð	ð ð ð ð ð 
ð !ðð ð ð ñ 
„ðð 
ð&ð &ð &ñ 
„ð&ð Øð	ð ð ð ð ð!Lð !Lð !Lð !Lð !L˜Ô/°Ô4ñ !Lô !Lð !LðH
ð 
ð 
ð 
ðBO-ð O-ð O-ðd)ð )ð )ð )ðX'0ð '0ð '0ðTFð Fð FðRð ð ð ð r6   