ó
    ¼Rj€ñ  ã                   ó0  • S r SSKJr  SSKJr  SSKJrJrJrJ	r	J
r
  SSKJrJrJr  SSKJr  SSKJrJr  SSKJr  SS	KJr  SS
KJrJr  SSKJr   " S S\5      rS r " S S5      r " S S\5      r  " S S5      r! " S S5      r"S r# " S S\"5      r$S r%g)aª
  
Accessors for related objects.

When a field defines a relation between two models, each model class provides
an attribute to access related instances of the other model class (unless the
reverse accessor has been disabled with related_name='+').

Accessors are implemented as descriptors in order to customize access and
assignment. This module defines the descriptor classes.

Forward accessors follow foreign keys. Reverse accessors trace them back. For
example, with the following models::

    class Parent(Model):
        pass

    class Child(Model):
        parent = ForeignKey(Parent, related_name='children')

 ``child.parent`` is a forward many-to-one relation. ``parent.children`` is a
reverse many-to-one relation.

There are three types of relations (many-to-one, one-to-one, and many-to-many)
and two directions (forward and reverse) for a total of six combinations.

1. Related instance on the forward side of a many-to-one relation:
   ``ForwardManyToOneDescriptor``.

   Uniqueness of foreign key values is irrelevant to accessing the related
   instance, making the many-to-one and one-to-one cases identical as far as
   the descriptor is concerned. The constraint is checked upstream (unicity
   validation in forms) or downstream (unique indexes in the database).

2. Related instance on the forward side of a one-to-one
   relation: ``ForwardOneToOneDescriptor``.

   It avoids querying the database when accessing the parent link field in
   a multi-table inheritance scenario.

3. Related instance on the reverse side of a one-to-one relation:
   ``ReverseOneToOneDescriptor``.

   One-to-one relations are asymmetrical, despite the apparent symmetry of the
   name, because they're implemented in the database with a foreign key from
   one table to another. As a consequence ``ReverseOneToOneDescriptor`` is
   slightly different from ``ForwardManyToOneDescriptor``.

4. Related objects manager for related instances on the reverse side of a
   many-to-one relation: ``ReverseManyToOneDescriptor``.

   Unlike the previous two classes, this one provides access to a collection
   of objects. It returns a manager rather than an instance.

5. Related objects manager for related instances on the forward or reverse
   sides of a many-to-many relation: ``ManyToManyDescriptor``.

   Many-to-many relations are symmetrical. The syntax of Django models
   requires declaring them on one side but that's an implementation detail.
   They could be declared on the other side without any change in behavior.
   Therefore the forward and reverse descriptors can be the same.

   If you're looking for ``ForwardManyToManyDescriptor`` or
   ``ReverseManyToManyDescriptor``, use ``ManyToManyDescriptor`` instead.
