Ë
    V.jËá ã                  ó¼	  — 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' 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mZ1 d'd)lm2Z2 d'd*lm3Z3 d'd+lm4Z4 d'dlmZ d'dl4mZ5 d'd,l4m6Z6 d'd-l7m8Z8 d'd.l7m9Z9 d'd/l:m;Z; e
rd
d0l<m=Z= d
d1lm>Z> d'd2l?m@Z@ 	 	 	 	 	 	 ddd4„ZAej„                  j‡                  d3d3¬5«       G d6„ d7e&«      «       ZDe3jŠ                  ej„                  j‡                  d8d3¬5«       G d9„ d:e&«      «       «       ZFe3jŠ                  ej„                  j‡                  d8¬;«       G d<„ d=eF«      «       «       ZGe3jŠ                  ej„                  j‡                  d8d8¬>«      ej„                  j‡                  d8d8d8¬?«      ej„                  j‡                  d8¬@«       G dA„ dBe&«      «       «       «       «       ZH G dC„ dD«      ZI G dE„ dFe&«      ZJe3jŠ                  ej|                  j‡                  d8¬@«       G dG„ dHe&«      «       «       ZKe3jŠ                  ej|                  j‡                  dI¬J«      ej|                  j‡                  d¬J«       G dK„ dLeJ«      «       «       «       ZLe3jŠ                  ej|                  j‡                  d8¬J«      ej|                  j‡                  dM¬J«      ej|                  j‡                  dN¬J«      ej|                  j‡                  dO¬J«      ej|                  j‡                  dP¬J«       G dQ„ dReJejš                  e3jœ                  «      «       «       «       «       «       «       ZO G dS„ dT«      ZP G dU„ dVeJ«      ZQej|                  j‡                  dW¬J«       G dX„ dYeQ«      «       ZRe3jŠ                  ej|                  j‡                  dZ¬J«       G d[„ d\eQ«      «       «       ZSe3jŠ                  ej|                  j‡                  d]¬J«      ej|                  j‡                  d3¬J«       G d^„ d_eJ«      «       «       «       ZTe3jŠ                  ej|                  j‡                  d`¬J«       G da„ dbeQejš                  «      «       «       ZUdc„ ZVy)ezWsqlalchemy.orm.interfaces.LoaderStrategy
   implementations, and related MapperOptions.é    )ÚannotationsN)ÚAny)ÚDict)ÚOptional)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   )Ú
attributes)Úexc)Ú
interfaces)Úloading)Úpath_registry)Ú
properties)Úquery)Úrelationships)Ú
unitofwork)Úutil)Ú_DEFER_FOR_STATE)Ú_RAISE_FOR_STATE)Ú_SET_DEFERRED_EXPIRED)ÚATTR_WAS_SET)ÚLoaderCallableStatus)ÚPASSIVE_OFF)ÚPassiveFlag)Ú_column_descriptions)ÚORMCompileState)ÚORMSelectCompileState)ÚQueryContext)ÚLoaderStrategy)ÚStrategizedProperty)Ú_state_session)ÚInstanceState)ÚLoad)Ú_none_only_set)ÚAliasedClassé   )Úevent)Úinspect)Úlog)Úsql)Úvisitors)ÚLABEL_STYLE_TABLENAME_PLUS_COL)ÚSelect)ÚLiteral)ÚMapper)ÚRelationshipProperty)ÚColumnElementFc	                ó¬  ‡‡‡‡— g }
|xr | j                   Š|r!| j                  r|
j                  t        «       | j                  | j
                  j                  v r;| j
                  j                  | j                     \  ŠŠ|
j                  ˆˆfd„«       |r|
j                  t        j                  «       |r/| j                  Š‰r!| j                  r|
j                  ˆˆfd„«       |j                  D ]Ý  }| |j                  j                  | j                  «      u sŒ+|j                  j                  | j                  «      rŒQt!        j"                  |j$                  | j                  f| ‰|||xr* | j                  xs | j&                  t(        j*                  u ||||| xs | j,                   | j.                  dœ|	¤Ž}|
D ]  } ||| «       Œ Œß y )Nc                óH   •— t        j                  | |j                  ‰fi ‰¤ŽS ©N)Úorm_utilÚ_validator_eventsÚkey)ÚdescÚpropÚfnÚoptss     €€ú[C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/orm/strategies.pyÚ<lambda>z%_register_attribute.<locals>.<lambda>\   s#   ø€ œx×9Ñ9Ø�d—h‘h ñ Ø&*ò ó    c                ó2   •— t        j                  | ‰‰«      S r5   )r   Úbackref_listeners)r9   r:   ÚbackrefÚuselists     €€r=   r>   z%_register_attribute.<locals>.<lambda>j   s   ø€ ¤:×#?Ñ#?Ø˜' 7ô$r?   )Úparent_tokenrC   Úcompare_functionÚ	useobjectÚtrackparentÚtypecallableÚ	callable_Úactive_historyÚ
impl_classÚsend_modified_eventsÚdoc)rC   Úsingle_parentÚappendÚsingle_parent_validatorr8   ÚparentÚ
validatorsr   Útrack_cascade_eventsÚback_populatesÚ_effective_sync_backrefÚself_and_descendantsÚ_propsÚgetÚclass_managerÚ_attr_has_implr   Úregister_attribute_implÚclass_Ú	directionr   Ú	ONETOMANYÚviewonlyrM   )r:   ÚmapperrF   rE   rH   rI   Úproxy_propertyrJ   rK   ÚkwÚlisten_hooksÚmr9   ÚhookrB   r;   r<   rC   s                 @@@@r=   Ú_register_attributerf   F   s¡  û€ ð €LàÒ(˜DŸL™L€Gá�T×'Ò'Ø×ÑÔ3Ô4à‡x�x�4—;‘;×)Ñ)Ñ)Ø—;‘;×)Ñ)¨$¯(©(Ñ3‰ˆˆDØ×Ñôô	
ñ Ø×ÑœJ×;Ñ;Ô<ñ Ø×%Ñ%ˆÙ�t×3Ò3Ø×Ñôôð" ×(Ô(ˆØ�1—8‘8—<‘<Ø�H‰Hó
ò 
à—/‘/×0Ñ0°·±Õ:Ü×5Ñ5Ø—‘Ø—‘ðð "ØØ!1Ø#Ø%ò à×&Ñ&ò >Ø—~‘~¬×)=Ñ)=Ð=à)Ø#Ø-Ø%Ø)2 ]Ò%G¸$¿-¹-Ð6GØ—H‘Hñ#ð$ ñ%ˆDó* %�Ù�T˜4Õ ñ %ñ3 )r?   )Ú
instrumentÚdeferredc                  ó6   ‡ — e Zd ZdZdZˆ fd„Z	 dd„Zd„ Zˆ xZS )ÚUninstrumentedColumnLoaderz¶Represent a non-instrumented MapperProperty.

    The polymorphic_on argument of mapper() often results in this,
    if the argument is against the with_polymorphic selectable.

    )Úcolumnsc                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   )ÚsuperÚ__init__Úparent_propertyrk   ©ÚselfrQ   Ústrategy_keyÚ	__class__s      €r=   rn   z#UninstrumentedColumnLoader.__init__¢   s%   ø€ Ü‰Ñ˜ Ô.Ø×+Ñ+×3Ñ3ˆ�r?   c                ól   — | j                   D ]%  }|r|j                   |   }|j                  ||«       Œ' y r5   )rk   Ú_append_dedupe_col_collection)	rq   Úcompile_stateÚquery_entityÚpathÚloadoptÚadapterÚcolumn_collectionÚkwargsÚcs	            r=   Úsetup_queryz&UninstrumentedColumnLoader.setup_query¦   s4   € ð —”ˆAÙØ—O‘O AÑ&�Ø×7Ñ7¸Ð;LÕMñ r?   c	                 ó   — y r5   © ©	rq   Úcontextrw   rx   ry   r`   Úresultrz   Ú
populatorss	            r=   Úcreate_row_processorz/UninstrumentedColumnLoader.create_row_processorµ   s   € ð 	r?   r5   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rn   r~   r…   Ú__classcell__©rs   s   @r=   rj   rj   —   s$   ø„ ñð €Iô4ð óNör?   rj   Tc                  ó<   ‡ — e Zd ZdZdZˆ fd„Z	 dd„Zd„ Zd„ Zˆ xZ	S )ÚColumnLoaderz8Provide loading behavior for a :class:`.ColumnProperty`.)rk   Úis_compositec                ó’   •— t         ‰| �  ||«       | j                  j                  | _        t	        | j                  d«      | _        y )NÚcomposite_class)rm   rn   ro   rk   Úhasattrr�   rp   s      €r=   rn   zColumnLoader.__init__Ê   s;   ø€ Ü‰Ñ˜ Ô.Ø×+Ñ+×3Ñ3ˆŒÜ# D×$8Ñ$8Ð:KÓLˆÕr?   c	                óþ   — | j                   D ]<  }
|r&|r|j                  |
«      }
|
€ y |j                   |
   }
|j                  |
|«       Œ> | j                   d   }|r|j                   |   }|€y ||| j                  <   y ©Nr   )rk   Úadapt_check_presentru   ro   )rq   rv   rw   rx   ry   rz   r{   Úmemoized_populatorsÚcheck_for_adaptr|   r}   Úfetchs               r=   r~   zColumnLoader.setup_queryÏ   sŠ   € ð —”ˆAÙÙ"Ø×3Ñ3°AÓ6�AØ�yÙàŸ™¨Ñ*�Aà×7Ñ7¸Ð;LÕMð ð —‘˜Q‘ˆÙØ—O‘O EÑ*ˆEØˆ}ð à49Ð˜D×0Ñ0Ò1r?   c                óv  — d| _         | j                  d   j                  }| j                  j                  xs] | j                  d   j
                  xsB |j                  d uxr2 |j                  j                  |j                  d «      | j                  u }t        | j                  |d|j                  |¬«       y )NTr   F)rF   rE   rJ   )Úis_class_levelrk   Útypero   rJ   Úprimary_keyÚversion_id_colÚ_columntopropertyrX   rf   Úcompare_values)rq   r`   ÚcoltyperJ   s       r=   Úinit_class_attributez!ColumnLoader.init_class_attributeð   s²   € Ø"ˆÔØ—,‘,˜q‘/×&Ñ&ˆð × Ñ ×/Ñ/ò Ø�|‰|˜A‰×*Ñ*òð ×%Ñ%¨TÐ1ò (Ø×,Ñ,×0Ñ0°×1FÑ1FÈÓMØ×'Ñ'ð(ð 	ô 	Ø× Ñ ØØØ$×3Ñ3Ø)ö	
r?   c	                óô   — | j                   D ]I  }	|r|j                   |	   }	|j                  |	d«      }
|
sŒ)|d   j                  | j                  |
f«        y  |d   j                  | j                  df«       y ©NFÚquickÚexpireT)rk   Ú_getterrO   r8   )rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   ÚcolÚgetters              r=   r…   z!ColumnLoader.create_row_processor  ss   € ð —<”<ˆCÙØ—o‘o cÑ*�Ø—^‘^ C¨Ó/ˆFÚØ˜7Ñ#×*Ñ*¨D¯H©H°fÐ+=Ô>Ùð  ð �xÑ ×'Ñ'¨¯©°4Ð(8Õ9r?   ©F)
r†   r‡   rˆ   r‰   rŠ   rn   r~   r¡   r…   r‹   rŒ   s   @r=   rŽ   rŽ   Ã   s)   ø„ ñ Cà)€IôMð ó:òB
ö,:r?   rŽ   )Úquery_expressionc                  ó0   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚExpressionColumnLoaderc                óÈ   •‡— t         ‰| �  ||«       t        j                  «       j	                  d «      Št        ˆfd„| j                  j                  D «       «      | _        y )Nc              3  óB   •K  — | ]  }|j                  ‰«       –— Œ y ­wr5   )Úcompare)Ú.0r}   Únulls     €r=   Ú	<genexpr>z2ExpressionColumnLoader.__init__.<locals>.<genexpr>)  s!   øè ø€ ð ,
Ù)E A�—	‘	˜$“ÔÑ)Eùs   ƒ)	rm   rn   r+   r±   ÚlabelÚanyro   rk   Ú_have_default_expression)rq   rQ   rr   r±   rs   s      @€r=   rn   zExpressionColumnLoader.__init__"  sP   ù€ Ü‰Ñ˜ Ô.ô
 �x‰x‹z×Ñ Ó%ˆÜ(+ó ,
Ø)-×)=Ñ)=×)EÒ)Eó,
ó )
ˆÕ%r?   c                ó,  — d }	|r|j                   r|j                   }	n"| j                  r| j                  j                  }	|	€y |	D ]%  }
|r|j                  |
   }
|j	                  |
|«       Œ' |	d   }|r|j                  |   }|€y ||| j                  <   y r”   )Ú_extra_criteriarµ   ro   rk   ru   )rq   rv   rw   rx   ry   rz   r{   r–   r|   rk   r}   r˜   s               r=   r~   z"ExpressionColumnLoader.setup_query-  s¤   € ð ˆÙ�w×.Ò.Ø×-Ñ-‰Gà×*Ò*Ø×*Ñ*×2Ñ2ˆGàˆ?ØãˆAÙØ—O‘O AÑ&�Ø×7Ñ7¸Ð;LÕMð ð
 ˜‘
ˆÙØ—O‘O EÑ*ˆEØˆ}ð à49Ð˜D×0Ñ0Ò1r?   c	                ó  — |rˆ|j                   r{|j                   }	|	D ]I  }
|r|j                  |
   }
|j                  |
d«      }|sŒ)|d   j                  | j                  |f«        y  |d   j                  | j                  df«       y y y r£   )r·   rk   r¦   rO   r8   )rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   rk   r§   r¨   s               r=   r…   z+ExpressionColumnLoader.create_row_processorR  sŒ   € ñ �w×.Ò.Ø×-Ñ-ˆGã�ÙØ!Ÿ/™/¨#Ñ.�CØŸ™¨¨UÓ3�ÚØ˜wÑ'×.Ñ.°·±¸&Ð/AÔBÙð ð ˜8Ñ$×+Ñ+¨T¯X©X°tÐ,<Õ=ð /ˆ7r?   c                óˆ   — d| _         t        | j                  |d| j                  d   j                  j
                  d¬«       y )NTFr   )rF   rE   Úaccepts_scalar_loader)rš   rf   ro   rk   r›   rŸ   ©rq   r`   s     r=   r¡   z+ExpressionColumnLoader.init_class_attributel  s;   € Ø"ˆÔäØ× Ñ ØØØ!Ÿ\™\¨!™_×1Ñ1×@Ñ@Ø"'ö	
r?   )r†   r‡   rˆ   rn   r~   r…   r¡   r‹   rŒ   s   @r=   r¬   r¬     s   ø„ ô	
ò#:òJ>ö4	
r?   r¬   )rh   rg   )rh   rg   Ú	raiseload)Ú
do_nothingc                  óH   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Z	 d	d„Zd„ Z	d„ Z
ˆ xZS )
ÚDeferredColumnLoaderzAProvide loading behavior for a deferred :class:`.ColumnProperty`.)rk   Úgroupr¼   c                ó  •— t         ‰| �  ||«       t        | j                  d«      rt	        d«      ‚| j
                  j                  dd«      | _        | j                  j                  | _        | j                  j                  | _	        y )Nr‘   z8Deferred loading for composite types not implemented yetr¼   F)
rm   rn   r’   ro   ÚNotImplementedErrorÚstrategy_optsrX   r¼   rk   rÀ   rp   s      €r=   rn   zDeferredColumnLoader.__init__ƒ  su   ø€ Ü‰Ñ˜ Ô.Ü�4×'Ñ'Ð):Ô;Ü%ØJóð ð ×+Ñ+×/Ñ/°¸UÓCˆŒØ×+Ñ+×3Ñ3ˆŒØ×)Ñ)×/Ñ/ˆ�
r?   c	           
     ó$  — |j                   r~|j                  j                  j                  r^| j                  |j                  j                  j                  v r2| j
                  j                  d«      j                  ||||||||«       y | j                  sZ| j                  r| j
                  j                  }	n| j
                  j                  }	|d   j                  | j                  |	f«       y |d   j                  | j                  df«       y )N©)rh   F©rg   TÚnewr¥   F)Úrefresh_stater   Ú_compile_optionsÚ_only_load_propsr8   ro   Ú_get_strategyr…   rš   r¼   Ú_raise_column_loaderÚ_deferred_column_loaderrO   )
rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   Úset_deferred_for_local_states
             r=   r…   z)DeferredColumnLoader.create_row_processor�  sí   € ð* ×!Ò!Ø—‘×.Ñ.×?Ò?Ø—‘˜GŸM™M×:Ñ:×KÑKÑKà× Ñ ×.Ñ.Ø;óç"Ñ"ØØØØØØØØõ	ð ×$Ò$Ø�~Š~à×(Ñ(×=Ñ=ñ -ð
 ×(Ñ(×@Ñ@ð -ð �uÑ×$Ñ$ d§h¡hÐ0LÐ%MÕNà�xÑ ×'Ñ'¨¯©°5Ð(9Õ:r?   c                óž   — d| _         t        | j                  |d| j                  d   j                  j
                  | j                  d¬«       y )NTFr   )rF   rE   rI   Úload_on_unexpire)rš   rf   ro   rk   r›   rŸ   Ú_load_for_stater»   s     r=   r¡   z)DeferredColumnLoader.init_class_attributeÀ  sD   € Ø"ˆÔäØ× Ñ ØØØ!Ÿ\™\¨!™_×1Ñ1×@Ñ@Ø×*Ñ*Ø"ö	
r?   c	           	     ój  — |j                   j                  r| j                  j                  s�|r8t	        | j
                  «      j                  | j                  j                  «      sG|r5| j                  r)|j                  j                  d| j                  z  d«      s|rA| j                  |v r3 | j                  j                  d«      j                  |||||||fi |	¤Ž y | j                  rt         || j                  <   y | j"                  st$        || j                  <   y t&        || j                  <   y )Nzundefer_group_%sFrÅ   )Úcompile_optionsÚ_render_for_subqueryro   Ú_renders_in_subqueriesÚsetrk   ÚintersectionrQ   Ú_should_undefer_in_wildcardrÀ   Ú
local_optsrX   r8   rË   r~   rš   r   r¼   r   r   )
rq   rv   rw   rx   ry   rz   r{   r–   Úonly_load_propsrb   s
             r=   r~   z DeferredColumnLoader.setup_queryÌ  s  € ð ×-Ñ-×BÒBØ×(Ñ(×?Ò?ñ Ü˜Ÿ™Ó%×2Ñ2Ø—K‘K×;Ñ;ôñ
 Ø—J’JØ×&Ñ&×*Ñ*Ø&¨¯©Ñ3°Uôñ   D§H¡H°Ñ$?ðˆD× Ñ ×.Ñ.Ø;óç‰kØØØØØØ!Ø#ñð óð × Ò Ü8MÐ × 4Ñ 4Ò5Ø—’Ü8HÐ × 4Ñ 4Ò5ä8HÐ × 4Ñ 4Ò5r?   c                óD  — |j                   st        j                  S |t        j                  z  st        j
                  S |j                  j                  }| j                  rg|j                  D �cg c]Q  }t        |t        «      r?t        |j                  t        «      r%|j                  | j                  k(  r|j                   ‘ŒS }}n| j                   g}|D �cg c]  }||j                  v sŒ|‘Œ }}t        |«      }|€9t!        j"                  dt%        j&                  |«      ›d| j                   ›d�«      ‚| j(                  r| j+                  ||d«       t-        j.                  |j                  |t1        |«      t2        «       t        j4                  S c c}w c c}w )NúParent instance zB is not bound to a Session; deferred load operation of attribute 'ú' cannot proceedÚraise)r8   r   Ú
ATTR_EMPTYr   ÚSQL_OKÚPASSIVE_NO_RESULTÚmanagerr`   rÀ   Úiterate_propertiesÚ
isinstancer!   Ústrategyr¿   Ú
unmodifiedr"   Úorm_excÚDetachedInstanceErrorr6   Ú	state_strr¼   Ú_invoke_raise_loadr   Úload_scalar_attributesrÖ   r   r   )	rq   ÚstateÚpassiveÚlocalparentÚpÚtoloadÚkrÀ   Úsessions	            r=   rÑ   z$DeferredColumnLoader._load_for_stateÿ  sZ  € Ø�yŠyÜ'×2Ñ2Ð2àœ×+Ñ+Ò+Ü'×9Ñ9Ð9à—m‘m×*Ñ*ˆà�:Š:ð %×7Ò7óá7�AÜ˜aÔ!4Ô5Ü˜qŸz™zÔ+?Ô@Ø—G‘G˜tŸz™zÒ)ð	 —“Ø7ð ñ ð —h‘h�ZˆFñ #Ó<™F�q a¨5×+;Ñ+;Ò&;’˜FˆÐ<ä  Ó'ˆØˆ?Ü×/Ò/ô ×%Ñ% eÕ,¨d¯h«hð8óð ð �>Š>Ø×#Ñ# E¨7°GÔ<ä×&Ñ&Ø�L‰L˜%¤ U£¬[ô	
ô $×0Ñ0Ð0ùò9ùò =s   Á0AFÃFÃ.Fc                ó4   — t        j                  d| ›d�«      ‚)NÚ'z(' is not available due to raiseload=True©Úsa_excÚInvalidRequestError©rq   rì   rí   Úlazys       r=   rê   z'DeferredColumnLoader._invoke_raise_load'  s   € Ü×(Ò(Ú=AÐCó
ð 	
r?   r5   )r†   r‡   rˆ   r‰   rŠ   rn   r…   r¡   r~   rÑ   rê   r‹   rŒ   s   @r=   r¿   r¿   x  s5   ø„ ñ Là/€Iô0ò1;òf

ð* ó1Iòf&1öP
r?   r¿   c                  ó8   — e Zd ZdZddd„Zej                  fd„Zy)ÚLoadDeferredColumnsz7serializable loader object used by DeferredColumnLoaderc                ó    — || _         || _        y r5   )r8   r¼   )rq   r8   r¼   s      r=   rn   zLoadDeferredColumns.__init__0  s   € ØˆŒØ"ˆ�r?   c                óÌ   — | j                   }|j                  j                  }|j                  |   }| j                  rd}nd}|j                  |«      }|j                  ||«      S )N)©rh   TrÆ   )r¼   T)rþ   rÆ   )r8   râ   r`   rW   r¼   rË   rÑ   )rq   rì   rí   r8   rî   r:   rr   rå   s           r=   Ú__call__zLoadDeferredColumns.__call__4  sc   € Ø�h‰hˆà—m‘m×*Ñ*ˆØ×!Ñ! #Ñ&ˆØ�>Š>ð‰Lð FˆLØ×%Ñ% lÓ3ˆØ×'Ñ'¨¨wÓ7Ð7r?   Nr©   )r8   Ústrr¼   Úbool)r†   r‡   rˆ   r‰   rn   r   r   rÿ   r€   r?   r=   rû   rû   -  s   „ ÙAô#ð '1×&<Ñ&<ô 8r?   rû   c                  ó,   ‡ — e Zd ZdZdZˆ fd„Zd„ Zˆ xZS )ÚAbstractRelationshipLoaderz0LoaderStratgies which deal with related objects.)r`   ÚtargetrC   Úentityc                óþ   •— t         ‰| �  ||«       | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        y r5   )rm   rn   ro   r`   r  r  rC   rp   s      €r=   rn   z#AbstractRelationshipLoader.__init__J  s^   ø€ Ü‰Ñ˜ Ô.Ø×*Ñ*×1Ñ1ˆŒØ×*Ñ*×1Ñ1ˆŒØ×*Ñ*×1Ñ1ˆŒØ×+Ñ+×3Ñ3ˆ�r?   c	           
     ód   — | j                   j                  d«      j                  ||||||||«      S )N))rù   Ú	immediate)ro   rË   r…   r�   s	            r=   Ú#_immediateload_create_row_processorz>AbstractRelationshipLoader._immediateload_create_row_processorQ  sC   € ð ×#Ñ#×1Ñ1Ø$ó
ç
Ñ
ØØØØØØØØó	
ð	
r?   )r†   r‡   rˆ   r‰   rŠ   rn   r	  r‹   rŒ   s   @r=   r  r  E  s   ø„ Ù:à7€Iô4ö
r?   r  c                  ó   — e Zd ZdZy)ÚDoNothingLoaderzßRelationship loader that makes no change to the object's state.

    Compared to NoLoader, this loader does not initialize the
    collection/attribute to empty/none; the usual default LazyLoader will
    take effect.

    N)r†   r‡   rˆ   r‰   r€   r?   r=   r  r  j  s   „ òr?   r  Únoload)rù   c                  ó    — e Zd ZdZdZd„ Zd„ Zy)ÚNoLoaderzQProvide loading behavior for a :class:`.Relationship`
    with "lazy=None".

    r€   c                ól   — d| _         t        | j                  |d| j                  j                  ¬«       y )NT)rF   rH   )rš   rf   ro   Úcollection_classr»   s     r=   r¡   zNoLoader.init_class_attribute�  s0   € Ø"ˆÔäØ× Ñ ØØØ×-Ñ-×>Ñ>ö		
r?   c	                óP   ‡ — ˆ fd„}	|d   j                  ‰ j                  |	f«       y )Nc                ó€   •— ‰j                   r"t        j                  | |‰j                  «       y d |‰j                  <   y r5   )rC   r   Úinit_state_collectionr8   )rì   Údict_Úrowrq   s      €r=   Úinvoke_no_loadz5NoLoader.create_row_processor.<locals>.invoke_no_load–  s-   ø€ Ø�|Š|Ü×0Ñ0°¸¸t¿x¹xÕHà"&��d—h‘h’r?   rÇ   )rO   r8   )
rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   r  s
   `         r=   r…   zNoLoader.create_row_processor‹  s&   ø€ ô	'ð 	�5Ñ× Ñ  $§(¡(¨NÐ!;Õ<r?   N)r†   r‡   rˆ   r‰   rŠ   r¡   r…   r€   r?   r=   r  r  v  s   „ ñð
 €Iò
ó=r?   r  ÚselectrÞ   Úraise_on_sqlÚbaked_selectc                  óÞ   ‡ — e Zd ZU dZdZded<   ded<   ded<   ded<   d	ed
<   	 	 	 	 dˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
ddddej                  fd„Zd„ Z ej                  d«      d„ «       Zd„ Zˆ xZS )Ú
LazyLoaderztProvide loading behavior for a :class:`.Relationship`
    with "lazy=True", that is loads when first accessed.

    )Ú
_lazywhereÚ_rev_lazywhereÚ_lazyload_reverse_optionÚ	_order_byÚuse_getÚis_aliased_classÚ_bind_to_colÚ_equated_columnsÚ_rev_bind_to_colÚ_rev_equated_columnsÚ_simple_lazy_clauseÚ_raise_alwaysÚ_raise_on_sqlzColumnElement[bool]r  zDict[str, ColumnElement[Any]]r"  r  r$  úRelationshipProperty[Any]ro   c                óÄ  •— t         ‰| �  ||«       | j                  d   dk(  | _        | j                  d   dk(  | _        t        | j                  «      j                  | _        | j                  j                  }|j                  «       \  | _        | _        | _        |j                  d¬«      \  | _        | _        | _        | j                  j"                  rSt%        j&                  | j                  j"                  «      D �cg c]  }t)        j*                  |ddi«      ‘Œ c}| _        nd | _        | j.                  j1                  d| | j                  «       | j                   xrY | j2                   xrJ | j                  j4                  d   j7                  | j                  dd	| j8                  j:                  ¬
«      | _        | j<                  rŠt?        | j                  «      D ]U  }|| j8                  j:                  v sŒ| j8                  j:                  |   D ]  }| j                  |   | j                  |<   Œ  ŒW | j.                  j1                  d| «       y y c c}w )Nrù   rÞ   r  T)Úreverse_directionÚ
_orm_adaptz%s lazy loading clause %sr   F©Úuse_proxiesÚcompare_keysÚequivalentsz4%s will use Session.get() to optimize instance loads) rm   rn   rÃ   r'  r(  r)   r  r!  ro   Ú_join_conditionÚcreate_lazy_clauser  r"  r#  r  r$  r%  Úorder_byr   Úto_listÚsql_utilÚ_deep_annotater  ÚloggerÚinforC   Ú_get_clauser¯   r`   Ú_equivalent_columnsr   Úlist)rq   rQ   rr   Újoin_conditionÚelemr§   r}   rs   s          €r=   rn   zLazyLoader.__init__Ä  s$  ø€ ô 	‰Ñ˜ Ô.Ø!×/Ñ/°Ñ7¸7ÑBˆÔØ!×/Ñ/°Ñ7¸>ÑIˆÔä '¨¯©Ó 4× EÑ EˆÔà×-Ñ-×=Ñ=ˆð
 ×-Ñ-Ó/ñ		
