+
    S<ÂjŽO  ã                   ón  € R t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
HtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ]P0                  ! R
4      t]! RR.4      t]! RR4      tR t ! R R]P<                  4      t ! R R4      t  ! R R4      t! ! R R4      t"R t#R t$R t% ! R R4      t&R# )zî
Various data structures used in query construction.

Factored out from django.db.models.query to avoid making the main module very
large and/or so that they can be used by other modules without getting into
circular import difficulties.
N)Ú
namedtuple)Únullcontext)Ú
FieldError)ÚDEFAULT_DB_ALIASÚDatabaseErrorÚconnectionsÚmodelsÚtransaction)Ú
LOOKUP_SEP)Útree)Úcached_property)Úmake_hashableúdjango.db.modelsÚ
_connectorÚ_negatedÚPathInfozGfrom_opts to_opts target_fields join_field m2m direct filtered_relationc              #   ón   "  € V x € V P                  4        F  p\        V4       R j  x€L
  K  	  R #  L
5i©N)Ú__subclasses__Ú
subclasses©ÚclsÚsubclasss   & Ú\/var/www/html/data_capital/venv/lib/python3.14/site-packages/django/db/models/query_utils.pyr   r   #   s.   é € Ø
‚IØ×&Ñ&Ö(ˆÜ˜hÓ'×'Ò'ó )Ù'ùs   ‚&5¨3©5c                   óþ   a a€ ] tR t^)t oRtRtRtRt]tRt	R]]]3t
RRRR	/V 3R
 llt]RV 3R ll4       t]R 4       tR tR tR tR tR tRR ltR tR t]3R ltR t]R 4       tR tR t]R 4       tRtVt V ;t!# )ÚQzY
Encapsulate filters as objects that can then be combined logically (using
`&` and `|`).
ÚANDÚORÚXORTNr   r   Fc               ó„   <€ V P                  V4       \        SV `	  . VO\        VP	                  4       4      OVVR 7       R# )©ÚchildrenÚ	connectorÚnegatedN)Ú_check_connectorÚsuperÚ__init__ÚsortedÚitems)Úselfr   r   ÚargsÚkwargsÚ	__class__s   &$$*,€r   r&   Ú
Q.__init__7   sA   ø€ Ø×Ñ˜jÔ)Ü‰ÑØ5�tÐ5œf V§\¡\£^Ó4Ð5Ø Øð 	ö 	
ó    c                óH   <€ V P                  V4       \        SV `	  WVR 7      # )r    )r$   r%   Úcreate)r   r!   r"   r#   r,   s   &&&&€r   r0   ÚQ.create?   s$   ø€ à×Ñ˜YÔ'Ü‰w‰~ xÈgˆ~ÓVÐVr.   c                ó–   € WP                   9  d9   R P                  R V P                   R,           4       4      p\        RV R24      hR# )z, c              3   ó(   "  € T F  q: x € K
  	  R # 5ir   © )Ú.0Úconns   & r   Ú	<genexpr>Ú%Q._check_connector.<locals>.<genexpr>G   s   é € Ð'SÑ@R¸©(¬Ó@Rùs   ‚:é   NNzconnector must be one of z