é    )Úsync_to_async)Ú
FieldError)ÚDEFAULT_DB_ALIASÚNotSupportedErrorÚconnectionsÚrouterÚtransaction)ÚQÚWindowÚsignals)Ú	RowNumber)ÚGreaterThanÚLessThanOrEqual)ÚQuerySet)ÚDeferredAttribute)Ú
AltersDataÚresolve_callables)Úcached_propertyc                   ó   • \ rS rSrS rSrg)ÚForeignKeyDeferredAttributeéU   c                 ó$  • UR                   R                  U R                  R                  5      U:w  a;  U R                  R	                  U5      (       a  U R                  R                  U5        X!R                   U R                  R                  '   g ©N)Ú__dict__ÚgetÚfieldÚattnameÚ	is_cachedÚdelete_cached_value©ÚselfÚinstanceÚvalues      ÚWD:\diplom_project\venv\Lib\site-packages\django/db/models/fields/related_descriptors.pyÚ__set__Ú#ForeignKeyDeferredAttribute.__set__V   sl   € Ø×Ñ× Ñ  §¡×!3Ñ!3Ó4¸Ó=À$Ç*Á*×BVÑBVØ÷C
ñ C
ð �J‰J×*Ñ*¨8Ô4Ø05×Ñ˜$Ÿ*™*×,Ñ,Ò-ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   Ú__static_attributes__r(   r'   r$   r   r   U   s   † õ6r'   r   c                 ót  • [        S0 U S3U0D6nU R                  =(       d    [        nU R                  R                  (       aÞ  [
        U   R                  R                  (       d  [        S5      eU R                  R                  U R                  R                  peU R                  R                  US9R                  5        VVs/ s H  u  pxUPM	     n	nn[        [        5       XS9n
U[        X¥5      -  nUb  U[!        X¦5      -  nU R                  R#                  5         U R%                  U5      $ s  snnf )NÚ__inz`Prefetching from a limited queryset is only supported on backends that support window functions.)Úusing)Úpartition_byÚorder_byr(   )r
   Ú_dbr   ÚqueryÚ	is_slicedr   ÚfeaturesÚsupports_over_clauser   Úlow_markÚ	high_markÚget_compilerÚget_order_byr   r   r   r   Úclear_limitsÚfilter)ÚquerysetÚ
field_nameÚ	instancesÚ	predicateÚdbr8   r9   ÚexprÚ_r2   Úwindows              r$   Ú_filter_prefetch_querysetrF   ^   s  € ÜÑ5˜
�| 4Ð(¨)Ð4Ñ5€IØ	�‰×	)Ô)€BØ‡~�~××Ü˜2‰×'Ñ'×<×<Ü#ð1óð ð 'Ÿn™n×5Ñ5°x·~±~×7OÑ7O�)à (§¡× ;Ñ ;À"Ð ;Ð E× RÑ RÔ Tô
Ú T‘W�T‹DÑ Tð 	ñ 
ô œ	›°*ÑPˆØ”[ Ó2Ñ2ˆ	ØÑ Øœ¨Ó;Ñ;ˆIØ�‰×#Ñ#Ô%Ø�?‰?˜9Ó%Ð%ùó
s   ÃD4c                   ó`   • \ rS rSrSrS r\S 5       rS rS r	SS jr
S	 rSS
 jrS rS rSrg)ÚForwardManyToOneDescriptorés   a.  
Accessor to the related object on the forward side of a many-to-one or
one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example::

    class Child(Model):
        parent = ForeignKey(Parent, related_name='children')

``Child.parent`` is a ``ForwardManyToOneDescriptor`` instance.
c                 ó   • Xl         g r   ©r   )r!   Úfield_with_rels     r$   Ú__init__Ú#ForwardManyToOneDescriptor.__init__€   s   € Ø#�
r'   c           	      ó.  • [        SU R                  R                  R                  R                  [
        4U R                  R                  R                  U R                  R                  R                  < SU R                  R                  < S3S.5      $ ©NÚRelatedObjectDoesNotExistÚ.z.RelatedObjectDoesNotExist)r*   r+   )	Útyper   Úremote_fieldÚmodelÚDoesNotExistÚAttributeErrorr*   r+   Úname©r!   s    r$   rQ   Ú4ForwardManyToOneDescriptor.RelatedObjectDoesNotExistƒ   so   € ô
 Ø'Ø�Z‰Z×$Ñ$×*Ñ*×7Ñ7¼ÐHà"Ÿj™j×.Ñ.×9Ñ9ð —J‘J×$Ñ$×1Ô1Ø—J‘J—O”Oð!ñó
ð 	
r'   c                 ó8   • U R                   R                  U5      $ r   )r   r   ©r!   r"   s     r$   r   Ú$ForwardManyToOneDescriptor.is_cached•   s   € Ø�z‰z×#Ñ# HÓ-Ð-r'   c                 óŒ   • U R                   R                  R                  R                  R	                  US9R                  5       $ ©N)Úhints)r   rT   rU   Ú_base_managerÚ
db_managerÚall©r!   r`   s     r$   Úget_querysetÚ'ForwardManyToOneDescriptor.get_queryset˜   s5   € Ø�z‰z×&Ñ&×,Ñ,×:Ñ:×EÑEÈEÐEÐR×VÑVÓXÐXr'   Nc                 ó  • Uc  U R                  5       nUR                  US   S9  U R                  R                  nU R                  R                  nU Vs0 s H  oT" U5      U_M     nnU R                  R
                  S   nU R                  R                  nUR                  5       (       d#  [        U R                  R
                  5      S:X  a+  SUR                  -  U Vs1 s H  oT" U5      S   iM     sn0n	OSU R                  R                  5       -  U0n	UR                  " S0 U	D6nUR                  (       d$  U H  n
Xc" U
5         nUR                  X«5        M      UUUSU R                  R                  5       S4$ s  snf s  snf )Nr   ©r"   é   ú%s__inTFr(   )re   Ú
_add_hintsr   Úget_foreign_related_valueÚget_local_related_valueÚforeign_related_fieldsrT   Ú	is_hiddenÚlenrX   Úrelated_query_namer=   ÚmultipleÚset_cached_valueÚget_cache_name)r!   r@   r>   Úrel_obj_attrÚinstance_attrÚinstÚinstances_dictÚrelated_fieldrT   r4   Úrel_objr"   s               r$   Úget_prefetch_querysetÚ0ForwardManyToOneDescriptor.get_prefetch_queryset›   s~  € ØÑØ×(Ñ(Ó*ˆHØ×Ñ Y¨q¡\ÐÑ2à—z‘z×;Ñ;ˆØŸ
™
×:Ñ:ˆÙ@IÓJÂ	¸˜-¨Ó-¨tÒ3Á	ˆÐJØŸ
™
×9Ñ9¸!Ñ<ˆØ—z‘z×.Ñ.ˆð ×!Ñ!×#Ñ#¤s¨4¯:©:×+LÑ+LÓ'MÐQRÓ'RàØ×$Ñ$ñ%ÙJSÓ&TÊ)À$ }°TÓ':¸1Ô'=É)Ñ&Tð‰Eð
  §
¡
× =Ñ =Ó ?Ñ?ÀÐKˆEØ—?’?Ñ+ UÑ+ˆð ×$×$Û#�Ø)¨,°wÓ*?Ñ@�Ø×-Ñ-¨gÖ@ñ $ð ØØØØ�J‰J×%Ñ%Ó'Øð
ð 	
ùò3 Kùò 'Us   ÁFÃ#Fc                 ót   • U R                  US9nUR                  U R                  R                  U5      5      $ ©Nrh   )re   r   r   Úget_reverse_related_filter)r!   r"   Úqss      r$   Ú
get_objectÚ%ForwardManyToOneDescriptor.get_objectÄ   s3   € Ø×Ñ¨ÐÐ1ˆà�v‰v�d—j‘j×;Ñ;¸HÓEÓFÐFr'   c                 ó\  • Uc  U $  U R                   R                  U5      nUcf  U R                   R                  (       dK  U R                  U R                   R                  R                  < SU R                   R                  < S35      eU$ ! [         Ga    SU R                   R                  U5      ;  nU(       a/  UR                  R                  U R                   R                  5      OSnU(       aB  UR                  U5      (       a,  UR                  U5      nU R                   R                  USS9nOSnUcP  U(       aI  U R                  U5      nU R                   R                  nUR                  (       d  UR                  X15        U R                   R                  X5         GNˆf = f)a  
Get the related instance through the forward relation.

With the example above, when getting ``child.parent``:

- ``self`` is the descriptor managing the ``parent`` attribute
- ``instance`` is the ``child`` instance
- ``cls`` is the ``Child`` class (we don't need it)
N©Údefaultú has no rR   )r   Úget_cached_valueÚKeyErrorrm   Ú_metaÚget_ancestor_linkrU   r   r�   rT   rr   rs   ÚnullrQ   r)   rX   )r!   r"   Úclsrz   Ú	has_valueÚancestor_linkÚancestorrT   s           r$   Ú__get__Ú"ForwardManyToOneDescriptor.__get__É   s^  € ð ÑØˆKð
	;Ø—j‘j×1Ñ1°(Ó;ˆGð6 ‰? 4§:¡:§?§?Ø×0Ñ0Ø#'§:¡:×#3Ñ#3×#<Ô#<¸d¿j¹j¿o¼oÐNóð ð ˆNøô? ô 	;Ø D§J¡J×$FÑ$FÀxÓ$PÑPˆIö ð —‘×0Ñ0°·±×1AÑ1AÔBàð ö
  ×!8Ñ!8¸×!BÑ!Bð )×9Ñ9¸(ÓC�ð Ÿ*™*×5Ñ5°hÈÐ5ÐM‘à�Ø‰¦9ØŸ/™/¨(Ó3�Ø#Ÿz™z×6Ñ6�ð $×,×,Ø ×1Ñ1°'ÔDØ�J‰J×'Ñ'¨×:ð1	;ús   ‡B ÂDF+Æ*F+c                 óö  • Ub¸  [        X R                  R                  R                  R                  R
                  5      (       dv  [        SU< SUR                  R                  < SU R                  R                  < SU R                  R                  R                  R                  R                  < S3	5      eUb³  UR                  R                  c.  [        R                  " UR                  US9UR                  l
        UR                  R                  c.  [        R                  " UR                  US9UR                  l
        [        R                  " X!5      (       d  [        SU-  5      eU R                  R                  nUce  U R                  R                  USS	9nUb  UR!                  US5        U R                  R"                   H  u  pV[%        XR&                  S5        M     OHU R                  R"                   H.  u  pV[%        XR&                  [)        X&R&                  5      5        M0     U R                  R!                  X5        Ub$  UR*                  (       d  UR!                  X!5        ggg)
a(  
Set the related instance through the forward relation.

With the example above, when setting ``child.parent = parent``:

- ``self`` is the descriptor managing the ``parent`` attribute
- ``instance`` is the ``child`` instance
- ``value`` is the ``parent`` instance on the right of the equal sign
NúCannot assign "ú": "rR   ú" must be a "ú" instance.rh   úGCannot assign "%r": the current database router prevents this relation.r„   )Ú
isinstancer   rT   rU   r‰   Úconcrete_modelÚ
ValueErrorÚobject_namerX   Ú_staterB   r   Údb_for_writeÚ	__class__Úallow_relationr‡   rs   Úrelated_fieldsÚsetattrr   Úgetattrrr   )r!   r"   r#   rT   ÚrelatedÚlh_fieldÚrh_fields          r$   r%   Ú"ForwardManyToOneDescriptor.__set__ü   sý  € ð Ñ¤ZØ—:‘:×*Ñ*×0Ñ0×6Ñ6×EÑE÷&
ñ &
õ ó Ø—N‘N×.Ô.Ø—J‘J—O”OØ—J‘J×+Ñ+×1Ñ1×7Ñ7×CÔCðóð ð ÑØ�‰×!Ñ!Ñ)Ü%+×%8Ò%8Ø×&Ñ&°ñ&�—‘Ô"ð �|‰|�‰Ñ&Ü"(×"5Ò"5Ø—O‘O¨hñ#�—‘”ô ×(Ò(¨×9Ñ9Ü ð Ø"'ñ(óð ð
 —z‘z×.Ñ.ˆð
 ‰=ð —j‘j×1Ñ1°(ÀDÐ1ÐIˆGð
 Ñ"Ø×-Ñ-¨g°tÔ<à&*§j¡j×&?Ô&?Ñ"�Ü˜×"2Ñ"2°DÖ9ò '@ð
 '+§j¡j×&?Ô&?Ñ"�Ü˜×"2Ñ"2´G¸E×CSÑCSÓ4TÖUñ '@ð
 	�
‰
×#Ñ# HÔ4ð
 Ñ \×%:×%:Ø×)Ñ)¨%Õ:ð &;Ðr'   c                 óf   • [         U R                  R                  U R                  R                  44$ )z­
Pickling should return the instance attached by self.field on the
model, not a new copy of that descriptor. Use getattr() to retrieve
the instance directly from the model.
)r¢   r   rU   rX   rY   s    r$   Ú
__reduce__Ú%ForwardManyToOneDescriptor.__reduce__H  s&   € ô ˜Ÿ™×)Ñ)¨4¯:©:¯?©?Ð;Ð;Ð;r'   rK   r   )r)   r*   r+   r,   Ú__doc__rM   r   rQ   r   re   r{   r�   r�   r%   r¨   r-   r(   r'   r$   rH   rH   s   sI   † ñ
ò$ð ñ
ó ð
ò".òYô'
òRGô
1òfJ;õX<r'   rH   c                   ó8   ^ • \ rS rSrSrU 4S jrU 4S jrSrU =r$ )ÚForwardOneToOneDescriptoriQ  a  
Accessor to the related object on the forward side of a one-to-one relation.

In the example::

    class Restaurant(Model):
        place = OneToOneField(Place, related_name='restaurant')

``Restaurant.place`` is a ``ForwardOneToOneDescriptor`` instance.
c                 óT  >^• U R                   R                  R                  (       aé  UR                  5       nU R                   R                  R                  nUR
                  R                   Vs/ s H  oDR                  PM     snm[        U4S jU 5       5      (       do  T Vs0 s H  oD[        X5      _M     nnU" S0 UD6nUR                  R                  UR                  l        UR                  R                  UR                  l        U$ [        TU ]9  U5      $ s  snf s  snf )Nc              3   ó,   >#   • U  H	  oT;   v •  M     g 7fr   r(   )Ú.0r   Úfieldss     €r$   Ú	<genexpr>Ú7ForwardOneToOneDescriptor.get_object.<locals>.<genexpr>h  s   øé € Ð=²H¨5 –²Hùs   ƒr(   )r   rT   Úparent_linkÚget_deferred_fieldsrU   r‰   Úconcrete_fieldsr   Úanyr¢   rœ   ÚaddingrB   Úsuperr�   )	r!   r"   ÚdeferredÚ	rel_modelr   ÚkwargsÚobjr°   rž   s	          @€r$   r�   Ú$ForwardOneToOneDescriptor.get_object]  så   ù€ Ø�:‰:×"Ñ"×.×.Ø×3Ñ3Ó5ˆHð Ÿ
™
×/Ñ/×5Ñ5ˆIØ1:·±×1PÒ1PÓQÒ1P¨—m”mÑ1PÑQˆFô
 Ô=±HÓ=×=Ñ=ÙGMÓNÂv¸e¤¨Ó!9Ò9Áv�ÐNÙÑ) &Ñ)�Ø$,§O¡O×$:Ñ$:�—
‘
Ô!Ø (§¡× 2Ñ 2�—
‘
”Ø�
Ü‰wÑ! (Ó+Ð+ùò Rùò Os   Á0D Â&D%c                 ó   >• [         TU ]  X5        U R                  R                  (       aÎ  U R                  R                  R
                  (       a¨  UR                  nUR                   Vs/ s H+  nUR                  (       d  M  UR                  (       d  M)  UPM-     nnU HS  nUR                  R                  R                  R                  R                  nUb  [        X&5      OS n[        XU5        MU     g g g s  snf r   )r¸   r%   r   Úprimary_keyrT   r³   r‰   rµ   rU   Úpkr   r¢   r¡   )	r!   r"   r#   Úoptsr   Úinherited_pk_fieldsÚrel_model_pk_nameÚ	raw_valuerž   s	           €r$   r%   Ú!ForwardOneToOneDescriptor.__set__p  s×   ø€ Ü‰‰˜Ô(ð �:‰:×!×! d§j¡j×&=Ñ&=×&I×&IØ—>‘>ˆDð "×1Ò1ó#â1�EØ×$Õ$ó à).×);Õ);÷ Ù1ð  ð #ó
 -�Ø$)×$6Ñ$6×$<Ñ$<×$BÑ$B×$EÑ$E×$MÑ$MÐ!à9>Ñ9J”G˜EÔ5ÐPTð ô ˜°YÖ?ò -ð 'JÐ!ùò#s   Á+C;ÂC;ÂC;r(   )	r)   r*   r+   r,   rª   r�   r%   r-   Ú__classcell__©rž   s   @r$   r¬   r¬   Q  s   ø† ñ	õ,÷&@ó @r'   r¬   c                   óZ   • \ rS rSrSrS r\S 5       rS rS r	SS jr
SS	 jrS
 rS rSrg)ÚReverseOneToOneDescriptori„  a  
Accessor to the related object on the reverse side of a one-to-one
relation.

In the example::

    class Restaurant(Model):
        place = OneToOneField(Place, related_name='restaurant')

``Place.restaurant`` is a ``ReverseOneToOneDescriptor`` instance.
c                 ó   • Xl         g r   ©r£   )r!   r£   s     r$   rM   Ú"ReverseOneToOneDescriptor.__init__‘  s	   € ð �r'   c           	      ó  • [        SU R                  R                  R                  [        4U R                  R
                  R                  U R                  R
                  R                  < SU R                  R                  < S3S.5      $ rP   )	rS   r£   Úrelated_modelrV   rW   rU   r*   r+   rX   rY   s    r$   rQ   Ú3ReverseOneToOneDescriptor.RelatedObjectDoesNotExist–  sk   € ô Ø'Ø�\‰\×'Ñ'×4Ñ4´nÐEà"Ÿl™l×0Ñ0×;Ñ;ð —L‘L×&Ñ&×3Ô3Ø—L‘L×%Ô%ð!ñó
ð 	
r'   c                 ó8   • U R                   R                  U5      $ r   )r£   r   r\   s     r$   r   Ú#ReverseOneToOneDescriptor.is_cached§  s   € Ø�|‰|×%Ñ% hÓ/Ð/r'   c                 óx   • U R                   R                  R                  R                  US9R	                  5       $ r_   )r£   rÎ   ra   rb   rc   rd   s     r$   re   Ú&ReverseOneToOneDescriptor.get_querysetª  s/   € Ø�|‰|×)Ñ)×7Ñ7×BÑBÈÐBÐO×SÑSÓUÐUr'   Nc                 ó$  • Uc  U R                  5       nUR                  US   S9  U R                  R                  R                  nU R                  R                  R
                  nU Vs0 s H  oT" U5      U_M     nnSU R                  R                  R                  -  U0nUR                  " S0 UD6nU H2  nXc" U5         n	U R                  R                  R                  X‰5        M4     UUUSU R                  R                  5       S4$ s  snf )Nr   rh   rj   TFr(   )
re   rk   r£   r   rm   rl   rX   r=   rs   rt   )
r!   r@   r>   ru   rv   rw   rx   r4   rz   r"   s
             r$   r{   Ú/ReverseOneToOneDescriptor.get_prefetch_queryset­  s  € ØÑØ×(Ñ(Ó*ˆHØ×Ñ Y¨q¡\ÐÑ2à—|‘|×)Ñ)×AÑAˆØŸ™×*Ñ*×DÑDˆÙ@IÓJÂ	¸˜-¨Ó-¨tÒ3Á	ˆÐJØ˜DŸL™L×.Ñ.×3Ñ3Ñ3°YÐ?ˆØ—?’?Ñ+ UÑ+ˆó  ˆGØ% l°7Ó&;Ñ<ˆHØ�L‰L×Ñ×/Ñ/°ÖBñ  ð ØØØØ�L‰L×'Ñ'Ó)Øð
ð 	
ùò Ks   Á*Dc                 ó‚  • Uc  U $  U R                   R                  U5      nUcE  U R                  UR                  R                  < SU R                   R                  5       < S35      eU$ ! [         aÈ    UR                  nUc  SnO—U R                   R                  R                  U5      n U R                  US9R                  " S0 UD6nU R                   R                  R                  X15        O,! U R                   R                  R                   a    Sn Of = fU R                   R                  X5         GNf = f)aQ  
Get the related instance through the reverse relation.

With the example above, when getting ``place.restaurant``:

- ``self`` is the descriptor managing the ``restaurant`` attribute
- ``instance`` is the ``place`` instance
- ``cls`` is the ``Place`` class (unused)

Keep in mind that ``Restaurant`` holds the foreign key to ``Place``.
Nrh   r†   rR   r(   )r£   r‡   rˆ   rÀ   r   Úget_forward_related_filterre   r   rs   rÎ   rV   rQ   rž   r)   Úget_accessor_name)r!   r"   rŒ   rz   Ú
related_pkÚfilter_argss         r$   r�   Ú!ReverseOneToOneDescriptor.__get__Æ  s'  € ð ÑØˆKð
	=Ø—l‘l×3Ñ3°HÓ=ˆGð$ ‰?Ø×0Ñ0à×%Ñ%×.Ô.°·±×0NÑ0NÖ0PðRóð ð
 ˆNøô/ ó 	=Ø!Ÿ™ˆJØÑ!Ø‘à"Ÿl™l×0Ñ0×KÑKÈHÓU�ðKØ"×/Ñ/¸Ð/ÐB×FÒFÑUÈÑU�Gð —L‘L×&Ñ&×7Ñ7¸ÕJøð —|‘|×1Ñ1×>Ñ>ó #Ø"’Gð#úð �L‰L×)Ñ)¨(×<ð	=ús6   ‡A, Á,AD>Â.C3Ã&D>Ã3&DÄD>ÄDÄD>Ä=D>c                 óâ  ^• Ucd  U R                   R                  TSS9nUbF  U R                   R                  T5        [        X0R                   R                  R
                  S5        gg[        X R                   R                  5      (       dp  [        SU< STR                  R                  < SU R                   R                  5       < SU R                   R                  R                  R                  < S3	5      eTR                  R                  c.  [        R                  " TR                   US9TR                  l        UR                  R                  c.  [        R                  " UR                   TS9UR                  l        [        R"                  " UT5      (       d  [        S	U-  5      e[%        U4S
 jU R                   R                  R&                   5       5      n[)        U R                   R                  R*                  5       H  u  pV[        X&R,                  XE   5        M     U R                   R/                  TU5        U R                   R                  R/                  UT5        g)a~  
Set the related instance through the reverse relation.

With the example above, when setting ``place.restaurant = restaurant``:

- ``self`` is the descriptor managing the ``restaurant`` attribute
- ``instance`` is the ``place`` instance
- ``value`` is the ``restaurant`` instance on the right of the equal sign

Keep in mind that ``Restaurant`` holds the foreign key to ``Place``.
Nr„   r“   r”   rR   r•   r–   rh   r—   c              3   óP   >#   • U  H  n[        TUR                  5      v •  M     g 7fr   ©r¢   r   )r¯   r   r"   s     €r$   r±   Ú4ReverseOneToOneDescriptor.__set__.<locals>.<genexpr>)  s&   øé € ð âF�Eô ˜ %§-¡-×0Ð0ÚFùs   ƒ#&)r£   r‡   r   r¡   r   rX   r˜   rÎ   rš   r‰   r›   rØ   rœ   rB   r   r�   rž   rŸ   Útuplern   Ú	enumerateÚlocal_related_fieldsr   rs   )r!   r"   r#   rz   rÙ   Úindexr   s    `     r$   r%   Ú!ReverseOneToOneDescriptor.__set__ó  sæ  ø€ ð  ‰=ð —l‘l×3Ñ3°HÀdÐ3ÐKˆGØÑ"ð —‘×0Ñ0°Ô:ô ˜§¡×!3Ñ!3×!8Ñ!8¸$Õ?ð #ô ˜E§<¡<×#=Ñ#=×>Ñ>åó Ø—N‘N×.Ô.Ø—L‘L×2Ñ2Ö4Ø—L‘L×.Ñ.×4Ñ4×@Ô@ðóð ð �‰×!Ñ!Ñ)Ü%+×%8Ò%8Ø×&Ñ&°ñ&�—‘Ô"ð �|‰|�‰Ñ&Ü"(×"5Ò"5Ø—O‘O¨hñ#�—‘”ô ×(Ò(¨°×9Ñ9Ü ð Ø"'ñ(óð ô
 ô à!Ÿ\™\×/Ñ/×FÒFóó ˆJô !*¨$¯,©,×*<Ñ*<×*QÑ*QÖ R‘�Ü˜Ÿ}™}¨jÑ.?Ö@ñ !Sð
 �L‰L×)Ñ)¨(°EÔ:ð �L‰L×Ñ×/Ñ/°°xÕ@r'   c                 óf   • [         U R                  R                  U R                  R                  44$ r   )r¢   r£   rU   rX   rY   s    r$   r¨   Ú$ReverseOneToOneDescriptor.__reduce__:  s&   € ä˜Ÿ™×+Ñ+¨T¯\©\×->Ñ->Ð?Ð?Ð?r'   rË   r   )r)   r*   r+   r,   rª   rM   r   rQ   r   re   r{   r�   r%   r¨   r-   r(   r'   r$   rÉ   rÉ   „  sD   † ñ
òð
 ñ
ó ð
ò 0òVô
ô2+òZEAõN@r'   rÉ   c                   óD   • \ rS rSrSrS r\S 5       rS
S jrS r	S r
S	rg)ÚReverseManyToOneDescriptori?  a•  
Accessor to the related objects manager on the reverse side of a
many-to-one relation.

In the example::

    class Child(Model):
        parent = ForeignKey(Parent, related_name='children')

``Parent.children`` is a ``ReverseManyToOneDescriptor`` instance.

Most of the implementation is delegated to a dynamically defined manager
class built by ``create_forward_many_to_many_manager()`` defined below.
c                 ó2   • Xl         UR                  U l        g r   )Úrelr   )r!   rê   s     r$   rM   Ú#ReverseManyToOneDescriptor.__init__O  s   € ØŒØ—Y‘Yˆ�
r'   c                 ó‚   • U R                   R                  n[        UR                  R                  U R                   5      $ r   )rê   rÎ   Ú"create_reverse_many_to_one_managerÚ_default_managerrž   ©r!   rÎ   s     r$   Úrelated_manager_clsÚ.ReverseManyToOneDescriptor.related_manager_clsS  s4   € àŸ™×.Ñ.ˆä1Ø×*Ñ*×4Ñ4Ø�H‰Hó
ð 	
r'   Nc                 ó.   • Uc  U $ U R                  U5      $ )a	  
Get the related objects through the reverse relation.

With the example above, when getting ``parent.children``:

- ``self`` is the descriptor managing the ``children`` attribute
- ``instance`` is the ``parent`` instance
- ``cls`` is the ``Parent`` class (unused)
)rð   )r!   r"   rŒ   s      r$   r�   Ú"ReverseManyToOneDescriptor.__get__\  s    € ð ÑØˆKà×'Ñ'¨Ó1Ð1r'   c                 ó:   • SU R                   R                  5       4$ )Nzreverse side of a related set)rê   rØ   rY   s    r$   Ú_get_set_deprecation_msg_paramsÚ:ReverseManyToOneDescriptor._get_set_deprecation_msg_paramsk  s   € à+Ø�H‰H×&Ñ&Ó(ð
ð 	
r'   c                 ó:   • [        SU R                  5       -  5      e)Nz@Direct assignment to the %s is prohibited. Use %s.set() instead.)Ú	TypeErrorrõ   r    s      r$   r%   Ú"ReverseManyToOneDescriptor.__set__q  s#   € ÜØNØ×2Ñ2Ó4ñ5ó
ð 	
r'   )r   rê   r   )r)   r*   r+   r,   rª   rM   r   rð   r�   rõ   r%   r-   r(   r'   r$   rè   rè   ?  s/   † ñòð ñ
ó ð
ô2ò
õ
r'   rè   c                 ó2   ^^•  " UU4S jSU [         5      mT$ )zÖ
Create a manager for the reverse side of a many-to-one relation.

This manager subclasses another manager, generally the default manager of
the related model, and adds behaviors specific to many-to-one relations.
c                   ó*  >^ • \ rS rSrU U4S jrU4S jrSrS rS rS r	U 4S jr
SU 4S	 jjrSS
.S jrS\l        SS
.S jrS\l        UU 4S jrS\l        S rS\l        UU 4S jrS\l        S rS\l        UU 4S jrS\l        S rS\l         YR*                  R,                  (       aB  SS
.S jrS\l        SS
.S jrS\l        SS
.S jrS\l        SS
.S jrS\l        S rS\l        SSS.S jrS\l        SSS.S jrS\l        SrU =r$ )Ú:create_reverse_many_to_one_manager.<locals>.RelatedManageri€  c                 ó¬   >• [         TU ]  5         Xl        TR                  U l        TR
                  U l        U R
                  R                  U0U l        g r   )r¸   rM   r"   rÎ   rU   r   rX   Úcore_filters)r!   r"   rž   rê   s     €€r$   rM   ÚCcreate_reverse_many_to_one_manager.<locals>.RelatedManager.__init__�  s@   ø€ Ü‰GÑÔà$ŒMØ×*Ñ*ˆDŒJØŸ™ˆDŒJà!%§¡§¡°(Ð ;ˆDÕr'   c                ó€   >• [        U R                  U5      n[        UR                  T5      nU" U R                  5      $ r   )r¢   rU   rí   rž   r"   )r!   ÚmanagerÚmanager_classrê   s      €r$   Ú__call__ÚCcreate_reverse_many_to_one_manager.<locals>.RelatedManager.__call__Š  s5   ø€ Ü˜dŸj™j¨'Ó2ˆGÜ>¸w×?PÑ?PÐRUÓVˆMÙ  §¡Ó/Ð/r'   Tc                 óÎ   • U R                   R                   HK  n[        U R                  UR                  5      b  M&  [        SU R                  < SUR                   S35      e   g )NÚ"ú#" needs to have a value for field "z'" before this relationship can be used.)r   rn   r¢   r"   r   rš   )r!   r   s     r$   Ú_check_fk_valÚHcreate_reverse_many_to_one_manager.<locals>.RelatedManager._check_fk_val‘  s[   € ØŸ™×:Ô:�Ü˜4Ÿ=™=¨%¯-©-Ó8Ó@Ü$Ø˜DŸM™MÑ,ð -Ø!ŸM™M˜?Ð*QðSóð ò ;r'   c           
      ó  • U R                   =(       d)    [        R                  " U R                  U R                  S9n[
        U   R                  R                  nUR                  U R                  S9  U R                   (       a  UR                  U R                   5      nSUl
        UR                  " S0 U R                  D6nU R                  R                   HG  n[        U R                  UR                   5      nUb  US:X  d  M.  U(       d  M7  UR#                  5       s  $    U R                  R$                  (       aU   U R                  R&                  n[        U R                  UR                   5      nU R                  XpR                  00Ul        U$ ! [(         ad    [+        U R                  R,                  S   R.                   Vs/ s H#  n[        U R                  UR                   5      PM%     Os  snf sn5      n N�f = f)ú@
Filter the queryset for the instance this manager is bound to.
rh   TÚ éÿÿÿÿr(   )r3   r   Údb_for_readrU   r"   r   r6   Ú!interprets_empty_strings_as_nullsrk   r0   Ú_defer_next_filterr=   rþ   r   rn   r¢   r   ÚnoneÚmany_to_oneÚtarget_fieldr   rà   Ú
path_infosÚtarget_fieldsÚ_known_related_objects)r!   r>   rB   Úempty_strings_as_nullr   Úvalr  Ú
rel_obj_ids           r$   Ú_apply_rel_filtersÚMcreate_reverse_many_to_one_manager.<locals>.RelatedManager._apply_rel_filters™  s“  € ð —‘×SœV×/Ò/°·
±
ÀTÇ]Á]ÑSˆBÜ$/Øñ%ç‰h×8Ñ8ð "ð ×Ñ¨¯©ÐÑ7Ø�x�xØ#Ÿ>™>¨$¯(©(Ó3�Ø*.ˆHÔ'Ø—’Ñ;¨×):Ñ):Ñ;ˆHØŸ™×:Ô:�Ü˜dŸm™m¨U¯]©]Ó;�Ø‘; 3¨"¥9×1FÐ1FØ#Ÿ=™=›?Ò*ñ ;ð �z‰z×%×%ð
NØ#'§:¡:×#:Ñ#:�Lô ")¨¯©¸×8LÑ8LÓ!M�Jà—J‘J ¯]©]Ð ;ð3�Ô/ð ˆOøô "ó ô "'ð 15·
±
×0EÑ0EÀbÑ0I×0WÒ0Wóâ0W ô $ D§M¡M°<×3GÑ3GÖHÚ0Wùôó"’Jðús   Ä?F Æ4HÇ	*G4
Ç3HÈHc                 óÀ   •  U R                   R                  R                  U R                  R                  R                  5       5        g ! [        [        4 a     g f = fr   )r"   Ú_prefetched_objects_cacheÚpopr   rT   rt   rW   rˆ   rY   s    r$   Ú_remove_prefetched_objectsÚUcreate_reverse_many_to_one_manager.<locals>.RelatedManager._remove_prefetched_objectsÁ  sN   € ðØ—‘×7Ñ7×;Ñ;Ø—J‘J×+Ñ+×:Ñ:Ó<õøô #¤HÐ-ó Ùðús   ‚AA
 Á
AÁAc                 ón  >• U R                   R                  c-  [        U R                   R                  R                  < S35      e U R                   R
                  U R                  R                  R                  5          $ ! [        [        4 a"    [        TU ]1  5       nU R                  U5      s $ f = f)NzQ instance needs to have a primary key value before this relationship can be used.)r"   rÀ   rš   rž   r)   r  r   rT   rt   rW   rˆ   r¸   re   r  ©r!   r>   rž   s     €r$   re   ÚGcreate_reverse_many_to_one_manager.<locals>.RelatedManager.get_querysetÉ  sª   ø€ ð �}‰}×ÑÑ'Ü Ø—}‘}×.Ñ.×7Ñ7Ñ:ð ;Nð Oóð ð9Ø—}‘}×>Ñ>Ø—J‘J×+Ñ+×:Ñ:Ó<ñð øô #¤HÐ-ó 9Ü ™7Ñ/Ó1�Ø×.Ñ.¨xÓ8Ò8ð9ús   Á:B Â/B4Â3B4c                 óx  >• Uc  [         T
U ]  5       nUR                  US   S9  UR                  UR                  =(       d    U R                  5      nU R
                  R                  nU R
                  R                  nU Vs0 s H  oT" U5      U_M     nn[        X R
                  R                  U5      nU HO  nU R
                  R                  U5      (       a  M%  Xc" U5         n[        XpR
                  R                  U5        MQ     U R
                  R                  R                  5       n	X#USU	S4$ s  snf )Nr   rh   F)r¸   re   rk   r0   r3   r   rm   rl   rF   rX   r   r¡   rT   rt   )r!   r@   r>   ru   rv   rw   rx   rz   r"   Ú
cache_namerž   s             €r$   r{   ÚPcreate_reverse_many_to_one_manager.<locals>.RelatedManager.get_prefetch_querysetÚ  s	  ø€ ØÑÜ ™7Ñ/Ó1�à×Ñ¨°1©ÐÑ6Ø—~‘~ h§l¡l×&>°d·h±hÓ?ˆHàŸ:™:×=Ñ=ˆLØ ŸJ™J×@Ñ@ˆMÙDMÓNÂI¸D˜m¨DÓ1°4Ò7ÁIˆNÐNÜ0°¿:¹:¿?¹?ÈIÓVˆHó $�Ø—z‘z×+Ñ+¨G×4Ó4Ø-¨l¸7Ó.CÑD�HÜ˜G§Z¡Z§_¡_°hÖ?ñ $ð Ÿ™×0Ñ0×?Ñ?ÓAˆJØ¨=¸%ÀÈUÐRÐRùò Os   ÂD7©Úbulkc                óú  ^ • T R                  5         T R                  5         [        R                  " T R                  T R
                  S9nU 4S jnU(       aÔ  / nU Hi  nU" U5        UR                  R                  (       d  UR                  R                  U:w  a  [        SU-  5      eUR                  UR                  5        Mk     T R                  R                  R                  U5      R                  US9R                  " S0 T R                   R"                  T R
                  0D6  g [$        R&                  " USS9   U H  nU" U5        UR)                  5         M     S S S 5        g ! , (       d  f       g = f)Nrh   c                 óô   >• [        U TR                  5      (       d1  [        STR                  R                  R                  < SU < 35      e[        U TR                  R                  TR                  5        g )NÚ'ú' instance expected, got )	r˜   rU   rø   r‰   r›   r¡   r   rX   r"   )r¼   r!   s    €r$   Úcheck_and_update_objÚ\create_reverse_many_to_one_manager.<locals>.RelatedManager.add.<locals>.check_and_update_objô  sX   ø€ Ü! # t§z¡z×2Ñ2Ý#ð !ŸJ™J×,Ñ,×8Ô8Úðóð ô ˜˜TŸZ™ZŸ_™_¨d¯m©mÕ<r'   zA%r instance isn't saved. Use bulk=False or save the object first.©Úpk__inF©r0   Ú	savepointr(   )r  r  r   r�   rU   r"   rœ   r·   rB   rš   ÚappendrÀ   ra   r0   r=   Úupdater   rX   r	   ÚatomicÚsave)r!   r(  ÚobjsrB   r-  Úpksr¼   s   `      r$   ÚaddÚ>create_reverse_many_to_one_manager.<locals>.RelatedManager.addï  s&  ø€ Ø×ÑÔ Ø×+Ñ+Ô-Ü×$Ò$ T§Z¡Z¸$¿-¹-ÑHˆBõ	=ö Ø�Û�CÙ(¨Ô-Ø—z‘z×(×(¨C¯J©J¯M©M¸RÓ,?Ü(ð0Ø25ñ6óð ð —J‘J˜sŸv™vÖ&ñ  ð —
‘
×(Ñ(×.Ñ.¨rÓ2×9Ñ9ÀÐ9ÐE×LÒLñ àŸ
™
Ÿ™¨¯©ðóô !×'Ò'¨b¸EÓBÛ#˜Ù,¨SÔ1ØŸ™ž
ñ  $÷ C×BÖBús   Å"E,Å,
E:c             —   óT   #   • [        U R                  5      " USU06I S h  v•N $  N7f©Nr(  ©r   r9  ©r!   r(  r7  s      r$   ÚaaddÚ?create_reverse_many_to_one_manager.<locals>.RelatedManager.aadd  s$   é € Ü& t§x¡xÔ0°$ÐB¸TÑB×BÐBÑBùó   ‚(¡&¢(c                 óø   >• U R                  5         U R                  XR                  R                  '   [        R
                  " U R                  U R                  S9n[        TU R                  U5      ]&  " S0 UD6$ ©Nrh   r(   )
r  r"   r   rX   r   r�   rU   r¸   rb   Úcreate©r!   r»   rB   ÚRelatedManagerrž   s      €€r$   rD  ÚAcreate_reverse_many_to_one_manager.<locals>.RelatedManager.create  s[   ø€ Ø×ÑÔ Ø&*§m¡mˆF—:‘:—?‘?Ñ#Ü×$Ò$ T§Z¡Z¸$¿-¹-ÑHˆBÜ˜¨¯©¸Ó)<ÒDÑNÀvÑNÐNr'   c              ›   óT   #   • [        U R                  5      " S0 UD6I S h  v•N $  N7f©Nr(   ©r   rD  ©r!   r»   s     r$   ÚacreateÚBcreate_reverse_many_to_one_manager.<locals>.RelatedManager.acreate#  s"   é € Ü& t§{¡{Ô3Ñ=°fÑ=×=Ð=Ñ=ùrA  c                 óø   >• U R                  5         U R                  XR                  R                  '   [        R
                  " U R                  U R                  S9n[        TU R                  U5      ]&  " S0 UD6$ rC  )
r  r"   r   rX   r   r�   rU   r¸   rb   Úget_or_createrE  s      €€r$   rO  ÚHcreate_reverse_many_to_one_manager.<locals>.RelatedManager.get_or_create(  s[   ø€ Ø×ÑÔ Ø&*§m¡mˆF—:‘:—?‘?Ñ#Ü×$Ò$ T§Z¡Z¸$¿-¹-ÑHˆBÜ˜¨¯©¸Ó)<ÒKÑUÈfÑUÐUr'   c              ›   óT   #   • [        U R                  5      " S0 UD6I S h  v•N $  N7frI  ©r   rO  rK  s     r$   Úaget_or_createÚIcreate_reverse_many_to_one_manager.<locals>.RelatedManager.aget_or_create0  s$   é € Ü& t×'9Ñ'9Ô:ÑD¸VÑD×DÐDÑDùrA  c                 óø   >• U R                  5         U R                  XR                  R                  '   [        R
                  " U R                  U R                  S9n[        TU R                  U5      ]&  " S0 UD6$ rC  )
r  r"   r   rX   r   r�   rU   r¸   rb   Úupdate_or_createrE  s      €€r$   rV  ÚKcreate_reverse_many_to_one_manager.<locals>.RelatedManager.update_or_create5  s\   ø€ Ø×ÑÔ Ø&*§m¡mˆF—:‘:—?‘?Ñ#Ü×$Ò$ T§Z¡Z¸$¿-¹-ÑHˆBÜ˜¨¯©¸Ó)<ÒNÑXÐQWÑXÐXr'   c              ›   óT   #   • [        U R                  5      " S0 UD6I S h  v•N $  N7frI  ©r   rV  rK  s     r$   Úaupdate_or_createÚLcreate_reverse_many_to_one_manager.<locals>.RelatedManager.aupdate_or_create=  s$   é € Ü& t×'<Ñ'<Ô=ÑGÀÑG×GÐGÑGùrA  c                ón  • U(       d  g U R                  5         U R                  R                  U R                  5      n[	        5       nU HÉ  n[        XPR                  5      (       d1  [        SU R                  R                  R                  < SU< 35      eU R                  R                  U5      U:X  a  UR                  UR                  5        MŠ  U R                  R                  R                  R                  U< SU R                  < S35      e   U R                  U R!                  US9U5        g )Nr+  r,  z is not related to rR   r/  )r  r   rl   r"   Úsetr˜   rU   rø   r‰   r›   rm   r9  rÀ   rT   rV   Ú_clearr=   )r!   r(  r7  r  Úold_idsr¼   s         r$   ÚremoveÚAcreate_reverse_many_to_one_manager.<locals>.RelatedManager.removeF  sé   € ÞØØ×"Ñ"Ô$Ø—j‘j×:Ñ:¸4¿=¹=ÓI�Ü›%�Û�CÜ% c¯:©:×6Ñ6Ý'ð !%§
¡
× 0Ñ 0× <Ô <Ú #ðóð ð —z‘z×9Ñ9¸#Ó>À#ÓEØŸ™ C§F¡FÖ+à"Ÿj™j×5Ñ5×;Ñ;×HÑHÛ:=¸t¿}¼}ÐMóð ñ  ð  —‘˜DŸK™K¨w˜KÐ7¸Õ>r'   c             —   óT   #   • [        U R                  5      " USU06I S h  v•N $  N7fr<  ©r   r`  r>  s      r$   ÚaremoveÚBcreate_reverse_many_to_one_manager.<locals>.RelatedManager.aremove`  s$   é € Ü*¨4¯;©;Ô7¸ÐIÀDÑI×IÐIÑIùrA  c                óF   • U R                  5         U R                  X5        g r   )r  r^  ©r!   r(  s     r$   ÚclearÚ@create_reverse_many_to_one_manager.<locals>.RelatedManager.cleare  s   € Ø×"Ñ"Ô$Ø—‘˜DÕ'r'   c             “   óP   #   • [        U R                  5      " US9I S h  v•N $  N7f)Nr'  ©r   rh  rg  s     r$   ÚaclearÚAcreate_reverse_many_to_one_manager.<locals>.RelatedManager.acleark  s   é € Ü*¨4¯:©:Ô6¸DÑA×AÐAÑAùs   ‚&Ÿ$ &c                 óð  • U R                  5         [        R                  " U R                  U R                  S9nUR                  U5      nU(       a)  UR                  " S0 U R                  R                  S 0D6  g [        R                  " USS9   U HG  n[        X@R                  R                  S 5        UR                  U R                  R                  /S9  MI     S S S 5        g ! , (       d  f       g = f)Nrh   Fr1  )Úupdate_fieldsr(   )r  r   r�   rU   r"   r0   r4  r   rX   r	   r5  r¡   r6  )r!   r>   r(  rB   r¼   s        r$   r^  ÚAcreate_reverse_many_to_one_manager.<locals>.RelatedManager._clearp  s§   € Ø×/Ñ/Ô1Ü×(Ò(¨¯©¸d¿m¹mÑL�Ø#Ÿ>™>¨"Ó-�Þà—O’OÑ> t§z¡z§¡¸Ð&=Ó>ä$×+Ò+°"ÀÓFÛ#+˜CÜ# C¯©¯©¸$Ô?ØŸH™H°D·J±J·O±OÐ3D˜HÓEñ $,÷ G×FÖFús   ÂAC'Ã'
C5F)r(  rh  c                ó˜  • U R                  5         [        U5      nU R                  R                  (       añ  [        R
                  " U R                  U R                  S9n[        R                  " USS9   U(       a"  U R                  US9  U R                  " USU06  O€[        U R                  U5      R                  5       5      n/ nU H,  nXu;   a  UR                  U5        M  UR!                  U5        M.     U R                  " USU06  U R                  " USU06  S S S 5        g U R                  " USU06  g ! , (       d  f       g = f)Nrh   Fr1  r'  r(  )r  rà   r   r‹   r   r�   rU   r"   r	   r5  rh  r9  r]  r0   rc   r`  r3  )r!   r7  r(  rh  rB   Úold_objsÚnew_objsr¼   s           r$   r]  Ú>create_reverse_many_to_one_manager.<locals>.RelatedManager.set  s  € Ø×ÑÔ ô ˜“;ˆDà�z‰z��Ü×(Ò(¨¯©¸d¿m¹mÑL�Ü ×'Ò'¨b¸EÓBÞØŸ
™
¨˜
Ñ-ØŸš $Ð2¨TÓ2ä#& t§z¡z°"£~×'9Ñ'9Ó';Ó#<˜Ø#%˜Û#'˜CØ"›Ø (§¡°Ö 4à (§¡°Ö 4ñ	 $(ð Ÿš XÐ9°DÒ9ØŸš (Ð6°Ò6÷ CÐBð  —’˜$Ð* TÓ*÷! CÕBús   Á5B*D;Ä;
E	c             “   óR   #   • [        U R                  5      " XUS9I S h  v•N $  N7f)N)r7  r(  rh  ©r   r]  )r!   r7  r(  rh  s       r$   ÚasetÚ?create_reverse_many_to_one_manager.<locals>.RelatedManager.aset›  s!   é € Ü& t§x¡xÔ0°dÈUÑS×SÐSÑSùó   ‚' %¡')rþ   r   r"   rU   r   ) r)   r*   r+   r,   rM   r  Údo_not_call_in_templatesr  r  r  re   r{   r9  Úalters_datar?  rD  rL  rO  rS  rV  rZ  r   r‹   r`  rd  rh  rl  r^  r]  rw  r-   rÆ   )rž   rF  rê   s   @€€r$   rF  rü   €  sJ  ù† ö	<õ	0ð
 $(Ð ò	ò&	òP	õ	9÷"	Sð* #'õ #	#ðJ ˆŒà)-õ 	Cð  ˆÔö	Oð "ˆÔò	>ð #ˆÔö	Vð %)ˆÔ!ò	Eð &*ˆÔ"ö	Yð (,ÐÔ$ò	Hð )-ÐÔ%ñ �9‰9�>�>à)-õ ?ð0 "&ˆFÔà04õ Jð #'ˆGÔà$(õ (ð !%ˆEÔà+/õ Bð "&ˆFÔòFð "&ˆFÔà$(°õ 	+ð4 ˆŒà+/°uõ 	Tð  ˆ×Òr'   rF  ©r   )Ú
superclassrê   rF  s    `@r$   rí   rí   x  s"   ù€ ÷^ ð ^ ˜¤Zô ^ ð@	 Ðr'   c                   óV   ^ • \ rS rSrSrSU 4S jjr\S 5       r\S 5       r	S r
SrU =r$ )	ÚManyToManyDescriptori£  a¹  
Accessor to the related objects manager on the forward and reverse sides of
a many-to-many relation.

In the example::

    class Pizza(Model):
        toppings = ManyToManyField(Topping, related_name='pizzas')

``Pizza.toppings`` and ``Topping.pizzas`` are ``ManyToManyDescriptor``
instances.

Most of the implementation is delegated to a dynamically defined manager
class built by ``create_forward_many_to_many_manager()`` defined below.
c                 ó0   >• [         TU ]  U5        X l        g r   )r¸   rM   Úreverse)r!   rê   r�  rž   s      €r$   rM   ÚManyToManyDescriptor.__init__´  s   ø€ Ü‰Ñ˜Ôà�r'   c                 ó.   • U R                   R                  $ r   )rê   ÚthroughrY   s    r$   r„  ÚManyToManyDescriptor.through¹  s   € ð
 �x‰x×ÑÐr'   c                 óâ   • U R                   (       a  U R                  R                  OU R                  R                  n[	        UR
                  R                  U R                  U R                   S9$ )N©r�  )r�  rê   rÎ   rU   Ú#create_forward_many_to_many_managerrî   rž   rï   s     r$   rð   Ú(ManyToManyDescriptor.related_manager_clsÀ  sK   € à26·,·,˜Ÿ™×.Ò.ÀDÇHÁHÇNÁNˆä2Ø×*Ñ*×4Ñ4Ø�H‰HØ—L‘Lñ
ð 	
r'   c                 ó¶   • SU R                   (       a  SOS-  U R                   (       a  U R                  R                  5       4$ U R                  R                  4$ )Nz%s side of a many-to-many setr�  Úforward)r�  rê   rØ   r   rX   rY   s    r$   rõ   Ú4ManyToManyDescriptor._get_set_deprecation_msg_paramsÊ  sM   € à+Ø ŸLŸL‰y¨iñ9à,0¯L¯LˆD�H‰H×&Ñ&Ó(ð
ð 	
ð ?C¿j¹j¿o¹oð
ð 	
r'   r‡  )F)r)   r*   r+   r,   rª   rM   Úpropertyr„  r   rð   rõ   r-   rÆ   rÇ   s   @r$   r  r  £  s?   ø† ñ÷ ð
 ñ ó ð ð ñ
ó ð
÷
ð 
r'   r  c                 ó6   ^^^•  " UUU4S jSU [         5      mT$ )z×
Create a manager for the either side of a many-to-many relation.

This manager subclasses another manager, generally the default manager of
the related model, and adds behaviors specific to many-to-many relations.
c                   ó(  >^ • \ rS rSrS"U UU4S jjrUU4S jrSrS rS rS r	U 4S	 jr
S"U 4S
 jjrSS.S jrS\l        SS.S jrS\l        S rS\l        S rS\l        U 4S jrS\l        S rS\l        SSS.S jrS\l        SSS.S jrS\l        SS.UU 4S jjrS\l        SS.S jrS\l        SS.UU 4S jjrS\l        SS.S jrS\l        SS.UU 4S jjrS\l        SS.S jrS\l        S rS rS rSS.S jrU 4S  jrS!r U =r!$ )#Ú?create_forward_many_to_many_manager.<locals>.ManyRelatedManageriÚ  Nc                 óÄ  >• [         TU ]  5         Xl        T(       d›  TR                  U l        TR                  R                  5       U l        TR                  R                  U l        TR                  R                  5       U l
        TR                  R                  5       U l        TR                  U l        O�TR                  U l        TR                  R                  U l        TR                  R                  5       U l        TR                  R                  5       U l
        TR                  R                  5       U l        SU l        TR                  U l        TU l        U R                  R"                  R%                  U R                  5      U l        U R                  R"                  R%                  U R                  5      U l        0 U l        0 U l        U R&                  R.                   Hg  u  p#U R                  < SUR                  < 3n[1        XR2                  5      U R*                  U'   UR                  U R,                  UR                  '   Mi     U R&                  R5                  U5      U l        S U R6                  ;   a+  [9        SU< SU R,                  U R                     < S35      eUR:                  c"  [9        SUR<                  R>                  -  5      eg )NFÚ__r  r  z4" before this many-to-many relationship can be used.z]%r instance needs to have a primary key value before a many-to-many relationship can be used.) r¸   rM   r"   rU   r   rq   Úquery_field_namerX   Úprefetch_cache_nameÚm2m_field_nameÚsource_field_nameÚm2m_reverse_field_nameÚtarget_field_nameÚsymmetricalrÎ   r„  r�  r‰   Ú	get_fieldÚsource_fieldr  rþ   Úpk_field_namesr    r¢   r   rl   Úrelated_valrš   rÀ   rž   r)   )r!   r"   r¤   r¥   Úcore_filter_keyrž   rê   r�  s        €€€r$   rM   ÚHcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.__init__Û  s4  ø€ Ü‰GÑÔà$ŒMæØ ŸY™Y�”
Ø(+¯	©	×(DÑ(DÓ(F�Ô%Ø+.¯9©9¯>©>�Ô(Ø),¯©×)AÑ)AÓ)C�Ô&Ø),¯©×)IÑ)IÓ)K�Ô&Ø#&§?¡?�Õ à ×.Ñ.�”
Ø(+¯	©	¯©�Ô%Ø+.¯9©9×+GÑ+GÓ+I�Ô(Ø),¯©×)IÑ)IÓ)K�Ô&Ø),¯©×)AÑ)AÓ)C�Ô&Ø#(�Ô àŸ;™;ˆDŒLØ"ˆDŒLà $§¡× 2Ñ 2× <Ñ <¸T×=SÑ=SÓ TˆDÔØ $§¡× 2Ñ 2× <Ñ <¸T×=SÑ=SÓ TˆDÔà "ˆDÔØ"$ˆDÔØ&*×&7Ñ&7×&FÔ&FÑ"�Ø.2×.CÔ.CÀXÇ]Ã]Ð"S�Ü5<¸X×GWÑGWÓ5X�×!Ñ! /Ñ2Ø5=·]±]�×#Ñ# H§M¡MÓ2ñ 'Gð
  $×0Ñ0×JÑJÈ8ÓTˆDÔØ�t×'Ñ'Ó'Ý ó   ×!4Ñ!4°T×5KÑ5KÔ!LðNóð ð �{‰{Ñ"Ü ð?à×(Ñ(×1Ñ1ñ2óð ð #r'   c                ó~   >• [        U R                  U5      n[        UR                  TT5      nU" U R                  S9$ r~   )r¢   rU   rˆ  rž   r"   )r!   r  r  rê   r�  s      €€r$   r  ÚHcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.__call__  s;   ø€ Ü˜dŸj™j¨'Ó2ˆGÜ?Ø×!Ñ! 3¨óˆMñ !¨$¯-©-Ñ8Ð8r'   Tc                 óü  • [         R                  " U R                  U R                  4/5      n[	        U[
        5      (       + =(       d    UR                  5       nU(       a)  U[         R                  " U R                   S3U4/5      -  nU R                  (       aa  [         R                  " U R                  U R                  4/5      nU(       a)  U[         R                  " U R                   S3U4/5      -  nX$-  nU$ )Nr/   )	r
   rD  r–  r�  r˜   r   Ú_has_filtersr˜  r™  )r!   Úremoved_valsÚfiltersÚremoved_vals_filtersÚsymmetrical_filterss        r$   Ú_build_remove_filtersÚUcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._build_remove_filters  sæ   € Ü—h’h ×!7Ñ!7¸×9IÑ9IÐ JÐKÓLˆGô ˜|¬XÓ6Ô6×U¸,×:SÑ:SÓ:Uð !ö $Øœ1Ÿ8š8¨×)?Ñ)?Ð(@ÀÐ&EÀ|Ð%TÐ$UÓVÑV�Ø××Ü&'§h¢hØ×,Ñ,¨d×.>Ñ.>Ð?Ð@ó'Ð#ö (Ø'¬1¯8ª8Ø!×3Ñ3Ð4°DÐ9¸<ÐHÐIó,ñ Ð'ð Ñ.�ØˆNr'   c                 óî   • UR                  U R                  S9  U R                  (       a  UR                  U R                  5      nSUl        UR                  5       R                  " S0 U R                  D6$ )r  rh   Tr(   )rk   r"   r3   r0   r  Ú_next_is_stickyr=   rþ   )r!   r>   s     r$   r  ÚRcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._apply_rel_filters*  s]   € ð ×Ñ¨¯©ÐÑ7Ø�x�xØ#Ÿ>™>¨$¯(©(Ó3�Ø*.ˆHÔ'Ø×+Ñ+Ó-×4Ò4ÑI°t×7HÑ7HÑIÐIr'   c                 ó�   •  U R                   R                  R                  U R                  5        g ! [        [
        4 a     g f = fr   )r"   r  r  r”  rW   rˆ   rY   s    r$   r  ÚZcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._remove_prefetched_objects4  s<   € ðØ—‘×7Ñ7×;Ñ;¸D×<TÑ<TÕUøÜ"¤HÐ-ó Ùðús   ‚/2 ²AÁAc                 ó¶   >•  U R                   R                  U R                     $ ! [        [        4 a"    [
        TU ]  5       nU R                  U5      s $ f = fr   )r"   r  r”  rW   rˆ   r¸   re   r  r"  s     €r$   re   ÚLcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.get_queryset:  sU   ø€ ð9Ø—}‘}×>Ñ>¸t×?WÑ?WÑXÐXøÜ"¤HÐ-ó 9Ü ™7Ñ/Ó1�Ø×.Ñ.¨xÓ8Ò8ð9ús   ƒ"& ¦/AÁAc                 óÎ  >^^• Uc  [         TU ]  5       nUR                  US   S9  UR                  UR                  =(       d    U R                  5      n[        UR                  5       U R                  U5      nU R                  R                  R                  U R                  5      mTR                  R                  R                  n[        UR                     mTR                   R"                  nUR%                  TR&                   Vs0 s H0  nSUR(                  -  U" U5      < SU" UR*                  5      < 3_M2     snS9nUU4S jUU4S jSU R,                  S4$ s  snf )	Nr   rh   ú_prefetch_related_val_%srR   )Úselectc                 óD   >^ • [        U 4S jTR                   5       5      $ )Nc              3   óV   >#   • U  H  n[        TS UR                  -  5      v •  M      g7f)r²  NrÞ   )r¯   ÚfÚresults     €r$   r±   Úzcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.get_prefetch_queryset.<locals>.<lambda>.<locals>.<genexpr>`  s,   øé € ð %â4˜ô ˜FÐ$>ÀÇÁÑ$J×KÐKÚ4ùs   ƒ&))rà   râ   )r·  Úfks   `€r$   Ú<lambda>Úgcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.get_prefetch_queryset.<locals>.<lambda>`  s   ù€ œuô %à×4Ò4ó%ô  r'   c                 óF   >^ • [        UU 4S jTR                   5       5      $ )Nc              3   óp   >#   • U  H+  nUR                  [        TUR                  5      T5      v •  M-     g 7fr   )Úget_db_prep_valuer¢   r   )r¯   r¶  Ú
connectionrw   s     €€r$   r±   r¸  d  s3   øé € ð #â6˜ð ×'Ñ'¬°°a·i±iÓ(@À*×MÐMÚ6ùs   ƒ36)rà   rn   )rw   r¿  r¹  s   `€€r$   rº  r»  d  s   ù€ œUõ #à×6Ò6ó#ô r'   F)r¸   re   rk   r0   r3   rF   r«  r“  r„  r‰   rš  r–  rU   Údb_tabler   rB   ÚopsÚ
quote_nameÚextrarâ   r   Úcolumnr”  )	r!   r@   r>   Ú
join_tableÚqnr¶  r¿  r¹  rž   s	         @@€r$   r{   ÚUcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.get_prefetch_querysetA  sH  ú€ ØÑÜ ™7Ñ/Ó1�à×Ñ¨°1©ÐÑ6Ø—~‘~ h§l¡l×&>°d·h±hÓ?ˆHÜ0Ø×(Ñ(Ó*¨D×,AÑ,AÀ9óˆHð —‘×#Ñ#×-Ñ-¨d×.DÑ.DÓEˆBØŸ™Ÿ™×0Ñ0ˆJÜ$ X§[¡[Ñ1ˆJØ—‘×*Ñ*ˆBØ—~‘~ð
  ×4Ò4ó	ò 5˜ð /Ø—i‘iñ á˜*–~¡r¨!¯(©(¥|ð"5ò5ñ 5ñ	ð &ð ˆHð ôõð Ø×(Ñ(Øðð ùòs   Ä7E"©Úthrough_defaultsc                ó¢  • U R                  5         [        R                  " U R                  U R                  S9n[
        R                  " USS9   U R                  " U R                  U R                  /UQ7SU06  U R                  (       a+  U R                  " U R                  U R                  /UQ7SU06  S S S 5        g ! , (       d  f       g = f)Nrh   Fr1  rÉ  )r  r   r�   r„  r"   r	   r5  Ú
_add_itemsr–  r˜  r™  )r!   rÉ  r7  rB   s       r$   r9  ÚCcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.addm  s³   € Ø×+Ñ+Ô-Ü×$Ò$ T§\¡\¸D¿M¹MÑJˆBÜ×#Ò#¨"¸Ó>Ø—’Ø×*Ñ*Ø×*Ñ*ðð òð &6ò	ð ×#×#Ø—O’OØ×.Ñ.Ø×.Ñ.ðð òð *:ò	÷ ?×>Ö>ús   ÁA(C Ã 
Cc             —   óT   #   • [        U R                  5      " USU06I S h  v•N $  N7f)NrÉ  r=  )r!   rÉ  r7  s      r$   r?  ÚDcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.aaddƒ  s0   é € Ü& t§x¡xÔ0ØðØ(8ñ÷ ð ñ ùrA  c                 ót   • U R                  5         U R                  " U R                  U R                  /UQ76   g r   )r  Ú_remove_itemsr–  r˜  ©r!   r7  s     r$   r`  ÚFcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.removeŠ  s0   € Ø×+Ñ+Ô-Ø×Ò˜t×5Ñ5°t×7MÑ7MÐUÐPTÔUr'   c              —   óN   #   • [        U R                  5      " U6 I S h  v•N $  N7fr   rc  rÑ  s     r$   rd  ÚGcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.aremove�  s   é € Ü& t§{¡{Ô3°TÐ:×:Ð:Ñ:ùs   ‚%ž#Ÿ%c                 óÞ  >• [         R                  " U R                  U R                  S9n[        R
                  " USS9   [        R                  R                  U R                  SU R                  U R                  U R                  S US9  U R                  5         U R                  [        TU ]9  5       R                  U5      5      nU R                  R                   R                  U5      R#                  U5      R%                  5         [        R                  R                  U R                  SU R                  U R                  U R                  S US9  S S S 5        g ! , (       d  f       g = f)Nrh   Fr1  Ú	pre_clear©ÚsenderÚactionr"   r�  rU   Úpk_setr0   Ú
post_clear)r   r�   r„  r"   r	   r5  r   Úm2m_changedÚsendr�  rU   r  r¨  r¸   re   r0   rî   r=   Údelete)r!   rB   r¥  rž   s      €r$   rh  ÚEcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.clear•  s  ø€ Ü×$Ò$ T§\¡\¸D¿M¹MÑJˆBÜ×#Ò#¨"¸Ó>Ü×#Ñ#×(Ñ(ØŸ<™<Ø&Ø!Ÿ]™]Ø ŸL™LØŸ*™*ØØð )ñ ð ×/Ñ/Ô1Ø×4Ñ4´U±WÑ5IÓ5K×5QÑ5QÐRTÓ5UÓV�Ø—‘×-Ñ-×3Ñ3°BÓ7×>Ñ>¸wÓG×NÑNÔPä×#Ñ#×(Ñ(ØŸ<™<Ø'Ø!Ÿ]™]Ø ŸL™LØŸ*™*ØØð )ñ ÷ ?×>Ö>ús   Á DEÅ
E,c              “   óR   #   • [        U R                  5      " 5       I S h  v•N $  N7fr   rk  rY   s    r$   rl  ÚFcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.aclear±  s   é € Ü& t§z¡zÔ2Ó4×4Ð4Ñ4ùry  F)rh  rÉ  c                óú  • [        U5      n[        R                  " U R                  U R                  S9n[
        R                  " USS9   U(       a#  U R                  5         U R                  " USU06  Oî[        U R                  U5      R                  U R                  R                  R                  SS95      n/ nU H  n[        XpR                  5      (       a  U R                  R!                  U5      S   OU R                  R#                  U5      nX…;   a  UR%                  U5        Mn  UR'                  U5        M�     U R$                  " U6   U R                  " USU06  S S S 5        g ! , (       d  f       g = f)Nrh   Fr1  rÉ  T©Úflatr   )rà   r   r�   r„  r"   r	   r5  rh  r9  r]  r0   Úvalues_listr  r   r˜   rU   rl   Úget_prep_valuer`  r3  )	r!   r7  rh  rÉ  rB   r_  rs  r¼   Úfk_vals	            r$   r]  ÚCcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.set¶  s3  € ô ˜“;ˆDä×$Ò$ T§\¡\¸D¿M¹MÑJˆBÜ×#Ò#¨"¸Ó>ÞØ—J‘J”LØ—H’H˜dÐFÐ5EÓFä!ØŸ
™
 2›×2Ñ2Ø ×-Ñ-×:Ñ:×BÑBÈð 3ð ó�Gð  "�HÛ#˜ô  *¨#¯z©z×:Ñ:ð !×-Ñ-×GÑGÈÓLÈQÒOà!%×!2Ñ!2×!AÑ!AÀ#Ó!Fð ð
 "Ó,Ø#ŸN™N¨6Ö2à$ŸO™O¨CÖ0ñ  $ð —K’K Ñ)Ø—H’H˜hÐJÐ9IÒJ÷1 ?×>Ö>ús   Á
DE,Å,
E:c             “   óR   #   • [        U R                  5      " XUS9I S h  v•N $  N7f)N)r7  rh  rÉ  rv  )r!   r7  rh  rÉ  s       r$   rw  ÚDcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.asetØ  s+   é € Ü& t§x¡xÔ0ØÐ9Iñ÷ ð ñ ùry  c                óÊ   >• [         R                  " U R                  R                  U R                  S9n[        TU R                  U5      ]  " S0 UD6nU R                  XAS9  U$ ©Nrh   rÈ  r(   )r   r�   r"   rž   r¸   rb   rD  r9  )r!   rÉ  r»   rB   Únew_objÚManyRelatedManagerrž   s        €€r$   rD  ÚFcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.createß  sT   ø€ Ü×$Ò$ T§]¡]×%<Ñ%<ÀtÇ}Á}ÑUˆBÜÐ.°·±ÀÓ0CÒKÑUÈfÑUˆGØ�H‰H�WˆHÑ@ØˆNr'   c             ›   óX   #   • [        U R                  5      " SSU0UD6I S h  v•N $  N7f©NrÉ  r(   rJ  ©r!   rÉ  r»   s      r$   rL  ÚGcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.acreateç  s5   é € Ü& t§{¡{Ô3ñ Ø!1ðØ5;ñ÷ ð ñ ùó   ‚!*£(¤*c                óÞ   >• [         R                  " U R                  R                  U R                  S9n[        TU R                  U5      ]  " S0 UD6u  pEU(       a  U R                  XAS9  XE4$ rì  )r   r�   r"   rž   r¸   rb   rO  r9  ©r!   rÉ  r»   rB   r¼   Úcreatedrî  rž   s         €€r$   rO  ÚMcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.get_or_createî  sc   ø€ Ü×$Ò$ T§]¡]×%<Ñ%<ÀtÇ}Á}ÑUˆBÜ Ð!3°T·_±_ÀRÓ5HÒWñ Øñ‰LˆCö
 Ø—‘˜�Ñ@Ø�<Ðr'   c             ›   óX   #   • [        U R                  5      " SSU0UD6I S h  v•N $  N7frñ  rR  rò  s      r$   rS  ÚNcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.aget_or_createû  s7   é € Ü& t×'9Ñ'9Ô:ñ Ø!1ðØ5;ñ÷ ð ñ ùrô  c                óà   >• [         R                  " U R                  R                  U R                  S9n[        TU R                  U5      ]   " S0 UD6u  pEU(       a  U R                  XAS9  XE4$ rì  )r   r�   r"   rž   r¸   rb   rV  r9  rö  s         €€r$   rV  ÚPcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.update_or_create  sm   ø€ Ü×$Ò$ T§]¡]×%<Ñ%<ÀtÇ}Á}ÑUˆBÜ Ø" D§O¡O°BÓ$7ñàðñ )à!'ñ)‰LˆCö
 Ø—‘˜�Ñ@Ø�<Ðr'   c             ›   óX   #   • [        U R                  5      " SSU0UD6I S h  v•N $  N7frñ  rY  rò  s      r$   rZ  ÚQcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager.aupdate_or_create  s7   é € Ü& t×'<Ñ'<Ô=ñ Ø!1ðØ5;ñ÷ ð ñ ùrô  c           
      óÖ  • SSK Jn  [        5       nU R                  R                  R                  U5      nU GH,  n[        X`R                  5      (       a­  [        R                  " X`R                  5      (       dJ  [        SU< SU R                  R                  R                  < SUR                  R                  < S35      eUR                  U5      S   nUc  [        SU< SU< S35      eUR                  U5        MË  [        Xc5      (       a1  [!        S	U R                  R                  R"                  < S
U< 35      eUR                  UR%                  U5      5        GM/     U$ )zC
Return the set of ids of `objs` that the target field references.
r   )ÚModelzCannot add "z": instance is on database "z", value is on database "r  z": the value for field "z	" is Noner+  r,  )Údjango.db.modelsr   r]  r„  r‰   rš  r˜   rU   r   rŸ   r"   rš   rœ   rB   rl   r9  rø   r›   ræ  )r!   r˜  r7  r   Ú
target_idsr  r¼   Ú	target_ids           r$   Ú_get_target_idsÚOcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._get_target_ids  s!  € õ /ä›ˆJØŸ<™<×-Ñ-×7Ñ7Ð8IÓJˆLÜ�Ü˜c§:¡:×.Ñ.Ü!×0Ò0°·m±m×DÑDÝ(ó  # D§M¡M×$8Ñ$8×$;Ô$;¸S¿Z¹Z¿]¼]ðLóð ð
 !-× FÑ FÀsÓ KÈAÑ N�IØ Ñ(Ý(ã"Ó$5ð7óð ð —N‘N 9Ö-Ü ×+Ñ+Ý#àŸ:™:×+Ñ+×7Ô7ºð>óð ð
 —N‘N <×#>Ñ#>¸sÓ#C×Dñ+ ð, Ðr'   c                 óÐ   • U R                   R                  R                  U5      R                  USS9R                  " S0 XR
                  S   SU-  U0D6nUR                  U5      $ )zW
Return the subset of ids of `objs` that aren't already assigned to
this relationship.
Trã  r   rj   r(   )r„  rî   r0   rå  r=   r�  Ú
difference)r!   r–  r˜  rB   r  Úvalss         r$   Ú_get_missing_target_idsÚWcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._get_missing_target_ids6  sw   € ð —‘×-Ñ-×3Ñ3°BÓ7ß‘Ð.°T�Ð:ß‘ðñ ð *×+;Ñ+;¸AÑ+>Ø Ð#4Ñ4°jðñð ð ×(Ñ(¨Ó.Ð.r'   c                 óV  • U R                   R                  R                  SL=(       a    [        U   R                  R
                  nU R                  =(       d    X R                  :H  =(       a)    [        R                  R                  U R                   5      nUUU=(       a    U(       + 4$ )a/  
Return a boolean triple of the way the add should be performed.

The first element is whether or not bulk_create(ignore_conflicts)
can be used, the second whether or not signals must be sent, and
the third element is whether or not the immediate bulk insertion
with conflicts ignored can be performed.
F)r„  r‰   Úauto_createdr   r6   Úsupports_ignore_conflictsr�  r–  r   rÜ  Úhas_listeners)r!   rB   r–  Úcan_ignore_conflictsÚmust_send_signalss        r$   Ú_get_add_planÚMcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._get_add_planI  s“   € ð —‘×"Ñ"×/Ñ/°uÐ<÷ GÜ ‘O×,Ñ,×FÑFð !ð —‘×KÐ 1×5KÑ5KÑ K÷!Dä×&Ñ&×4Ñ4°T·\±\ÓBð ð %Ø!Ø%×?Ð.?Ô*?ðð r'   c                óˆ  • U(       d  g [        [        U=(       d    0 5      5      nU R                  X$5      n[        R                  " U R
                  U R                  S9nU R                  Xa5      u  pxn	U	(       al  U R
                  R                  R                  U5      R                  U V
s/ s H,  n
U R
                  " S0 SU-  U R                  S   SU-  U
0D6PM.     sn
SS9  g U R                  XXe5      n[        R                  " USS9   U(       aK  [        R                   R#                  U R
                  SU R                  U R$                  U R&                  UUS	9  U R
                  R                  R                  U5      R                  U V
s/ s H.  n
U R
                  " S0 UDSU-  U R                  S   SU-  U
0D6PM0     sn
US9  U(       aK  [        R                   R#                  U R
                  S
U R                  U R$                  U R&                  UUS	9  S S S 5        g s  sn
f s  sn
f ! , (       d  f       g = f)Nrh   z%s_idr   T)Úignore_conflictsFr1  Úpre_addr×  Úpost_addr(   )Údictr   r  r   r�   r„  r"   r  rî   r0   Úbulk_creater�  r	  r	   r5  r   rÜ  rÝ  r�  rU   )r!   r–  r˜  rÉ  r7  r  rB   r  r  Úcan_fast_addr  Úmissing_target_idss               r$   rË  ÚJcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._add_itemsj  sI  € ö Øä#Ô$5Ð6F×6LÈ"Ó$MÓNÐØ×-Ñ-Ð.?ÓFˆJÜ×$Ò$ T§\¡\¸D¿M¹MÑJˆBØDH×DVÑDVØóEÑAÐ °\ö Ø—‘×-Ñ-×3Ñ3°BÓ7×CÑCñ *4óò *4˜Ið Ÿšñ à 'Ð*;Ñ ;¸T×=MÑ=MÈaÑ=PØ 'Ð*;Ñ ;¸Yðôñ *4ñð &*ð Dñ ð à!%×!=Ñ!=Ø!°bó"Ðô ×#Ò#¨"¸Ó>Þ$Ü×'Ñ'×,Ñ,Ø#Ÿ|™|Ø(Ø!%§¡Ø $§¡Ø"Ÿj™jØ1Ø ð -ñ ð —‘×-Ñ-×3Ñ3°BÓ7×CÑCñ *<ó	ò *<˜Ið Ÿšñ Ø.ðð !(Ð*;Ñ ;¸T×=MÑ=MÈaÑ=PØ 'Ð*;Ñ ;¸Yðôñ *<ñ	ð &:ð Dñ ö %Ü×'Ñ'×,Ñ,Ø#Ÿ|™|Ø)Ø!%§¡Ø $§¡Ø"Ÿj™jØ1Ø ð -ñ ÷7 ?Ð>ùò!ùò:	÷ ?Õ>ús&   Â-3H)ÄBH3Æ5H.
ÇAH3È.H3È3
Ic                 óJ  >• U(       d  g [        5       nU H_  n[        XPR                  5      (       a1  U R                  R	                  U5      S   nUR                  U5        MN  UR                  U5        Ma     [        R                  " U R                  U R                  S9n[        R                  " USS9   [        R                  R                  U R                  SU R                  U R                  U R                  UUS9  [         TU ]E  5       nUR%                  5       (       aE  UR'                  U5      R(                  " S	0 SU R                  R                  R*                  -  U0D6n	OUn	U R-                  U	5      n
U R                  R.                  R'                  U5      R)                  U
5      R1                  5         [        R                  R                  U R                  SU R                  U R                  U R                  UUS9  S S S 5        g ! , (       d  f       g = f)
Nr   rh   Fr1  Ú
pre_remover×  rj   Úpost_remover(   )r]  r˜   rU   r  rl   r9  r   r�   r„  r"   r	   r5  r   rÜ  rÝ  r�  r¸   re   r£  r0   r=   r   r¨  rî   rÞ  )r!   r–  r˜  r7  r_  r¼   rç  rB   Útarget_model_qsÚold_valsr¥  rž   s              €r$   rÐ  ÚMcreate_forward_many_to_many_manager.<locals>.ManyRelatedManager._remove_items±  s´  ø€ ö
 Øô “eˆGÛ�Ü˜c§:¡:×.Ñ.Ø!×.Ñ.×HÑHÈÓMÈaÑP�FØ—K‘K Ö'à—K‘K Ö$ñ ô ×$Ò$ T§\¡\¸D¿M¹MÑJˆBÜ×#Ò#¨"¸Ó>ä×#Ñ#×(Ñ(ØŸ<™<Ø'Ø!Ÿ]™]Ø ŸL™LØŸ*™*Ø"Øð )ñ ô #(¡'Ñ"6Ó"8�Ø"×/Ñ/×1Ñ1Ø.×4Ñ4°RÓ8×?Ò?ñ  Ø# d×&7Ñ&7×&DÑ&D×&LÑ&LÑLÈgÐVñ ‘Hð  '�HØ×4Ñ4°XÓ>�Ø—‘×-Ñ-×3Ñ3°BÓ7×>Ñ>¸wÓG×NÑNÔPä×#Ñ#×(Ñ(ØŸ<™<Ø(Ø!Ÿ]™]Ø ŸL™LØŸ*™*Ø"Øð )ñ ÷+ ?×>Ö>ús   Â7EHÈ
H")rþ   r"   rU   rœ  r”  r“  r�  r�  r›  r–  r™  r  r˜  r„  r   )"r)   r*   r+   r,   rM   r  rz  r¨  r  r  re   r{   r9  r{  r?  r`  rd  rh  rl  r]  rw  rD  rL  rO  rS  rV  rZ  r  r	  r  rË  rÐ  r-   rÆ   )rž   rî  rê   r�  s   @€€€r$   rî  r�  Ú  sg  ù† ÷0	ñ 0	öd	9ð $(Ð ò	ò(	Jò	õ	9÷*	ðX /3õ 	ð( ˆŒà59õ 	ð
  ˆÔò	Vð "ˆÔò	;ð #ˆÔõ	ð4 !ˆÔò	5ð "ˆÔà%*¸Tõ 	Kð@ ˆŒà,1ÀDõ 	ð
  ˆÔà-1÷ 	ñ 	ð "ˆÔà48õ 	ð
 #ˆÔà48÷ 		 ñ 		 ð %)ˆÔ!à;?õ 	ð
 &*ˆÔ"à7;÷ 		 ñ 		 ð (,ÐÔ$à>Bõ 	ð
 )-ÐÔ%ò	ò@	/ò&	ðD QUõE	÷N/	ó /	r'   rî  r|  )r}  rê   r�  rî  s    ``@r$   rˆ  rˆ  Ò  s"   ú€ ÷Fñ F˜Z¬ô FðP Ðr'   N)&rª   Úasgiref.syncr   Údjango.core.exceptionsr   Ú	django.dbr   r   r   r   r	   r  r
   r   r   Údjango.db.models.functionsr   Údjango.db.models.lookupsr   r   Údjango.db.models.queryr   Údjango.db.models.query_utilsr   Údjango.db.models.utilsr   r   Údjango.utils.functionalr   r   rF   rH   r¬   rÉ   rè   rí   r  rˆ  r(   r'   r$   Ú<module>r+     s›   ðñ?õB 'å -÷õ ÷ 0Ñ /Ý 0ß AÝ +Ý :ß @Ý 3ô6Ð"3ô 6ò&÷*[<ñ [<ô|0@Ð :ô 0@÷fx@ñ x@÷v6
ñ 6
òrhôV	,
Ð5ô ,
ó^Pr'   