ØŒOØÔØÔ!ð ×-Ñ-ÀÐ-ÓEñ		
ØÔØÔ!ØÔ%ð ×Ñ×(Ò(ô !ŸL™L¨×)=Ñ)=×)FÑ)FÔGóáG�Dô ×'Ñ'¨¨|¸TÐ.BÕCØGñˆD�Nð
 "ˆDŒNà�‰×ÑÐ4°d¸D¿O¹OÔLð ×%Ñ%Ð%ò Ø—L‘LÐ òà—‘×'Ñ'¨Ñ*×2Ñ2Ø—‘Ø Ø"Ø ŸK™K×;Ñ;ð	 3ó ð 	Œð �<Š<Ü˜D×1Ñ1Ö2�Ø˜$Ÿ+™+×9Ñ9Ò9Ø!Ÿ[™[×<Ñ<¸SÔA˜Ø37×3HÑ3HÈÑ3M˜×-Ñ-¨aÒ0ñ Bð 3ð
 �K‰K×ÑØFÈõð ùò7s   ÄIc           	     ól  — d| _         | j                  j                  }| j                  j                  rd}d}nB| j                  j                  t
        j                  us| j                  s|rd}d}n	d}d}ndx}}t        | j                  |d| j                  | j                  j                  ||¬«       y )NTF)rF   rI   rH   rJ   Ú_deferred_history)rš   ro   Ú_legacy_inactive_history_stylerJ   r]   r   Ú	MANYTOONEr   rf   rÑ   r  )rq   r`   r@  rJ   r?  s        r=   r¡   zLazyLoader.init_class_attribute   s¸   € Ø"ˆÔð × Ñ ×?Ñ?ð 	'ð ×Ñ×.Ò.Ø!ˆNØ %Ñð × Ñ ×*Ñ*´*×2FÑ2FÑFØ—<’<á-Ø!%�Ø$)Ñ!à!&�Ø$(Ñ!à16Ð6ˆNÐ.äØ× Ñ ØØØ×*Ñ*Ø×-Ñ-×>Ñ>Ø)Ø/ö	
r?   c                óê   ‡‡— t        j                  | j                  ddi«      }|| j                  c}Šg Šd„ }t	        j
                  |i d|i«       ˆˆfd„}t	        j                  |i d|i«      }|‰fS )Nr,  Tc                ó   — d| _         y )NF)Úunique)Ú	bindparams    r=   Úvisit_bindparamzFLazyLoader._memoized_attr__simple_lazy_clause.<locals>.visit_bindparam+  s
   € Ø$ˆIÕr?   rE  c                óä   •— | j                   ‰v r,‰j                  | j                  ‰| j                      d f«       y | j                  €)‰j                  | j                  d | j                  f«       y y r5   )Ú_identifying_keyrO   r8   ÚcallableÚvalue)rE  Úbind_to_colÚparamss    €€r=   rF  zFLazyLoader._memoized_attr__simple_lazy_clause.<locals>.visit_bindparam0  sh   ø€ Ø×)Ñ)¨[Ñ8Ø—‘à!Ÿ™Ø# I×$>Ñ$>Ñ?Øðõð ×#Ñ#Ð+Ø—‘˜yŸ}™}¨d°I·O±OÐDÕEð ,r?   )r5  r6  r  r"  r,   ÚtraverseÚcloned_traverse)rq   Ú	lazywhereÚ	criterionrF  rK  rL  s       @@r=   Ú"_memoized_attr__simple_lazy_clausez-LazyLoader._memoized_attr__simple_lazy_clause"  s‰   ù€ Ü×+Ñ+Ø�O‰O˜l¨DÐ1ó
ˆ	ð #,¨T×->Ñ->Ðˆ	�;àˆò	%ô 	×Ñ˜) R¨+°Ð)GÔHõ
	Fô ×,Ñ,Ø�r˜K¨Ð9ó
ˆ	ð ˜&Ð Ð r?   c                óø  — | j                   \  }}|€,t        j                  ||D ���cg c]  \  }}}|‘Œ
 c}}}«      S | j                  j                  }|j                  «       }	t        j                  |	«      }
|t        j                  z  r|t        j                  z  }i }|D ]K  \  }}}|�>|r(|t        j                  z  r|j                  ||
||«      }n|j                  ||
||«      }|||<   ŒM ||fS c c}}}w r5   )r&  r5  Úadapt_criterion_to_nullro   rQ   Úobjr   Úinstance_dictr   ÚINIT_OKÚLOAD_AGAINST_COMMITTEDÚ#_get_committed_state_attr_by_columnÚ_get_state_attr_by_column)rq   rì   rí   rP  Ú
param_keysr8   ÚidentrJ  r`   Úor  rL  s               r=   Ú_generate_lazy_clausez LazyLoader._generate_lazy_clauseB  s  € Ø $× 8Ñ 8Ñˆ	�:àˆ=Ü×3Ñ3Ø¹ÕD¹Ñ$5 C¨°šC¸ÓDóð ð ×%Ñ%×,Ñ,ˆà�I‰I‹KˆÜ×(Ñ(¨Ó+ˆà”[×(Ñ(Ò(Ø”{×*Ñ*Ñ*ˆGàˆÛ!+ÑˆC�˜ØÐ Ù˜w¬×)KÑ)KÒKØ"×FÑFØ˜u e¨Wó‘Eð #×<Ñ<Ø˜u e¨Wó�Eð  ˆF�3ŠKð ",ð ˜&Ð Ð ùô3 Es   ¨C5c                ó:   — t        j                  d| ›d|›d�«      ‚)Nrô   z ' is not available due to lazy='rõ   rø   s       r=   rê   zLazyLoader._invoke_raise_loadb  s   € Ü×(Ò(Ú8<ºdÐCó
ð 	
r?   Nr€   c                ó€  — |j                   s>| j                  j                  s|j                  r|j                  st
        j                  S |j                    }d }	| j                  xr | xs |j                   }
|t        j                  z  s|
r|t        j                  z  s|rt
        j                  S | j                  r;|t        j                  z  s(|
r|t        j                   z  r| j#                  ||d«       t%        |«      }|s\|t        j                  z  rt
        j                  S t'        j(                  dt+        j,                  |«      ›d| j                   ›d�«      ‚|
�r@| j/                  |||«      }	t
        j                  |	v rt
        j                  S t
        j0                  |	v rt
        j0                  S | j2                  j4                  st7        j8                  |	«      ry t7        j:                  |	«      ry | j                   |j<                  v r#|t        j>                  z  st
        j@                  S |jC                  | jD                  |	||¬«      }|�|t
        jF                  u ry |S |t        j                  z  r|t        j                   z  st
        j                  S | jI                  |||	||||||«	      S )NrÞ   rÜ   z> is not bound to a Session; lazy load operation of attribute 'rÝ   )rí   Úlazy_loaded_from)%r8   ro   Úload_on_pendingÚ_load_pendingÚ
session_idr   rß   r   r·   r   rà   r   ÚNON_PERSISTENT_OKrá   r'  ÚNO_RAISEÚRELATED_OBJECT_OKrê   r"   rç   rè   r6   ré   Ú_get_ident_for_use_getÚ	NEVER_SETr`   Úallow_partial_pksr%   r×   Ú
issupersetÚdictÚDEFERRED_HISTORY_LOADr   Ú_identity_lookupr  ÚPASSIVE_CLASS_MISMATCHÚ_emit_lazyload)rq   rì   rí   ry   Úextra_criteriaÚextra_optionsÚalternate_effective_pathÚexecution_optionsÚpendingÚprimary_key_identityr   rò   Úinstances                r=   rÑ   zLazyLoader._load_for_stateg  sx  € ð �yŠyà×(Ñ(×8Ò8Ø×+Ò+à×#Ò#ä'×2Ñ2Ð2à—i‘i�-ˆØ#Ðà—,‘,ÒO¨ KÒ$N°w×7NÑ7NÐ3Nˆàœ+×,Ñ,Ò,±WØœ*×6Ñ6Ò6¹7ä'×9Ñ9Ð9ð ×Òàœk×2Ñ2Ò2ñ Øœ[×:Ñ:Ò:ð ×#Ñ# E¨7°GÔ<ä  Ó'ˆÙØœ×-Ñ-Ò-Ü+×=Ñ=Ð=ä×/Ò/ô ×%Ñ% eÕ,¨d¯h«hð8óð ò Ø#'×#>Ñ#>Ø˜ ó$Ð ô $×5Ñ5Ð9MÑMÜ+×=Ñ=Ð=Ü%×/Ñ/Ð3GÑGÜ+×5Ñ5Ð5ð
 —;‘;×0Ò0Ü!×.Ñ.Ð/CÔDØä!×,Ñ,Ð-AÔBØð —‘˜EŸJ™JÑ&Ø¤+×"CÑ"CÒCä+×8Ñ8Ð8ð ×/Ñ/Ø—‘Ø$ØØ!&ð	 0ó ˆHð Ð#ØÔ3×JÑJÑJØà#�Oàœk×0Ñ0Ò0Ø¤×!>Ñ!>Ò>ä+×=Ñ=Ð=à×"Ñ"ØØØ ØØØØØ$Øó

ð 
	
r?   c           	     ó  — |j                   j                  }|t        j                  z  r|j                  }n|j
                  }|j                  }| j                  j                  D �cg c]  } |||| j                  |   |¬«      ‘Œ c}S c c}w )N©rí   )	râ   r`   r   rW  rX  rY  rk  rœ   r#  )rq   rò   rì   rí   Úinstance_mapperÚget_attrr  Úpks           r=   rg  z!LazyLoader._get_ident_for_use_getÞ  s…   € ØŸ-™-×.Ñ.ˆà”[×7Ñ7Ò7Ø&×JÑJ‰Hà&×@Ñ@ˆHà—
‘
ˆð —k‘k×-Ò-ó
á-�ñ �U˜E 4×#8Ñ#8¸Ñ#<ÀgÖNØ-ñ
ð 	
ùò 
s   Á' B
zsqlalchemy.orm.strategy_optionsc
                óv  ‡ ‡— t         j                  j                  Š‰ j                  j	                  «       }
t        j                  |
g|
j                  t        t        j                  ¬«      }t        j                  }|d|dœz  }‰ j                  j                  �0|j                  ‰ j                   ‰ j                  j                  «      }|j"                   }|s|t$        j&                  z  rt        j(                  ddi«      |_        ‰ j,                  }|j.                  s|r|j0                  rs|€|j2                  ‰ j                     }n|‰ j                     }|j.                  }|r2|j0                  r&d}|t5        j6                  ‰ j                  |«      fz  }||_        n5|€$|j                   j:                  ‰ j                     }n|‰ j                     }|r|xj8                  |z  c_        |xj<                  d|iz  c_        |rL‰ j>                  r&|t@        jB                  z  s‰ jE                  ||d«       tG        jH                  |||||	¬«      S ‰ jJ                  r‰ jJ                  |_&        ˆ ˆfd„}|xjN                  |‰ j                  ffz  c_'        ‰ jQ                  ||«      \  }}|	r#t         jR                  jU                  |	d	|i«      }	nd	|i}	‰ j"                  |jV                  v r#|t@        jX                  z  stZ        j\                  S |r3t        j^                  t4        j`                  |jc                  «       «      r4y t        j^                  t4        jd                  |jc                  «       «      ry ‰ j>                  r&|t@        jB                  z  s‰ jE                  ||d«       |f|_3        |ji                  |||	¬
«      }|jk                  «       jm                  «       jo                  «       }‰ jp                  r|S ts        |«      }|r,|dkD  r"t        jt                  d‰ j                  z  «       |d   S y )N)Ú_raw_columnsÚ_propagate_attrsÚ_label_stylerÉ   F)Ú_invoke_all_eagersÚ_lazy_loaded_fromÚ	autoflushÚ_current_pathr  )Úload_optionsrs  c                óz  •— ‰j                   j                  D ]¡  }|j                  t        j                  u sŒ |j
                  sŒ-t        |j                  t        «      rŒH‰j                  j                  | j                  j                  |j                     «      j                  |«      j                  | «       Œ£ y r5   )ro   Ú_reverse_propertyr]   r   rA  Ú_use_geträ   rå   r  r$   Ú_construct_for_existing_pathrÓ   rƒ  rQ   ÚlazyloadÚprocess_compile_state)Úcompile_contextÚrevrq   Ústrategy_optionss     €€r=   Ú_lazyload_reversez4LazyLoader._emit_lazyload.<locals>._lazyload_reverseB  s‡   ø€ Ø×+Ñ+×=Ô=�ð —M‘M¤Z×%9Ñ%9Ò9ØŸ›Ü& s§|¡|´ZÕ@à$×)Ñ)×FÑFØ'×7Ñ7×EÑEØŸJ™Jñó÷ ‘h˜s“m×$9Ñ$9¸/Õ$Jñ >r?   Ú_sa_orm_load_options)rs  r
   zKMultiple rows returned with uselist=False for lazily-loaded attribute '%s' r   );r   Ú	preloadedÚorm_strategy_optionsr  Ú__clause_element__r.   Ú_create_raw_selectr~  r-   r   Údefault_compile_optionsr   Údefault_load_optionsro   Ú	secondaryÚselect_fromr`   r8   r   ÚNO_AUTOFLUSHÚimmutabledictÚ_execution_optionsr   r„  r·   Ú	load_pathr6   ÚLoaderCriteriaOptionÚ_with_optionsÚ_path_registryrÉ   r(  r   re  rê   r   Úload_on_pk_identityr  Ú_order_by_clausesÚ_with_context_optionsr]  Ú
EMPTY_DICTÚ
merge_withrk  rl  r   r   Úhas_intersectionÚ	_none_setÚvaluesÚ
_never_setÚ_where_criteriaÚexecuterD  ÚscalarsÚallrC   ÚlenÚwarn)rq   rò   rì   ru  rí   ry   rp  rq  rr  rs  ÚclauseelementÚstmtr„  rt  r   Úeffective_pathr<   rŽ  Úlazy_clauserL  rƒ   Úlr�  s   `                     @r=   ro  zLazyLoader._emit_lazyloadí  sÑ  ù€ ô  Ÿ>™>×>Ñ>ÐàŸ™×6Ñ6Ó8ˆÜ×(Ñ(Ø'˜Ø*×;Ñ;Ü7Ü,×DÑDô	
ˆô $×8Ñ8ˆàØ"'Ø!&ñ
ñ 	
ˆð
 ×Ñ×)Ñ)Ð5Ø×#Ñ#Ø—‘˜T×1Ñ1×;Ñ;óˆDð —i‘i�-ˆñ �g¤
× 7Ñ 7Ò7Ü&*×&8Ñ&8¸+ÀuÐ9MÓ&NˆDÔ#à—,‘,ˆà×Ò¡'¨g×.EÒ.EØ'Ð/Ø!&§¡°×1EÑ1EÑ!F‘à!9¸$×:NÑ:NÑ!O�à×%Ñ%ˆDá˜7×2Ò2Ø�ØÜ×1Ñ1°$·+±+¸~ÓNðñ �ð "&ˆDÕØ%Ð-ð #Ÿ\™\×8Ñ8¸×9MÑ9MÑN‰Nð 6°d×6JÑ6JÑKˆNáØ×Ò -Ñ/Õà×Ò /°>Ð!BÑBÕáØ×!Ò!¨'´K×4HÑ4HÒ*HØ×'Ñ'¨¨w¸ÔGä×.Ñ.ØØØ$Ø)Ø"3ôð ð �>Š>Ø%)§^¡^ˆDÔ"õ	Kð 	×"Ò"Ø × 4Ñ 4Ð5ð'
ñ 	
Õ"ð #×8Ñ8¸ÀÓHÑˆ�VáÜ $§¡× :Ñ :Ø!à*¨Lðó!Ñð '¨ð!Ðð
 �H‰H˜Ÿ
™
Ñ"Øœk×?Ñ?Ò?ä'×4Ñ4Ð4áÜ×$Ñ$¤X×%7Ñ%7¸¿¹»ÔIØä×"Ñ"¤8×#6Ñ#6¸¿¹»ÔHØà×Ò g´×0DÑ0DÒ&DØ×#Ñ# E¨7°NÔCà +˜~ˆÔà—‘Ø�&Ð,=ð !ó 
ˆð —‘“×(Ñ(Ó*×.Ñ.Ó0ˆà�<Š<ØˆMä�F“ˆAÙØ�q’5Ü—I‘IðJà×.Ñ.ñ/ôð ˜a‘yÐ àr?   c	                ó˜  ‡— | j                   Š|j                  j                  rd|j                  j                  j
                  rD| j                   |j                  j                  j
                  v r| j                  ||||||||«      S | j                  r|rw|j                  rkt        j                  |j                  t        ‰| ||j                  r|j                  |«      nd «      ‰«      }	|d   j                  | j                   |	f«       y |j                  s|j                   r&ˆfd„}
|d   j                  | j                   |
f«       y y )NrÇ   c                ó*   •— | j                  |‰«       y r5   )Ú_reset)rì   r  r  r8   s      €r=   Úreset_for_lazy_callablez@LazyLoader.create_row_processor.<locals>.reset_for_lazy_callableÅ  s   ø€ ð —‘˜U CÕ(r?   )r8   r„  Ú_is_user_refreshr   rÉ   rÊ   r	  rš   r·   r#   Ú"_instance_level_callable_processorrY   ÚLoadLazyAttributeÚ_generate_extra_criteriarO   Úpopulate_existingÚalways_refresh)rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   Úset_lazy_callabler¶  r8   s              @r=   r…   zLazyLoader.create_row_processor‹  s8  ø€ ð �h‰hˆð × Ñ ×1Ò1Ø—‘×.Ñ.×?Ò?Ø—‘˜GŸM™M×:Ñ:×KÑKÑKà×;Ñ;ØØØØØØØØó	ð 	ð ×"Ò"¡w°7×3JÒ3Jô ×@Ñ@à×$Ñ$Ü!ØØØð #×2Ò2ð  ×8Ñ8¸ÔAà!ó	ð ó!Ðð" �uÑ×$Ñ$ d§h¡hÐ0AÐ%BÕCØ×&Ò&¨&×*?Ò*?ô	)ð �uÑ×$Ñ$ d§h¡hÐ0GÐ%HÕIð +@r?   )rQ   r)  rr   zTuple[Any, ...])r†   r‡   rˆ   r‰   rŠ   Ú__annotations__rn   r¡   rQ  r]  rê   r   r¢  rÑ   rg  Úpreload_modulero  r…   r‹   rŒ   s   @r=   r  r  Ÿ  s©   ø… ñð
€Ið  $Ó#Ø/Ó/Ø'Ó'Ø3Ó3à.Ó.ð:Ø/ð:Ø?Nõ:òx 
òD!ò@!ò@
ð ØØØ!%ØŸ/™/óu
òn
ð €T×ÑÐ:Ó;ñ[ó <ð[özEJr?   r  c                  ó:   — e Zd ZdZd„ Zd„ Zej                  fd„Zy)r¹  a¦  semi-serializable loader object used by LazyLoader

    Historically, this object would be carried along with instances that
    needed to run lazyloaders, so it had to be serializable to support
    cached instances.

    this is no longer a general requirement, and the case where this object
    is used is exactly the case where we can't really serialize easily,
    which is when extra criteria in the loader option is present.

    We can't reliably serialize that as it refers to mapped entities and
    AliasedClass objects that are local to the current process, which would
    need to be matched up on deserialize e.g. the sqlalchemy.ext.serializer
    approach.

    c                óP   — || _         |j                  | _        || _        || _        y r5   ©r8   rr   ry   rp  )rq   r8   Úinitiating_strategyry   rp  s        r=   rn   zLoadLazyAttribute.__init__å  s&   € ØˆŒØ/×<Ñ<ˆÔØˆŒØ,ˆÕr?   c                óŽ   — | j                   �t        j                  d«       | j                  | j                  | j
                  ddœS )NzvCan't reliably serialize a lazyload() option that contains additional criteria; please use eager loading for this caser€   rÂ  )rp  r   r­  r8   rr   ry   )rq   s    r=   Ú__getstate__zLoadLazyAttribute.__getstate__ë  sE   € Ø×ÑÐ*Ü�I‰Ið ôð —8‘8Ø ×-Ñ-Ø—|‘|Ø ñ	