, or None.N)Ú
connectorsÚjoinÚ
ValueError)r   r"   Úconnector_reprss   && r   r$   ÚQ._check_connectorD   sD   € àŸN™NÔ*Ø"Ÿi™iÑ'SÀÇÁÈrÖ@RÓ'SÓSˆOÜÐ8¸Ð8IÈÐTÓUÐUñ +r.   c                ó2  € \        VR R4      RJ d   \        V4      hV '       g   VP                  4       # V'       g'   \        V\        4      '       d   V P                  4       # V P                  VR7      pVP                  W4       VP                  W4       V# )ÚconditionalF)r"   )ÚgetattrÚ	TypeErrorÚcopyÚ
isinstancer   r0   Úadd)r)   Úotherr6   Úobjs   &&& r   Ú_combineÚ
Q._combineJ   su   € Ü�5˜-¨Ó/°5Ó8Ü˜EÓ"Ð"ßØ—:‘:“<Ðßœ E¬1×-Ò-Ø—9‘9“;Ðà�k‰k DˆkÓ)ˆØ�‰�ÔØ�‰�ÔØˆ
r.   c                ó8   € V P                  WP                  4      # r   )rH   r   ©r)   rF   s   &&r   Ú__or__ÚQ.__or__W   s   € Ø�}‰}˜U§G¡GÓ,Ð,r.   c                ó8   € V P                  WP                  4      # r   )rH   r   rK   s   &&r   Ú__and__Ú	Q.__and__Z   ó   € Ø�}‰}˜U§H¡HÓ-Ð-r.   c                ó8   € V P                  WP                  4      # r   )rH   r   rK   s   &&r   Ú__xor__Ú	Q.__xor__]   rQ   r.   c                óF   € V P                  4       pVP                  4        V# r   )rC   Únegate)r)   rG   s   & r   Ú
__invert__ÚQ.__invert__`   s   € Ø�i‰i‹kˆØ�
‰
ŒØˆ
r.   c           	     óZ   € VP                  V VVR R VR7      w  rgVP                  V4       V# )F)Úallow_joinsÚ
split_subqÚcheck_filterableÚ	summarize)Ú_add_qÚpromote_joins)r)   ÚqueryrZ   Úreuser]   Úfor_saveÚclauseÚjoinss   &&&&&&  r   Úresolve_expressionÚQ.resolve_expressione   s@   € ð
 Ÿ™ØØØ#ØØ"Øð %ó 
‰ˆð 	×Ñ˜EÔ"Øˆr.   c                óº  € V'       g   V # V P                  V P                  V P                  R 7      pV P                   EF  pTp\	        V\
        4      '       dÑ   Vw  rV\        V9   d   VP                  \        ^4      w  rxMTpRp\        P                  ! V4      p	V	P                  V4      ;p
V	Jdw   Vf   RpV
P                  V4      ;pf2   V
P                  V4      ;p e   V! V
4      p
RpV
P                  V4      pVf   VR8X  d   V
P                  R4      pRpVe	   V! W¦4      pMVP                  V4      pVP                  P                  V4       EK  	  V# ))r"   r#   NÚexactÚisnullT)r0   r"   r#   r!   rD   Útupler
   Úrsplitr   ÚFÚreplace_expressionsÚ
get_lookupÚget_transformÚappend)r)   ÚreplacementsÚcloneÚchildÚchild_replacementÚlhsÚrhsÚpathÚlookupÚfieldÚfield_replacementÚlookup_classÚtransform_classs   &&           r   rm   ÚQ.replace_expressionsu   s]  € ßØˆKØ—‘ d§n¡n¸d¿l¹l�ÓKˆØ—]•]ˆEØ %ÐÜ˜%¤×'Ò'Ø ‘�Ü Ô$Ø#&§:¡:¬j¸!Ó#<‘L�D˜&à�DØ!�FÜŸš ›�à).×)BÑ)BÀ<Ó)PÐPÐ%Øóð ’~Ø!(˜Ø(9×(DÑ(DÀVÓ(LÐL˜ÒUà/@×/NÑ/NÈvÓ/VÐV˜OØ!%ò&ñ 1@Ð@QÓ0RÐ-Ø%,˜FØ+<×+GÑ+GÈÓ+O˜LØ’{ v°Ô'8Ø'8×'CÑ'CÀHÓ'M˜Ø"˜Ø#Ò/Ù,8Ð9JÓ,PÐ)øà$)×$=Ñ$=¸lÓ$KÐ!Ø�N‰N×!Ñ!Ð"3×4ñA #ðB ˆr.   c              #  óÞ   "  € V x € V P                    FR  p\        V\        4      '       d
   V^,          p\        VR4      '       d   VP	                  4        Rj  x€L
  KN  Vx € KT  	  R#  L5i)zO
Recursively yield this Q object and all subexpressions, in depth-first
order.
ÚflattenN)r!   rD   rj   Úhasattrr   )r)   rs   s   & r   r   Ú	Q.flattenœ   sV   é € ð
 Š
Ø—]”]ˆEÜ˜%¤×'Ò'à˜a��Ü�u˜i×(Ò(Ø Ÿ=™=›?×*Ò*à”ó #ñ
 +ùs   ‚AA-ÁA+ÁA-c                ó�  € ^ RI Hp ^ RIHp ^ RIHp V! R4      pVP                  4        F2  w  rx\        VR4      '       g	   V! V4      pVP                  W‡RR7       K4  	  VP                  V! ^4      R4       \        V,          p	VP                  V 4       VP                  VR	7      p
V	P                  '       d   \        P                  ! VR	7      M	\        4       p V;_uu_ 4        V
P!                  V4      RJuuRRR4       #   + '       g   i     R# ; i  \"         d"   p\$        P'                  R
Y4        Rp?R# Rp?ii ; i)zd
Do a database query to check if the expressions of the Q instance
matches against the expressions.
)ÚValue)ÚQuery)ÚSINGLENre   F)ÚselectÚ_check)Úusingz.Got a database error calling check() on %r: %sT)Údjango.db.modelsrƒ   Údjango.db.models.sqlr„   Údjango.db.models.sql.constantsr…   r(   r€   Úadd_annotationr   Úadd_qÚget_compilerÚin_atomic_blockr	   Úatomicr   Úexecute_sqlr   ÚloggerÚwarning)r)   Úagainstrˆ   rƒ   r„   r…   r`   ÚnameÚvalueÚ
connectionÚcompilerÚcontext_managerÚes   &&&          r   ÚcheckÚQ.check«   s  € õ 	+Ý.Ý9á�d“ˆØ"Ÿ=™=ž?‰KˆDÜ˜5Ð"6×7Ò7Ù˜e›�Ø× Ñ  °UÐ Ö;ñ +ð 	×Ñ™U 1›X xÔ0Ü  Õ'ˆ
à�‰�DÔØ×%Ñ%¨EÐ%Ó2ˆð ×)×)Ð)ô ×Ò UÕ+ä“ð 	ð
	ß ’Ø×+Ñ+¨FÓ3¸4Ð?÷ !——“ûäô 	Ü�N‰NÐKÈTÔUÝûð	ús6   Ã
