§
    eŠtj ã                  óN  — d 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% 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m0Z0 dd)l1m2Z2 e
rHdd*l3m4Z4 dd+l3m5Z5 dd,l3m6Z6 dd-l7m8Z8 dd.l9m:Z: dd/l9m;Z; dd0l9m<Z< dd1l9m=Z= dd2l>m?Z? dd3lm@Z@ dd4lmAZA dd5lBmCZC  ed6eD¬7¦  «        ZEe	d8d8d9œdldJ„¦   «         ZFe	d8d8d9œdmdM„¦   «         ZFdNdNd9œdndP„ZFe	d8dQdRœdodW„¦   «         ZGe	d8dQdRœdpdZ„¦   «         ZGdNdQdRœdqd\„ZGd]„ ZH G d^„ d_e¦  «        ZI G d`„ daeI¦  «        ZJ e*jK        dbdc¦  «         G dd„ deeIe.¦  «        ¦   «         ZL e*jK        dbdf¦  «         G dg„ dheJe/¦  «        ¦   «         ZM e*jK        dbdi¦  «         G dj„ dkeJe-¦  «        ¦   «         ZNdNS )rzoadditional ORM persistence classes related to "bulk" operations,
specifically outside of the flush() process.

é    )Úannotations)ÚAny)Úcast)ÚDict)ÚIterable)ÚOptional)Úoverload)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Ú
attributes)Úcontext)Ú	evaluator)Úexc)Úloading)Úpersistence)ÚNO_VALUE)ÚAbstractORMCompileState)ÚFromStatement)ÚORMFromStatementCompileState)ÚQueryContexté   )Úutil)ÚDialect)Úresult)Ú	coercions)Údml)Ú
expression)Úroles)Úselect)Úsqltypes)Ú_entity_namespace_key)ÚCompileState)ÚOptions)ÚDeleteDMLState)ÚInsertDMLState)ÚUpdateDMLState)Ú
EMPTY_DICT)ÚLiteral)ÚDMLStrategyArgument)ÚOrmExecuteOptionsParameter)ÚSynchronizeSessionArgument)ÚMapper)Ú_BindArguments)ÚORMExecuteState)ÚSession)ÚSessionTransaction)ÚInstanceState)Ú
Connection)Úcursor)Ú_CoreAnyExecuteParamsÚ_O)Úbound.)Úuse_orm_insert_stmtÚexecution_optionsÚmapperú
Mapper[_O]Úmappingsú<Union[Iterable[InstanceState[_O]], Iterable[Dict[str, Any]]]Úsession_transactionr2   ÚisstatesÚboolÚreturn_defaultsÚrender_nullsr9   úLiteral[None]r:   ú$Optional[OrmExecuteOptionsParameter]ÚreturnÚNonec               ó   — d S ©N© ©r;   r=   r?   r@   rB   rC   r9   r:   s           ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/orm/bulk_persistence.pyÚ_bulk_insertrM   J   s	   € ð ˆ3ó    úOptional[dml.Insert]úcursor.CursorResult[Any]c               ó   — d S rI   rJ   rK   s           rL   rM   rM   X   s	   € ð  #˜srN   Nú"Optional[cursor.CursorResult[Any]]c               ó|  ‡ ‡‡‡— ‰ j         }|j        j        rt          d¦  «        ‚|rZt          r+t          t          t          t                            ‰¦  «        Š|rd„ ‰D ¦   «         }	d„ |	D ¦   «         Šntd„ ‰D ¦   «         Šngt          r2t          t          t          t          t          f                  ‰¦  «        Š|rt          ‰¦  «        Šnd„ ‰D ¦   «         Št          ‰ ‰¦  «         |                     |¦  «        Šd }
ˆ fd„|j                             ¦   «         D ¦   «         }|rd}nt#          |¦  «        dk    rd}nd	}|D ]§\  }}|� ˆfd
„|                     ¦   «         D ¦   «         nd}ˆˆ fd„t'          j        |ˆˆ fd„‰D ¦   «         d|||¬¦  «        D ¦   «         }t'          j        |d ||||||¬¦  «        }|�,|j        r|
€|}
Œ‡|j        r|sJ ‚|
                     |¦  «        }
Œ¨|rE|rC‰ j        }d„ ‰ j        D ¦   «         }|	D ](\  }Š|t7          ˆfd„|D ¦   «         ¦  «        d f|_        Œ)|�|
€J ‚|
S d S )NzJconnection_callable / per-instance sharding not supported in bulk_insert()c                ó    — g | ]}||j         f‘ŒS rJ   ©Údict©Ú.0Ústates     rL   ú
<listcomp>z _bulk_insert.<locals>.<listcomp>   s   € Ð@Ð@Ð@¨e�u˜eœjÐ)Ð@Ð@Ð@rN   c                ó   — g | ]\  }}|‘ŒS rJ   rJ   )rX   rY   Údict_s      rL   rZ   z _bulk_insert.<locals>.<listcomp>€   s   € Ð;Ð;Ð;¡. 5¨%˜Ð;Ð;Ð;rN   c                ó   — g | ]	}|j         ‘Œ
S rJ   rU   rW   s     rL   rZ   z _bulk_insert.<locals>.<listcomp>‚   ó   € Ð9Ð9Ð9 u˜œ
Ð9Ð9Ð9rN   c                ó,   — g | ]}t          |¦  «        ‘ŒS rJ   rU   ©rX   Úms     rL   rZ   z _bulk_insert.<locals>.<listcomp>–   s   € Ð2Ð2Ð2 A�˜Q™œÐ2Ð2Ð2rN   c                ó0   •— g | ]\  }}|‰j         v ¯||f‘ŒS rJ   )Ú_pks_by_table)rX   ÚtableÚmpr;   s      €rL   rZ   z _bulk_insert.<locals>.<listcomp>�   s9   ø€ ð ð ð áˆE�2Ø�FÔ(Ð(Ð(ð 
�ˆà(Ð(Ð(rN   Tr   Fc                ó<   •— g | ]}|j         ‰d          v ¯|j         ‘ŒS ©r   ©Úkey©rX   Úbr=   s     €rL   rZ   z _bulk_insert.<locals>.<listcomp>·   s6   ø€ ð ð ð àØ”5˜H QœKÐ'Ð'ð ”à'Ð'Ð'rN   rJ   c           	   3  ó>   •K  — | ]\  }}}}}}}}d ||‰
‰	|||fV — Œd S rI   rJ   )rX   rY   Ú
state_dictÚparamsre   ÚconnÚvalue_paramsÚhas_all_pksÚhas_all_defaultsÚ
connectionr;   s            €€rL   ú	<genexpr>z_bulk_insert.<locals>.<genexpr>À   sk   øè è € ð 
ð 
ñ	ØØØØØØØØ ð# ØØØØØØØ ð	ð
ð 
ð 
ð 
ð 
ð 
rN   c              3  ó$   •K  — | ]
}d |‰‰fV — Œd S rI   rJ   ©rX   Úmappingrs   r;   s     €€rL   rt   z_bulk_insert.<locals>.<genexpr>Ö   s,   øè è € ÐMÐM¸�$˜ ¨Ð4ÐMÐMÐMÐMÐMÐMrN   )ÚbulkrB   rC   Úinclude_bulk_keys)Úbookkeepingr9   r:   c                ó   — g | ]	}|j         ‘Œ
S rJ   rh   )rX   Úps     rL   rZ   z _bulk_insert.<locals>.<listcomp>ñ   s   € ÐDÐDÐD A˜!œ%ÐDÐDÐDrN   c                ó    •— g | ]
}‰|         ‘ŒS rJ   rJ   )rX   ri   r\   s     €rL   rZ   z _bulk_insert.<locals>.<listcomp>õ   s   ø€ Ð<Ð<Ð< c�u˜S”zÐ<Ð<Ð<rN   )Úbase_mapperÚsessionÚconnection_callableÚNotImplementedErrorr
   r   r   r3   r7   r   Ústrr   ÚlistÚ_expand_compositesrs   Ú_sorted_tablesÚitemsÚlenÚ_get_embedded_bindparamsr   Ú_collect_insert_commandsÚ_emit_insert_statementsÚ
_returningÚreturns_rowsÚsplice_horizontallyÚ_identity_classÚ_identity_key_propsÚtupleri   )r;   r=   r?   r@   rB   rC   r9   r:   r~   ÚstatesÚreturn_resultÚmappers_to_runrz   rd   Úsuper_mapperÚextra_bp_namesÚrecordsr   Úidentity_clsÚidentity_propsrY   rs   r\   s   ``                   @@rL   rM   rM   f   s`  øøøø€ ð Ô$€KàÔ"Ô6ð 
Ý!ð-ñ
ô 
ð 	
ð
 ð -Ýð 	CÝ�H¥]µ2Ô%6Ô7¸ÑBÔBˆHàð 	:à@Ð@°xÐ@Ñ@Ô@ˆFØ;Ð;°FÐ;Ñ;Ô;ˆHˆHà9Ð9°Ð9Ñ9Ô9ˆHˆHåð 	@Ý�H¥T­#­s¨(¤^Ô4°hÑ?Ô?ˆHàð 	3õ ˜H‘~”~ˆHˆHð 3Ð2¨Ð2Ñ2Ô2ˆHÝ˜6 8Ñ,Ô,Ð,à$×/Ò/°Ñ<Ô<€Jà8<€Mðð ð ð à$Ô3×9Ò9Ñ;Ô;ðñ ô €Nð ð 	àˆˆÝ	ˆ^Ñ	Ô	˜qÒ	 Ð	 ð ˆˆàˆà-ð ?Jð ?JÑˆˆ|ð #Ð.ðð ð ð à,×EÒEÑGÔGðñ ô ð ð ð 	ð
ð 
ð 
ð 
ð 
õ( Ô5ØØMÐMÐMÐMÐMÀHÐMÑMÔMØØ +Ø)Ø"0ðñ ô ð)
ñ 
ô 
ˆõ< Ô4ØØØØØØ#Ø 3Ø/ð	
ñ 	
ô 	
ˆð Ð*Ø&Ô1ð J°]Ð5JØ &��ØÔ$ð JØ"Ð"Ð"�{Ø -× AÒ AÀ&Ñ IÔ I�øàð ˜8ð ØÔ-ˆØDÐD¨Ô)CÐDÑDÔDˆØ"ð 	ð 	‰LˆE�5àÝÐ<Ð<Ð<Ð<¨^Ð<Ñ<Ô<Ñ=Ô=ØðˆEŒIˆIð Ð&ØÐ(Ð(Ð(ØÐð 'Ð&rN   T)Úuse_orm_update_stmtÚenable_check_rowcountúMapper[Any]Úupdate_changed_onlyr™   rš   c               ó   — d S rI   rJ   ©r;   r=   r?   r@   rœ   r™   rš   s          rL   Ú_bulk_updaterŸ   þ   s	   € ð ˆ3rN   úOptional[dml.Update]ú_result.Result[Any]c               ó   — d S rI   rJ   rž   s          rL   rŸ   rŸ     s	   € ð ˜#rN   úOptional[_result.Result[Any]]c               óÒ  ‡ ‡‡‡‡— ‰ j         }‰ j        Š‰ j        r ‰ j        j        h                     ‰¦  «        Šˆfd„Š|r|rˆˆ fd„‰D ¦   «         Šn)d„ ‰D ¦   «         Šnd„ ‰D ¦   «         Št          ‰ ‰¦  «         |j        j        rt          d¦  «        ‚| 	                    |¦  «        Š|� ˆfd„| 
                    ¦   «         D ¦   «         nd}|j                             ¦   «         D ]g\  }	}