ð 	
r?   c                óè   — | j                   }|j                  j                  }|j                  |   }|j                  | j
                     }|j                  ||| j                  | j                  ¬«      S )N)ry   rp  )	r8   râ   r`   rW   Ú_strategiesrr   rÑ   ry   rp  )rq   rì   rí   r8   ry  r:   rå   s          r=   rÿ   zLoadLazyAttribute.__call__ù  sn   € Ø�h‰hˆØŸ-™-×.Ñ.ˆØ×%Ñ% cÑ*ˆØ×#Ñ# D×$5Ñ$5Ñ6ˆà×'Ñ'ØØØ—L‘LØ×.Ñ.ð	 (ó 
ð 	
r?   N)	r†   r‡   rˆ   r‰   rn   rÅ  r   r   rÿ   r€   r?   r=   r¹  r¹  Ó  s!   „ ñò"-ò
ð '1×&<Ñ&<ô 
r?   r¹  c                  ó   — e Zd ZdZdZdd„Zy)Ú
PostLoaderz;A relationship loader that emits a second SELECT statement.r€   Nc                óŠ  — |j                   j                  xs t        j                  j                  |z   }|j                  «       }t        j                  d|i«      }|r"|j                  j                  dd «      }|dk(  }	nd }d}	|�’| j                  j                  s#t        j                  d| j                  › d�«      ‚|j                  j                  dt        | «      › �|«      }|	s|dk  r|d||fS |	s"|j!                  dt        | «      › �|d	z
  i«      }t"        j$                  j'                  ||| j                  «      r|d||fS || j                     }
|| j                     }|
j)                  |j*                  d
«      s;|r|j,                  dz  |kD  r'|d||fS |j/                  | j0                  «      r|d||fS |d||fS )NÚsa_top_level_orm_contextÚrecursion_depthéÿÿÿÿFz'recursion_depth option on relationship z0 not valid for non-self-referential relationshipÚ_recursion_depth_r   r
   Úloaderr'   T)rv   Úcurrent_pathr6   ÚPathRegistryÚrootÚ_get_top_level_contextr   r™  rÙ   rX   ro   Ú_is_self_referentialrö   r÷   rs  ÚidÚunionr   ÚPostLoadÚpath_existsÚcontainsr   ÚlengthÚcontains_mapperr`   )rq   r‚   rx   ry   Ú
join_depthr°  Útop_level_contextrs  rÌ  Úunlimited_recursionÚpath_w_propÚeffective_path_w_props               r=   Ú_setup_for_recursionzPostLoader._setup_for_recursion  s  € à×!Ñ!×.Ñ.ÒL´(×2GÑ2G×2LÑ2LØñˆð $×:Ñ:Ó<ÐÜ ×.Ñ.Ø'Ð):Ð;ó
Ðñ Ø%×0Ñ0×4Ñ4Ð5FÈÓMˆOØ"1°RÑ"7Ñà"ˆOØ"'ÐàÐ&Ø×'Ñ'×<Ò<Ü×0Ñ0Ø=Ø×+Ñ+Ð,ð -8ð8óð ð
 &×7Ñ7×;Ñ;Ø#¤B t£H :Ð.°óˆOñ '¨?¸QÒ+>à"ØØ%Ø#ð	ð ñ 'Ø$5×$;Ñ$;à+¬B¨t«H¨:Ð6¸È!Ñ8Kðó%Ð!ô ×Ñ×'Ñ'Ø�^ T×%9Ñ%9ô
ð " 5Ð*;¸_ÐLÐLà˜4×/Ñ/Ñ0ˆØ .¨t×/CÑ/CÑ DÐà×#Ñ# G×$6Ñ$6¸ÔAÙØ(×/Ñ/°!Ñ3°jÒ@à&ØØ)Ø'ð	ð ð '×6Ñ6°t·{±{ÔCà"ØØ%Ø#ð	ð ð ˜tÐ%6¸ÐGÐGr?   r5   )r†   r‡   rˆ   r‰   rŠ   rá  r€   r?   r=   rÉ  rÉ    s   „ ÙEà€IôDHr?   rÉ  r  c                  ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚImmediateLoader©rÜ  c                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   ©rm   rn   ro   rÜ  rp   s      €r=   rn   zImmediateLoader.__init__W  ó%   ø€ Ü‰Ñ˜ Ô.Ø×.Ñ.×9Ñ9ˆ�r?   c                óX   — | j                   j                  d«      j                  |«       y ©N©)rù   r  ©ro   rË   r¡   r»   s     r=   r¡   z$ImmediateLoader.init_class_attribute[  ó$   € Ø×Ñ×*Ñ*Ø!ó	
ç
Ñ
˜vÕ
&r?   c	                ó   — |j                   j                  j                  sy | j                  |||| j                  «      \  }	}
}}|
s"t
        j                  t        j                  z  }n!t
        j                  t        j                  z  }t        j                  j                  ||	| j                  | j                  | j                  ||||«	       y r5   )rv   rÓ   Ú_enable_eagerloadsrá  rÜ  r   ÚPASSIVE_NO_FETCH_RELATEDr   re  r   r   r×  Úcallable_for_pathrQ   ro   Ú_load_for_path)rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   r°  Ú
run_loaderrs  rÌ  Úflagss                 r=   r…   z$ImmediateLoader.create_row_processor`  s¹   € ð ×$Ñ$×4Ñ4×GÒGØð ×%Ñ% g¨t°W¸d¿o¹oÓNñ	
ØØØØñ ô
 ×7Ñ7¼+×:NÑ:NÑN‰Eä×*Ñ*¬[×-AÑ-AÑAˆEä×Ñ×*Ñ*ØØØ�K‰KØ× Ñ Ø×ÑØØØØõ
	
r?   c	                óÒ  — |rJt        |j                  j                  «      }	||j                  «       f|	_        |j                  «       }
|	f}nd }	|}
d}| j                  }| j                  j                  d«      }|D ]i  \  }}|j                  }|s||vsŒ|j                  ||||
|¬«      }|t        t        j                  fvsŒH|j                  |«      j                  |||«       Œk y )Nr€   rê  )rq  rr  rs  )r$   rx   r  Ú_recurser‚   Ú_truncate_recursiver8   ro   rË   rk  rÑ   r   r   rá   Úget_implÚset_committed_value)rq   r‚   rx   ÚstatesÚ	load_onlyry   ró  rÌ  rs  Únew_optrr  rq  r8   Ú
lazyloaderrì   Ú	overwriter  rJ  s                     r=   rñ  zImmediateLoader._load_for_pathŠ  sü   € ñ Ü˜7Ÿ<™<×.Ñ.Ó/ˆGàØ× Ñ Ó"ðˆGŒOð (,×'?Ñ'?Ó'AÐ$Ø$˜J‰MàˆGØ'+Ð$ØˆMà�h‰hˆØ×)Ñ)×7Ñ7Ð8MÓNˆ
Û &ÑˆE�9Ø—J‘JˆEá˜C uÒ,Ø"×2Ñ2ØØØ"/Ø-EØ&7ð 3ó �ð Ü Ü(×:Ñ:ð!ò ð —N‘N 3Ó'×;Ñ;Ø˜u eõñ !'r?   )	r†   r‡   rˆ   rŠ   rn   r¡   r…   rñ  r‹   rŒ   s   @r=   rã  rã  S  s   ø„ à€Iô:ò'ò
(
öT+r?   rã  Úsubqueryc                  óx   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Z G d
„ d«      Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚSubqueryLoaderrä  c                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   ræ  rp   s      €r=   rn   zSubqueryLoader.__init__½  rç  r?   c                óX   — | j                   j                  d«      j                  |«       y ré  rë  r»   s     r=   r¡   z#SubqueryLoader.init_class_attributeÁ  rì  r?   c                óv  — |}|j                   }t        j                  |d   «      }| j                  j	                  |«      r*| j
                  |d   u r| j                  | j
                  }}n||d   }}|rf|j                  |   j                  j                  |   }	t        |«      t        |	«      z
  }
|
r)|	t        j                  j                  ||
 d  «      z  }	n|}	|j                  }|D �cg c]<  }t        |	j                   d   j                  |j                   |   j"                  «      ‘Œ> }}||||	fS c c}w )Nr   r
   )rx   r6   Ú_class_to_mapperrQ   Úisaro   Ú	_entitiesÚentity_zerorž  r¬  r   rÑ  ÚcoerceÚlocal_columnsÚgetattrr  rž   r8   )rq   Úorig_query_entity_indexÚ	subq_pathÚcurrent_compile_stateÚis_rootÚgiven_subq_pathÚsubq_mapperÚleftmost_mapperÚleftmost_propÚnew_subq_pathÚ
additionalÚleftmost_colsr}   Úleftmost_attrs                 r=   Ú_get_leftmostzSubqueryLoader._get_leftmostÆ  sN  € ð $ˆØ—N‘Nˆ	Ü×/Ñ/°	¸!±Ó=ˆð �K‰K�O‰O˜KÔ(Ø×$Ñ$¨	°!©Ñ4à-1¯[©[¸$×:NÑ:N˜]‰Oà-8¸)ÀA¹,˜]ˆOáð 2×;Ñ;Ø'ñç‰kŸ.™.¨ñ8ˆMô ˜Y›¬#¨mÓ*<Ñ<ˆJÙØ¤×!;Ñ!;×!BÑ!BØ˜z˜k˜lÐ+ó"ñ ‘ð ,ˆMà%×3Ñ3ˆñ #ó
ñ
 #�ô	 Ø×"Ñ" 1Ñ%×,Ñ,Ø×1Ñ1°!Ñ4×8Ñ8õð #ð 	ð 
ð  ¨}¸mÐKÐKùò
s   Ã-AD6c           	     óŠ  — |j                  «       j                  d «      }t        j                  j	                  t        j                  «      }|j
                  j                  |j
                  «       |}|j                  sEd|_         |j                  j                  |gt        ||¬«      D �	ch c]  }	|	d   �|	d   ’Œ c}	¢­Ž  |j                  |D �
cg c]:  }
t        j                  j                  t        j                   j"                  |
«      ‘Œ< c}
|j%                  «       «      }||_        |j(                  }|du rd|_        nN|€L|D �ch c]  }|j,                  ’Œ c}D ]/  }t/        |«      j1                  |j2                  «      rŒ(d|_         n |j4                  sd|_        |j*                  du rB|j6                  r6t9        j:                  ||j6                  «      }|r|j=                  ||z   «       |j?                  t@        «      jC                  «       }tE        jF                  ||d¬«      }|S c c}	w c c}
w c c}w )NF)rv   r  Tr€   ©Úuse_mapper_path)$Ú_cloneÚ	correlater   ÚQueryÚ__new__Ú__dict__ÚupdateÚ	_from_objÚ_enable_assertionsr—  Únon_generativer   Ú_adapt_col_listr+   Ú	coercionsÚexpectÚrolesÚColumnsClauseRoleÚ_get_current_adapterr}  Údistinct_target_keyÚ	_distinctÚtablerÖ   rj  rœ   Ú_has_row_limiting_clauser   r5  Ú expand_column_list_from_order_byÚ_set_entitiesÚset_label_styler-   rþ  r6   r&   )rq   Úorig_compile_stateÚ
orig_queryr  r  Úleftmost_relationshipÚorig_entityÚqÚq2Úentr\  Útarget_colsr*  r}   ÚtÚto_addÚembed_qÚ
left_aliass                     r=   Ú_generate_from_original_queryz,SubqueryLoader._generate_from_original_query÷  s"  € ð ×ÑÓ×)Ñ)¨$Ó/ˆô �[‰[× Ñ ¤§¡Ó-ˆØ
�‰×Ñ˜1Ÿ:™:Ô&Øˆð �{Š{Ø#(ˆAÔ Ø(ˆA�M‰M×(Ñ(Øð	ô  4Ø"Ð2Dõ óñ ˜ð ˜8‘}Ð0ð	 ˜“Mð ñó	ð0 )×8Ñ8ñ 'óá&�Aô —‘×$Ñ$¤S§Y¡Y×%@Ñ%@À!ÕDØ&ñð ×3Ñ3Ó5ó
ˆð %ˆŒà3×GÑGÐà $Ñ&ØˆA�KØ Ð(ñ (3Ó3¡{ !�a—g“g {Ô3�Ü˜;Ó'×2Ñ2°1·=±=ÕAØ"&�A”KÙð 4ð ×)Ò)Ø"$ˆAÔà�;‰;˜$Ñ 1×#6Ò#6ô ×>Ñ>Ø˜Q×0Ñ0óˆFñ Ø—‘ ¨fÑ 4Ô5ð ×#Ñ#Ô$BÓC×LÑLÓNˆÜ×*Ñ*Ø˜W°dô
ˆ
ð ÐùòAùò.ùò 4s   Â.H6
Ã?H;ÅI c                ón  — g }t        |j                  «       «      }t        |«      D ]W  \  }\  }}|dkD  r+||dz
     d   j                  }|j	                  |«      r|n|}	n|}	|j                  |	|j                  f«       ŒY t        |«      dk  r|}
nKt        |d   d   «      }|j                  r|j                  }
n!t        j                  |j                  d¬«      }
| j                  j                  }|D �cg c]/  }t        |
| j                   j"                  |   j                  «      ‘Œ1 }}|||
fS c c}w )Nr   r
   r'   rÍ  Tr  )r;  ÚpairsÚ	enumerater`   r  rO   r8   r¬  r)   r!  r  r6   r&   ro   r	  r
  rQ   rž   )rq   r<  r  Úto_joinr?  Úir`   r:   Úprev_mapperÚ	to_appendÚparent_aliasr8  Ú
local_colsr}   Ú
local_attrs                  r=   Ú_prep_for_joinszSubqueryLoader._prep_for_joins[  s5  € àˆÜ�Y—_‘_Ó&Ó'ˆä!*¨5Ö!1ÑˆA‰~�˜Ø�1Šuð $ A¨¡E™l¨1™o×4Ñ4�Ø+6¯?©?¸6Ô+B™KÈ‘	à"�	à�N‰N˜I t§x¡xÐ0Õ1ð "2ô& ˆw‹<˜!Òð &‰Lä˜7 2™; q™>Ó*ˆDØ×$Ò$Ø#Ÿ{™{‘ô  (×4Ñ4Ø—K‘K°ô �ð ×)Ñ)×7Ñ7ˆ
ñ  ó
á�ô �L $§+¡+×"?Ñ"?ÀÑ"B×"FÑ"FÕGØð 	ð 
ð ˜
 LÐ0Ð0ùò	
s   Ã74D2c                ód  — t        |«      }|dk(  r$t        ||d   d   «      j                  |«      g}�n^|dk(  rDt        ||d   d   «      j                  |«      t        ||d   d   «      j                  |«      g}�n|dkD  �r|dd D �cg c]F  }t        |d   «      j                  st        j                  |d   «      n|d   j                  |d   f‘ŒH }}g }	|rb|j                  d«      }t        |d   |d   «      }
|r|
j                  |d   d   «      }
n|
j                  |«      }
|	j                  |
«       |rŒbt        ||d   d   «      j                  |	d   j                  «      g|	z   t        ||d   d   «      j                  |«      gz   }|D ]  }
|j                  |
«      }Œ |S c c}w )Nr
   r   r'   rÍ  )r¬  r
  Úof_typer)   r!  r6   r&   r  ÚpoprO   rQ   Újoin)rq   r5  rA  r<  rE  Úeffective_entityÚltjÚitemÚmiddleÚinnerÚattrs              r=   Ú_apply_joinszSubqueryLoader._apply_joinsŠ  sá  € ô �'‹lˆØ�!Š8ä˜
 G¨A¡J¨q¡MÓ2×:Ñ:Ð;KÓLðŠGð �AŠXä˜
 G¨A¡J¨q¡MÓ2×:Ñ:¸<ÓHÜ˜ g¨b¡k°!¡nÓ5×=Ñ=Ø$óðŠGð �1‹Wð $ A b™Mó
ñ *�Dô  ' t¨A¡wÓ/×@Ò@ô !×-Ñ-¨d°1©gÔ6à! !™WŸ^™^à˜‘Gòð *ð ð 
ð ˆEáØ—z‘z !“}�Ü˜t A™w¨¨Q©Ó0�ÙØŸ<™<¨¨q©	°!©Ó5‘DàŸ<™<¨Ó5�Dà—‘˜TÔ"ò ô ˜ W¨Q¡Z°¡]Ó3×;Ñ;¸EÀ!¹H¿O¹OÓLÐMØñô ˜L¨'°"©+°a©.Ó9×AÑAØ(óðñð ó ˆDØ—‘�t“‰Að ð ˆùòI
s   ÂAF-c                óà   — |j                   }|r?|j                  r3|t        j                  | j                  |j                  |«      «      fz  }|j                  |«      } |j                  |Ž }|S r5   )r�  r·   r6   rœ  r  rº  Ú_with_current_pathÚoptions)	rq   r‚   r5  r  Úrewritten_pathr2  rM  ry   Únew_optionss	            r=   Ú_setup_optionszSubqueryLoader._setup_optionsÀ  ss   € ð" !×.Ñ.ˆá�w×.Ò.ØÜ×-Ñ-Ø—K‘KØ×4Ñ4°WÓ=óðñ ˆKð × Ñ  Ó0ˆØˆA�I‰I�{Ð#ˆàˆr?   c                óv   ‡ — ‰ j                   j                  r!ˆ fd„}|j                  |‰ j                   «      }|S )Nc                ó�   •— | xj                   t        t        j                  ‰j                  j
                  «      «      z  c_         y r5   ©Úeager_order_byÚtupler   r4  ro   r3  ©r‹  rq   s    €r=   Ú_setup_outermost_orderbyzISubqueryLoader._setup_outermost_orderby.<locals>._setup_outermost_orderbyå  s3   ø€ Ø×.Ò.´%Ü—L‘L ×!5Ñ!5×!>Ñ!>Ó?ó3ñ Ö.r?   )ro   r3  Ú_add_context_option)rq   r5  r`  s   `  r=   r`  z'SubqueryLoader._setup_outermost_orderbyâ  s;   ø€ Ø×Ñ×(Ò(ôð
 ×%Ñ%Ø(¨$×*>Ñ*>óˆAð ˆr?   c                  ó,   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zy)úSubqueryLoader._SubqCollectionsz±Given a :class:`_query.Query` used to emit the "subquery load",
        provide a load interface that executes the query at the
        first moment a value is needed.

        ©rò   rs  r„  rL  ÚsubqÚ_datac                ó°   — |j                   | _         |j                  | _        |j                  | _        |j                  xs i | _        || _        d | _        y r5   rd  )rq   r‚   re  s      r=   rn   z(SubqueryLoader._SubqCollections.__init__   sI   € ð #Ÿ?™?ˆDŒLØ%,×%>Ñ%>ˆDÔ"Ø '× 4Ñ 4ˆDÔØ!Ÿ.™.Ò.¨BˆDŒKØˆDŒIØˆD�Jr?   c                ór   — | j                   €| j                  «        | j                   j                  ||«      S r5   )rf  Ú_loadrX   )rq   r8   Údefaults      r=   rX   z#SubqueryLoader._SubqCollections.get
  s*   € Ø�z‰zÐ!Ø—
‘
”Ø—:‘:—>‘> # wÓ/Ð/r?   c                óÆ  — t        j                  t        «      | _        | j                  }|j
                  �J ‚|j                  | j
                  «      }| j                  j                  r|j                  «       }t        |j                  | j                  «      «      }t        j                  |d„ «      D ]*  \  }}| j                  |   j                  d„ |D «       «       Œ, y )Nc                ó   — | dd  S )Nr
   r€   ©Úxs    r=   r>   z7SubqueryLoader._SubqCollections._load.<locals>.<lambda>  s
   € ¸!¸A¸B¹%r?   c              3  ó&   K  — | ]	  }|d    –— Œ y­w)r   Nr€   ©r°   Úvvs     r=   r²   z8SubqueryLoader._SubqCollections._load.<locals>.<genexpr>  s   è ø€ Ð$7±Q¨r R¨¥U±Qùó   ‚)ÚcollectionsÚdefaultdictr;  rf  re  rò   Úwith_sessionr„  Ú_populate_existingr»  rL  Ú	itertoolsÚgroupbyÚextend)rq   r5  Úrowsrñ   Úvs        r=   ri  z%SubqueryLoader._SubqCollections._load  s­   € Ü$×0Ñ0´Ó6ˆDŒJà—	‘	ˆAØ—9‘9Ð$Ð$Ð$à—‘˜tŸ|™|Ó,ˆAà× Ñ ×3Ò3Ø×'Ñ'Ó)�ô ˜Ÿ™ §¡Ó-Ó.ˆDÜ!×)Ñ)¨$±Ö@‘��1Ø—