D Ã'DÃ:
D ÄD	ÄD ÄD ÄEÄ$E Å Ec                ón  € V P                   P                  : R V P                   P                  : 2pVP                  R4      '       d   VP	                  RR4      p\        V P                  4      p/ pV P                  V P                  8w  d   V P                  VR&   V P                  '       d   RVR&   WV3# )Ú.zdjango.db.models.query_utilsr   r   Tr   )
r,   Ú
__module__Ú__name__Ú
startswithÚreplacerj   r!   r"   Údefaultr#   )r)   rw   r*   r+   s   &   r   ÚdeconstructÚQ.deconstructË   s‘   € ØŸ.™.×3Ô3°T·^±^×5LÓ5LÐMˆØ�?‰?Ð9×:Ò:Ø—<‘<Ð >Ð@RÓSˆDÜ�T—]‘]Ó#ˆØˆØ�>‰>˜TŸ\™\Ô)Ø#'§>¡>ˆF�<Ñ Ø�<�<ˆ<Ø!%ˆF�:ÑØ˜6Ð!Ð!r.   c                ó
  € V P                  4       w  rpV.VP                  4       OpV FM  p\        V\        4      '       d$   Vw  rg\	        V4      pVP                  Wg34       K<  VP                  V4       KO  	  \        V4      # r   )r¤   r(   rD   rj   r   rp   )r)   rw   r*   r+   Úidentityrs   Úargr–   s   &       r   r§   Ú