‰                      |
¦  «        r	|	‰ j        vrŒ$t          j        d |	ˆˆ fd„‰D ¦   «         d	||¬
¦  «        }t          j        |d |
|	|d||¬¦  «         Œh|�t%          j        ¦   «         S d S )Nc                óR   •‡— ˆˆfd„‰j                              ¦   «         D ¦   «         S )Nc                ó6   •— i | ]\  }}|‰j         v s|‰v ¯||“ŒS rJ   )Úcommitted_state)rX   ÚkÚvÚsearch_keysrY   s      €€rL   ú
<dictcomp>z7_bulk_update.<locals>._changed_dict.<locals>.<dictcomp>)  sA   ø€ ð 
ð 
ð 
á��1Ø�EÔ)Ð)Ð)¨Q°+Ð-=Ð-=ð ˆqà-=Ð-=Ð-=rN   )rV   r†   )r;   rY   rª   s    `€rL   Ú_changed_dictz#_bulk_update.<locals>._changed_dict(  sB   øø€ ð
ð 
ð 
ð 
ð 
àœ
×(Ò(Ñ*Ô*ð
ñ 
ô 
ð 	
rN   c                ó(   •— g | ]} ‰‰|¦  «        ‘ŒS rJ   rJ   )rX   rY   r¬   r;   s     €€rL   rZ   z _bulk_update.<locals>.<listcomp>1  s%   ø€ ÐKÐKÐK¸˜˜ f¨eÑ4Ô4ÐKÐKÐKrN   c                ó   — g | ]	}|j         ‘Œ
S rJ   rU   rW   s     rL   rZ   z _bulk_update.<locals>.<listcomp>3  r^   rN   c                ó,   — g | ]}t          |¦  «        ‘ŒS rJ   rU   r`   s     rL   rZ   z _bulk_update.<locals>.<listcomp>5  s   € Ð.Ð.Ð. •D˜‘G”GÐ.Ð.Ð.rN   zJconnection_callable / per-instance sharding not supported in bulk_update()c                ó<   •— g | ]}|j         ‰d          v ¯|j         ‘ŒS rg   rh   rj   s     €rL   rZ   z _bulk_update.<locals>.<listcomp>C  s6   ø€ ð 	
ð 	
ð 	
àØŒu˜ œÐ#Ð#ð ŒEà#Ð#Ð#rN   rJ   c              3  óX   •K  — | ]$}d |‰‰‰j         r|‰j         j                 nd fV — Œ%d S rI   )Ú_version_id_propri   rv   s     €€rL   rt   z_bulk_update.<locals>.<genexpr>S  sg   øè è € ð ð ð ð ØØØð "Ô2ð"˜ Ô 7Ô ;Ô<Ð<à!ð
ðð ð ð ð ð rN   T)rx   r™   ry   F)rz   r™   rš   )r~   Ú_primary_key_propkeysr²   ri   Úunionr„   r   r€   r�   rs   rˆ   r…   r†   Úisarc   r   Ú_collect_update_commandsÚ_emit_update_statementsÚ_resultÚnull_result)r;   r=   r?   r@   rœ   r™   rš   r~   r•   rd   r”   r–   r¬   rs   rª   s   ``          @@@rL   rŸ   rŸ     s;  øøøøø€ ð Ô$€KàÔ.€KØÔð GØÔ.Ô2Ð3×9Ò9¸+ÑFÔFˆð
ð 
ð 
ð 
ð 
ð ð -Øð 	:ØKÐKÐKÐKÐKÀ(ÐKÑKÔKˆHˆHà9Ð9°Ð9Ñ9Ô9ˆHˆHà.Ð. XÐ.Ñ.Ô.ˆÝ˜6 8Ñ,Ô,Ð,àÔ"Ô6ð 
Ý!ð-ñ
ô 
ð 	
ð
 %×/Ò/°Ñ<Ô<€Jð Ð*ð	
ð 	
ð 	
ð 	
à(×AÒAÑCÔCð	
ñ 	
ô 	
ð 	
ð ð ð  +Ô9×?Ò?ÑAÔAð "
ð "
Ñˆˆ|Ø�zŠz˜,Ñ'Ô'ð 	¨5¸Ô8LÐ+LÐ+LØåÔ6ØØðð ð ð ð ð  (ðñ ô ð Ø 3Ø,ð'
ñ 
ô 
ˆõ* 	Ô+ØØØØØØØ 3Ø"7ð		
ñ 		
ô 		
ð 		
ð 		
ð Ð&ÝÔ"Ñ$Ô$Ð$ð 'Ð&rN   c                óØ   ‡— | j         Š‰sd S t          ‰                     ¦   «         ¦  «        }ˆfd„|D ¦   «         }|D ]+}|                     |¦  «        D ]} ||         |¦  «         ŒŒ,d S )Nc                óF   •— i | ]}|‰|                               ¦   «         “ŒS rJ   )Ú)_populate_composite_bulk_save_mappings_fn)rX   ri   Úcomposite_attrss     €rL   r«   z&_expand_composites.<locals>.<dictcomp>z  s<   ø€ ð ð ð àð 	ˆ_˜SÔ!×KÒKÑMÔMðð ð rN   )Ú
compositesÚsetÚkeysÚintersection)r;   r=   Úcomposite_keysÚ
populatorsrw   ri   r½   s         @rL   r„   r„   t  s­   ø€ ØÔ'€OØð Øˆå˜×-Ò-Ñ/Ô/Ñ0Ô0€Nðð ð ð à!ðñ ô €Jð ð %ð %ˆØ!×.Ò.¨wÑ7Ô7ð 	%ð 	%ˆCØˆJ�sŒO˜GÑ$Ô$Ð$Ð$ð	%ð%ð %rN   c                  óÈ   — e Zd ZU dZdZded<   ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zddœd„Zed„ ¦   «         ZdS )ÚORMDMLStateTNz&Optional[ORMFromStatementCompileState]Úfrom_statement_ctxc              #  óü  K  — t           j        }|D �]i\  }}t          j        t          j        |¦  «        }t          |t          ¦  «        r t          ||t          ¬¦  «        }|t          u rYt          j        t          j        |¦  «        |r3t          j        t          j
        |t          j        ¦   «         d¬¦  «        n|fV — Œ³ |||                     |¦  «        |¦  «        E d {V —† ŒÚd|j        v rK|j        }	t          |	d         |	d         ¦  «        }
 |||
                     |¦  «        |¦  «        E d {V —† �Œ.||s|n2t          j        t          j
        |t          j        ¦   «         d¬¦  «        fV — �Œkd S )N)ÚdefaultT)Útype_Úis_crudÚentity_namespaceÚ	proxy_key)r(   Ú_get_crud_kv_pairsr   Úexpectr    ÚDMLColumnRoleÚ
isinstancer‚   r#   r   ÚExpressionElementRoler"   ÚNullTypeÚ_bulk_update_tuplesÚ_annotations)Úclsr;   Ú	statementÚkv_iteratorÚneeds_to_be_cacheableÚcore_get_crud_kv_pairsr¨   r©   ÚdescÚk_annoÚattrs              rL   Ú_get_orm_crud_kv_pairsz"ORMDMLState._get_orm_crud_kv_pairs‡  s  è è € õ "0Ô!BÐàð 0	ñ 0	‰DˆAˆqÝÔ ¥Ô!4°aÑ8Ô8ˆAå˜!�SÑ!Ô!ð -Ý,¨V°QÅÐIÑIÔI�Ø�8Ð#Ð#å!Ô(­Ô)<¸aÑ@Ô@ð  5ð#�IÔ,Ý %Ô ;Ø !Ý&.Ô&7Ñ&9Ô&9Ø(,ð	ñ ô ð ð "#ðð ð ð ð ð  6Ð5Ø!Ø×0Ò0°Ñ3Ô3Ø-ñ ô  ð ð ð ð ð ð ð ð ð
 $ q¤~Ð5Ð5Øœ�Ý,ØÐ-Ô.°°{Ô0Cñô �ð 2Ð1ØØ×,Ò,¨QÑ/Ô/Ø)ñô ð ð ð ð ð ð ð ñ ð ð  5ð˜˜å&Ô-Ý!Ô7ØÝ"*Ô"3Ñ"5Ô"5Ø$(ð	ñ ô ðð ð ð ñ ðI0	ð 0	rN   c                óx   — |j         j                             d¦  «        }|r|j        r||j        d         urd S |S )NÚplugin_subject)rd   Ú_propagate_attrsÚgetr;   )rÕ   rÖ   rß   s      rL   Ú_get_dml_plugin_subjectz#ORMDMLState._get_dml_plugin_subject¿  sZ   € à"œÔ9×=Ò=Ð>NÑOÔOˆð ð	à!Ô(ð	ð ØÔ-Ð.>Ô?ð@ð @ð �4ØÐrN   c                ó€   ‡ ‡‡— ‰                       ‰¦  «        Š‰st          j        ‰|¦  «        S ˆ ˆˆfd„|D ¦   «         S )Nc           
     óˆ   •— g | ]>}t          ‰                     ‰j        ‰|                     ¦   «         d ¦  «        ¦  «        ‘Œ?S )F)rV   rÝ   r;   r†   )rX   Ú