‘
˜1‘×$Ñ$Ñ$7±QÓ$7Õ7ñ Ar?   c                ó>   — | j                   €| j                  «        y y r5   )rf  ri  )rq   rì   r  r  s       r=   rÏ  z&SubqueryLoader._SubqCollections.loader   s   € Ø�z‰zÐ!Ø—
‘
•ð "r?   N)	r†   r‡   rˆ   r‰   rŠ   rn   rX   ri  rÏ  r€   r?   r=   Ú_SubqCollectionsrc  ð  s"   „ ñ	ð
ˆ	ò	ò	0ò
	8ó"	r?   r}  c           	     óz  — |j                   }|j                  j                  r|j                  j                  ry |j                  j                  |«      }d|_        || j                     }|j                  |j                  dd «      }	|	�|	}
n| j                  }
|j                  j                  j                  dt        j                  j                  t        j                  j                  f«      \  }}|t        j                  j                  u }||z   }||z   }|j                  j                  j                  dt         f|j                  «      }t#        j$                  |d«      }|j&                  r>|j(                  j*                  €t-        j.                  d| ›d|›d�«       |j0                  }|j3                  |d	¬
«      }| j5                  ||||«      \  }}}}| j7                  ||||||«      }t        j8                  |
«      }|j                  j                  j;                  |j<                  dt         f|d||fi«      |_        |j?                  d	«      }| jA                  ||«      \  }}} |jB                  |Ž }| jE                  |||||
«      }| jG                  ||||||
|«      }| jI                  |«      }|S )NTÚpath_with_polymorphic)Úsubquery_pathsNr2  Úormzsubqueryloader for "z!" must invoke lambda callable at z  in order to produce a new query, decreasing the efficiency of caching for this statement.  Consider using selectinload() for more effective full-lambda cachingF)Úlegacy)%rv   rÓ   rî  Ú_for_refresh_stater  ÚindexÚloaders_require_bufferingro   rX   r   r  r   rš  r6   rÑ  rÒ  r   r   Ú_get_plugin_class_for_pluginÚ_is_lambda_elementr„  r�  r   r­  Ú	_resolvedÚ_create_entities_collectionr  r=  r  r£  rs  Ú_set_enable_single_critrH  Úadd_columnsrS  rY  r`  )rq   r‚   rw   rx   r  ry   rz   rv   r  Úwith_poly_entityrM  r  rW  r  r2  Úcompile_state_clsr1  r  r  r3  r<  r5  rA  rG  rE  s                            r=   Ú_setup_query_from_rowprocz(SubqueryLoader._setup_query_from_rowproc$  sá  € ð  ×-Ñ-ˆà×-Ñ-×@Ò@Ø×,Ñ,×?Ò?àà"/×"9Ñ"9×"?Ñ"?ÀÓ"MÐØ,0ˆÔ)à�D×(Ñ(Ñ)ˆð  Ÿ8™8Ø×$Ñ$Ð&=¸tó
Ðð Ð'Ø/Ñà#Ÿ{™{Ðà$+§M¡M×$DÑ$D×$HÑ$HØ$Ü×"Ñ"×'Ñ'¬×)>Ñ)>×)CÑ)CÐDó%
Ñ!ˆ	�>ð œx×4Ñ4×9Ñ9Ð9ˆØ Ñ$ˆ	Ø'¨$Ñ.ˆð —]‘]×5Ñ5×9Ñ9Øœ>Ð*¨G¯M©Mó
ˆ
ô ,×HÑHØ˜ó
Ðð ×(Ò(Ø×#Ñ#×5Ñ5Ð=Ü—	’	ò šZð)ôð $×-Ñ-ˆJð
 /×JÑJØ˜uð Kó 
Ðð ×ÑØ#ØØØó	
ñ	
ØØØ!Øð ×7Ñ7ØØØØØ!Øó
ˆ
ô �K‰KÐ(Ó)ˆà&Ÿ}™}×?Ñ?×JÑJØ×%Ñ%àœ~Ð.°
Ø(¨9°nÐ*Eðó 
ˆÔð ×%Ñ% eÓ,ˆØ,0×,@Ñ,@Ø˜	ó-
Ñ)ˆ�˜\ð ˆA�M‰M˜:Ð&ˆØ×ÑØˆw˜
 LÐ2Bó
ˆð ×ÑØØØØØØØó
ˆð ×)Ñ)¨!Ó,ˆàˆr?   c	           
     ó®  — |rL|j                   j                  �6|j                   j                  j                  rt        j                  dd«       |j
                  r| j                  ||||||||«      S | j                  |||| j                  «      \  }	}
}	}	|
sy t        |j                   t        «      sy | j                  j                  | j                     j                  j                  st!        j"                  d| z  «      ‚t%        |«      dk(  r+t'        j(                  |j*                  | j                  «      s%y t'        j(                  |d   | j                  «      sy | j-                  ||||d   ||«      }|€y |j.                  �J ‚|| j0                     }| j0                  j2                  }|j5                  |j6                  d«      }|€/| j9                  ||«      }|j;                  |j6                  d|«       |r|D �cg c]  }|j<                  |   ‘Œ }}| j>                  r| jA                  |||||«       y | jC                  |||||«       y c c}w )Nz°The subqueryload loader option is not compatible with DML statements such as INSERT, UPDATE.  Only SELECT may be used.This warning will become an exception in a future release.ú2.0úJ'%s' does not support object population - eager loading cannot be applied.r
   rÍ  rs  )"rv   Ú	statementÚis_dmlr   Úwarn_deprecatedrÈ   r	  rá  rÜ  rä   r   rQ   rY   r8   ÚimplÚsupports_populationrö   r÷   r¬  r6   Ú_entity_isar  rŽ  rò   ro   r	  rX   r   r}  rÖ   rk   rC   Ú_create_collection_loaderÚ_create_scalar_loader)rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   Ú_rò  re  rF  rs  r}   s                  r=   r…   z#SubqueryLoader.create_row_processor¬  sT  € ñ Ø×%Ñ%×/Ñ/Ð;Ø×%Ñ%×/Ñ/×6Ò6ä× Ñ ðMð ô	ð × Ò Ø×;Ñ;ØØØØØØØØó	ð 	ð #×7Ñ7Ø�T˜7 D§O¡Oó
Ñˆˆ:�q˜!ñ Øä˜'×/Ñ/Ô1FÔGð à�{‰{×(Ñ(¨¯©Ñ2×7Ñ7×KÒKÜ×,Ñ,ð@ØBFñGóð ô ˆt‹9˜Š>Ü×'Ñ'¨×(@Ñ(@À$Ç+Á+ÔNØÜ×%Ñ% d¨2¡h°·±Ô<Øà×-Ñ-ØØØØ�‰HØØó
ˆð ˆ<Øà�|‰|Ð#Ð#Ð#à�D×(Ñ(Ñ)ˆà×)Ñ)×7Ñ7ˆ
ð
 —h‘h˜w×1Ñ1°=ÓAˆØÐØ×/Ñ/°¸Ó>ˆKØ�H‰H�W×'Ñ'¨¸ÔDáÙ6@ÓA±j°˜'Ÿ/™/¨!Ó,°jˆJÐAà�<Š<Ø×*Ñ*Ø˜ ¨j¸*õð ×&Ñ&Ø˜ ¨j¸*õùò Bs   ÈIc                ó6  ‡ ‡‡‡— |j                  |«      Šˆˆ ˆfd„Šˆˆ fd„}|d   j                  ‰ j                  ‰f«       |d   j                  ‰ j                  |f«       |j                  r+|d   j                  ‰ j                  ‰j                  f«       y y )Nc                ó�   •—  ‰j                    ‰|«      d«      }| j                  ‰j                  «      j                  | ||«       y )Nr€   )rX   r÷  r8   rø  )rì   r  r  Ú
collectionrs  rq   Útuple_getters       €€€r=   Úload_collection_from_subqzKSubqueryLoader._create_collection_loader.<locals>.load_collection_from_subq  s<   ø€ Ø(˜Ÿ™©°cÓ):¸BÓ?ˆJØ�N‰N˜4Ÿ8™8Ó$×8Ñ8Ø�u˜jõr?   c                ó8   •— ‰j                   |vr ‰| ||«       y y r5   ©r8   )rì   r  r  rŸ  rq   s      €€r=   Ú&load_collection_from_subq_existing_rowzXSubqueryLoader._create_collection_loader.<locals>.load_collection_from_subq_existing_row  s    ø€ Ø�x‰x˜uÑ$Ù)¨%°¸Õ<ð %r?   rÇ   ÚexistingÚeager©Ú_tuple_getterrO   r8   Úinvoke_all_eagersrÏ  )	rq   r‚   rƒ   rs  rF  r„   r¢  rŸ  rž  s	   `  `   @@r=   r˜  z(SubqueryLoader._create_collection_loader  s�   û€ ð ×+Ñ+¨JÓ7ˆö	õ	=ð 	�5Ñ× Ñ  $§(¡(Ð,EÐ!FÔGØ�:Ñ×%Ñ%Ø�X‰XÐ=Ð>ô	
ð ×$Ò$Ø�wÑ×&Ñ&¨¯©°+×2DÑ2DÐ'EÕFð %r?   c                ó6  ‡ ‡‡‡— |j                  |«      Šˆˆ ˆfd„Šˆˆ fd„}|d   j                  ‰ j                  ‰f«       |d   j                  ‰ j                  |f«       |j                  r+|d   j                  ‰ j                  ‰j                  f«       y y )Nc                óæ   •—  ‰j                    ‰|«      d«      }t        |«      dkD  rt        j                  d‰z  «       |d   }| j	                  ‰j
                  «      j                  | ||«       y )Nr5   r
   úLMultiple rows returned with uselist=False for eagerly-loaded attribute '%s' r   )rX   r¬  r   r­  r÷  r8   rø  )rì   r  r  r�  Úscalarrs  rq   rž  s        €€€r=   Úload_scalar_from_subqzCSubqueryLoader._create_scalar_loader.<locals>.load_scalar_from_subq-  sk   ø€ Ø(˜Ÿ™©°cÓ):¸GÓDˆJÜ�:‹ Ò"Ü—	‘	ðGØIMñNôð
   ‘]ˆFØ�N‰N˜4Ÿ8™8Ó$×8Ñ8¸ÀÀvÕNr?   c                ó8   •— ‰j                   |vr ‰| ||«       y y r5   r¡  )rì   r  r  r¬  rq   s      €€r=   Ú"load_scalar_from_subq_existing_rowzPSubqueryLoader._create_scalar_loader.<locals>.load_scalar_from_subq_existing_row8  s    ø€ Ø�x‰x˜uÑ$Ù% e¨U°CÕ8ð %r?   rÇ   r£  r¤  r¥  )	rq   r‚   rƒ   rs  rF  r„   r®  r¬  rž  s	   `  `   @@r=   r™  z$SubqueryLoader._create_scalar_loader(  s‘   û€ ð ×+Ñ+¨JÓ7ˆö		Oõ	9ð 	�5Ñ× Ñ  $§(¡(Ð,AÐ!BÔCØ�:Ñ×%Ñ%Ø�X‰XÐ9Ð:ô	
ð ×$Ò$Ø�wÑ×&Ñ&¨¯©°+×2DÑ2DÐ'EÕFð %r?   )r†   r‡   rˆ   rŠ   rn   r¡   r  r=  rH  rS  rY  r`  r}  rŽ  r…   r˜  r™  r‹   rŒ   s   @r=   r   r   ¸  s^   ø„ ð  €Iô:ò'ò
/LòbbòH-1ò^4òl òD÷2ñ 2òhFòPcòJGö.Gr?   r   Újoinedc                  ó~   ‡ — e Zd ZdZdZˆ fd„Zd„ Z	 	 	 dd„Zd„ Zd„ Z	d„ Z
d	„ Z	 	 d	 	 	 dd
„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚJoinedLoaderz[Provide loading behavior for a :class:`.Relationship`
    using joined eager loading.

    rÜ  c                ó\   •— t         ‰| �  ||«       | j                  j                  | _        y r5   ræ  rp   s      €r=   rn   zJoinedLoader.__init__O  rç  r?   c                óX   — | j                   j                  d«      j                  |«       y ré  rë  r»   s     r=   r¡   z!JoinedLoader.init_class_attributeS  rì  r?   c	                ó<  — |j                   j                  sy|r9|j                  �-|j                  j                  rt	        j
                  dd«       n| j                  rd|_        || j                     }d}