Q.identity×   sv   € à!×-Ñ-Ó/Ñˆ�FØÐ*˜6Ÿ<™<›>Ð*ˆÛˆEÜ˜%¤×'Ò'Ø"‘
�Ü% eÓ,�Ø—‘  Ö-à—‘ Ö&ñ ô �X‹Ðr.   c                ól   € \        V\        4      '       g   \        # VP                  V P                  8H  # r   )rD   r   ÚNotImplementedr§   rK   s   &&r   Ú__eq__ÚQ.__eq__ä   s(   € Ü˜%¤×#Ò#Ü!Ð!Ø�~‰~ §¡Ñ.Ð.r.   c                ó,   € \        V P                  4      # r   )Úhashr§   )r)   s   &r   Ú__hash__Ú
Q.__hash__é   s   € Ü�D—M‘MÓ"Ð"r.   c                óŽ   € ^ RI Hp VP                  V 4       Uu0 uF  q"P                  \        ^4      ^ ,          kK!  	  up# u upi )zv
Retrieve all base fields referenced directly or through F expressions
excluding any fields referenced through joins.
)r`   )rŠ   r`   Úget_children_from_qÚsplitr
   )r)   r`   rs   s   &  r   Úreferenced_base_fieldsÚQ.referenced_base_fieldsì   sH   € õ 	/ð 8=×7PÑ7PÐQUÔ7Vó
Ù7V¨e�K‰Kœ
 AÓ& q×)Ð)Ñ7Vñ
ð 	
ùò 
s   š%Ar4   )NNF)NTNFF)"r    rŸ   Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r£   r@   r:   r&   Úclassmethodr0   r$   rH   rL   rO   rS   rW   re   rm   r   r   r›   r¤   r   r§   r¬   r°   rµ   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r,   Ú__classdict__s   @@r   r   r   )   sâ   ù‡ € ñð €CØ	€BØ
€CØ€GØ€KØ˜˜R Ð%€Jð
¨ð 
¸÷ 
ð öWó ðWð ñVó ðVò
ò-ò.ò.òô
ò %òNð $4ô ò@
"ð ñ
ó ð
ò/ò
#ð ñ

ó ÷

ð 

r.   r   c                   óF   a € ] tR t^út o RtR tR	R ltR tR tR t	Rt
V tR# )
ÚDeferredAttributezx
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
c                ó   € Wn         R # r   ©ry   )r)   ry   s   &&r   r&   ÚDeferredAttribute.__init__   s   € ØŽ
r.   Nc                óF  € Vf   V # VP                   pV P                  P                  pWC9  dm   V P                  V4      pVfT   VP	                  4       '       g   \        RV: R24      hVP                  P                  P                  W4       W4,          # WSV&   W4,          # )z`
Retrieve and caches the value from the datastore on the first lookup.
Return the cached value.
zCannot retrieve deferred field z from an unsaved model.)	Ú__dict__ry   ÚattnameÚ_check_parent_chainÚ
_is_pk_setÚAttributeErrorÚ_stateÚ
fetch_modeÚfetch)r)   Úinstancer   ÚdataÚ
field_nameÚvals   &&&   r   Ú__get__ÚDeferredAttribute.__get__  s¬   € ð
 ÒØˆKØ× Ñ ˆØ—Z‘Z×'Ñ'ˆ
ØÔ!ð ×*Ñ*¨8Ó4ˆCØŠ{Ø×*Ñ*×,Ò,Ü(Ø9¸*¹ð H1ð 1óð ð
 —‘×*Ñ*×0Ñ0°Ô@ð ÕÐð $'�ZÑ ØÕÐr.   c                óì   € VP                   pVP                  V P                  P                  4      pV P                  P                  '       d'   V P                  V8w  d   \        WP                  4      # R# )z¡
Check if the field value can be fetched from a parent field already
loaded in the instance. This can be done if the to-be fetched
field is a primary key field.
N)Ú_metaÚget_ancestor_linkry   ÚmodelÚprimary_keyrA   rÆ   )r)   rÍ   ÚoptsÚ
link_fields   &&  r   rÇ   Ú%DeferredAttribute._check_parent_chain  sV   € ð �~‰~ˆØ×+Ñ+¨D¯J©J×,<Ñ,<Ó=ˆ
Ø�:‰:×!×!Ð! d§j¡j°JÔ&>Ü˜8×%7Ñ%7Ó8Ð8Ùr.   c                óT   € VP                  V P                  P                  .R 7       R# ))ÚfieldsN)Úrefresh_from_dbry   rÆ   )r)   rÍ   s   &&r   Ú	fetch_oneÚDeferredAttribute.fetch_one(  s    € Ø× Ñ ¨¯©×);Ñ);Ð(<Ð Ö=r.   c                ó�  € V P                   P                  pV^ ,          P                  P                  pV P                   P                  P
                  P                  V4      P                  VRR7      P                  V Uu0 uF  qDP                  kK  	  up4      pV F  p\        WbWVP                  ,          4       K!  	  R# u upi )é    T)ÚflatN)ry   rÆ   rÊ   ÚdbrÖ   Ú_base_managerrˆ   Úvalues_listÚin_bulkÚpkÚsetattr)r)   Ú	instancesrÆ   rã   ÚiÚvalue_by_pkrÍ   s   &&     r   Ú