value_dictrÕ   rß   rÖ   s     €€€rL   rZ   z8ORMDMLState._get_multi_crud_kv_pairs.<locals>.<listcomp>Õ  s`   ø€ ð 
ð 
ð 
ð õ Ø×*Ò*Ø"Ô)¨9°j×6FÒ6FÑ6HÔ6HÈ%ñô ñô ð
ð 
ð 
rN   )râ   r(   Ú_get_multi_crud_kv_pairs)rÕ   rÖ   r×   rß   s   `` @rL   ræ   z$ORMDMLState._get_multi_crud_kv_pairsÌ  sq   øøø€ à×4Ò4°YÑ?Ô?ˆàð 	Ý!Ô:Ø˜;ñô ð ð
ð 
ð 
ð 
ð 
ð 
ð *ð
ñ 
ô 
ð 	
rN   c                óÈ   — |s
J d¦   «         ‚|                       |¦  «        }|st          j        |||¦  «        S t          |                      |j        |||¦  «        ¦  «        S )Nz0no test coverage for needs_to_be_cacheable=False)râ   r(   rÍ   rƒ   rÝ   r;   )rÕ   rÖ   r×   rØ   rß   s        rL   rÍ   zORMDMLState._get_crud_kv_pairsÞ  s‘   € ð "ð	>ð 	>à=ñ	>ô 	>Ø!ð ×4Ò4°YÑ?Ô?ˆàð 	Ý!Ô4Ø˜;Ð(=ñô ð õ Ø×&Ò&ØÔ%ØØØ%ñ	ô ñ
ô 
ð 	
rN   c                ó¢   — |j         j        d         }|j        }|j        r|j        }n|j        j        }||j        |j        |j        |j        dœS )NÚparententity)ÚnameÚtypeÚexprÚentityrd   )	rd   rÔ   r;   Úis_aliased_classrê   Úclass_Ú__name__rí   Úlocal_table)rÕ   rÖ   Úext_infor;   Ú_label_names        rL   Úget_entity_descriptionz"ORMDMLState.get_entity_descriptionó  s_   € à”?Ô/°Ô?ˆØ”ˆØÔ$ð 	1Ø"œ-ˆKˆKà œ-Ô0ˆKð  Ø”MØ”OØ”oØÔ'ð
ð 
ð 	
rN   c                óP   ‡‡— d„ Šd„ Šˆfd„ˆfd„|j         D ¦   «         D ¦   «         S )Nc                ó8   — | j                              dd ¦  «        S )Nré   )rÔ   rá   )Úcs    rL   Ú_ent_for_colzCORMDMLState.get_returning_column_descriptions.<locals>._ent_for_col  s   € Ø”>×%Ò% n°dÑ;Ô;Ð;rN   c                ót   — |€| S | j                              dd ¦  «        }|s| S t          |j        || ¦  «        S )NrÌ   )rÔ   rá   Úgetattrrí   )r÷   ÚentrÌ   s      rL   Ú_attr_for_colzDORMDMLState.get_returning_column_descriptions.<locals>._attr_for_col	  sD   € Øˆ{Ø�Øœ×*Ò*¨;¸Ñ=Ô=ˆIØð 9Ø�å˜sœz¨9°aÑ8Ô8Ð8rN   c                ób   •— g | ]+\  }}|j         |j         ‰||¦  «        |j        |j        d œ‘Œ,S ))rê   rë   rì   Úaliasedrí   )ri   rë   rî   rí   )rX   r÷   rû   rü   s      €rL   rZ   zAORMDMLState.get_returning_column_descriptions.<locals>.<listcomp>  sZ   ø€ ð 
ð 
ð 
ñ ��3ð œØœØ%˜ a¨Ñ-Ô-ØÔ/Øœ*ðð ð
ð 
ð 
rN   c                ó*   •— g | ]}| ‰|¦  «        f‘ŒS rJ   rJ   )rX   r÷   rø   s     €rL   rZ   zAORMDMLState.get_returning_column_descriptions.<locals>.<listcomp>  s3   ø€ ð ð ð Ø)*��L�L ‘O”OÐ$ðð ð rN   )Ú_all_selected_columns)rÕ   rÖ   rü   rø   s     @@rL   Ú!get_returning_column_descriptionsz-ORMDMLState.get_returning_column_descriptions  ss   øø€ ð	<ð 	<ð 	<ð	9ð 	9ð 	9ð
ð 
ð 
ð 
ðð ð ð Ø.7Ô.Mðñ ô ð
ñ 
ô 
ð 	
rN   )Úuse_supplemental_colsc               óÂ  — |j         r×t          |j         |d¬¦  «        } |j        di |j        ¤Ž} |j        |j        Ž }|| _        t          j        ||¦  «        x| _	        }| 
                    |¦  «         |                     ¦   «         }d|_         d„ |j        D ¦   «         }|s|                     |j        ¦  «         |r |j        |j        d|iŽ}n
 |j        |Ž }|S )al  establish ORM column handlers for an INSERT, UPDATE, or DELETE
        which uses explicit returning().

        called within compilation level create_for_statement.

        The _return_orm_returning() method then receives the Result
        after the statement was executed, and applies ORM loading to the
        state that we first established here.

        F)Ú_adapt_on_namesrJ   c                ó   — g | ]}|®|‘ŒS rI   rJ   )rX   r÷   s     rL   rZ   z4ORMDMLState._setup_orm_returning.<locals>.<listcomp>D  s   € ÐNÐNÐN AÀÀ˜aÀÀÀrN   Úsupplemental_cols)r‹   r   r:   Ú_execution_optionsÚoptionsÚ_with_optionsÚselect_statementr   Úcreate_for_statementrÆ   Ú!setup_dml_returning_compile_stateÚ	_generateÚprimary_columnsÚextendÚprimary_keyrB   Ú	returning)	ÚselfÚcompilerÚorm_level_statementÚdml_level_statementÚ
dml_mapperr  ÚfsÚfscÚcols_to_returns	            rL   Ú_setup_orm_returningz ORMDMLState._setup_orm_returning  s=  € ð( Ô)ð +	ÝØ#Ô.Ø#Ø %ðñ ô ˆBð
 &�Ô%ÐOÐOÐ(;Ô(NÐOÐOˆBØ�”Ð0Ô>Ð?ˆBØ$&ˆDÔ!å,ÔAÀ"ÀhÑOÔOðˆDÔ# cð ×1Ò1°*Ñ=Ô=Ð=à"5×"?Ò"?Ñ"AÔ"AÐØ-/ÐÔ*àNÐN¨Ô)<ÐNÑNÔNˆNð "ð >Ø×%Ò% jÔ&<Ñ=Ô=Ð=à$ð Ø&IÐ&9Ô&Ið  Ô+ð'ð '5ð'ð 'Ð#Ð#ð  'DÐ&9Ô&CØ#ð'Ð#ð #Ð"rN   c           
     ó  — |j         }|j        j        }|j        rf|j        j        j        sU|                     dt          j        ¦  «        }	t          |j        |j	        ||||	||¦  «        }
t          j        ||
¦  «        S |S )NÚ_sa_orm_load_options)r   ÚcompiledÚcompile_staterÆ   Úcompile_optionsÚ_is_starrá   r   Údefault_load_optionsr
  r   Ú	instances)rÕ   r   rÖ   rn   r:   Úbind_argumentsr   Úexecution_contextr  Úload_optionsÚquerycontexts              rL   Ú_return_orm_returningz!ORMDMLState._return_orm_returningb  s�   € ð #œNÐØ)Ô2Ô@ˆð Ô,ð	à!Ô4ÔDÔMð	ð -×0Ò0Ø&­Ô(Iñô ˆLõ (ØÔ0ØÔ.ØØØØØ!Øñ	ô 	ˆLõ Ô$ V¨\Ñ:Ô:Ð:àˆMrN   )rð   Ú
__module__Ú__qualname__Úis_dml_returningrÆ   Ú__annotations__ÚclassmethodrÝ   râ   ræ   rÍ   rô   r  r  r'  rJ   rN   rL   rÅ   rÅ   ƒ  s  € € € € € € ØÐØAEÐÐEÐEÐEÑEàð5ð 5ñ „[ð5ðn ð
ð 
ñ „[ð
ð ð
ð 
ñ „[ð
ð" ð
ð 
ñ „[ð
ð( ð
ð 
ñ „[ð
ð  ð
ð 
ñ „[ð
ðB #ðA#ð A#ð A#ð A#ð A#ðF ð ð  ñ „[ð ð  ð  rN   rÅ   c                  ó@  — e Zd Z G d„ de¦  «        Zedddddœdd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚBulkUDCompileStatec                  ó�   — e Zd ZU dZded<   dZded<   dZded<   dZded	<   dZded
<   dZ	ded<   dZ
ded<   eZdZdZdZdZded<   dS )ú)BulkUDCompileState.default_update_optionsÚautor+   Ú_dml_strategyr-   Ú_synchronize_sessionFrA   Ú_can_use_returningÚ_is_delete_usingÚ_is_update_fromTÚ
_autoflushNúOptional[Mapper[Any]]Ú_subject_mapperÚ_populate_existing)rð   r(  r)  r2  r+  r3  r4  r5  r6  r7  r9  r)   Ú_resolved_valuesÚ_eval_conditionÚ_matched_rowsÚ_identity_tokenr:  rJ   rN   rL   Údefault_update_optionsr0  ‡  s³   € € € € € € Ø-3ˆÐ3Ð3Ð3Ñ3Ø;AÐÐAÐAÐAÑAØ#(ÐÐ(Ð(Ð(Ñ(Ø!&ÐÐ&Ð&Ð&Ñ&Ø %ˆÐ%Ð%Ð%Ñ%Øˆ
ÐÐÐÑØ15ˆÐ5Ð5Ð5Ñ5Ø%ÐØˆØˆØˆØ#(ÐÐ(Ð(Ð(Ñ(Ð(Ð(rN   r?  F©Úis_multitableÚis_update_fromÚis_delete_usingÚis_executemanyÚdialectr   r;   r›   rA  rA   rB  rC  rD  rF   c               ó   — t          ¦   «         ‚rI   )r�   )rÕ   rE  r;   rA  rB  rC  rD  s          rL   Úcan_use_returningz$BulkUDCompileState.can_use_returning•  s   € õ "Ñ#Ô#Ð#rN   c                óz  — t           j                             dh d£||j        ¦  «        \  }}||d<   	 |j        d         }|r|j        |d<   |d|j        iz  }n# t          $ r J d¦   «         ‚w xY wd	|j        j        vr|d
diz  }nZt          |t          ¦  «        s3|j        dk    r|d
diz  }n2|j        dk    rt          j        d¦  «        ‚n|j        dk    r|d
diz  }|j        }	|	�=|	dvrt          j        d¦  «        ‚|j        dk    r|	dk    rt          j        d¦  «        ‚|sé|j        r|                     ¦   «          |j        dk    rr|j        dk    r|                      ||||||¦  «        }ni|j        dk    r|                      ||||||¦  «        }nC|j        dk    r|                      ||||||¦  «        }n|j        dk    r|j        dk    r|ddiz  }|                     |j        |j        |j        |j        |j        dœ¦  «        }|t1          j        |¦  «                             d|i¦  «        fS )NÚ_sa_orm_update_options>   Ú	autoflushÚdml_strategyÚidentity_tokenrB  rC  Úpopulate_existingÚsynchronize_sessionÚclauserß   r;   r9  Fú0statement had 'orm' plugin but no plugin_subjectré   r2  Ú	core_onlyr1  Úormrx   úHCan't use "bulk" ORM insert strategy without passing separate parameters)r1  ÚevaluateÚfetchFzSValid strategies for session synchronization are 'auto', 'evaluate', 'fetch', FalserU  zkThe 'fetch' synchronization strategy is not available for 'bulk' ORM updates (i.e. multiple parameter sets)rT  r3  )rN  rC  rB  rK  rG  )r.  r?  Úfrom_execution_optionsr  rà   r;   ÚKeyErrorrd   rÔ   rÐ   rƒ   r2  Úsa_excÚInvalidRequestErrorr3  ÚArgumentErrorr7  Ú_do_pre_synchronize_autoÚ_do_pre_synchronize_evaluateÚ_do_pre_synchronize_fetchÚ	_annotater5  r6  r4  r   Úimmutabledictr´   )
rÕ   r   rÖ   rn   r:   r#  Úis_pre_eventÚupdate_optionsrß   Úsyncs
             rL   Úorm_pre_session_execz'BulkUDCompileState.orm_pre_session_exec¢  sD  € õ Ô5×LÒLØ$ðð ð ð ØÔ(ñ
ô 
ñ	
ØØð $-ˆ�xÑ ð	MØ&Ô7Ð8HÔIˆNð ð MØ+9Ô+@�˜xÑ(ØÐ#4°nÔ6KÐ"LÑL�øøõ ð 	Mð 	Mð 	MØLÐLÑLÔL�5ð	Møøøð  ¤Ô!=Ð=Ð=Ø˜°Ð<Ñ<ˆNˆNÝ˜F¥DÑ)Ô)ð 
	<ØÔ+¨vÒ5Ð5Ø ?°EÐ":Ñ:��ØÔ-°Ò7Ð7ÝÔ0ð2ñô ð ð 8ð Ô+¨vÒ5Ð5Ø ?°FÐ";Ñ;�àÔ2ˆØÐØÐ?Ð?Ð?ÝÔ*ð=ñô ð ð Ô+¨vÒ5Ð5¸$À'º/¸/ÝÔ0ðLñô ð ð
 ð 0	ØÔ(ð %Ø×"Ò"Ñ$Ô$Ð$àÔ+¨uÒ4Ð4Ø!Ô6¸&Ò@Ð@Ø%(×%AÒ%AØØ!ØØ)Ø&Ø&ñ&ô &�N�Nð $Ô8¸JÒFÐFØ%(×%EÒ%EØØ!ØØ)Ø&Ø&ñ&ô &�N�Nð $Ô8¸GÒCÐCØ%(×%BÒ%BØØ!ØØ)Ø&Ø&ñ&ô &�Nøð  Ô-°Ò7Ð7Ø!Ô6¸&Ò@Ð@Ø"Ð'=¸zÐ&JÑJ�Nð "×+Ò+à+9Ô+NØ'5Ô'FØ&4Ô&DØ$2Ô$@Ø)7Ô)Jðð ñô ˆIð ÝÔÐ0Ñ1Ô1×7Ò7Ø)¨>Ð:ñô ð
ð 	
ó   ³A ÁA.c                óL  — |d         }|j         dk    rH|j        dk    r|                      ||||¦  «         nT|j        dk    r|                      ||||¦  «         n0|j         dk    r%|j        dk    r|                      ||||¦  «         |S |                      ||||||¦  «        S )NrI  rR  rT  rU  rx   )r2  r3  Ú_do_post_synchronize_evaluateÚ_do_post_synchronize_fetchÚ"_do_post_synchronize_bulk_evaluater'  )rÕ   r   rÖ   rn   r:   r#  r   ra  s           rL   Úorm_setup_cursor_resultz*BulkUDCompileState.orm_setup_cursor_result  só   € ð$ +Ð+CÔDˆØÔ'¨5Ò0Ð0ØÔ2°jÒ@Ð@Ø×1Ò1Ø˜Y¨°ñô ð ð ð  Ô4¸Ò?Ð?Ø×.Ò.Ø˜Y¨°ñô ð øð Ô)¨VÒ3Ð3ØÔ2°jÒ@Ð@Ø×6Ò6Ø˜V V¨^ñô ð ð ˆMà×(Ò(ØØØØØØñ
ô 
ð 	
rN   c                ó  ‡‡— d}‰j         r‰j        ndŠd‰j        f|v r+|t          ˆfd„|d‰j        f         D ¦   «         ¦  «        z  }‰j        j        �|‰j        j        fz  }‰rt          ˆfd„|D ¦   «         ¦  «        }|S )a�  Apply extra criteria filtering.

        For all distinct single-table-inheritance mappers represented in the
        table being updated or deleted, produce additional WHERE criteria such
        that only the appropriate subtypes are selected from the total results.

        Additionally, add WHERE criteria originating from LoaderCriteriaOptions
        collected from the statement.

        rJ   NÚadditional_entity_criteriac              3  ób   •K  — | ])}|j         s	|j        ‰u ¯|                     ‰¦  «        V — Œ*d S rI   )Úinclude_aliasesrí   Ú_resolve_where_criteria)rX   Úaerò   s     €rL   rt   z@BulkUDCompileState._adjust_for_extra_criteria.<locals>.<genexpr>\  s[   øè è € ð !ð !àð Ô%ð!ð
 *,¬°hÐ)>Ð)>ð	 ×*Ò*¨8Ñ4Ô4ð *?Ð)>Ð)>Ð)>ð!ð !rN   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rI   )Útraverse)rX   ÚcritÚadapters     €rL   rt   z@BulkUDCompileState._adjust_for_extra_criteria.<locals>.<genexpr>h  s1   øè è € ÐOÐO¸4 × 0Ò 0°Ñ 6Ô 6ÐOÐOÐOÐOÐOÐOrN   )rî   Ú_adapterr;   r�   Ú_single_table_criterion)rÕ   Úglobal_attributesrò   Úreturn_critrs  s     ` @rL   Ú_adjust_for_extra_criteriaz-BulkUDCompileState._adjust_for_extra_criteriaG  sÛ   øø€ ð ˆà'/Ô'@ÐJ�(Ô#Ð#Àdˆð )ØŒOð
ð ðð ð �5ð !ð !ð !ð !à+Ø1°8´?ÐCôð!ñ !ô !ñ ô ñ ˆKð Œ?Ô2Ð>Ø˜HœOÔCÐEÑEˆKàð 	PÝÐOÐOÐOÐOÀ;ÐOÑOÔOÑOÔOˆKàÐrN   c                óâ   ‡— 	 |j         |j        j         ur |                     |j         j        ¦  «        Šn|                     |j        ¦  «        Šn# t          $ r g cY S w xY wˆfd„|D ¦   «         S )aÚ  return rows that indicate PK cols in mapper.primary_key position
        for RETURNING rows.

        Prior to 2.0.36, this method seemed to be written for some kind of
        inheritance scenario but the scenario was unused for actual joined
        inheritance, and the function instead seemed to perform some kind of
        partial translation that would remove non-PK cols if the PK cols
        happened to be first in the row, but not otherwise.  The joined
        inheritance walk feature here seems to have never been used as it was
        always skipped by the "local_table" check.

        As of 2.0.36 the function strips away non-PK cols and provides the
        PK cols for the table in mapper PK order.

        c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rJ   rJ   )rX   ÚrowÚpk_keyss     €rL   rZ   z@BulkUDCompileState._interpret_returning_rows.<locals>.<listcomp>�  s!   ø€ Ð-Ð-Ð- ��˜‘”Ð-Ð-Ð-rN   )rñ   r~   Ú_tuple_getterr  rW  )rÕ   r   r;   Úrowsr|  s       @rL   Ú_interpret_returning_rowsz,BulkUDCompileState._interpret_returning_rowsl  s’   ø€ ð$	ØÔ!¨Ô);Ô)GÐGÐGð
 !×.Ò.¨vÔ/AÔ/MÑNÔN��à ×.Ò.¨vÔ/AÑBÔB�øøÝð 	ð 	ð 	ð ˆIˆIˆIð		øøøð .Ð-Ð-Ð-¨Ð-Ñ-Ô-Ð-s   ƒAA ÁA ÁA c                ó
  ‡