|r| j                  |||j                  «      nd}|dur| j                  |||||«      \  }}}n…|j                  |j                  d«      sE| j                  r|j                  dz  | j                  kD  ry|j                  | j                   «      ry| j#                  ||||||||«      \  }}}}d|_        |j'                  |j                  dd«      }|�t)        |«      j*                  }
nd}
|| j,                     }t/        j0                  || j                   |||||
| j                   |¬	«	       t        j2                  j5                  |j6                  «      }|r:|�t9        j:                  d
«      ‚|j6                  D �cg c]  }|€Œ|‘Œ	 c}|_        yyc c}w )z@Add a left outer join to the statement that's being constructed.Nz®The joinedload loader option is not compatible with DML statements such as INSERT, UPDATE.  Only SELECT may be used.This warning will become an exception in a future release.r�  TFrÏ  r'   r  )Úwith_polymorphicÚparentmapperÚchained_from_outerjoinz–Detected unaliased columns when generating joined load.  Make sure to use aliased=True or flat=True when using joined loading with with_polymorphic().)rÓ   rî  r’  r“  r   r”  rC   Úmulti_row_eager_loadersro   Ú_init_user_defined_eager_procr   Ú$_setup_query_on_user_defined_adapterrÙ  rÜ  rÚ  rÛ  r`   Ú_generate_row_adapterÚeager_adding_joinsrX   r)   Úwith_polymorphic_mappersr  r   Ú_setup_entity_queryÚNONE_SETr×   Úsecondary_columnsrö   r÷   )rq   rv   rw   rx   ry   rz   r{   r¶  r·  r|   rµ  Úuser_defined_adapterÚclausesÚadd_to_collectionrŒ  Ú	has_nonesr}   s                    r=   r~   zJoinedLoader.setup_queryX  sV  € ð ×,Ñ,×?Ò?ØáØ×'Ñ'Ð3Ø×'Ñ'×.Ò.ä× Ñ ðMð õ	ð �\Š\Ø48ˆMÔ1à�D×(Ñ(Ñ)ˆàÐñ ð ×.Ñ.Ø˜¨×(@Ñ(@ôð ð 	ð   uÑ,ð ×9Ñ9ØØØØØ$óñ	ØØÙ!ð  —=‘= ×!9Ñ!9¸8ÔDØ—?’?Ø—{‘{ Q‘¨¯©Ò8ØØ×)Ñ)¨$¯+©+Ô6Øð ×*Ñ*ØØØØØØ!ØØ&ó	ñØØØ!Ø&ð 04ˆMÔ,àŸ8™8Ø×$Ñ$Ð&=¸tó
Ðð Ð'Ü&Ø ó ç&Ñ&ñ ð  $Ðà�D—K‘KÑ ˆä×#Ñ#ØØ�K‰KØØØØØ-ØŸ™Ø#9õ
	
ô —M‘M×.Ñ.¨}×/NÑ/NÓOˆ	áØÐ+Ü×0Ñ0ðIóð ð  -×>Ò>ó3Ù>˜!À!Á-’AÐ>ñ3�Õ/ð ùò3s   ÈHÈHc                ó,  — d|j                   vry|j                  j                  }|j                  |j                  dd«      }|dur|S |j                   d   }|dd  \  }}|�|t        |t        «      r|j                  j                  |«      }t        j                  t        j                  j                  |j                  ||j                  j                  d¬«      }n£|j                  |j                  d«      ra|j                  |j                  d«      }	t        j                  t        j                  j                   |	|j                  j                  ¬«      }n&|j"                  j                  |j                  d «      }|j%                  |d|«       |S )NÚeager_from_aliasFÚ user_defined_eager_row_processoréþÿÿÿ)Ú
selectabler0  Úlimit_on_entityr  )r0  )rÙ   rx   rQ   rX   r   rä   r   r  Úaliasr6   Ú
ORMAdapterÚ_TraceAdaptRoleÚJOINEDLOAD_USER_DEFINED_ALIASr`   r:  rÙ  Ú JOINEDLOAD_PATH_WITH_POLYMORPHICÚ_polymorphic_adaptersrÖ   )
rq   ry   rv   Útarget_attributesrx   rz   rË  Úroot_mapperr:   rŒ  s
             r=   r¹  z*JoinedLoader._init_user_defined_eager_procÚ  sx  € ð  W×%7Ñ%7Ñ7àà�|‰|×"Ñ"ˆð —(‘(Ø×$Ñ$Ð&HÈ%ó
ˆð ˜%ÑàˆNð ×"Ñ"Ð#5Ñ6ˆØ   ˜IÑˆ�TàÐÜ˜%¤Ô%ØŸ™×)Ñ)¨%Ó0�Ü×)Ñ)Ü×(Ñ(×FÑFØ—‘Ø Ø ŸK™K×;Ñ;Ø %ô‰Gð �}‰}Ø×(Ñ(Ð*Aôð $(§8¡8Ø!×,Ñ,Ð.Eó$Ð ô #×-Ñ-Ü×,Ñ,×MÑMØ$Ø $§¡× ?Ñ ?ô‘ð (×=Ñ=×AÑAØ—K‘K ó�ð 	�‰ØØ.Øô	
ð ˆr?   c                óî   — |j                  |«      }|r1|r/|j                  |«      }|j                  |j                  d|«       n!|r|}|j                  |j                  d|«       |j                  }|||fS )NrÇ  )Ú_get_entity_clausesÚwraprÖ   r   Úprimary_columns)rq   r‚   r  rx   rz   rÁ  rÃ  s          r=   rº  z1JoinedLoader._setup_query_on_user_defined_adapter	  sˆ   € ð
 ×,Ñ,¨WÓ5ˆáÑ+Ø#7×#<Ñ#<¸WÓ#EÐ Ø�H‰HØ×"Ñ"Ø2Ø$õñ
 Ø#*Ð Ø�H‰HØ×"Ñ"Ø2Ø$ôð $×3Ñ3ÐØ# WÐ.?Ð?Ð?r?   c	                ó^  — |j                  |j                  dd «      }	|	r|	}
ngt        | j                  «      }|j                  r|j
                  }nd }t        j                  | j                  |�|j                  d¬«      nd dd¬«      }
t        |
«      }|j                  d| ft        j                  t        j                  j                  || j                  j                  ddd¬«      }|j                  sJ ‚|�0|j                  j                  d| j                   j"                  «      n| j                   j"                  }|sd}|j$                  j'                  | j(                  ||||||||r|j*                  nd	f	«       |j,                  }|j/                  |j                  d
|«       ||||fS )Nr  T)Úflat)rË  rØ  r  Újoinedloader_ormadapterF)r0  Úadapt_requiredÚallow_label_resolveÚanonymize_labelsÚ	innerjoinr€   Úeager_row_processor)rX   r   r)   r  r!  rÉ  r6   r&   r`   Ú_anonymous_fromclauseÚ_memorÌ  rÍ  ÚJOINEDLOAD_MEMOIZED_ADAPTERr:  rÙ   ro   rÝ  Úcreate_eager_joinsrO   Ú_create_eager_joinr·   rÀ  rÖ   )rq   rv   r  rx   ry   rz   r{   r¶  r·  rŒ  Úto_adaptÚinspÚalt_selectableÚto_adapt_insprÂ  rÝ  rÃ  s                    r=   r»  z"JoinedLoader._generate_row_adapter,	  s½  € ð  Ÿ8™8Ø×$Ñ$Ð&=¸tó
Ðñ Ø'‰Hä˜4Ÿ;™;Ó'ˆDØ×$Ò$Ø!%§¡‘à!%�ä×,Ñ,Ø—‘ð &Ð1ð #×8Ñ8¸dÐ8ÔCààØ $ô	ˆHô   Ó)ˆà×%Ñ%Ø&¨Ð-Ü×ÑÜ×$Ñ$×@Ñ@ØØŸ™×7Ñ7ØØ %Ø!ð &ó 	
ˆð ×'Ò'Ð'Ð'ð Ð"ð ×Ñ×"Ñ" ;°×0DÑ0D×0NÑ0NÔOà×%Ñ%×/Ñ/ð 	ñ ð &*Ð"à×(Ñ(×/Ñ/à×'Ñ'ØØØØØØØ&Ù+2�×'Ò'¸ð
ô	
ð *×;Ñ;ÐØ�‰�×)Ñ)Ð+@À'ÔJà˜Ð!2Ð4JÐJÐJr?   c
           	     ó®  ‡ — |€|j                   }
n|}
|j                  xr |j                  }d }||j                  vrv|st|j                  rht        j                  |j                  |j                  «      }t        |«      dkD  rt        j                  d«      ‚|r|j                  |d      }|d   |}}|€||j                  }}|j                  j                  |«      }|rÇt        |dd«      rn|j                  j                  |
j                  ‰ j                   «      r|
n‰ j                   «      }t        |j"                  ‰ j$                  ‰ j&                  «      }nXt        t)        j*                  ‰ j                   |j                  d¬«      ‰ j$                  ‰ j&                  «      }n‰ j&                  }|j,                  sJ ‚| xs" | xs |dk(  xs |j.                  j0                  }|	}|j2                  j5                  d	‰ j                   fd
«      }|r|t7        ˆ fd„|D «       «      z  }|rwt)        j8                  ||j                  || xs6 |j.                  j0                  xs |xr t;        |t<        j>                  «      ‰ j                   |‰ j                      |¬«      }n‰ jA                  ||d   ||||«      }||j                  |<   |j                  |_!        |s�t        jD                  ‰ j&                  jF                  «      D ]U  }|
jH                  jJ                  jM                  |«      sŒ)|r|jN                  |   }|jQ                  ||jR                  «       ŒW ‰ j&                  jT                  r_|xjV                  t7        |jX                  j[                  t]        j^                  ‰ j&                  jT                  «      «      «      z  c_+        y y )Nr
   z€Can't identify which query entity in which to joined eager load from.   Please use an exact match when specifying the join path.r   r!  FTr  ÚunnestedÚadditional_entity_criteriar€   c              3  ól   •K  — | ]+  }|j                   r|j                  ‰j                  «      –— Œ- y ­wr5   )Úpropagate_to_loadersÚ_resolve_where_criteriar`   )r°   Úaerq   s     €r=   r²   z2JoinedLoader._create_eager_join.<locals>.<genexpr>ã	  s1   øè ø€ ð )á4�BØ×*Ò*ð ×*Ñ*¨4¯;©;×7Ù4ùs   ƒ14©ÚisouterÚ
_left_memoÚ_right_memor·   rÈ  )0r`   r¸  Ú_should_nest_selectableÚeager_joinsÚfrom_clausesr5  Ú#find_left_clause_that_matches_givenrÉ  r¬  rö   r÷   Ú
setdefaultr
  Úaliased_inspÚ_entity_for_mapperr  rQ   r  r8   ro   r6   r&   r!  r  Úrepresents_outer_joinÚglobal_attributesrX   r^  Ú_ORMJoinrä   r+   ÚJoinÚ_splice_nested_inner_joinÚstop_onÚ_find_columnsÚprimaryjoinÚpersist_selectabler}   Úcontains_columnrk   ru   rÖ  r3  r]  Ú_target_adapterÚcopy_and_processr   r4  )rq   rv   rw   rx   rz   r¶  rÂ  rÝ  r·  rp  rî   Úshould_nest_selectableÚquery_entity_keyÚindexesÚclauseÚdefault_towrapÚtowrapÚefmÚonclauseÚattach_on_outsideÚextra_join_criteriarê  Ú	eagerjoinr§   s   `                       r=   rã  zJoinedLoader._create_eager_join{	  sÊ  ø€ ð ÐØ&×-Ñ-‰Kà&ˆKð ×1Ñ1ò 6Ø×5Ñ5ð 	ð
  Ðð  × 9Ñ 9Ñ9Ù*Ø×*Ò*ä×BÑBØ×*Ñ*¨L×,CÑ,CóˆGô �7‹|˜aÒô ×0Ñ0ð0óð ñ Ø&×3Ñ3°G¸A±JÑ?�ð
 4;¸1±:¸v .Ð àÐ#àØ×'Ñ'ð -Ðð
 ×*Ñ*×5Ñ5Ø˜nó
ˆñ Ü�wÐ 2°EÔ:ð
 ×*Ñ*×=Ñ=à"—‘ t§{¡{Ô3ñ  àŸ™ó�ô # 3§:¡:¨t¯x©x¸×9MÑ9MÓN‘ä"Ü×)Ñ)ØŸ™ W×%7Ñ%7Èôð —H‘HØ×(Ñ(ó‘ð ×+Ñ+ˆHà×'Ò'Ð'Ð'ð 'Ð&ò >Øˆ}ò>à˜JÑ&ò>ð ×'Ñ'×=Ñ=ð	 	ð -ÐØ%2×%DÑ%D×%HÑ%HØ)¨4¯;©;Ð7¸ó&
Ð"ñ &Ø¤5ó )á4ó)ó $ñ Ðñ ä ×)Ñ)ØØ×$Ñ$ØØ%˜ò MØ×+Ñ+×AÑAòMà*ÒK¬z¸&Ä#Ç(Á(Ó/KØŸ;™;Ø  §¡Ñ-Ø 3ô
‰Ið ×6Ñ6Ø�d˜2‘h ¨°Ð;NóˆIð 7@ˆ×!Ñ!Ð"2Ñ3ð )×3Ñ3ˆ	Ôáô  ×-Ñ-Ø×$Ñ$×0Ñ0ö�ð ×1Ñ1×3Ñ3×CÑCÀCÕHÙØ%Ÿo™o¨cÑ2˜Ø!×?Ñ?Ø˜]×:Ñ:õðð ×Ñ×(Ò(Ø×(Ò(¬EØ×*Ñ*×;Ñ;Ü—L‘L ×!5Ñ!5×!>Ñ!>Ó?óó-ñ Ö(ð )r?   c	           
     ó¤  — ||d   u sJ ‚|du rt        |t        j                  «      sJ ‚t        |t        j                  j
                  «      r!| j                  |||j                  ||||«      S t        |t        j                  «      �rQ|j                  }	| j                  |||j                  ||||	�|	d   j                  nd ¬«      }