fetch_manyÚDeferredAttribute.fetch_many+  s”   € Ø—*‘*×$Ñ$ˆØ�q�\× Ñ ×#Ñ#ˆà�J‰J×Ñ×*Ñ*×0Ñ0°Ó4ß‰[˜ tˆ[Ó,ß‰W¡IÓ.¡I˜q—d”d¡IÑ.Ó/ð 	ó
 "ˆHÜ�H {·;±;Õ'?Ö@ó "ùò /s   ÂCrÂ   r   )r    rŸ   r·   r¸   r¹   r&   rÑ   rÇ   rÞ   rì   r»   r¼   ©r¾   s   @r   rÀ   rÀ   ú   s*   ø‡ € ñò
ô ò2
ò>÷	Að 	Ar.   rÀ   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )Úclass_or_instance_methodi7  z€
Hook used in RegisterLookupMixin to return partial functions depending on
the caller type (instance or class of models.Field).
c                ó   € Wn         W n        R # r   ©Úclass_methodÚinstance_method)r)   ró   rô   s   &&&r   r&   Ú!class_or_instance_method.__init__=  s   € Ø(ÔØ.Ör.   c                óŽ   € Vf"   \         P                  ! V P                  V4      # \         P                  ! V P                  V4      # r   )Ú	functoolsÚpartialró   rô   )r)   rÍ   Úowners   &&&r   rÑ   Ú class_or_instance_method.__get__A  s:   € ØÒÜ×$Ò$ T×%6Ñ%6¸Ó>Ð>Ü× Ò  ×!5Ñ!5°xÓ@Ð@r.   rò   N)	r    rŸ   r·   r¸   r¹   r&   rÑ   r»   r¼   rî   s   @r   rð   rð   7  s   ø‡ € ñò
/÷Að Ar.   rð   c                   ó
  a € ] tR tRt o R t]P                  R 4       tR t]	! ]]4      t
]! ]4      tR tR t]R 4       t]R 4       tRR
 ltRR lt]	! ]]4      t]! ]4      tRR ltRR lt]	! ]]4      t]! ]4      tRtV tR	# )ÚRegisterLookupMixiniG  c                óB   € V P                  4       P                  VR 4      # r   )Úget_lookupsÚget)r)   Úlookup_names   &&r   Ú_get_lookupÚRegisterLookupMixin._get_lookupH  s   € Ø×ÑÓ!×%Ñ% k°4Ó8Ð8r.   c                óª   € \         P                  ! V 4       Uu. uF  qP                  P                  R / 4      NK   	  ppV P	                  V4      # u upi )Úclass_lookups)ÚinspectÚgetmrorÅ   rÿ   Úmerge_dicts)r   Úparentr  s   &  r   Úget_class_lookupsÚ%RegisterLookupMixin.get_class_lookupsK  sR   € ô DKÇ>Â>ÐRUÔCVó