‡— |j         Š|j        }ˆfd„|D ¦   «         }|j        Š
‰
�ˆ
fd„|D ¦   «         }g }|D ]H\  }}} ||¦  «        }	|	du s|	t          j        u r%|                     ||||	t          j        u f¦  «         ŒI|S )Nc                óŠ   •— g | ]?}|j                              ‰¦  «        ¯|j        °#|                     ¦   «         ||j        f‘Œ@S rJ   )r;   rµ   ÚexpiredÚobjrV   )rX   rY   r;   s     €rL   rZ   zGBulkUDCompileState._get_matched_objects_on_criteria.<locals>.<listcomp>”  s\   ø€ ð 
ð 
ð 
àØŒ|×Ò Ñ'Ô'ð
ð 16´ð
Ø�YŠY‰[Œ[˜% ¤Ð,ð
ð 
ð 
rN   c                ó8   •— g | ]\  }}}|j         ‰k    ¯|||f‘ŒS rJ   ©rL  )rX   rƒ  rY   r\   rL  s       €rL   rZ   zGBulkUDCompileState._get_matched_objects_on_criteria.<locals>.<listcomp>œ  s>   ø€ ð ð ð á%�C˜ ØÔ'¨>Ò9Ð9ð �e˜UÐ#à9Ð9Ð9rN   T)r9  r<  r>  r   Ú_EXPIRED_OBJECTÚappend)rÕ   ra  r‘   Úeval_conditionÚraw_datar   rƒ  rY   r\   Úevaled_conditionrL  r;   s             @@rL   Ú _get_matched_objects_on_criteriaz3BulkUDCompileState._get_matched_objects_on_criteria�  só   øø€ àÔ/ˆØ'Ô7ˆð
ð 
ð 
ð 
àð
ñ 
ô 
ˆð (Ô7ˆØÐ%ðð ð ð à)1ðñ ô ˆHð ˆØ!)ð 	ð 	ÑˆC�˜Ø-˜~¨cÑ2Ô2Ðð
 ! DÐ(Ð(Ø#¥yÔ'@Ð@Ð@à—’àØØØ(­IÔ,EÐEð	ñô ð øð ˆrN   c                ó  — |j         }|j        }t          j        |¦  «        }d}|j        r
||j        z  }i }|j        D ]}|j        r|                     |¦  «         Œ|r||                      ||¦  «        z  }|r |j	        |Ž }	nd„ }
|
}	|	S )NrJ   c                ó   — dS )NTrJ   )rƒ  s    rL   r<  zJBulkUDCompileState._eval_condition_from_statement.<locals>._eval_conditionÌ  s   € Ø�trN   )
r9  rï   r   Ú_EvaluatorCompilerÚ_where_criteriar	  Ú_is_criteria_optionÚget_global_criteriarx  Úprocess)rÕ   ra  rÖ   r;   Ú
target_clsÚevaluator_compilerrr  rv  Úoptrˆ  r<  s              rL   Ú_eval_condition_from_statementz1BulkUDCompileState._eval_condition_from_statement¶  sÒ   € àÔ/ˆØ”]ˆ
å&Ô9¸*ÑEÔEÐØˆØÔ$ð 	.Ø�IÔ-Ñ-ˆDàÐØÔ*ð 	;ð 	;ˆCØÔ&ð ;Ø×'Ò'Ð(9Ñ:Ô:Ð:øàð 	NØ�C×2Ò2Ð3DÀfÑMÔMÑMˆDàð 	-Ø7Ð/Ô7¸Ð>ˆNˆNðð ð ð -ˆNàÐrN   c                ó¬   — 	 |                       ||¦  «        }||ddœz   S # t          j        $ r Y nw xY w|ddiz  }|                      ||||||¦  «        S )aÌ  setup auto sync strategy


        "auto" checks if we can use "evaluate" first, then falls back
        to "fetch"

        evaluate is vastly more efficient for the common case
        where session is empty, only has a few objects, and the UPDATE
        statement can potentially match thousands/millions of rows.

        OTOH more complex criteria that fails to work with "evaluate"
        we would hope usually correlates with fewer net rows.

        rT  )r<  r3  r3  rU  )r–  r   ÚUnevaluatableErrorr]  )rÕ   r   rÖ   rn   r:   r#  ra  rˆ  s           rL   r[  z+BulkUDCompileState._do_pre_synchronize_autoÓ  s¡   € ð2	Ø ×?Ò?Ø 	ñô ˆNð "Ø#1Ø(2ð%ð %ñ ð øõ Ô+ð 	ð 	ð 	ØˆDð	øøøð 	Ð1°7Ð;Ñ;ˆØ×,Ò,ØØØØØØñ
ô 
ð 	
s   ‚   2±2c                óž   — 	 |                       ||¦  «        }n/# t          j        $ r}t          j        d|z  ¦  «        |‚d }~ww xY w|d|iz   S )Nz{Could not evaluate current criteria in Python: "%s". Specify 'fetch' or False for the synchronize_session execution option.r<  )r–  r   r˜  rX  rY  )	rÕ   r   rÖ   rn   r:   r#  ra  rˆ  Úerrs	            rL   r\  z/BulkUDCompileState._do_pre_synchronize_evaluate  s‡   € ð
	Ø ×?Ò?Ø 	ñô ˆNˆNøõ Ô+ð 	ð 	ð 	ÝÔ,ð8à:=ñ>ñô ð ð	øøøøð	øøøð Ø˜~ð!
ñ 
ð 	
s   ‚ ™A¨A Á Ac                ó¨   — |j         rg S |j        rt          |j        ¦  «        S |j        r&t          |j                             ¦   «         ¦  «        S g S rI   )Ú_multi_valuesÚ_ordered_valuesrƒ   Ú_valuesr†   )rÕ   r;   rÖ   s      rL   Ú_get_resolved_valuesz'BulkUDCompileState._get_resolved_values  s[   € àÔ"ð 	ØˆIØÔ&ð 	Ý˜	Ô1Ñ2Ô2Ð2ØÔð 	Ý˜	Ô)×/Ò/Ñ1Ô1Ñ2Ô2Ð2àˆIrN   c                óþ   — g }|D ]w\  }}|rZt          |t          j        ¦  «        r@	 |j        |         }|                     |j        |f¦  «         ŒL# t          j        $ r Y Œ]w xY wt          j	        d|z  ¦  «        ‚|S )NzCAttribute name not found, can't be synchronized back to objects: %r)
rÐ   r   ÚColumnElementÚ_columntopropertyr‡  ri   Úorm_excÚUnmappedColumnErrorrX  rY  )rÕ   r;   Úresolved_valuesÚvaluesr¨   r©   rÜ   s          rL   Ú_resolved_keys_as_propnamesz.BulkUDCompileState._resolved_keys_as_propnames(  sµ   € àˆØ#ð 	ð 	‰DˆAˆqØð �* Q­
Ô(@ÑAÔAð ð1Ø!Ô3°AÔ6�Dð —M’M 4¤8¨Q -Ñ0Ô0Ð0Ð0øõ Ô2ð ð ð Ø�Dðøøøõ
 Ô0ð7Ø9:ñ;ñô ð ð ˆs   §AÁA#Á"A#c                ó   ‡ ‡‡‡— ‰j         Š t          ‰j        ‰j        fz   Ž                      ‰¦  «        j        |j        Ž }|j        |_        d Šdˆˆ ˆˆfd„}|                     |||||¬¦  «        }	|	 	                    ¦   «         }
‰|
‰dœz   S )	NÚorm_contextr0   rF   r   c                ó4  •—  | j         j        di | j        ¤Ž}‰                     |j        ‰‰j        ‰j        | j        ¬¦  «        }‰�‰|k    rt          j	        d¦  «        ‚n| j        r|st          j	        d¦  «        ‚|Š|rt          j        ¦   «         S d S )N)rB  rC  rD  zjFor synchronize_session='fetch', can't mix multiple backends where some support RETURNING and others don'tz‚For synchronize_session='fetch', can't use multiple parameter sets in ORM mode, which this backend does not support with RETURNINGrJ   )r   Úget_bindr#  rG  rE  r6  r5  rD  rX  rY  r¸   r¹   )r©  ÚbindÚper_bind_resultrG  rÕ   r;   ra  s      €€€€rL   Úskip_for_returningzHBulkUDCompileState._do_pre_synchronize_fetch.<locals>.skip_for_returning\  sÛ   ø€ Ø/�;Ô&Ô/ÐMÐM°+Ô2LÐMÐMˆDð "×3Ò3Ø”ØØ-Ô=Ø .Ô ?Ø*Ô9ð 4ñ ô ˆOð !Ð,Ø$¨Ò7Ð7Ý Ô4ð ñô ð ð 8ð Ô+ð 4°Oð 4ÝÔ0ð-ñô ð ð %4Ð!àð ÝÔ*Ñ,Ô,Ð,à�trN   )r:   r#  Ú
_add_event)r=  r4  )r©  r0   rF   r   )
r9  r!   r  Úselect_identity_tokenÚselect_fromr  r	  r�  ÚexecuteÚfetchall)rÕ   r   rÖ   rn   r:   r#  ra  Úselect_stmtr®  r   Úmatched_rowsrG  r;   s   `     `    @@rL   r]  z,BulkUDCompileState._do_pre_synchronize_fetch:  sã   øøøø€ ð  Ô/ˆð�F�VÔ'¨6Ô+GÐ*IÑIÐKßŠ[˜Ñ Ô Ü�iÔ-ð/ð 	ð
 '0Ô&?ˆÔ#ð !Ðð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðB —’ØØØ/Ø)Ø)ð !ñ 