|
�|j                  s|
j                  s|j                  |
«      }nBt        j                  |j                  |
|j                  |j                  |j                  ¬«      }|
j                   |_        |S | j                  |||j                  ||||j                  |	¬«      }
|
�Ut        j                  |
|j                  |j                  |j                  |j                  ¬«      }|
j                   |_        |S |du r	 J d«       ‚y |j#                  |«      sy |r-t%        |«      d	kD  r|d
   |u sJ ‚|dd |j&                  dd k7  ry t        j                  ||j(                  |d|||d   j                     |¬«      S )NrÈ  FrÍ  )Úentity_inside_join_structure)rð  rñ  )r  Údetected_existing_path)rð  rò  z9assertion failed attempting to produce joined eager loadsr'   éýÿÿÿr   rï  )rä   r6   rü  r+   rÉ  ÚFromGroupingrþ  Úelementrò  Úrightr`   rð  Ú_splice_into_centerÚleftr  rñ  r  r  r¬  rx   rø  )rq   rx   Úentity_we_want_to_splice_ontoÚjoin_objrÂ  r  rp  r  r  Újoin_right_pathÚtarget_joinr  s               r=   rþ  z&JoinedLoader._splice_nested_inner_join
  s—  € ð* -°°R±Ñ8Ð8Ð8à'¨5Ñ0Ü˜h¬×(9Ñ(9Ô:Ð:Ð:ä�h¤§¡× ;Ñ ;Ô<à×1Ñ1ØØ-Ø× Ñ ØØØØ,óð ô ˜¤(×"3Ñ"3Õ4ð '×2Ñ2ˆOð ×8Ñ8ØØ-Ø—‘ØØØð 'Ð2ð $ BÑ'×.Ò.àð 9ó ˆKð Ð&ð  ×'Ò'°×0CÒ0CØ (× <Ñ <¸[Ó I‘Iä (× 1Ñ 1Ø Ÿ™Ø#Ø ×)Ñ)Ø (× 0Ñ 0Ø#+×#6Ñ#6ô!�Ið -8×,GÑ,G�	Ô)Ø Ð ð #×<Ñ<ØØ1Ø—M‘MØØØ"Ø19×1DÑ1DØ+:ð =ó 	�ð Ð*Ü (× 1Ñ 1Ø#Ø Ÿ™Ø ×)Ñ)Ø (× 0Ñ 0Ø$,×$8Ñ$8ô!�Ið 1<×0KÑ0K�IÔ-Ø$Ð$ð ,¨uÑ4àðOàNóOØàð -×0Ñ0Ð1MÔNØñ "¤cÐ*@Ó&AÀAÒ&Eð
 *¨"Ñ-Ð1MÑMÐMÐMðH & a¨Ð+¨t¯y©y¸¸2¨Ò>Øä× Ñ ØØ× Ñ ØØØ3Ø˜T "™XŸ_™_Ñ-Ø*ô
ð 	
r?   c                ój  — |j                   }|r| j                  |||j                  «      nd}|durE|}|j                  r|r|j	                  |j                  «      }n8|j                  r,|j                  }n|j                  |j                  d«      }|€y| j                  j                  ||«      r|S y)NFrÞ  )rv   r¹  r   Úcompound_eager_adapterrÕ  rX   r`   Ú_result_has_identity_key)	rq   r‚   rƒ   rz   rx   ry   rv   rÁ  Ú	decorators	            r=   Ú_create_eager_adapterz"JoinedLoader._create_eager_adapterÇ
  sÆ   € Ø×-Ñ-ˆñ ð ×.Ñ.Ø˜¨×(:Ñ(:ôð ð 	ð   uÑ,Ø,ˆIð ×3Ò3¹	Ø%ŸN™NØ!×8Ñ8ó‘	ð ×5Ò5Ø)×@Ñ@‘	àŸ™Ø×(Ñ(Ð*?óˆIð Ð Øà�;‰;×/Ñ/°¸	ÔBØÐð r?   c	           
     ó¢  — |j                   j                  j                  sy | j                  j                  | j
                     j                  j                  st        j                  d| z  «      ‚| j                  rd|_        || j                     }	| j                  ||||	|«      }
|
durs| j
                  }t        j                  || j                   |||	| j"                     |
«      }| j                  s| j%                  ||||«       y | j'                  ||||«       y | j                  j)                  d«      j+                  ||||||||«       y )Nr‘  TFrê  )rv   rÓ   rî  rQ   rY   r8   r•  r–  rö   r÷   rC   Úloaders_require_uniquingro   r"  r   Ú_instance_processorr`   r  r™  r˜  rË   r…   )rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   Úour_pathÚeager_adapterr8   Ú	_instances                r=   r…   z!JoinedLoader.create_row_processorë
  sN  € ð ×$Ñ$×4Ñ4×GÒGØà�{‰{×(Ñ(¨¯©Ñ2×7Ñ7×KÒKÜ×,Ñ,ð@ØBFñGóð ð
 �<Š<Ø/3ˆGÔ,à˜×,Ñ,Ñ-ˆà×2Ñ2Ø�V˜W h°ó
ˆð  Ñ%Ø—(‘(ˆCä×3Ñ3ØØ—‘ØØØ˜Ÿ™Ñ%ØóˆIð —<’<Ø×*Ñ*¨7°C¸ÀJÕOà×.Ñ.Ø˜S )¨Zõð × Ñ ×.Ñ.Ø%óç"Ñ"ØØØØØØØØõ	r?   c                ó
  ‡‡‡— ˆˆˆfd„}ˆˆˆfd„}ˆfd„}|d   j                  | j                  |f«       |d   j                  | j                  |f«       ‰j                  r!|d   j                  | j                  |f«       y y )Nc                óº   •— t        j                  | |‰«      }t        j                  |d«      }|‰j                   | ‰f<    ‰|«      }|�|j	                  |«       y y ©NÚappend_without_event©r   r  r   ÚUniqueAppenderrO   )	rì   r  r  r�  Úresult_listÚinstr(  r‚   r8   s	         €€€r=   Ú#load_collection_from_joined_new_rowzSJoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_new_row*  sg   ø€ ô $×9Ñ9¸%ÀÈÓLˆJÜ×-Ñ-ØÐ2óˆKð 0;ˆG×Ñ  s˜|Ñ,Ù˜S“>ˆDØÐØ×"Ñ" 4Õ(ð  r?   c                óþ   •— | ‰f‰j                   v r‰j                   | ‰f   }n>t        j                  | |‰«      }t        j                  |d«      }|‰j                   | ‰f<    ‰|«      }|�|j	                  |«       y y r+  r-  )	rì   r  r  r/  r�  r0  r(  r‚   r8   s	         €€€r=   Ú(load_collection_from_joined_existing_rowzXJoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_existing_row7  s’   ø€ Ø�sˆ|˜w×1Ñ1Ñ1Ø%×0Ñ0°%¸°Ñ>‘ô (×=Ñ=Ø˜5 #ó�
ô #×1Ñ1ØÐ 6ó�ð 4?�×"Ñ" E¨3 <Ñ0Ù˜S“>ˆDØÐØ×"Ñ" 4Õ(ð  r?   c                ó   •—  ‰|«       y r5   r€   ©rì   r  r  r(  s      €r=   Ú load_collection_from_joined_execzPJoinedLoader._create_collection_loader.<locals>.load_collection_from_joined_execJ  ó
   ø€ Ù�c�Nr?   rÇ   r£  r¤  ©rO   r8   r§  )rq   r‚   r8   r(  r„   r1  r3  r6  s    ```    r=   r˜  z&JoinedLoader._create_collection_loader)  s†   ú€ ö	)ö	)ô&	ð 	�5Ñ× Ñ Ø�X‰XÐ:Ð;ô	
ð 	�:Ñ×%Ñ%Ø�X‰XÐ?Ð@ô	
ð ×$Ò$Ø�wÑ×&Ñ&Ø—‘Ð;Ð<õð %r?   c                ó  ‡ ‡‡— ˆˆfd„}ˆˆˆ fd„}ˆfd„}|d   j                  ‰ j                  |f«       |d   j                  ‰ j                  |f«       |j                  r!|d   j                  ‰ j                  |f«       y y )Nc                ó   •—  ‰|«      |‰<   y r5   r€   )rì   r  r  r(  r8   s      €€r=   Úload_scalar_from_joined_new_rowzKJoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_new_rowY  s   ø€ ñ # 3›ˆE�#ŠJr?   c                ój   •—  ‰|«      }‰|v r!||‰   urt        j                  d‰z  «       y y ||‰<   y )Nrª  )r   r­  )rì   r  r  r£  r(  r8   rq   s       €€€r=   Ú$load_scalar_from_joined_existing_rowzPJoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_existing_row^  sM   ø€ ñ ! “~ˆHð �e‰|Ø 5¨¡:Ñ-Ü—I‘IðKàñõð .ð &��c’
r?   c                ó   •—  ‰|«       y r5   r€   r5  s      €r=   Úload_scalar_from_joined_execzHJoinedLoader._create_scalar_loader.<locals>.load_scalar_from_joined_execq  r7  r?   rÇ   r£  r¤  r8  )rq   r‚   r8   r(  r„   r;  r=  r?  s   ` ``    r=   r™  z"JoinedLoader._create_scalar_loaderX  s�   ú€ õ	(ö
	&ô&	ð 	�5Ñ× Ñ  $§(¡(Ð,KÐ!LÔMØ�:Ñ×%Ñ%Ø�X‰XÐ;Ð<ô	
ð ×$Ò$Ø�wÑ×&Ñ&Ø—‘Ð7Ð8õð %r?   )NNF)FN)r  z#Union[Mapper, None, Literal[False]]r  z$Optional[path_registry.PathRegistry])r†   r‡   rˆ   r‰   rŠ   rn   r¡   r~   r¹  rº  r»  rã  rþ  r"  r…   r˜  r™  r‹   rŒ   s   @r=   r±  r±  D  sƒ   ø„ ñð
 €Iô:ò'ð ØØ$ó@òD7òr@ò2MKò^]ðR ØGKðk
ð'
ðk
ð !Eók
òZ"òH<ò|-ö^#r?   r±  Úselectinc                  ó€   ‡ — e Zd ZdZ ej
                  dg d¢«      ZdZˆ fd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ xZS )ÚSelectInLoader)rÜ  Ú	omit_joinÚ_parent_aliasÚ_query_infoÚ_fallback_query_infoÚ	queryinfo)Úload_only_childÚload_with_joinÚin_exprÚpk_colsÚzero_idxÚchild_lookup_colsiô  c                óÐ  •— t         ‰| �  ||«       | j                  j                  | _        | j                  j                  t
        j                  u }| j                  j                  �| j                  j                  | _        n~| j                  j                  d«      }|r|j                  | _        nO| j                  j                  d   j                  |j                  dd| j                  j                  ¬«      | _        | j                  rC|r+| j                  «       | _        | j#                  «       | _        y | j'                  «       | _        y | j#                  «       | _        y )Nrê  r   TFr-  )rm   rn   ro   rÜ  r]   r   rA  rC  rË   r   rQ   r9  r¯   r  r:  Ú_init_for_omit_join_m2orE  Ú_init_for_joinrF  Ú_init_for_omit_join)rq   rQ   rr   Úis_m2orü  rs   s        €r=   rn   zSelectInLoader.__init__—  s$  ø€ Ü‰Ñ˜ Ô.Ø×.Ñ.×9Ñ9ˆŒØ×%Ñ%×/Ñ/´:×3GÑ3GÐGˆà×Ñ×)Ñ)Ð5Ø!×1Ñ1×;Ñ;ˆD�Nà×-Ñ-×;Ñ;Ø%óˆJñ Ø!+×!3Ñ!3�•à!%§¡×!8Ñ!8¸Ñ!;×!CÑ!CØ×-Ñ-Ø $Ø!&Ø $§¡× ?Ñ ?ð	 "Dó "�”ð �>Š>ÙØ#'×#?Ñ#?Ó#A�Ô Ø,0×,?Ñ,?Ó,A�Õ)à#'×#;Ñ#;Ó#=�Õ à#×2Ñ2Ó4ˆDÕr?   c                ó†  ‡ ‡— t        ‰ j                  j                  j                  «      Š‰j	                  ˆˆ fd„t        ‰«      D «       «       ‰ j                  j                  D �cg c]  }|‰v sŒ‰|   ‘Œ c}x}}t        |«      dkD  rt        j                  |Ž }d}n|d   }d}‰ j                  dd|||d «      S c c}w )Nc              3  ó‚   •K  — | ]6  }‰j                   j                  j                  |d «      D ]  }|‰|   f–— Œ Œ8 y­w)r€   N)rQ   r:  rX   )r°   rñ   ÚequivÚpk_to_fkrq   s      €€r=   r²   z5SelectInLoader._init_for_omit_join.<locals>.<genexpr>¹  sF   øè ø€ ð 
á#�ØŸ™×8Ñ8×<Ñ<¸QÀÖC�ð �H˜Q‘KÔ àCð !Ù#ùs   ƒ<?r
   Fr   T)rk  ro   r1  Úlocal_remote_pairsr   r;  rQ   rœ   r¬  r+   Útuple_Ú
query_info)rq   r§   rK  Úfk_colsrJ  rL  rV  s   `     @r=   rQ  z"SelectInLoader._init_for_omit_joinµ  sÅ   ù€ ÜØ× Ñ ×0Ñ0×CÑCó
ˆð 	�‰ô 
ä˜(”^ó
ô 	
ð &*§[¡[×%<Ò%<ó
Ù%<˜cÀÀxÂˆH�S‹MÐ%<ñ
ð 	
ˆ�'ô ˆw‹<˜!ÒÜ—j‘j 'Ð*ˆGØ‰Hà˜a‘jˆGØˆHà�‰˜u e¨W°g¸xÈÓNÐNùò
s   Á(	B>Á2B>c                ó&  — | j                   j                  }t        |«      dkD  rt        j                  |Ž }d}n|d   }d}| j
                  j                  d«      }|D �cg c]  }|j                  |   ‘Œ }}| j                  dd||||«      S c c}w )Nr
   Fr   Trê  )	r`   rœ   r¬  r+   rX  ro   rË   r#  rY  )rq   rK  rJ  rL  rü  r{  Úlookup_colss          r=   rO  z&SelectInLoader._init_for_omit_join_m2oË  s˜   € Ø—+‘+×)Ñ)ˆÜˆw‹<˜!ÒÜ—j‘j 'Ð*ˆGØ‰Hà˜a‘jˆGØˆHà×)Ñ)×7Ñ7Ð8MÓNˆ
ÙAHÓIÁ¸2�z×2Ñ2°2Ó6ÀˆÐIà�‰Ø�%˜ '¨8°[ó
ð 	
ùò Js   Á Bc                ób  — t        | j                  j                  «      | _        t	        | j                  «      }| j                  j
                  D �cg c]  }|j                  |«      ‘Œ }}t        |«      dkD  rt        j                  |Ž }d}n|d   }d}| j                  dd|||d «      S c c}w )Nr
   Fr   T)r&   rQ   r\   rD  r)   rœ   Ú_adapt_elementr¬  r+   rX  rY  )rq   Úpa_inspr§   rK  rJ  rL  s         r=   rP  zSelectInLoader._init_for_joinÛ  s¨   € Ü)¨$¯+©+×*<Ñ*<Ó=ˆÔÜ˜$×,Ñ,Ó-ˆà37·;±;×3JÒ3Jó