ÙCV¸�O‰O×Ñ °Ö4ÑCVð 	ð 
ð �‰˜}Ó-Ð-ùò
s   ™$Ac                ó\   € V P                  4       p\        V R R4      ;p'       d   / VCVC# V# )Úinstance_lookupsN)r	  rA   )r)   r  r  s   &  r   Úget_instance_lookupsÚ(RegisterLookupMixin.get_instance_lookupsR  s=   € Ø×.Ñ.Ó0ˆÜ& tÐ-?ÀÓFÐFÐÖFØ8�mÐ8Ð'7Ð8Ð8ØÐr.   c                óÄ   € ^ RI Hp V P                  V4      pVf.   \        V R4      '       d   V P                  P                  V4      # Ve   \        W24      '       g   R# V# )rá   )ÚLookupNÚoutput_field)Údjango.db.models.lookupsr  r  r€   r  rn   Ú
issubclass)r)   r   r  Úfounds   &&  r   rn   ÚRegisterLookupMixin.get_lookup[  sU   € Ý3à× Ñ  Ó-ˆØŠ=œW T¨>×:Ò:Ø×$Ñ$×/Ñ/°Ó<Ð<ØÒ¤Z°×%>Ò%>ÙØˆr.   c                óÄ   € ^ RI Hp V P                  V4      pVf.   \        V R4      '       d   V P                  P                  V4      # Ve   \        W24      '       g   R# V# )rá   )Ú	TransformNr  )r  r  r  r€   r  ro   r  )r)   r   r  r  s   &&  r   ro   Ú!RegisterLookupMixin.get_transforme  sU   € Ý6à× Ñ  Ó-ˆØŠ=œW T¨>×:Ò:Ø×$Ñ$×2Ñ2°;Ó?Ð?ØÒ¤Z°×%AÒ%AÙØˆr.   c                óP   € / p\        V 4       F  pVP                  V4       K  	  V# )z“
Merge dicts in reverse to preference the order of the original list.
e.g., merge_dicts([a, b]) will preference the keys in 'a' over those in
'b'.
)ÚreversedÚupdate)ÚdictsÚmergedÚds   &  r   r  ÚRegisterLookupMixin.merge_dictso  s(   € ð ˆÜ˜%–ˆAØ�M‰M˜!Öñ !àˆr.   c                ó^   € \        V 4       F  pVP                  P                  4        K  	  R # r   )r   r	  Úcache_clearr   s   & r   Ú_clear_cached_class_lookupsÚ/RegisterLookupMixin._clear_cached_class_lookups{  s"   € ä" 3žˆHØ×&Ñ&×2Ñ2Ö4ó (r.   Nc                ó’   € Vf   VP                   pRV P                  9  d   / V n        WP                  V&   V P                  4        V# )Nr  )r   rÅ   r  r"  ©r   rx   r   s   &&&r   Úregister_class_lookupÚ)RegisterLookupMixin.register_class_lookup€  sF   € ØÒØ ×,Ñ,ˆKØ #§,¡,Ô.Ø "ˆCÔØ)/×Ñ˜+Ñ&Ø×'Ñ'Ô)Øˆr.   c                ór   € Vf   VP                   pRV P                  9  d   / V n        WP                  V&   V# )Nr  )r   rÅ   r  ©r)   rx   r   s   &&&r   Úregister_instance_lookupÚ,RegisterLookupMixin.register_instance_lookup‰  s:   € ØÒØ ×,Ñ,ˆKØ T§]¡]Ô2Ø$&ˆDÔ!Ø-3×Ñ˜kÑ*Øˆr.   c                ó`   € Vf   VP                   pV P                  V V P                  4        R# )zV
Remove given lookup from cls lookups. For use in tests only as it's
not thread-safe.
N)r   r  r"  r%  s   &&&r   Ú_unregister_class_lookupÚ,RegisterLookupMixin._unregister_class_lookup–  s/   € ð
 ÒØ ×,Ñ,ˆKØ×Ñ˜kÐ*Ø×'Ñ'Ö)r.   c                ó@   € Vf   VP                   pV P                  V R# )z[