ô 
ˆð —’Ñ(Ô(ˆàØ)Ø"3ð!
ð !
ñ 
ð 	
rN   N©rE  r   r;   r›   rA  rA   rB  rA   rC  rA   rD  rA   rF   rA   )rð   r(  r)  r%   r?  r,  rG  rc  ri  rx  r  r‹  r–  r[  r\  rŸ  r§  r]  rJ   rN   rL   r.  r.  †  s­  € € € € € ð)ð )ð )ð )ð ) ñ )ô )ð )ð ð $Ø$Ø %Ø$ð
$ð 
$ð 
$ð 
$ð 
$ñ „[ð
$ð ðv
ð v
ñ „[ðv
ðp ð)
ð )
ñ „[ð)
ðV ð"ð "ñ „[ð"ðH ð .ð  .ñ „[ð .ðD ð$ð $ñ „[ð$ðL ðð ñ „[ðð8 ð-
ð -
ñ „[ð-
ð^ ð
ð 
ñ „[ð
ð2 ðð ñ „[ðð ðð ñ „[ðð" ðN
ð N
ñ „[ðN
ð N
ð N
rN   r.  rR  Úinsertc                  ó¬   ‡ — e Zd ZU  G d„ de¦  «        ZdZded<   ed„ ¦   «         Zedd„¦   «         Z	edˆ fd„¦   «         Z
ed„ ¦   «         Zd„ Zd„ Zˆ xZS )ÚBulkORMInsertc                  ód   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dZ	ded<   dS )ú$BulkORMInsert.default_insert_optionsr1  r+   r2  FrA   Ú_render_nullsÚ_return_defaultsNr8  r9  Tr7  r:  )
rð   r(  r)  r2  r+  r¼  r½  r9  r7  r:  rJ   rN   rL   Údefault_insert_optionsr»  Ž  sz   € € € € € € Ø-3ˆÐ3Ð3Ð3Ñ3Ø#ˆÐ#Ð#Ð#Ñ#Ø!&ÐÐ&Ð&Ð&Ñ&Ø15ˆÐ5Ð5Ð5Ñ5Øˆ
ÐÐÐÑØ#(ÐÐ(Ð(Ð(Ñ(Ð(Ð(rN   r¾  NzOptional[FromStatement]r
  c                óª  — t           j                             dh d£||j        ¦  «        \  }}||d<   	 |j        d         }|r|j        |d<   |d|j        iz  }n# t          $ r J d¦   «         ‚w xY w|s3|j        d	k    r|d
diz  }n2|j        dk    rt          j	        d¦  «        ‚n|j        d	k    r|d
diz  }|j        dk    r.|st          j        }n|                     t          j        ¦  «        }|s|j        r|                     ¦   «          |                     d|j        i¦  «        }|t          j        |¦  «                             d|i¦  «        fS )NÚ_sa_orm_insert_options>   rJ  rK  rC   rM  rO  rß   r;   r9  FrP  r1  r2  rR  rx   rS  ÚrawrK  )r¹  r¾  rV  r  rà   r;   rW  r2  rX  rY  r   Ú_orm_load_exec_optionsr´   r7  r^  r   r_  )	rÕ   r   rÖ   rn   r:   r#  r`  Úinsert_optionsrß   s	            rL   rc  z"BulkORMInsert.orm_pre_session_exec˜  sæ  € õ Ô0×GÒGØ$ØNÐNÐNØØÔ(ñ	
ô 
ñ	
ØØð $-ˆ�xÑ ð	MØ&Ô7Ð8HÔIˆNð ð MØ+9Ô+@�˜xÑ(ØÐ#4°nÔ6KÐ"LÑL�øøõ ð 	Mð 	Mð 	MØLÐLÑLÔL�5ð	Møøøð ð 
	<ØÔ+¨vÒ5Ð5Ø ?°EÐ":Ñ:��ØÔ-°Ò7Ð7ÝÔ0ð2ñô ð ð 8ð Ô+¨vÒ5Ð5Ø ?°FÐ";Ñ;�àÔ'¨5Ò0Ð0ð %ð Ý$+Ô$BÐ!Ð!à$5×$;Ò$;ÝÔ2ñ%ô %Ð!ð ð 	! Ô 9ð 	!Ø×ÒÑ Ô Ð à×'Ò'Ø˜^Ô9Ð:ñ
ô 
ˆ	ð
 ÝÔÐ0Ñ1Ô1×7Ò7Ø)¨>Ð:ñô ð
ð 	
rd  r   r1   rÖ   ú
dml.Insertrn   r6   r:   r,   r#  r/   ro   r4   rF   ú_result.Resultc           
     ó4  — |                      d| j        ¦  «        }|j        dvrt          j        d¦  «        ‚|j        dk    r|                     ||pi |¬¦  «        }|S |j        dk    r†|j        }	|j        �|	j        rt          j	        d|	› �¦  «        ‚|	€J ‚|j
        €J ‚t          |	t          dt          |t          ¦  «        r|gn|¦  «        |j
        d	|j        |j        ||¬
¦  «        }n4|j        dk    r|                     ||pi |¬¦  «        }nt#          ¦   «         ‚t%          |j        ¦  «        s|S |j        r>|                      dt*          j        ¦  «        }
|
ddiz  }
|                     d|
i¦  «        }|                      ||||||¦  «        S )NrÀ  )rÁ  rx   rR  r1  zHValid strategies for ORM insert strategy are 'raw', 'orm', 'bulk', 'autorÁ  )r:   rx   z`bulk INSERT with a 'post values' clause (typically upsert) not supported for multi-table mapper úIterable[Dict[str, Any]]F)r@   rB   rC   r9   r:   rR  r  r:  T)rá   r¾  r2  rX  rZ  r²  r9  Ú_post_values_clauseÚ_multiple_persistence_tablesrY  Ú_transactionrM   r   rÐ   rV   r½  r¼  ÚAssertionErrorrA   r‹   r:  r   r!  r´   r'  )rÕ   r   rÖ   rn   r:   r#  ro   rÃ  r   r;   r%  s              rL   Úorm_execute_statementz#BulkORMInsert.orm_execute_statementÜ  s?  € ð +×.Ò.Ø$ cÔ&@ñ
ô 
ˆð Ô'ð 0
ð 
ð 
õ Ô&ð2ñô ð ð Ô'¨5Ò0Ð0Ø—\’\Ø˜6˜< RÐ;Lð "ñ ô ˆFð ˆMàÔ'¨6Ò1Ð1Ø#Ô3ˆFð Ô-Ð9ØÔ7ð :õ Ô0ð'à$ð'ð 'ñô ð ð Ð%Ð%Ð%ØÔ'Ð3Ð3Ð3Ý!ØÝØ.Ý *¨6µ4Ñ 8Ô 8ÐD�V�H�H¸fñô ð Ô$ØØ .Ô ?Ø+Ô9Ø$-Ø"3ðñ ô ˆFˆFð Ô)¨UÒ2Ð2Ø—\’\Ø˜6˜< RÐ;Lð "ñ ô ˆFˆFõ !Ñ"Ô"Ð"å�IÔ(Ñ)Ô)ð 	ØˆMàÔ,ð 	Ø,×0Ò0Ø&­Ô(Iñô ˆLð Ð1°4Ð8Ñ8ˆLØ 1× 7Ò 7Ø'¨Ð6ñ!ô !Ðð ×(Ò(ØØØØØØñ
ô 
ð 	
rN   c                óF  •— t          t           t          ¦   «         j        ||fi |¤Ž¦  «        }|�	|j         }nd}|s|S |j        d         }|j                             dd¦  «        }|dk    r|                     |¦  «         n|dk    r| 	                    ||¦  «         |S )NTrß   rK  rÁ  rx   rR  )
r   r¹  Úsuperr  Ústackrà   rÔ   rá   Ú_setup_for_bulk_insertÚ_setup_for_orm_insert)	rÕ   rÖ   r  Úkwr  Útoplevelr;   rK  Ú	__class__s	           €rL   r  z"BulkORMInsert.create_for_statement5  sÇ   ø€ åÝØ(�E‰GŒGÔ(¨°HÐCÐCÀÐCÐCñ
ô 
ˆð
 ÐØ#œ>Ð)ˆHˆHàˆHØð 	ØˆKàÔ+Ð,<Ô=ˆØ Ô-×1Ò1°.À%ÑHÔHˆØ˜6Ò!Ð!Ø×'Ò'¨Ñ1Ô1Ð1Ð1Ø˜UÒ"Ð"Ø×&Ò& x°Ñ8Ô8Ð8àˆrN   c                óX   ‡— d„ ˆfd„|                      ¦   «         D ¦   «         D ¦   «         S )Nc                ó.   — i | ]\  }}}|�|j         n||“ŒS rI   rh   )rX   Úcolr¨   r©   s       rL   r«   z<BulkORMInsert._resolved_keys_as_col_keys.<locals>.<dictcomp>N  s:   € ð 
ð 
ð 
á��Q˜ð �ˆCŒGˆG¨A¨qð
ð 
ð 
rN   c              3  óX   •K  — | ]$\  }}‰j                              |¦  «        ||fV — Œ%d S rI   )r÷   rá   )rX   r¨   r©   r;   s      €rL   rt   z;BulkORMInsert._resolved_keys_as_col_keys.<locals>.<genexpr>P  sK   øè è € ð ð Ù,0¨A¨q�”—’˜a‘” ! QÐ'ðð ð ð ð ð rN   )r†   )rÕ   r;   Úresolved_value_dicts    ` rL   Ú_resolved_keys_as_col_keysz(BulkORMInsert._resolved_keys_as_col_keysL  sS   ø€ ð
ð 
ðð ð ð Ø4G×4MÒ4MÑ4OÔ4Oðñ ô ð
ñ 
ô 
ð 	
rN   c                óŠ   — t          t          j        | j        ¦  «        x}}|                      ||||d¬¦  «        }|| _        d S )NF©r  r  )r   r   ÚInsertrÖ   r  )r  r  r;   rÖ   r  s        rL   rÑ  z#BulkORMInsert._setup_for_orm_insertU  sQ   € Ý*.­s¬z¸4¼>Ñ*JÔ*JÐJˆ	Ð'à×-Ò-ØØØØØ"'ð .ñ 
ô 
ˆ	ð #ˆŒˆˆrN   c                ó¬  ‡— t          t          j        | j        ¦  «        x}}|j        }|d         |d         cŠ}|                     ¦   «         }‰|_        | j        r*ˆfd„| j                             ¦   «         D ¦   «         | _        |  	                    ||||d¬¦  «        }| j
        �%| j
        j        j        rt          j        d¦  «        ‚|| _        dS )zÑestablish an INSERT statement within the context of
        bulk insert.

        This method will be within the "conn.execute()" call that is invoked
        by persistence._emit_insert_statement().

        Ú_emit_insert_tableÚ_emit_insert_mapperc                ó.   •— i | ]\  }}|j         ‰u ¯||“ŒS rJ   ©rd   )rX   r×  ÚvalÚemit_insert_tables      €rL   r«   z8BulkORMInsert._setup_for_bulk_insert.<locals>.<dictcomp>u  ó7   ø€ ð %ð %ð %á�C˜Ø”9Ð 1Ð1Ð1ð �Sà1Ð1Ð1rN   TrÜ  NzˆCan't use RETURNING * with bulk ORM INSERT.  Please use a different INSERT form, such as INSERT..VALUES or INSERT with a Core Connection)r   r   rÝ  rÖ   rÔ   Ú_clonerd   Ú_dict_parametersr†   r  rÆ   r  r   rX  ÚCompileError)r  r  rÖ   r  ÚanÚemit_insert_mapperrä  s         @rL   rÐ  z$BulkORMInsert._setup_for_bulk_inserta  s  ø€ õ +/­s¬z¸4¼>Ñ*JÔ*JÐJˆ	Ð'ØÔ#ˆð Ð#Ô$ØÐ$Ô%ð 	.ÐÐ-ð
 ×$Ò$Ñ&Ô&ˆ	à+ˆ	ŒØÔ ð 	ð%ð %ð %ð %à $Ô 5× ;Ò ;Ñ =Ô =ð%ñ %ô %ˆDÔ!ð ×-Ò-ØØØØ)Ø"&ð .ñ 