Ù3J¨CˆG×"Ñ" 3Õ'Ð3Jð 	ð 
ô ˆw‹<˜!ÒÜ—j‘j 'Ð*ˆGØ‰Hà˜a‘jˆGØˆHØ�‰˜u d¨G°W¸hÈÓMÐMùò
s   ÁB,c                óX   — | j                   j                  d«      j                  |«       y ré  rë  r»   s     r=   r¡   z#SelectInLoader.init_class_attributeé  rì  r?   c	                óN  — |j                   r| j                  ||||||||«      S | j                  |||| j                  ¬«      \  }	}
}}|
sy |j                  j
                  j                  sy | j                  j                  | j                     j                  j                  st        j                  d| z  «      ‚t        |«      dk(  r+t        j                   |j"                  | j                  «      s%y t        j                   |d   | j                  «      sy |	}|| j$                     }|j'                  |j(                  dd «      }|�t+        |«      }n| j,                  }t.        j0                  j3                  ||| j                  | j$                  | j4                  ||||«	       y )Nrä  r‘  r
   rÍ  r  )rÈ   r	  rá  rÜ  rv   rÓ   rî  rQ   rY   r8   r•  r–  rö   r÷   r¬  r6   r—  r  ro   rX   r   r)   r  r   r×  rð  rñ  )rq   r‚   rw   rx   ry   r`   rƒ   rz   r„   r°  rò  rs  rÌ  Úselectin_pathrß  rŒ  rM  s                    r=   r…   z#SelectInLoader.create_row_processorî  s¥  € ð × Ò Ø×;Ñ;ØØØØØØØØó	ð 	ð  ×%Ñ%Ø�T˜7¨t¯©ð &ó 
ñ	
ØØØØñ
 Øà×$Ñ$×4Ñ4×GÒGØà�{‰{×(Ñ(¨¯©Ñ2×7Ñ7×KÒKÜ×,Ñ,ð@ØBFñGóð ô ˆt‹9˜Š>Ü×'Ñ'¨×(@Ñ(@À$Ç+Á+ÔNØÜ×%Ñ% d¨2¡h°·±Ô<Øà&ˆà˜4×/Ñ/Ñ0ˆð 'Ÿ?™?Ø×ÑÐ 7¸ó
Ðð Ð'Ü&Ð'7Ó8Ñà#Ÿ{™{Ðä×Ñ×*Ñ*ØØØ�K‰KØ× Ñ Ø×ÑØØØØõ
	
r?   c	                ó	  ‡ ‡‡ ‡!— |r‰ j                   |vry ‰ j                  }	|	j                  r­t        j                  t
        «      }
g }‰ j                  Š |D ]�  \  Š}‰j                  Š!t        ˆ ˆˆ!fd„|	j                  D «       «      }t        j                  |v r‰ j                  }	 n2d |vr|
|   j                  ‰‰!|f«       Œn|j                  ‰‰!|f«       Œƒ |	j                  s/|D ��cg c]"  \  }}|j                   d   ||j                  |f‘Œ$ }
}}|	j                  }|	j                  }|	j                   s;|j"                  r/|D �cg c]  }|j%                  |«      ‘Œ }}|j%                  |«      }t'        j(                  dg|¢­Ž }|j+                  «       }|j+                  «       }t-        j.                  ||gt0        t2        j4                  d|dœ¬«      }|	j                   s|j7                  |«      }na|j7                  ‰ j8                  «      j;                  t=        ‰ j8                  ‰ j>                  j                   «      jA                  |«      «      }|jC                  |jE                  tG        jH                  d«      «      «      }|jJ                  jL                  }|‰ j>                     }||jN                  u r|jP                  }nP|jP                  }|jN                  jP                  }tS        ||«      D ��cg c]  \  }}|jU                  ||«      ‘Œ }}}|r5|jV                  r)|t'        jX                  ||j[                  |«      «      fz  }|�|j]                  «       } |j^                  |Ž }|ja                  d|i«      }|jb                  r|je                  d	¬
«      }‰ j>                  jf                  r}|	j                   sP‰ j>                  jf                  }|j"                  r|D �cg c]  }|j%                  |«      ‘Œ }} |jf                  |Ž }n!ˆ fd„}|ji                  |‰ j>                  «      }|	j                  r‰ jk                  
|	|||«       y ‰ jm                  
|	|||«       y c c}}w c c}w c c}}w c c}w )Nc              3  ód   •K  — | ]'  }‰j                  ‰‰|t        j                  ¬ «      –— Œ) y­w)rx  N)rY  r   ÚPASSIVE_NO_FETCH)r°   Úlkr`   rì   Ú
state_dicts     €€€r=   r²   z0SelectInLoader._load_for_path.<locals>.<genexpr>V  s?   øè ø€ ð &ñ ;˜ð ×4Ñ4ØØ"ØÜ *× ;Ñ ;ð	 5÷ ñ ;ùs   ƒ-0r
   r{  r�  )Úcompile_state_pluginÚplugin_subject)r}  r  rÉ   r~  Úprimary_keysrƒ  T)r»  c                ó�   •— | xj                   t        t        j                  ‰j                  j
                  «      «      z  c_         y r5   r\  r_  s    €r=   r`  z?SelectInLoader._load_for_path.<locals>._setup_outermost_orderbyú  s3   ø€ Ø#×2Ò2´eÜŸ™ T×%9Ñ%9×%BÑ%BÓCó7ñ Ö2r?   )7r8   rE  rH  rs  rt  r;  rQ   rk  r^  rM  r   rá   rF  rO   rK  rJ  rI  r!  r^  r6   ÚBundler’  r.   r“  r-   r   r”  r—  rD  rL  r
  ro   rJ  ÚfilterÚin_r+   rE  rv   Úselect_statementÚuser_passed_queryr�  ÚzipÚ'_adapt_cached_option_to_uncached_optionr·   rœ  rº  rö  rV  Ú_update_compile_optionsr»  rs  r3  ra  Ú_load_via_childÚ_load_via_parent)"rq   r‚   rx   rù  rú  rM  ry   rÌ  rs  rY  Ú
our_statesÚnone_statesrý  Úrelated_identrì   rK  rJ  r§   Ú
bundle_entÚ
bundle_sqlÚ
entity_sqlr5  r2  r°  rX  Úcached_optionsÚuncached_optionsÚorig_optÚuncached_optr]  r=  r`  r`   rg  s"   `             `                 @@r=   rñ  zSelectInLoader._load_for_path>  s’  û€ ñ ˜Ÿ™¨Ñ2Øà×%Ñ%ˆ
à×%Ò%Ü$×0Ñ0´Ó6ˆJØˆKà—[‘[ˆFã$*Ñ ��yØ"ŸZ™Z�
Ü %õ &ð )×:Ò:ó&ó !�ô (×9Ñ9¸]ÑJØ!%×!:Ñ!:�JÙð ˜}Ñ,Ø˜}Ñ-×4Ñ4Ø 
¨IÐ6õð  ×&Ñ&¨¨z¸9Ð'EÕFð7 %+ð< ×)Ò)ñ )/ôá(.Ñ$�E˜9ð —‘˜1‘˜u e§j¡j°)Ò<Ø(.ð ñ ð
 ×$Ñ$ˆØ×$Ñ$ˆà×(Ò(ð  ×0Ò0áDKóÙDK¸SÐ$×3Ñ3°CÕ8ÀGð ð ð +×9Ñ9¸'ÓB�ä—_‘_ TÐ4¨GÒ4ˆ
Ø×2Ñ2Ó4ˆ
à%×8Ñ8Ó:ˆ
Ü×%Ñ%Ø$ jÐ1Ü7Ü,×DÑDà(-Ø"2ñô	
ˆð ×(Ò(ð —‘Ð.Ó/‰Að
 —‘˜d×0Ñ0Ó1×6Ñ6Ü˜×*Ñ*¨D×,@Ñ,@×,DÑ,DÓE×MÑMØ$óóˆAð �H‰H�W—[‘[¤§¡¨~Ó!>Ó?Ó@ˆð ×*Ñ*×;Ñ;ˆ
ð2 ˜d×2Ñ2Ñ3ˆà˜×2Ñ2Ñ2Ø$×2Ñ2‰Kà'×5Ñ5ˆNØ&×8Ñ8×FÑFÐô /2Ø"Ð$4ô/ô	ñ/Ñ*�H˜lð ×@Ñ@Ø˜\õð/ð	 ñ ñ �w×.Ò.ØÜ×-Ñ-Ø$Ø×4Ñ4°WÓ=óðñ ˆKð Ð&Ø+×?Ñ?ÓAˆNàˆA�I‰I�{Ð#ˆà×%Ñ% ¸Ð&GÓHˆØ×$Ò$Ø×#Ñ#°dÐ#Ó;ˆAà×Ñ×(Ò(Ø×,Ò,Ø!%×!5Ñ!5×!>Ñ!>�Ø#×4Ò4ñ %3ó&á$2˜Dð )×7Ñ7¸Õ=Ø$2ð #ð &ð �A—J‘J Ð/‘ôð
 ×)Ñ)Ø,¨d×.BÑ.Bó�ð ×%Ò%Ø× Ñ ØØØØØØ!õð ×!Ñ!Ø˜J¨¨7Ð4Eõùóuùò ùódùò<&s   Ã,'Q2Å
Q8Ë>Q=Ï.Rc           	     ó°  — | j                   }t        |«      }|rê|d| j                   }	|| j                  d  }|j                  j	                  |d|	D �
cg c]  }
|j
                  r|
d   n|
‘Œ c}
i|¬«      j                  «       D ��ci c]  \  }}||“Œ
 }}}|	D ]d  }
|j                  |
d «      }||
   D ]H  \  }}}|s| j                  |v rŒ|j                  | j                  «      j                  |||s|n|g«       ŒJ Œf |rŒê|D ]C  \  }}}|s| j                  |v rŒ|j                  | j                  «      j                  ||d «       ŒE y c c}
w c c}}w )Nr   rj  ©rL  rs  )rC   ÚsortedÚ
_chunksizerò   r©  rL  rD  rX   r8   r÷  rø  )rq   rv  rw  rY  r5  r‚   rs  rC   Úour_keysÚchunkr8   rñ   r{  ÚdataÚrelated_objrì   r  rý  s                     r=   rt  zSelectInLoader._load_via_child  sŒ  € ð —,‘,ˆô ˜*Ó%ˆÙØ˜Q §¡Ð1ˆEØ §¡Ð 1Ð2ˆHð $ŸO™O×3Ñ3Øà&á',ó)á', ð '1×&9Ò&9˜C šF¸sÑBØ',ñ)ðð '8ð 4ó 	÷ ‘&“(ð	ôñ	‘D�A�qð �1‘ð	ð ñ ó �ð #Ÿh™h s¨DÓ1�Ø/9¸#¬Ñ+�E˜5 )Ù$¨¯©°UÑ):Ø à—N‘N 4§8¡8Ó,×@Ñ@ØØÙ+2™¸¸õñ	 0?ð ò# óD (3Ñ#ˆE�5˜)Ù §¡¨UÑ!2Øð �N‰N˜4Ÿ8™8Ó$×8Ñ8¸ÀÀtÕLñ (3ùò5)ùós   ÁEÂEc           
     óB  — | j                   }|rdnd }|�r‚|d| j                   }|| j                  d  }|D �	�
��cg c]  \  }	}
}}|j                  r|	d   n|	‘Œ }}}
}	}t        j                  t
        «      }t        j                  |j                  j                  |d|i|¬«      j                  «       d„ «      D ]   \  }}||   j                  d„ |D «       «       Œ" |D ]°  \  }	}
}}|s| j                  |v rŒ|j                  |	|«      }|sX|rVt        |«      dkD  rt        j                   d| z  «       |
j#                  | j                  «      j%                  |
||d   «       Œ…|
j#                  | j                  «      j%                  |
||«       Œ² |r�Œ�y y c c}}}
}	w )	Nr€   r   rj  r�  c                ó   — | d   S r”   r€   rm  s    r=   r>   z1SelectInLoader._load_via_parent.<locals>.<lambda>^  s   € ˜!˜Aš$r?   c              3  ó&   K  — | ]	  }|d    –— Œ y­w)r
   Nr€   rp  s     r=   r²   z2SelectInLoader._load_via_parent.<locals>.<genexpr>`  s   è ø€ Ð1©q¨˜r !�u©qùrr  r
   rª  )rC   rƒ  rL  rs  rt  r;  rw  rx  rò   r©  rD  ry  r8   rX   r¬  r   r­  r÷  rø  )rq   rv  rY  r5  r‚   rs  rC   Ú_empty_resultr…  r8   rì   rg  rý  rj  r†  rñ   r{  r�  s                     r=   ru  zSelectInLoader._load_via_parentH  s   € ð —,‘,ˆÙ%™¨4ˆâØ˜q 4§?¡?Ð3ˆEØ# D§O¡OÐ$5Ð6ˆJñ :?öá9>Ñ5�C˜ 
¨Ið %×-Ò-��A’°3Ñ6Ø9>ð ó ô
 ×*Ñ*¬4Ó0ˆDÜ!×)Ñ)Ø—‘×'Ñ'ØØ*¨LÐ9Ø&7ð (ó ÷ ‘&“(Ùö‘��1ð �Q‘—‘Ñ1©qÓ1Õ1ðó 6;Ñ1��U˜J¨	Ù  T§X¡X°Ñ%;Øà!ŸX™X c¨=Ó9�
á¡:Ü˜:“¨Ò*ÜŸ	™	ð.à04ñ5ôð
 —N‘N 4§8¡8Ó,×@Ñ@Ø˜z¨:°a©=õð —N‘N 4§8¡8Ó,×@Ñ@Ø˜z¨:õð' 6;õ) ùõs   »F
)r†   r‡   rˆ   rŠ   rs  Ú
namedtuplerY  rƒ  rn   rQ  rO  rP  r¡   r…   rñ  rt  ru  r‹   rŒ   s   @r=   rB  rB  ~  sb   ø„ ð€Ið (�×'Ñ'Øò	
ó
€Jð €Jô5ò<Oò,
ò Nò'ò
N
ò`Qòf5Mön/r?   rB  c                ó’   ‡‡— ˆfd„Šˆfd„}ˆfd„}t        j                  | d|ddd¬«       t        j                  | d|ddd¬«       y )Nc           	     ó  •— |��|j                   ‰j                   k(  rh|j                  t        j                  |«      «      }|rB||ur>t	        j
                  dt        j                  |«      ›d| j                  ›d‰›d�d¬«      ‚|S )Nz	Instance z+ is already associated with an instance of z	 via its z0 attribute, and is only allowed a single parent.Úbbf1)Úcode)	r8   Ú	hasparentr   Úinstance_staterö   r÷   r6   Úinstance_strr\   )rì   rJ  ÚoldvalueÚ	initiatorr‘  r:   s        €r=   Ú	_do_checkz*single_parent_validator.<locals>._do_check{  sz   ø€ ØÐ §¡°$·(±(Ò!:Ø!×+Ñ+¬J×,EÑ,EÀeÓ,LÓMˆIÙ˜X¨UÑ2Ü×0Ò0ô  ×,Ñ,¨UÕ3°U·\³\Â4ðIð  ôð ð ˆr?   c                ó   •—  ‰| |d |«      S r5   r€   )rì   rJ  r•  r–  s      €r=   rO   z'single_parent_validator.<locals>.appendˆ  s   ø€ Ù˜  t¨YÓ7Ð7r?   c                ó   •—  ‰| |||«      S r5   r€   )rì   rJ  r”  r•  r–  s       €r=   Úset_z%single_parent_validator.<locals>.set_‹  s   ø€ Ù˜  x°Ó;Ð;r?   rO   T)ÚrawÚretvalrJ   rÖ   )r(   Úlisten)r9   r:   rO   r™  r–  s    `  @r=   rP   rP   z  sE   ù€ ôô8ô<ô 
‡L�LØˆh˜ D°Àdõô 
‡L�L��u˜d¨°TÈ$ÖOr?   )NNNNFN)Wr‰   Ú
__future__r   rs  rw  Útypingr   r   r   r   r   r	   Ú r   r   rç   r   r   r   r   r   r   r   r   r6   Úbaser   r   r   r   r   r   r   r‚   r   r   r   r   r    r!   rò   r"   rì   r#   r�  r$   r%   r&   r(   rö   r)   r*   r+   r5  r,   Úsql.selectabler-   r.   Úutil.typingr/   r`   r0   r1   Úsql.elementsr2   rf   ÚColumnPropertyÚstrategy_forrj   Úclass_loggerrŽ   r¬   r¿   rû   r  r  r  ÚMemoizedSlotsÚ
Identifiedr  r¹  rÉ  rã  r   r±  rB  rP   r€   r?   r=   Ú<module>r©     s¾  ðñ2õ #ã Û Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý "Ý "Ý 'Ý Ý &Ý Ý Ý )Ý $Ý *Ý !Ý &Ý +Ý #Ý  Ý "Ý  Ý Ý Ý Ý Ý Ý Ý Ý "Ý Ý ;Ý #Ý !áÝÝ3Ý,ð ØØØØØóN!ðb ×Ñ×'Ñ'°5À5Ð'ÓIô( ó (ó Jð(ðV ×ÑØ×Ñ×'Ñ'°4À%Ð'ÓHôW:�>ó W:ó Ió ðW:ðt ×ÑØ×Ñ×'Ñ'¸Ð'Ó>ôT
˜\ó T
ó ?ó ðT
ðn ×ÑØ×Ñ×'Ñ'°À$Ð'ÓGØ×Ñ×'Ñ'Ø˜d¨dð (ó ð ×Ñ×'Ñ'°4Ð'Ó8ôl
˜>ó l
ó 9óó Hó ðl
÷^8ñ 8ô0"
 ô "
ðJ ×ÑØ×#Ñ#×0Ñ0¸DÐ0ÓAô�nó ó Bó ðð ×ÑØ×#Ñ#×0Ñ0°hÐ0Ó?Ø×#Ñ#×0Ñ0°dÐ0Ó;ô#=Ð)ó #=ó <ó @ó ð#=ðL ×ÑØ×#Ñ#×0Ñ0°dÐ0Ó;Ø×#Ñ#×0Ñ0°hÐ0Ó?Ø×#Ñ#×0Ñ0°gÐ0Ó>Ø×#Ñ#×0Ñ0°nÐ0ÓEØ×#Ñ#×0Ñ0°nÐ0ÓEôkJØ × 2Ñ 2°C·N±NókJó Fó Fó ?ó @ó <ó ðkJ÷\1
ñ 1
ôhIHÐ+ô IHðX ×#Ñ#×0Ñ0°kÐ0ÓBôa�jó aó CðaðH ×ÑØ×#Ñ#×0Ñ0°jÐ0ÓAôG
G�Zó G
Gó Bó ðG
GðT ×ÑØ×#Ñ#×0Ñ0°hÐ0Ó?Ø×#Ñ#×0Ñ0°eÐ0Ó<ôtÐ-ó tó =ó @ó ðtðn ×ÑØ×#Ñ#×0Ñ0°jÐ0ÓAôw�Z ×!3Ñ!3ó wó Bó ðwótPr?   