Remove given lookup from instance lookups. For use in tests only as
it's not thread-safe.
N)r   r  r)  s   &&&r   Ú_unregister_instance_lookupÚ/RegisterLookupMixin._unregister_instance_lookup   s#   € ð
 ÒØ ×,Ñ,ˆKØ×!Ñ! +Ò.r.   )r  r   )r    rŸ   r·   r¸   r  r÷   Úcacher	  r  rð   rþ   rº   rn   ro   Ústaticmethodr  r"  r&  r*  Úregister_lookupr-  r0  Ú_unregister_lookupr»   r¼   rî   s   @r   rü   rü   G  sÊ   ø‡ € ò9ð ‡_�_ñ.ó ð.òñ +Ð+<Ð>RÓS€KÙ#Ð$5Ó6Ðòòð ñ	ó ð	ð ñ5ó ð5ôôñ /ØÐ7ó€Oñ (Ð(=Ó>Ðô*ô/ñ 2Ø Ð"=óÐñ  +Ð+CÓDÖr.   rü   c                óT  € V P                   '       g   R# \        V P                   RR4      '       d   R# V'       g   V P                  '       * # V P                  V9  d   R# V'       dA   W9  d;   \	        RV P
                  P                  P                   RV P                   R24      hR# )a°  
Return whether `field` should be used to descend deeper for
`select_related()` purposes.

Arguments:
 * `field` - the field to be checked. Can be either a `Field` or
   `ForeignObjectRel` instance.
 * `restricted` - a boolean field, indicating if the field list has been
   manually restricted using a select_related() clause.
 * `requested` - the select_related() dictionary.
 * `select_mask` - the dictionary of selected fields.
FÚparent_linkzField rž   zM cannot be both deferred and traversed using select_related at the same time.T)Úremote_fieldrA   Únullr•   r   rÖ   rÔ   Úobject_name)ry   Ú
restrictedÚ	requestedÚselect_masks   &&&&r   Úselect_related_descendr>  ¯  sš   € ð ××ÐÙô ˆu×!Ñ! =°%×8Ò8Ù÷ Ø—:‘:Œ~Ðð ‡z�z˜Ô"Ù÷ �uÔ/ÜØ�U—[‘[×&Ñ&×2Ñ2Ð3°1°U·Z±Z°Lð ALð Ló
ð 	
ñ r.   c                ó¼   € \        ^\        V 4      ^,           4       F;  p\        P                  ! V ^ V 4      pVP	                  V4      '       g   K5  W0VR 3u # 	  R# )zÅ
Check if the lookup_parts contains references to the given annotations set.
Because the LOOKUP_SEP is contained in the default annotation names, check
each prefix of the lookup_parts for a match.
N)Nr4   )ÚrangeÚlenr
   r;   rÿ   )Úlookup_partsÚannotationsÚnÚlevel_n_lookups   &&  r   Úrefs_expressionrF  Õ  sZ   € ô �1”c˜,Ó'¨!Õ+Ö,ˆÜ#Ÿš¨°a¸Ð):Ó;ˆØ�?‰?˜>×*Ô*Ø!°°Ð#3Ð3Ò3ñ -ð €Or.   c                ó’   a € V 3R lpV! V4      ;'       g2    \        VRR4      ;'       d    V! VP                  P                  4      # )zÊ
Check that self.model is compatible with target_opts. Compatibility
is OK if:
  1) model and opts match (where proxy inheritance is removed)
  2) model is parent of opts' model or the other way around
c                 óÎ   <€ SP                   P                  V P                  8H  ;'       g;    V P                  SP                   P                  9   ;'       g    SV P                  9   # r   )rÔ   Úconcrete_modelÚall_parents)rØ   rÖ   s   &€r   r›   Ú-check_rel_lookup_compatibility.<locals>.checkê  sZ   ø€ à�K‰K×&Ñ&¨$×*=Ñ*=Ñ=÷ )ð )Ø×"Ñ" e§k¡k×&=Ñ&=Ñ=÷)ð )à˜×(Ñ(Ñ(ð	
r.   r×   F)rA   rÖ   rÔ   )rÖ   Útarget_optsry   r›   s   f&& r   Úcheck_rel_lookup_compatibilityrM  â  sD   ø€ õ
ñ  �Ó÷ ð Ü��} eÓ,×IÐI±°u·{±{×7HÑ7HÓ1Iðr.   c                   óZ   a € ] tR tRt o RtR]! 4       /R ltR tR tR t	R t
R	 tR
tV tR# )ÚFilteredRelationiÿ  z7Specify custom filtering in the ON clause of SQL joins.Ú	conditionc               ó¢   € V'       g   \        R 4      hWn        RV n        \        V\        4      '       g   \        R4      hW n        RV n        R# )zrelation_name cannot be empty.Nz*condition argument must be a Q() instance.)r<   Úrelation_nameÚaliasrD   r   rP  Úresolved_condition)r)   rR  rP  s   &&$r   r&   ÚFilteredRelation.__init__  sF   € ßÜÐ=Ó>Ð>Ø*ÔØˆŒ
Ü˜)¤Q×'Ò'ÜÐIÓJÐJð #ŒØ"&ˆÖr.   c                óú   € \        WP                  4      '       g   \        # V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P
                  VP
                  8H  # r   )rD   r,   r«   rR  rS  rP  rK   s   &&r   r¬   ÚFilteredRelation.__eq__  sd   € Ü˜%§¡×0Ò0Ü!Ð!à×Ñ %×"5Ñ"5Ñ5÷ 2ð 2Ø—