ô 
ˆ	ð Ô#Ð/ØÔ'Ô7Ô@ð 0õ Ô%ð3ñô ð ð #ˆŒˆˆrN   )r   r1   rÖ   rÄ  rn   r6   r:   r,   r#  r/   ro   r4   rF   rÅ  )rF   r¹  )rð   r(  r)  r%   r¾  r
  r+  r,  rc  rÌ  r  rÚ  rÑ  rÐ  Ú__classcell__©rÔ  s   @rL   r¹  r¹  Œ  s  ø€ € € € € € ð)ð )ð )ð )ð ) ñ )ô )ð )ð 15ÐÐ4Ð4Ð4Ñ4àðA
ð A
ñ „[ðA
ðF ðV
ð V
ð V
ñ „[ðV
ðp ðð ð ð ð ñ „[ðð, ð
ð 
ñ „[ð
ð
#ð 
#ð 
#ð,#ð ,#ð ,#ð ,#ð ,#ð ,#ð ,#rN   r¹  Úupdatec                  óÎ   ‡ — e Zd Zed„ ¦   «         Zd„ Zd„ Zed#ˆ fd„¦   «         Zedddddœd$d„¦   «         Zed„ ¦   «         Z	ed „ ¦   «         Z
ed!„ ¦   «         Zed"„ ¦   «         Zˆ xZS )%ÚBulkORMUpdatec                óJ  — |                       | ¦  «        }|j                             dd¦  «        }|j         }|r|dk    r|                     ||¦  «         nK|dk    s|dk    r#d|j        j        vrt          j        |||fi |¤Ž n|r|dv r|                     ||¦  «         |S )NrK  Úunspecifiedrx   rQ  ré   )rR  rñ  )	Ú__new__rÔ   rá   rÏ  Ú_setup_for_bulk_updaterd   r(   Ú__init__Ú_setup_for_orm_update)rÕ   rÖ   r  rÒ  r  rK  rÓ  s          rL   r  z"BulkORMUpdate.create_for_statement’  sÛ   € à�{Š{˜3ÑÔˆà Ô-×1Ò1Ø˜Mñ
ô 
ˆð  ”~Ð%ˆàð 		<˜¨Ò.Ð.Ø×'Ò'¨	°8Ñ<Ô<Ð<Ð<à˜KÒ'Ð'Ø˜}Ò,Ð,Ø i¤oÔ&BÐBÐBåÔ# D¨)°XÐDÐDÀÐDÐDÐDÐDØð 	<˜\Ð-CÐCÐCØ×&Ò& y°(Ñ;Ô;Ð;àˆrN   c                ó‚  — |}|j          }|j        j        d         }|j        x| _        }|                      ||¦  «        | _        |                      ||||¬¦  «         |j        rt          | j        ¦  «        | _        | 	                    ¦   «         }|j        j        d         |u r|j
        |_        |j        r| j        |_        n|j        r| j        |_        |                      | j        |¦  «        }	|	r
 |j        |	Ž }t          j        | ||fi |¤Ž d}
|sd }n|j                             dd ¦  «        }|j                             dd ¦  «        }|dur(|dk    o!|                      |j        || j        ¬¦  «        }|dk    r|rd}
 |j        |j        j        Ž }|r|                      |||||
¬	¦  «        }|| _        d S )
Nré   ©rÓ  Úprocess_criteria_for_toplevelFrN  rG  rU  )rA  TrÜ  )rÏ  rd   rÔ   r;   rŸ  r;  Ú_init_global_attributesrž  rV   ræ  rñ   r�  rx  rv  Úwherer(   rô  rá   rG  rE  rA  rB   r  r  rÖ   )r  rÖ   r  rÒ  r  rÓ  rò   r;   Únew_stmtÚnew_critr  rN  rG  s                rL   rõ  z#BulkORMUpdate._setup_for_orm_update©  sN  € Ø'Ðà”~Ð%ˆà”?Ô/°Ô?ˆà'œÐ.ˆŒ�fà $× 9Ò 9¸&À)Ñ LÔ LˆÔà×$Ò$ØØØØ*2ð	 	%ñ 	
ô 	
ð 	
ð Ôð 	@Ý$(¨Ô)>Ñ$?Ô$?ˆDÔ!à×#Ò#Ñ%Ô%ˆàŒ>Ô& ~Ô6¸&Ð@Ð@Ø#Ô/ˆHŒNð Ô$ð 	5Ø'+Ô'<ˆHÔ$Ð$ØÔð 	5Ø#Ô4ˆHÔà×2Ò2ØÔ" Fñ
ô 
ˆð ð 	1Ø%�x”~ xÐ0ˆHõ 	Ô  h°Ð?Ð?¸BÐ?Ð?Ð?à %Ðàð 	Ø"&ÐÐà"*Ô"7×";Ò";Ø% tñ#ô #Ðð %Ô1×5Ò5Ø ñ
ô 
Ðð  EÐ)Ð)ð $ wÒ.ð Ø×*Ò*ØÔ$ f¸DÔ<Nð +ñ ô ð ð  'Ò)Ð)Ð.?Ð)Ø$(Ð!ð 0�xÔ/°´Ô1KÐLˆHàð 	Ø×0Ò0ØØ#ØØ!Ø&;ð 1ñ ô ˆHð "ˆŒˆˆrN   c                óp  ‡— t          t          j        |¦  «        }|j        }|d         |d         cŠ}|                     ¦   «         }‰|_        t          j        | ||fi |¤Ž | j        rt          j
        d¦  «        ‚| j        r*ˆfd„| j                             ¦   «         D ¦   «         | _        || _        dS )zÑestablish an UPDATE statement within the context of
        bulk insert.

        This method will be within the "conn.execute()" call that is invoked
        by persistence._emit_update_statement().

        Ú_emit_update_tableÚ_emit_update_mapperzšbulk ORM UPDATE does not support ordered_values() for custom UPDATE statements with bulk parameter sets.  Use a non-bulk UPDATE statement or use values().c                ó.   •— i | ]\  }}|j         ‰u ¯||“ŒS rJ   râ  )rX   r×  rã  Úemit_update_tables      €rL   r«   z8BulkORMUpdate._setup_for_bulk_update.<locals>.<dictcomp>(  rå  rN   N)r   r   ÚUpdaterÔ   ræ  rd   r(   rô  r�  rX  rY  rç  r†   rÖ   )r  rÖ   r  rÒ  ré  Ú_r  s         @rL   ró  z$BulkORMUpdate._setup_for_bulk_update  sì   ø€ õ �œ YÑ/Ô/ˆ	ØÔ#ˆð Ð#Ô$ØÐ$Ô%ð 	Ð˜1ð
 ×$Ò$Ñ&Ô&ˆ	Ø+ˆ	ŒåÔ  i°Ð@Ð@¸RÐ@Ð@Ð@àÔð 	ÝÔ,ð=ñô ð ð Ô ð 	ð%ð %ð %ð %à $Ô 5× ;Ò ;Ñ =Ô =ð%ñ %ô %ˆDÔ!ð
 #ˆŒˆˆrN   r   r1   rÖ   ú
dml.Updatern   r6   r:   r,   r#  r/   ro   r4   rF   rÅ  c           
     ó´  •— |                      d| j        ¦  «        }|j        r>|                      dt          j        ¦  «        }|ddiz  }|                     d|i¦  «        }|j        dvrt          j        d¦  «        ‚|j        dk    rª|j	         }	|j
        dk    sJ ‚|j	        r|j
        d	k    rt          j        d
¦  «        ‚|j        }
|
€J ‚|j        €J ‚t          |
t          dt!          |t"          ¦  «        r|gn|¦  «        |j        dd||	¬¦  «        }|                      ||||||¦  «        S t'          ¦   «                              ||||||¦  «        S )NrI  r  r:  T)rR  r1  rx   rQ  zOValid strategies for ORM UPDATE strategy are 'orm', 'auto', 'bulk', 'core_only'rx   rU  rT  zÑbulk synchronize of persistent objects not supported when using bulk update with additional WHERE criteria right now.  add synchronize_session=None execution option to bypass synchronize of persistent objects.rÇ  F)r@   rœ   r™   rš   )rá   r?  r:  r   r!  r´   r2  rX  rZ  r�  r3  rY  r9  rÊ  rŸ   r   rÐ   rV   ri  rÎ  rÌ  )rÕ   r   rÖ   rn   r:   r#  ro   ra  r%  rš   r;   r   rÔ  s               €rL   rÌ  z#BulkORMUpdate.orm_execute_statement/  sè  ø€ ð +×.Ò.Ø$ cÔ&@ñ
ô 
ˆð Ô,ð 	Ø,×0Ò0Ø&­Ô(Iñô ˆLð Ð1°4Ð8Ñ8ˆLØ 1× 7Ò 7Ø'¨Ð6ñ!ô !Ðð Ô'ð 0
ð 
ð 
õ Ô&ð9ñô ð ð Ô'¨6Ò1Ð1Ø(1Ô(AÐ$AÐ!à!Ô6¸'ÒAÐAÐAÐAð Ô)ð
à"Ô7¸:ÒEÐEåÔ0ðñô ð ð $Ô3ˆFØÐ%Ð%Ð%ØÔ'Ð3Ð3Ð3Ý!ØÝØ.Ý *¨6µ4Ñ 8Ô 8ÐD�V�H�H¸fñô ð Ô$ØØ$)Ø$-Ø&;ðñ ô ˆFð ×.Ò.ØØØØ!ØØñô ð õ ‘7”7×0Ò0ØØØØ!ØØñô ð rN   Fr@  rE  r   r;   r›   rA  rA   rB  rC  rD  c               ó¤   — |j         o|j        j        }|sdS |r|j        S |r|j        S |r$|j        st          j        d|j        › d�¦  «        ‚dS )NFú	Dialect "zæ" does not support RETURNING with UPDATE..FROM; for synchronize_session='fetch', please add the additional execution option 'is_update_from=True' to the statement to indicate that a separate SELECT should be used for this backend.T)Úupdate_returningrñ   Úimplicit_returningÚupdate_executemany_returningÚupdate_returning_multifromrX  rè  rê   ©rÕ   rE  r;   rA  rB  rC  rD  Únormal_answers           rL   rG  zBulkORMUpdate.can_use_returning…  s—   € ð Ô$ÐN¨Ô);Ô)Nð 	ð ð 	Ø�5àð 	8ØÔ7Ð7ð ð 
	ØÔ5Ð5àð 	 7Ô#Eð 	ÝÔ%ðE˜GœLð Eð Eð Eñô ð ð ˆtrN   c                ó�  ‡— |sd S |j         }d„ |j        D ¦   «         }|j        }|D �]Š|                     ˆfd„|D ¦   «         |j        ¦  «        }|                     |¦  «        }	|	sŒBt          ‰¦  «                             |¦  «        }
|	j        }|	j	         
                    |
¦  «        }|D ]}||v r‰|         ||<   Œ|	j        j                             |	d |¦  «         |	                     |t          |¦  «        ¦  «         |
 
                    |¦  «                             |¦  «        }|r|	                     ||¦  «         �Œd S )Nc                ó   — g | ]	}|j         ‘Œ