‘
˜eŸk™kÑ)÷2ð 2à—‘ %§/¡/Ñ1ð	
r.   c                ó´   € \        V P                  V P                  R 7      pV P                  Vn        V P                  ;pe   VP                  4       Vn        V# ))rP  )rO  rR  rP  rS  rT  rr   )r)   rr   rT  s   &  r   rr   ÚFilteredRelation.clone  sK   € Ü  ×!3Ñ!3¸t¿~¹~ÔNˆØ—j‘jˆŒØ"&×"9Ñ"9Ð9ÐÒFØ'9×'?Ñ'?Ó'AˆEÔ$Øˆr.   c                óz   € V P                  4       pVP                  ;p'       d   VP                  V4      Vn        V# r   )rr   rT  Úrelabeled_clone)r)   Ú
change_maprr   rT  s   &&  r   r[  Ú FilteredRelation.relabeled_clone  s7   € Ø—
‘
“ˆØ!&×!9Ñ!9Ð9ÐÖ9Ø'9×'IÑ'IÈ*Ó'UˆEÔ$Øˆr.   c                ó~   € V P                  4       pVP                  V P                  VR RRR7      ^ ,          Vn        V# )TF)Ú	can_reuserZ   r[   Úupdate_join_types)rr   Úbuild_filterrP  rT  )r)   r`   ra   r*   r+   rr   s   &&&*, r   re   Ú#FilteredRelation.resolve_expression%  sI   € Ø—
‘
“ˆØ#(×#5Ñ#5Ø�N‰NØØØØ#ð $6ó $
ð õ$ˆÔ ð ˆr.   c                ó8   € VP                  V P                  4      # r   )ÚcompilerT  )r)   r˜   r—   s   &&&r   Úas_sqlÚFilteredRelation.as_sql0  s   € Ø×Ñ × 7Ñ 7Ó8Ð8r.   )rS  rP  rR  rT  N)r    rŸ   r·   r¸   r¹   r   r&   r¬   rr   r[  re   re  r»   r¼   rî   s   @r   rO  rO  ÿ  s4   ø‡ € ÙAð'±1³3ô 'ò
òòò	÷9ð 9r.   rO  )'r¹   r÷   r  ÚloggingÚcollectionsr   Ú
contextlibr   Údjango.core.exceptionsr   Ú	django.dbr   r   r   r   r	   Údjango.db.models.constantsr
   Údjango.utilsr   Údjango.utils.functionalr   Údjango.utils.hashabler   Ú	getLoggerr’   Ú	frozensetÚPROHIBITED_FILTER_KWARGSr   r   ÚNoder   rÀ   rð   rü   r>  rF  rM  rO  r4   r.   r   Ú<module>rt     s½   ðñó Û Û Ý "Ý "å -ß WÕ WÝ 1Ý Ý 3Ý /à	×	Ò	Ð-Ó	.€á$ l°JÐ%?Ó@Ð ñ
 ØØMó€ò(ôN
ˆ�	‰	ô N
÷b:Añ :A÷zAñ A÷ eEñ eEòP#òL
ò÷:29ó 29r.   