S rJ   rh   )rX   Úprops     rL   rZ   zDBulkORMUpdate._do_post_synchronize_bulk_evaluate.<locals>.<listcomp>²  s   € ÐCÐCÐC �4”8ÐCÐCÐCrN   c              3  ó(   •K  — | ]}‰|         V — Œd S rI   rJ   )rX   ri   Úparams     €rL   rt   zCBulkORMUpdate._do_post_synchronize_bulk_evaluate.<locals>.<genexpr>¸  s'   øè è € Ð/Ð/ ��s”Ð/Ð/Ð/Ð/Ð/Ð/rN   )r9  r�   Úidentity_mapÚidentity_key_from_primary_keyr>  Úfast_get_stater¿   Ú
differencerV   Ú
unmodifiedrÁ   ÚmanagerÚdispatchÚrefreshÚ_commitrƒ   Ú_expire_attributes)rÕ   r   rn   r   ra  r;   r|  r  Úidentity_keyrY   Úevaluated_keysr\   Úto_evaluateri   Ú	to_expirer  s                  @rL   rh  z0BulkORMUpdate._do_post_synchronize_bulk_evaluateª  s�  ø€ ð ð 	ØˆFàÔ/ˆØCÐC¨Ô(BÐCÑCÔCˆàÔ+ˆàð 	;ñ 	;ˆEØ!×?Ò?Ø/Ð/Ð/Ð/ wÐ/Ñ/Ô/ØÔ.ñô ˆLð !×/Ò/°Ñ=Ô=ˆEØð Øå  ™ZœZ×2Ò2°7Ñ;Ô;ˆNà”JˆEàÔ*×7Ò7¸ÑGÔGˆKØ"ð ,ð ,�Ø˜%�<�<Ø!& s¤�E˜#‘JøàŒMÔ"×*Ò*¨5°$¸ÑDÔDÐDà�MŠM˜%¥ kÑ!2Ô!2Ñ3Ô3Ð3ð
 '×3Ò3°EÑ:Ô:×EÒEØñô ˆIð ð ;Ø×(Ò(¨°	Ñ:Ô:Ð:ùð;	;ð 	;rN   c           
     ó  — |                       ||j                             ¦   «         ¦  «        }|                      ||||j        j        d         d„ |D ¦   «         |                     ¦   «         |                     ¦   «         ¦  «         d S )Nr   c                ó"   — g | ]\  }}}}|||f‘ŒS rJ   rJ   )rX   rƒ  rY   r\   r  s        rL   rZ   z?BulkORMUpdate._do_post_synchronize_evaluate.<locals>.<listcomp>ã  s(   € ÐMÐMÐMÑ%9 S¨%°¸ˆc�5˜%Ð ÐMÐMÐMrN   )r‹  r  Ú
all_statesÚ#_apply_update_set_values_to_objectsr   Úcompiled_parametersÚprefetch_colsÚpostfetch_cols)rÕ   r   rÖ   r   ra  Úmatched_objectss         rL   rf  z+BulkORMUpdate._do_post_synchronize_evaluateÕ  s—   € ð ×>Ò>ØØÔ ×+Ò+Ñ-Ô-ñ
ô 
ˆð
 	×/Ò/ØØØØŒNÔ.¨qÔ1ØMÐM¸_ÐMÑMÔMØ× Ò Ñ"Ô"Ø×!Ò!Ñ#Ô#ñ	
ô 	
ð 	
ð 	
ð 	
rN   c           
     óŠ  ‡‡‡	— ‰j         Š	|j        }|r&|                      |‰	|¦  «        }ˆfd„|D ¦   «         }n‰j        }ˆfd„ˆ	ˆfd„d„ |D ¦   «         D ¦   «         D ¦   «         }|sd S |                      ‰‰||j        j        d         d„ |D ¦   «         |                     ¦   «         |                     ¦   «         ¦  «         d S )Nc                ó@   •— g | ]}t          |¦  «        ‰j        fz   ‘ŒS rJ   ©r�   r>  ©rX   r{  ra  s     €rL   rZ   z<BulkORMUpdate._do_post_synchronize_fetch.<locals>.<listcomp>ó  ó:   ø€ ð ð ð àõ �c‘
”
˜nÔ<Ð>Ñ>ðð ð rN   c                ó<   •— g | ]}|‰j         v ¯‰j         |         ‘ŒS rJ   )r  )rX   r  r   s     €rL   rZ   z<BulkORMUpdate._do_post_synchronize_fetch.<locals>.<listcomp>ú  s=   ø€ ð 
ð 
ð 
àð ˜wÔ3Ð3Ð3ð Ô  Ô.ð 4Ð3Ð3rN   c                ó‚   •— g | ];\  }}‰j         �|‰j         k    ¯‰                     t          |¦  «        |¬¦  «        ‘Œ<S )Nr…  )r>  r  rƒ   )rX   r  rL  Útarget_mapperra  s      €€rL   rZ   z<BulkORMUpdate._do_post_synchronize_fetch.<locals>.<listcomp>ü  sh   ø€ ð 
!ð 
!ð 
!ñ
 0�K ð "Ô1Ð9Ø! ^Ô%CÒCÐCð ×;Ò;Ý˜Ñ%Ô%Ø#1ð <ñ ô ð DÐCÐCrN   c                ó2   — g | ]}|d d…         |d         f‘ŒS )r   éÿÿÿÿrJ   )rX   r{  s     rL   rZ   z<BulkORMUpdate._do_post_synchronize_fetch.<locals>.<listcomp>  s6   € ð 4ð 4ð 4Ø-0�S˜˜2˜”Y  B¤Ð(ð4ð 4ð 4rN   r   c                ó`   — g | ]+}|t          j        |¦  «        t          j        |¦  «        f‘Œ,S rJ   )r   Úinstance_stateÚinstance_dict)rX   rƒ  s     rL   rZ   z<BulkORMUpdate._do_post_synchronize_fetch.<locals>.<listcomp>  sK   € ð ð ð ð ð	 ÝÔ-¨cÑ2Ô2ÝÔ,¨SÑ1Ô1ððð ð rN   )	r9  Úreturned_defaults_rowsr  r=  r$  r   r%  r&  r'  )
rÕ   r   rÖ   r   ra  r6  Úpk_rowsrµ  Úobjsr0  s
    `  `    @rL   rg  z(BulkORMUpdate._do_post_synchronize_fetchè  s_  øøø€ ð 'Ô6ˆà!'Ô!>ÐØ!ð 		8Ø×3Ò3Ø˜Ð'=ñô ˆGðð ð ð à"ðñ ô ˆLˆLð
 *Ô7ˆLð
ð 
ð 
ð 
ð
!ð 
!ð 
!ð 
!ð 
!ð
4ð 4Ø4@ð4ñ 4ô 4ð
!ñ 
!ô 
!ð
ñ 
ô 
ˆð  ð 	ØˆFà×/Ò/ØØØØŒNÔ.¨qÔ1ðð ð  ðñ ô ð × Ò Ñ"Ô"Ø×!Ò!Ñ#Ô#ñ	
ô 	
ð 	
ð 	
ð 	
rN   c                ó¢  ‡‡‡— |j         Š‰j        }t          j        |¦  «        }	|                      ‰|¦  «        }
|                      ‰|
¦  «        }i }|D ]R\  }}	 |	                     t          j        t          j
        |¦  «        ¦  «        }|||<   Œ># t          j        $ r Y ŒOw xY wt          |                     ¦   «         ¦  «        Šd„ |D ¦   «         }t          ¦   «         }ˆˆˆfd„|D ¦   «         }ˆfd„|D ¦   «                              ‰¦  «        }ˆfd„|D ¦   «         }|D �]\  }}}|                     ˆfd„|D ¦   «         ¦  «         |                     |j        |¦  «         |j                             ‰¦  «        }|D ]}||v r ||         |¦  «        ||<   Œ|j        j                             |d|¦  «         |                     |t          |¦  «        ¦  «         |                     |¦  «                             |¦  «        }|r|                     ||¦  «         |                     |¦  «         �Œ|                     |¦  «         dS )zeapply values to objects derived from an update statement, e.g.
        UPDATE..SET <values>

        c                ó   — h | ]\  }}|’ŒS rJ   rJ   )rX   r¨   r©   s      rL   ú	<setcomp>zDBulkORMUpdate._apply_update_set_values_to_objects.<locals>.<setcomp>A  s   € Ð;Ð;Ð;™˜˜1�!Ð;Ð;Ð;rN   c                óJ   •— h | ]}|j         ‰v r|‰j        v r|j         ‰v¯|’Œ S rJ   )ri   r¢  )rX   r÷   Úeffective_paramsr  r;   s     €€€rL   r;  zDBulkORMUpdate._apply_update_set_values_to_objects.<locals>.<setcomp>E  sN   ø€ ð 
ð 
ð 
àØŒuÐ(Ð(Ð(Ø�VÔ-Ð-Ð-Ø”˜^Ð+Ð+ð	 ð ,Ð+Ð+rN   c                óF   •— h | ]}|‰j         v ¯‰j         |         j        ’ŒS rJ   ©r¢  ri   ©rX   r÷   r;   s     €rL   r;  zDBulkORMUpdate._apply_update_set_values_to_objects.<locals>.<setcomp>L  s<   ø€ ð 
ð 
ð 
àØ�FÔ,Ð,Ð,ð Ô$ QÔ'Ô+à,Ð,Ð,rN   c                óB   •— g | ]}‰j         |         j        |j        f‘ŒS rJ   r?  r@  s     €rL   rZ   zEBulkORMUpdate._apply_update_set_values_to_objects.<locals>.<listcomp>R  s8   ø€ ð 
ð 
ð 
Ø9:ˆVÔ% aÔ(Ô,¨a¬eÐ4ð
ð 
ð 
rN   c                ó(   •— i | ]\  }}|‰|         “ŒS rJ   rJ   )rX   Úcol_to_propÚc_keyr=  s      €rL   r«   zEBulkORMUpdate._apply_update_set_values_to_objects.<locals>.<dictcomp>Y  s5   ø€ ð ð ð á*˜ Uð  Ð!1°%Ô!8ðð ð rN   N)r9  rï   r   rŽ  rŸ  r§  r’  r   rÎ   r    rÑ   r˜  rƒ   rÀ   r¿   r  rí  r  rV   r  rÁ   r  r  r  r  ÚaddÚ_register_altered)rÕ   r   ra  rÖ   r=  r(  r&  r'  r“  r”  r¥  Úresolved_keys_as_propnamesÚvalue_evaluatorsri   ÚvalueÚ
_evaluatorÚattribr‘   Úto_prefetchr   Úprefetch_transferrƒ  rY   r\   r  r  r;   s       `                    @@rL   r$  z1BulkORMUpdate._apply_update_set_values_to_objects  s  øøø€ ð   Ô/ˆØ”]ˆ
Ý&Ô9¸*ÑEÔEÐØ×2Ò2°6¸9ÑEÔEˆØ%(×%DÒ%DØ�Oñ&
ô &
Ð"ð ÐØ4ð 	3ð 	3‰JˆC�ð3Ø/×7Ò7ÝÔ$¥UÔ%@À%ÑHÔHñô �
ð )3Ð  Ñ%Ð%øõ Ô/ð ð ð Ø�ðøøøõ
 Ð.×3Ò3Ñ5Ô5Ñ6Ô6ˆØ;Ð;Ð :Ð;Ñ;Ô;ˆå‘”ˆð
ð 
ð 
ð 
ð 
ð 
à"ð
ñ 
ô 
ˆð
ð 
ð 
ð 
à#ð
ñ 
ô 
÷ Š*�^Ñ
$Ô
$ð	 	ð
ð 
ð 
ð 
Ø>Ið
ñ 
ô 
Ðð "1ð 	ñ 	ÑˆC�˜à�LŠLðð ð ð à.?ðñ ô ñô ð ð ×$Ò$ U¤Z°Ñ;Ô;Ð;àÔ*×7Ò7¸ÑGÔGˆKà"ð <ð <�Ø˜%�<�<à!6Ð!1°#Ô!6°sÑ!;Ô!;�E˜#‘JøàŒMÔ"×*Ò*¨5°$¸ÑDÔDÐDà�MŠM˜%¥ kÑ!2Ô!2Ñ3Ô3Ð3ð
 ×+Ò+¨EÑ2Ô2×=Ò=¸kÑJÔJˆIØð ;Ø×(Ò(¨°	Ñ:Ô:Ð:à�JŠJ�uÑÔÐÑØ×!Ò! &Ñ)Ô)Ð)Ð)Ð)s   Á2BÂB&Â%B&)r   r1   rÖ   r  rn   r6   r:   r,   r#  r/   ro   r4   rF   rÅ  r¶  )rð   r(  r)  r,  r  rõ  ró  rÌ  rG  rh  rf  rg  r$  rë  rì  s   @rL   rï  rï  �  s:  ø€ € € € € àðð ñ „[ðð,`"ð `"ð `"ðD"#ð "#ð "#ðH ðSð Sð Sð Sð Sñ „[ðSðj ð $Ø$Ø %Ø$ð"ð "ð "ð "ð "ñ „[ð"ðH ð(;ð (;ñ „[ð(;ðT ð
ð 
ñ „[ð
ð$ ð3
ð 3
ñ „[ð3
ðj ðU*ð U*ñ „[ðU*ð U*ð U*ð U*ð U*rN   rï  Údeletec                  ó–   ‡ — e Zd Zed„ ¦   «         Zedˆ fd„¦   «         Zedddddœd d„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zˆ xZ	S )!ÚBulkORMDeletec           	     ó¦  — |                       | ¦  «        }|j                             dd¦  «        }|dk    s|dk    r$d|j        j        vrt	          j        |||fi |¤Ž |S |j         }|}|j        j        d         }|j        x|_        }	|                     ||||¬¦  «         | 	                    ¦   «         }
|
j        j        d         |	u r|	j
        |
_        |                      |j        |	¦  «        }|r
 |
j        |Ž }
t	          j        ||
|fi |¤Ž d}|sd }n|j                             dd ¦  «        }|j                             dd ¦  «        }|durB|d	k    o;|                     |j        |	|j        |j                             d
d¦  «        ¬¦  «        }|rd} |
j        |
j        j        Ž }
|r|                     |||
|	|¬¦  «        }
|
|_        |S )NrK  rñ  rQ  ré   r÷  FrN  rG  rU  rC  )rA  rC  TrÜ  )rò  rÔ   rá   rd   r&   rô  rÏ  r;   rù  ræ  rñ   rx  rv  rú  rG  rE  rA  rB   r  r  rÖ   )rÕ   rÖ   r  rÒ  r  rK  rÓ  r  rò   r;   rû  rü  r  rN  rG  s                  rL   r  z"BulkORMDelete.create_for_statementy  sr  € à�{Š{˜3ÑÔˆà Ô-×1Ò1Ø˜Mñ
ô 
ˆð
 ˜KÒ'Ð'Ø˜}Ò,Ð,Ø i¤oÔ&BÐBÐBåÔ# D¨)°XÐDÐDÀÐDÐDÐDØˆKà”~Ð%ˆà'Ðà”?Ô/°Ô?ˆØ'œÐ.ˆŒ�fà×$Ò$ØØØØ*2ð	 	%ñ 	
ô 	
ð 	
ð ×#Ò#Ñ%Ô%ˆàŒ>Ô& ~Ô6¸&Ð@Ð@Ø#Ô/ˆHŒNà×1Ò1ØÔ" Fñ
ô 
ˆð ð 	1Ø%�x”~ xÐ0ˆHõ 	Ô  h°Ð?Ð?¸BÐ?Ð?Ð?à %Ðàð 	Ø"&ÐÐà"*Ô"7×";Ò";Ø% tñ#ô #Ðð %Ô1×5Ò5Ø ñ
ô 
Ðð  EÐ)Ð)ð $ wÒ.ð Ø×*Ò*ØÔ$ØØ"&Ô"4Ø$,Ô$9×$=Ò$=Ø)¨5ñ%ô %ð	 +ñ ô ð ð ð 	MØ$(Ð!à/�xÔ/°´Ô1KÐLˆHàð 	Ø×0Ò0ØØ#ØØ!Ø&;ð 1ñ ô ˆHð "ˆŒàˆrN   r   r1   rÖ   ú
dml.Deletern   r6   r:   r,   r#  r/   ro   r4   rF   rÅ  c                óþ   •— |                      d| j        ¦  «        }|j        dk    rt          j        d¦  «        ‚|j        dvrt          j        d¦  «        ‚t          ¦   «                              ||||||¦  «        S )NrI  rx   zˆBulk ORM DELETE not supported right now. Statement may be invoked at the Core level using session.connection().execute(stmt, parameters))rR  r1  rQ  zGValid strategies for ORM DELETE strategy are 'orm', 'auto', 'core_only')rá   r?  r2  rX  rY  rZ  rÎ  rÌ  )	rÕ   r   rÖ   rn   r:   r#  ro   ra  rÔ  s	           €rL   rÌ  z#BulkORMDelete.orm_execute_statementÕ  s¤   ø€ ð +×.Ò.Ø$ cÔ&@ñ
ô 
ˆð Ô'¨6Ò1Ð1ÝÔ,ðAñô ð ð Ô'Ð/KÐKÐKÝÔ&ðñô ð õ
 ‰wŒw×,Ò,Ø�Y Ð(9¸>È4ñ
ô 
ð 	
rN   Fr@  rE  r   r;   r›   rA  rA   rB  rC  rD  c               ó’   — |j         o|j        j        }|sdS |r|j        S |r$|j        st	          j        d|j        › d�¦  «        ‚dS )NFr  zè" does not support RETURNING with DELETE..USING; for synchronize_session='fetch', please add the additional execution option 'is_delete_using=True' to the statement to indicate that a separate SELECT should be used for this backend.T)Údelete_returningrñ   r	  Údelete_returning_multifromrX  rè  rê   r  s           rL   rG  zBulkORMDelete.can_use_returningõ  sŠ   € ð Ô$ÐN¨Ô);Ô)Nð 	ð ð 	Ø�5ð ð 	ð Ô5Ð5àð 	 7Ô#Eð 	õ Ô%ðE˜GœLð Eð Eð Eñô ð ð ˆtrN   c                ó  — |                       ||j                             ¦   «         ¦  «        }g }|D ]?\  }}}	}
|
r!|                     |	|j        j        ¦  «         Œ*|                     |¦  «         Œ@|r|                     |¦  «         d S d S rI   )r‹  r  r#  Ú_expireÚ	_modifiedr‡  Ú_remove_newly_deleted)rÕ   r   rÖ   r   ra  r(  Ú	to_deleter  rY   r\   Úis_partially_expireds              rL   rf  z+BulkORMDelete._do_post_synchronize_evaluate  s¶   € ð ×>Ò>ØØÔ ×+Ò+Ñ-Ô-ñ
ô 
ˆð
 ˆ	à5Dð 	(ð 	(Ñ1ˆAˆu�eÐ1Ø#ð (Ø—’˜e WÔ%9Ô%CÑDÔDÐDÐDà× Ò  Ñ'Ô'Ð'Ð'àð 	5Ø×)Ò)¨)Ñ4Ô4Ð4Ð4Ð4ð	5ð 	5rN   c                óp  ‡— ‰j         }|j        }|r&|                      |||¦  «        }ˆfd„|D ¦   «         }n‰j        }|D ]t}	|	dd…         }
|	d         }|                     t          |
¦  «        |¬¦  «        }||j        v r3|                     t          j	        |j        |         ¦  «        g¦  «         Œud S )Nc                ó@   •— g | ]}t          |¦  «        ‰j        fz   ‘ŒS rJ   r+  r,  s     €rL   rZ   z<BulkORMDelete._do_post_synchronize_fetch.<locals>.<listcomp>?  r-  rN   r   r2  r…  )
r9  r6  r  r=  r  rƒ   r  rZ  r   r4  )rÕ   r   rÖ   r   ra  r0  r6  r7  rµ  r{  r  rL  r  s       `        rL   rg  z(BulkORMDelete._do_post_synchronize_fetch2  s  ø€ ð 'Ô6ˆà!'Ô!>Ðà!ð 
	8Ø×3Ò3Ø˜Ð'=ñô ˆGðð ð ð à"ðñ ô ˆLˆLð
 *Ô7ˆLàð 	ð 	ˆCØ˜a ˜dœ)ˆKØ  œWˆNð )×FÒFÝ�[Ñ!Ô!Ø-ð Gñ ô ˆLð ˜wÔ3Ð3Ð3Ø×-Ò-å"Ô1Ø#Ô0°Ô>ñô ðñô ð øð	ð 	rN   )r   r1   rÖ   rR  rn   r6   r:   r,   r#  r/   ro   r4   rF   rÅ  r¶  )
rð   r(  r)  r,  r  rÌ  rG  rf  rg  rë  rì  s   @rL   rP  rP  w  sÕ   ø€ € € € € àðYð Yñ „[ðYðv ð
ð 
ð 
ð 
ð 
ñ „[ð
ð> ð $Ø$Ø %Ø$ð&ð &ð &ð &ð &ñ „[ð&ðP ð5ð 5ñ „[ð5ð& ð$ð $ñ „[ð$ð $ð $ð $ð $rN   rP  )r;   r<   r=   r>   r?   r2   r@   rA   rB   rA   rC   rA   r9   rD   r:   rE   rF   rG   )r;   r<   r=   r>   r?   r2   r@   rA   rB   rA   rC   rA   r9   rO   r:   rE   rF   rP   )r;   r<   r=   r>   r?   r2   r@   rA   rB   rA   rC   rA   r9   rO   r:   rE   rF   rR   )r;   r›   r=   r>   r?   r2   r@   rA   rœ   rA   r™   rD   rš   rA   rF   rG   )r;   r›   r=   r>   r?   r2   r@   rA   rœ   rA   r™   r    rš   rA   rF   r¡   )r;   r›   r=   r>   r?   r2   r@   rA   rœ   rA   r™   r    rš   rA   rF   r£   )OÚ__doc__Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r   Ú r   r   r   r   r£  r   r   Úbaser   r   r   r   r   rX  r   Úenginer   r   r¸   Úsqlr   r   r   r    r!   r"   Úsql.baser#   r$   r%   Úsql.dmlr&   r'   r(   r)   Úutil.typingr*   Ú_typingr+   r,   r-   r;   r.   r   r/   r0   r1   r2   rY   r3   r4   r5   Úengine.interfacesr6   Úobjectr7   rM   rŸ   r„   rÅ   r.  Ú
plugin_forr¹  rï  rP  rJ   rN   rL   ú<module>rm     s[  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !àð :Ø,Ð,Ð,Ð,Ð,Ð,Ø3Ð3Ð3Ð3Ð3Ð3Ø3Ð3Ð3Ð3Ð3Ð3ØÐÐÐÐÐØ'Ð'Ð'Ð'Ð'Ð'Ø(Ð(Ð(Ð(Ð(Ð(Ø Ð Ð Ð Ð Ð Ø+Ð+Ð+Ð+Ð+Ð+Ø$Ð$Ð$Ð$Ð$Ð$Ø#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐØ9Ð9Ð9Ð9Ð9Ð9à€WˆT˜Ð Ñ Ô €ð 
ð *-Ø>Að
ð 
ð 
ð 
ð 
ñ 
„ð
ð 
ð 14Ø>Að
#ð 
#ð 
#ð 
#ð 
#ñ 
„ð
#ð* 15Ø>BðUð Uð Uð Uð Uð Uðp 
ð *-Ø"&ð	ð 	ð 	ð 	ð 	ñ 
„ð	ð 
ð 14Ø"&ð	ð 	ð 	ð 	ð 	ñ 
„ð	ð& 15Ø"&ðY%ð Y%ð Y%ð Y%ð Y%ð Y%ðx%ð %ð %ð@ð @ð @ð @ð @Ð)ñ @ô @ð @ðFC
ð C
ð C
ð C
ð C
˜ñ C
ô C
ð C
ðL €Ô˜ Ñ)Ô)ð@#ð @#ð @#ð @#ð @#�K ñ @#ô @#ñ *Ô)ð@#ðF €Ô˜ Ñ)Ô)ðc*ð c*ð c*ð c*ð c*Ð&¨ñ c*ô c*ñ *Ô)ðc*ðL €Ô˜ Ñ)Ô)ð_ð _ð _ð _ð _Ð&¨ñ _ô _ñ *Ô)ð_ð _ð _rN   