§
    ¥”jË ã                   óÊ  — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddl	mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8 ddlm9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmZmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU ddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z] ddlm^Z^m_Z_m`Z`maZa ddlVmbZbmcZc dZddZedZf G d„ de¦  «        Zg G d„ deh¦  «        Zid„ Zj G d „ d!egei¬"¦  «        Zk G d#„ d$eg¦  «        Zld%„ Zm G d&„ d'ek¦  «        Zn G d(„ d)en¦  «        ZodS )*a´  
Serializers and ModelSerializers are similar to Forms and ModelForms.
Unlike forms, they are not constrained to dealing with HTML output, and
form encoded input.

Serialization in REST framework is a two-phase process:

1. Serializers marshal between complex types like model instances, and
python primitives.
2. The process of marshaling between python primitives and request and
response content is handled by parsers and renderers.
é    N)Údefaultdict)ÚMapping)ÚFieldDoesNotExistÚImproperlyConfigured)ÚValidationError)Úmodels)ÚField)Útimezone)Úcached_property)Úgettext_lazy)Ú!get_referenced_base_fields_from_qÚpostgres_fields)ÚErrorDetailr   )Úget_error_detail)Úapi_settings)ÚhtmlÚ
model_metaÚrepresentation)ÚClassLookupDictÚget_field_kwargsÚget_nested_relation_kwargsÚget_relation_kwargsÚget_url_kwargs)ÚBindingDictÚ
BoundFieldÚJSONBoundFieldÚNestedBoundFieldÚ
ReturnDictÚ
ReturnList)ÚUniqueForDateValidatorÚUniqueForMonthValidatorÚUniqueForYearValidatorÚUniqueTogetherValidator)ÚBigIntegerFieldÚBooleanFieldÚ	CharFieldÚChoiceFieldÚ	DateFieldÚDateTimeFieldÚDecimalFieldÚ	DictFieldÚDurationFieldÚ
EmailFieldr	   Ú	FileFieldÚFilePathFieldÚ
FloatFieldÚHiddenFieldÚHStoreFieldÚIPAddressFieldÚ
ImageFieldÚIntegerFieldÚ	JSONFieldÚ	ListFieldÚ
ModelFieldÚMultipleChoiceFieldÚReadOnlyFieldÚ
RegexFieldÚSerializerMethodFieldÚ	SlugFieldÚ	TimeFieldÚURLFieldÚ	UUIDField)ÚHyperlinkedIdentityFieldÚHyperlinkedRelatedFieldÚManyRelatedFieldÚPrimaryKeyRelatedFieldÚRelatedFieldÚSlugRelatedFieldÚStringRelatedField)ÚCreateOnlyDefaultÚCurrentUserDefaultÚ	SkipFieldÚempty)Ú	HyperlinkÚPKOnlyObject)Ú	read_onlyÚ
write_onlyÚrequiredÚdefaultÚinitialÚsourceÚlabelÚ	help_textÚstyleÚerror_messagesÚallow_emptyÚinstanceÚdataÚpartialÚcontextÚ
allow_nullÚ
max_lengthÚ
min_length)rX   r_   r^   Ú__all__c                   óº   ‡ — e Zd ZdZdefˆ fd„	Zˆ fd„Zd„ Zed„ ¦   «         Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zddœd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zˆ xZS )ÚBaseSerializera  
    The BaseSerializer class provides a minimal class which may be used
    for writing custom serializer implementations.

    Note that we strongly restrict the ordering of operations/properties
    that may be used on the serializer in order to enforce correct usage.

    In particular, if a `data=` argument is passed then:

    .is_valid() - Available.
    .initial_data - Available.
    .validated_data - Only available after calling `is_valid()`
    .errors - Only available after calling `is_valid()`
    .data - Only available after calling `is_valid()`

    If a `data=` argument is not passed then:

    .is_valid() - Not available.
    .initial_data - Not available.
    .validated_data - Not available.
    .errors - Not available.
    .data - Available.
    Nc                 ó   •— || _         |t          ur|| _        |                     dd¦  «        | _        |                     di ¦  «        | _        |                     dd ¦  «          t          ¦   «         j        di |¤Ž d S )Nr[   Fr\   Úmany© )rY   rK   Úinitial_dataÚpopr[   Ú_contextÚsuperÚ__init__)ÚselfrY   rZ   ÚkwargsÚ	__class__s       €úi/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/rest_framework/serializers.pyrj   zBaseSerializer.__init__r   s~   ø€ Ø ˆŒØ•uÐÐØ $ˆDÔØ—z’z )¨UÑ3Ô3ˆŒØŸ
š
 9¨bÑ1Ô1ˆŒØ�
Š
�6˜4Ñ Ô Ð Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ð"Ð"ó    c                 ó„   •— |                      dd¦  «        r | j        |i |¤ŽS  t          ¦   «         j        | g|¢R i |¤ŽS )Nrd   F)rg   Ú	many_initri   Ú__new__)ÚclsÚargsrl   rm   s      €rn   rr   zBaseSerializer.__new__{   sX   ø€ ð �:Š:�f˜eÑ$Ô$ð 	2Ø �3”= $Ð1¨&Ð1Ð1Ð1Ø�u‰wŒwŒ˜sÐ4 TÐ4Ð4Ð4¨VÐ4Ð4Ð4ro   c                 ó   — | S ©Nre   )rs   rt   rl   s      rn   Ú__class_getitem__z BaseSerializer.__class_getitem__ƒ   s   € Øˆ
ro   c                 ó*  — i }t           D ]}|                     |d¦  «        }|�|||<   Œ  | |i |¤Ž|d<   |                     d„ |                     ¦   «         D ¦   «         ¦  «         t	          | dd¦  «        }t	          |dt
          ¦  «        } ||i |¤ŽS )aš  
        This method implements the creation of a `ListSerializer` parent
        class when `many=True` is used. You can customize it if you need to
        control which keyword arguments are passed to the parent, and
        which are passed to the child.

        Note that we're over-cautious in passing most arguments to both parent
        and child classes in order to try to cover the general case. If you're
        overriding this method you'll probably want something much simpler, eg:

        @classmethod
        def many_init(cls, *args, **kwargs):
            kwargs['child'] = cls()
            return CustomListSerializer(*args, **kwargs)
        NÚchildc                 ó,   — i | ]\  }}|t           v ¯||“ŒS re   )ÚLIST_SERIALIZER_KWARGS©Ú.0ÚkeyÚvalues      rn   ú
<dictcomp>z,BaseSerializer.many_init.<locals>.<dictcomp>�   s4   € ð 
ð 
ð 
Ù%˜3 ØÕ,Ð,Ð,ð �Ø,Ð,Ð,ro   ÚMetaÚlist_serializer_class)ÚLIST_SERIALIZER_KWARGS_REMOVErg   ÚupdateÚitemsÚgetattrÚListSerializer)rs   rt   rl   Úlist_kwargsr~   r   Úmetar‚   s           rn   rq   zBaseSerializer.many_init†   sÍ   € ð" ˆÝ0ð 	)ð 	)ˆCØ—J’J˜s DÑ)Ô)ˆEØÐ Ø#(�˜CÑ øØ"˜s DÐ3¨FÐ3Ð3ˆ�GÑØ×Òð 
ð 
Ø)/¯ª©¬ð
ñ 
ô 
ñ 	ô 	ð 	õ �s˜F DÑ)Ô)ˆÝ '¨Ð.EÅ~Ñ VÔ VÐØ$Ð$ dÐ:¨kÐ:Ð:Ð:ro   c                 ó    — t          d¦  «        ‚)Nz*`to_internal_value()` must be implemented.©ÚNotImplementedError©rk   rZ   s     rn   Úto_internal_valuez BaseSerializer.to_internal_value¥   ó   € Ý!Ð"NÑOÔOÐOro   c                 ó    — t          d¦  «        ‚)Nz*`to_representation()` must be implemented.r‹   )rk   rY   s     rn   Úto_representationz BaseSerializer.to_representation¨   r�   ro   c                 ó    — t          d¦  «        ‚)Nz`update()` must be implemented.r‹   ©rk   rY   Úvalidated_datas      rn   r„   zBaseSerializer.update«   ó   € Ý!Ð"CÑDÔDÐDro   c                 ó    — t          d¦  «        ‚)Nz`create()` must be implemented.r‹   ©rk   r”   s     rn   ÚcreatezBaseSerializer.create®   r•   ro   c                 ó”  — t          | d¦  «        s
J d¦   «         ‚| j        r
J d¦   «         ‚d|vs
J d¦   «         ‚t          | d¦  «        r
J d¦   «         ‚i | j        ¥|¥}| j        �2|                      | j        |¦  «        | _        | j        €
J d¦   «         ‚n+|                      |¦  «        | _        | j        €
J d	¦   «         ‚| j        S )
NÚ_errorsz5You must call `.is_valid()` before calling `.save()`.z<You cannot call `.save()` on a serializer with invalid data.Úcommitá`  'commit' is not a valid keyword argument to the 'save()' method. If you need to access data before committing to the database then inspect 'serializer.validated_data' instead. You can also pass additional keyword arguments to 'save()' if you need to set extra attributes on the saved model instance. For example: 'serializer.save(owner=request.user)'.'Ú_dataz«You cannot call `.save()` after accessing `serializer.data`.If you need to access data before committing to the database then inspect 'serializer.validated_data' instead. ú-`update()` did not return an object instance.ú-`create()` did not return an object instance.)ÚhasattrÚerrorsr”   rY   r„   r˜   ©rk   rl   r”   s      rn   ÚsavezBaseSerializer.save±   s#  € Ý�t˜YÑ'Ô'ð 	
ð 	
ØCñ	
ô 	
ð 	
ð ”;ð 	
ð 	
ØJñ	
ô 	
ð 	
ð
 ˜vÐ%Ð%Ð%ðCñ &Ô%Ð%õ ˜4 Ñ)Ô)ð 	
ð 	
ð<ñ	
ô 	
ð 	
ð ;˜DÔ/Ð:°6Ð:ˆàŒ=Ð$Ø ŸKšK¨¬°~ÑFÔFˆDŒMØ”=Ð,Ð,Ø?ñ -Ô,Ð,Ð,ð !ŸKšK¨Ñ7Ô7ˆDŒMØ”=Ð,Ð,Ø?ñ -Ô,Ð,ð Œ}Ðro   F©Úraise_exceptionc                ó^  — t          | d¦  «        s
J d¦   «         ‚t          | d¦  «        sR	 |                      | j        ¦  «        | _        i | _        n*# t
          $ r}i | _        |j        | _        Y d }~nd }~ww xY w| j        r|rt          | j        ¦  «        ‚t          | j        ¦  «         S ©Nrf   zoCannot call `.is_valid()` as no `data=` keyword argument was passed when instantiating the serializer instance.Ú_validated_data©	r    Úrun_validationrf   r¨   rš   r   Údetailr¡   Úbool©rk   r¥   Úexcs      rn   Úis_validzBaseSerializer.is_validÙ   sÞ   € Ý�t˜^Ñ,Ô,ð 	
ð 	
ðAñ	
ô 	
ð 	
õ
 �tÐ.Ñ/Ô/ð 	"ð"Ø'+×':Ò':¸4Ô;LÑ'MÔ'M�Ô$ð
  "�”�øõ	 #ð *ð *ð *Ø')�Ô$Ø"œz�”�����øøøøð*øøøð Œ<ð 	/˜Oð 	/Ý! $¤+Ñ.Ô.Ð.å˜œÑ%Ô%Ð%Ð%ó   ¬A Á
A:ÁA5Á5A:c                 ó¶  — t          | d¦  «        r!t          | d¦  «        sd}t          |¦  «        ‚t          | d¦  «        s’| j        �1t          | dd ¦  «        s |                      | j        ¦  «        | _        nZt          | d¦  «        r1t          | dd ¦  «        s |                      | j        ¦  «        | _        n|                      ¦   «         | _        | j        S )Nrf   r¨   zãWhen a serializer is passed a `data` keyword argument you must call `.is_valid()` before attempting to access the serialized `.data` representation.
You should either call `.is_valid()` first, or access `.initial_data` instead.r�   rš   )r    ÚAssertionErrorrY   r†   r‘   r�   r”   Úget_initial©rk   Úmsgs     rn   rZ   zBaseSerializer.dataí   sà   € å�4˜Ñ(Ô(ð 	&µ¸Ð?PÑ1QÔ1Qð 	&ð5ð õ ! Ñ%Ô%Ð%å�t˜WÑ%Ô%ð 	0ØŒ}Ð(µ¸¸yÈ$Ñ1OÔ1OÐ(Ø!×3Ò3°D´MÑBÔB�”
�
Ý˜Ð0Ñ1Ô1ð 0½'À$È	ÐSWÑ:XÔ:Xð 0Ø!×3Ò3°DÔ4GÑHÔH�”
�
à!×-Ò-Ñ/Ô/�”
ØŒzÐro   c                 óR   — t          | d¦  «        sd}t          |¦  «        ‚| j        S )Nrš   z7You must call `.is_valid()` before accessing `.errors`.)r    r²   rš   r´   s     rn   r¡   zBaseSerializer.errors  s/   € å�t˜YÑ'Ô'ð 	&ØKˆCÝ  Ñ%Ô%Ð%ØŒ|Ðro   c                 óR   — t          | d¦  «        sd}t          |¦  «        ‚| j        S )Nr¨   z?You must call `.is_valid()` before accessing `.validated_data`.)r    r²   r¨   r´   s     rn   r”   zBaseSerializer.validated_data	  s1   € å�tÐ.Ñ/Ô/ð 	&ØSˆCÝ  Ñ%Ô%Ð%ØÔ#Ð#ro   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   rj   rr   rw   Úclassmethodrq   rŽ   r‘   r„   r˜   r£   r¯   ÚpropertyrZ   r¡   r”   Ú__classcell__©rm   s   @rn   rb   rb   Y   sX  ø€ € € € € ðð ð0 !%¨5ð #ð #ð #ð #ð #ð #ð5ð 5ð 5ð 5ð 5ðð ð ð ð;ð ;ñ „[ð;ð<Pð Pð PðPð Pð PðEð Eð EðEð Eð Eð&ð &ð &ðP +0ð &ð &ð &ð &ð &ð( ðð ñ „Xðð( ðð ñ „Xðð ð$ð $ñ „Xð$ð $ð $ð $ð $ro   rb   c                   ó8   ‡ — e Zd ZdZed„ ¦   «         Zˆ fd„Zˆ xZS )ÚSerializerMetaclasszö
    This metaclass sets a dictionary named `_declared_fields` on the class.

    Any instances of `Field` included as attributes on either the class
    or on any of its superclasses will be include in the
    `_declared_fields` dictionary.
    c                 óú   ‡‡‡— ˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         }|                     d„ ¬¦  «         t          ‰¦  «        Šˆfd„Šˆˆfd„|D ¦   «         }t	          ||z   ¦  «        S )Nc                 ón   •— g | ]1\  }}t          |t          ¦  «        ¯|‰                     |¦  «        f‘Œ2S re   )Ú
isinstancer	   rg   )r}   Ú
field_nameÚobjÚattrss      €rn   ú
<listcomp>z<SerializerMetaclass._get_declared_fields.<locals>.<listcomp>  sM   ø€ ð -ð -ð -Ù%�j #Ý ¥UÑ+Ô+ð-�:˜uŸyšy¨Ñ4Ô4Ð5ð -ð -ð -ro   c                 ó   — | d         j         S )Né   )Ú_creation_counter)Úxs    rn   ú<lambda>z:SerializerMetaclass._get_declared_fields.<locals>.<lambda>"  s   €  ! A¤$Ô"8€ ro   )r~   c                 ó2   •— ‰                      | ¦  «         | S rv   )Úadd)ÚnameÚknowns    €rn   Úvisitz7SerializerMetaclass._get_declared_fields.<locals>.visit)  s   ø€ Ø�IŠI�d‰OŒOˆOØˆKro   c                 ó�   •— g | ]B}t          |d ¦  «        r0|j                             ¦   «         D ]\  }}|‰v¯	 ‰|¦  «        |f‘ŒŒCS )Ú_declared_fields)r    rÔ   r…   )r}   ÚbaserÐ   ÚfrÑ   rÒ   s       €€rn   rÈ   z<SerializerMetaclass._get_declared_fields.<locals>.<listcomp>-  sv   ø€ ð 
ð 
ð 
à¥¨Ð/AÑ!BÔ!Bð
ð  Ô0×6Ò6Ñ8Ô8ð
ð 
ñ ��a¸DÈÐ<MÐ<Mð ˆU�4‰[Œ[˜!Ðà<MÐ<MÐ<MÐ<Mro   )Úlistr…   ÚsortÚsetÚdict)rs   ÚbasesrÇ   ÚfieldsÚbase_fieldsrÑ   rÒ   s     `  @@rn   Ú_get_declared_fieldsz(SerializerMetaclass._get_declared_fields  s¿   øøø€ ð-ð -ð -ð -Ý)-¨e¯kªk©m¬mÑ)<Ô)<ð-ñ -ô -ˆð 	�ŠÐ8Ð8ˆÑ9Ô9Ð9õ
 �E‘
”
ˆð	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ˆõ �K &Ñ(Ñ)Ô)Ð)ro   c                 ó~   •— |                       ||¦  «        |d<   t          ¦   «                              | |||¦  «        S )NrÔ   )rÞ   ri   rr   )rs   rÐ   rÛ   rÇ   rm   s       €rn   rr   zSerializerMetaclass.__new__5  s:   ø€ Ø$'×$<Ò$<¸UÀEÑ$JÔ$JˆÐ Ñ!Ý‰wŒw�Š˜s D¨%°Ñ7Ô7Ð7ro   )r¸   r¹   rº   r»   r¼   rÞ   rr   r¾   r¿   s   @rn   rÁ   rÁ     s]   ø€ € € € € ðð ð ð*ð *ñ „[ð*ð.8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ro   rÁ   c                 ó`  — t          | t          t          f¦  «        sJ ‚t          | t          ¦  «        rt          | ¦  «        }n| j        }t          |t
          ¦  «        rd„ |                     ¦   «         D ¦   «         S t          |t          ¦  «        rt          j	        |iS t          j	        |giS )a  
    Coerce validation exceptions into a standardized serialized error format.

    This function normalizes both Django's `ValidationError` and REST
    framework's `ValidationError` into a dictionary structure compatible
    with serializer `.errors`, ensuring all values are represented as
    lists of error details.

    The returned structure conforms to the serializer error contract:
    - Field-specific errors are returned as '{field-name: [errors]}'
    - Non-field errors are returned under the 'NON_FIELD_ERRORS_KEY'
    c                 óX   — i | ]'\  }}|t          |t          t          f¦  «        r|n|g“Œ(S re   )rÄ   r×   r   r|   s      rn   r€   z'as_serializer_error.<locals>.<dictcomp>Q  sG   € ð 
ð 
ð 
á��Uð �* U­Tµ7¨OÑ<Ô<ÐI��À5À'ð
ð 
ð 
ro   )
rÄ   r   ÚDjangoValidationErrorr   r«   r   r…   r×   r   ÚNON_FIELD_ERRORS_KEY)r®   r«   s     rn   Úas_serializer_errorrä   :  sÂ   € õ �c�OÕ-BÐCÑDÔDÐDÐDÐDå�#Õ,Ñ-Ô-ð Ý! #Ñ&Ô&ˆˆà”ˆå�&�'Ñ"Ô"ð 
ð
ð 
à$Ÿlšl™nœnð
ñ 
ô 
ð 	
õ 
�F�DÑ	!Ô	!ð 
õ Ô-¨vð
ð 	
õ
 	Ô)¨F¨8ðð ro   c                   ó   ‡ — e Zd Zd ed¦  «        iZd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
d„ Zd„ Zd	„ Zd
„ Zefd„Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zeˆ fd„¦   «         Zeˆ fd„¦   «         Zˆ xZS )Ú
SerializerÚinvalidz8Invalid data. Expected a dictionary, but got {datatype}.c                 óŠ   — |s|                      |¦  «         dS |dd…         D ]}||vri ||<   ||         }Œ|||d         <   dS )aI  
        Similar to Python's built in `dictionary[key] = value`,
        but takes a list of nested keys instead of a single key.

        set_value({'a': 1}, [], {'b': 2}) -> {'a': 1, 'b': 2}
        set_value({'a': 1}, ['x'], 2) -> {'a': 1, 'x': 2}
        set_value({'a': 1}, ['x', 'y'], 2) -> {'a': 1, 'x': {'y': 2}}
        Néÿÿÿÿ)r„   )rk   Ú
dictionaryÚkeysr   r~   s        rn   Ú	set_valuezSerializer.set_valuee  so   € ð ð 	Ø×Ò˜eÑ$Ô$Ð$ØˆFà˜˜˜”9ð 	)ð 	)ˆCØ˜*Ð$Ð$Ø"$�
˜3‘Ø# CœˆJˆJà$ˆ
�4˜”8ÑÐÐro   c                 ó†   — t          | ¦  «        }|                      ¦   «                              ¦   «         D ]
\  }}|||<   Œ|S )z?
        A dictionary of {field_name: field_instance}.
        )r   Ú
get_fieldsr…   )rk   rÜ   r~   r   s       rn   rÜ   zSerializer.fieldsy  sJ   € õ ˜TÑ"Ô"ˆØŸ/š/Ñ+Ô+×1Ò1Ñ3Ô3ð 	 ð 	 ‰JˆC�ØˆF�3‰KˆKØˆro   c              #   óX   K  — | j                              ¦   «         D ]}|j        s|V — Œd S rv   )rÜ   ÚvaluesrN   ©rk   Úfields     rn   Ú_writable_fieldszSerializer._writable_fields†  sA   è è € à”[×'Ò'Ñ)Ô)ð 	ð 	ˆEØ”?ð Ø���øð	ð 	ro   c              #   óX   K  — | j                              ¦   «         D ]}|j        s|V — Œd S rv   )rÜ   rð   rO   rñ   s     rn   Ú_readable_fieldszSerializer._readable_fieldsŒ  sB   è è € à”[×'Ò'Ñ)Ô)ð 	ð 	ˆEØÔ#ð Ø���øð	ð 	ro   c                 ó4   — t          j        | j        ¦  «        S )zG
        Returns a dictionary of {field_name: field_instance}.
        )ÚcopyÚdeepcopyrÔ   ©rk   s    rn   rî   zSerializer.get_fields’  s   € õ Œ}˜TÔ2Ñ3Ô3Ð3ro   c                 ól   — t          | dd¦  «        }t          |dd¦  «        }|rt          |¦  «        ng S )z8
        Returns a list of validator callables.
        r�   NÚ
validators)r†   r×   )rk   r‰   rû   s      rn   Úget_validatorszSerializer.get_validators›  s>   € õ
 �t˜V TÑ*Ô*ˆÝ˜T <°Ñ6Ô6ˆ
Ø#-Ð5�t�JÑÔÐ°2Ð5ro   c                 óì   ‡ — t          ‰ d¦  «        rAt          ‰ j        t          ¦  «        si S ˆ fd„‰ j                             ¦   «         D ¦   «         S d„ ‰ j                             ¦   «         D ¦   «         S )Nrf   c                 óœ   •— i | ]H\  }}|                      ‰j        ¦  «        t          u¯&|j        °-||                      ‰j        ¦  «        “ŒIS re   )Ú	get_valuerf   rK   rN   )r}   rÅ   rò   rk   s      €rn   r€   z*Serializer.get_initial.<locals>.<dictcomp>ª  s]   ø€ ð ð ð á%�J Ø—O’O DÔ$5Ñ6Ô6½eÐCÐCØ”Oð Dð ˜EŸOšO¨DÔ,=Ñ>Ô>àCÐCÐCro   c                 óP   — i | ]#}|j         °	|j        |                     ¦   «         “Œ$S re   )rN   rÅ   r³   ©r}   rò   s     rn   r€   z*Serializer.get_initial.<locals>.<dictcomp>±  sA   € ð 
ð 
ð 
àØ”?ð
ØÔ˜e×/Ò/Ñ1Ô1ð
ð 
ð 
ro   )r    rÄ   rf   r   rÜ   r…   rð   rù   s   `rn   r³   zSerializer.get_initial¤  s—   ø€ Ý�4˜Ñ(Ô(ð 
	å˜dÔ/µÑ9Ô9ð Ø�	ðð ð ð à)-¬×):Ò):Ñ)<Ô)<ðñ ô ð ð
ð 
àœ×+Ò+Ñ-Ô-ð
ñ 
ô 
ð 	
ro   c                 ó®   — t          j        |¦  «        r"t          j        || j        ¬¦  «        pt          S |                     | j        t          ¦  «        S )N)Úprefix)r   Úis_html_inputÚparse_html_dictrÅ   rK   Úget©rk   rê   s     rn   rÿ   zSerializer.get_value·  sK   € õ Ô˜jÑ)Ô)ð 	UÝÔ'¨
¸4¼?ÐKÑKÔKÐTÍuÐTØ�~Š~˜dœo­uÑ5Ô5Ð5ro   c                 óD  — |                       |¦  «        \  }}|r|S |                      |¦  «        }	 |                      |¦  «         |                      |¦  «        }|€
J d¦   «         ‚n6# t          t
          f$ r"}t	          t          |¦  «        ¬¦  «        ‚d}~ww xY w|S ©zá
        We override the default `run_validation`, because the validation
        performed by validators and the `.validate()` method should
        be coerced into an error dictionary with a 'non_fields_error' key.
        Nz,.validate() should return the validated data)r«   ©Úvalidate_empty_valuesrŽ   Úrun_validatorsÚvalidater   râ   rä   ©rk   rZ   Úis_empty_valuer   r®   s        rn   rª   zSerializer.run_validation¾  óÉ   € ð "&×!;Ò!;¸DÑ!AÔ!AÑˆ˜Øð 	ØˆKà×&Ò& tÑ,Ô,ˆð	CØ×Ò Ñ&Ô&Ð&Ø—M’M %Ñ(Ô(ˆEØÐ$Ð$Ð&TÑ$Ô$Ð$Ð$øÝÕ!6Ð7ð 	Cð 	Cð 	CÝ!Õ)<¸SÑ)AÔ)AÐBÑBÔBÐBøøøøð	Cøøøð ˆó   ³6A* Á*BÁ;BÂBc                 óº   — d„ | j                              ¦   «         D ¦   «         }i }|D ]2}	 |                     ¦   «         }n# t          $ r Y Œ$w xY w|||j        <   Œ3|S )Nc                 óh   — g | ]/}|j         r&|j        t          k    ¯|j        d k    ¯$d|j        v¯-|‘Œ0S ©Ú*ú.)rN   rQ   rK   rS   r  s     rn   rÈ   z2Serializer._read_only_defaults.<locals>.<listcomp>Ó  sU   € ð 
ð 
ð 
ØØ”ð
à&+¤mµuÒ&<Ð&<À5Ä<ÐSVÒCVÐCVÐ]`ÐhmÔhtÐ]tÐ]tð Ø]tÐ]tÐ]tro   )rÜ   rð   Úget_defaultrJ   rS   )rk   rÜ   Údefaultsrò   rQ   s        rn   Ú_read_only_defaultszSerializer._read_only_defaultsÒ  s�   € ð
ð 
Ø#œ{×1Ò1Ñ3Ô3ð
ñ 
ô 
ˆð
 ˆØð 	-ð 	-ˆEðØ×+Ò+Ñ-Ô-��øÝð ð ð Ø�ðøøøà%,ˆH�U”\Ñ"Ð"àˆs   «A Á 
AÁAc                 óÌ   •— t          |t          ¦  «        r*|                      ¦   «         }|                     |¦  «         n|}t	          ¦   «                              |¦  «         dS )zX
        Add read_only fields with defaults to value before running validators.
        N)rÄ   rÚ   r  r„   ri   r  )rk   r   Úto_validaterm   s      €rn   r  zSerializer.run_validatorsâ  sb   ø€ õ �e�TÑ"Ô"ð 	 Ø×2Ò2Ñ4Ô4ˆKØ×Ò˜uÑ%Ô%Ð%Ð%àˆKÝ‰Œ×Ò˜{Ñ+Ô+Ð+Ð+Ð+ro   c                 ó¢  — t          |t          ¦  «        sQ| j        d                              t	          |¦  «        j        ¬¦  «        }t          t          j        |gid¬¦  «        ‚i }i }| j	        }|D ]É}t          | d|j        z   d¦  «        }|                     |¦  «        }	 |                     |¦  «        }	|� ||	¦  «        }	|                      ||j        |	¦  «         Œp# t          $ r}
|
j        ||j        <   Y d}
~
ŒŽd}
~
wt"          $ r!}
t%          |
¦  «        ||j        <   Y d}
~
Œ·d}
~
wt&          $ r Y ŒÆw xY w|rt          |¦  «        ‚|S )zG
        Dict of native values <- Dict of primitive datatypes.
        rç   )Údatatype©ÚcodeÚ	validate_N)rÄ   r   rW   ÚformatÚtyper¸   r   r   rã   ró   r†   rÅ   rÿ   rª   rì   Úsource_attrsr«   râ   r   rJ   )rk   rZ   ÚmessageÚretr¡   rÜ   rò   Úvalidate_methodÚprimitive_valueÚvalidated_valuer®   s              rn   rŽ   zSerializer.to_internal_valueí  sº  € õ ˜$¥Ñ(Ô(ð 	ØÔ)¨)Ô4×;Ò;Ý˜d™œÔ,ð <ñ ô ˆGõ "ÝÔ1°G°9ð#àðñ ô ð ð ˆØˆØÔ&ˆàð 	Ið 	IˆEÝ% d¨K¸%Ô:JÑ,JÈDÑQÔQˆOØ#Ÿošo¨dÑ3Ô3ˆOðIØ"'×"6Ò"6°Ñ"GÔ"G�Ø"Ð.Ø&5 o°oÑ&FÔ&F�Oð —’˜s EÔ$6¸ÑHÔHÐHÐHøõ #ð 6ð 6ð 6Ø+.¬:��uÔ'Ñ(Ð(Ð(Ð(Ð(Ð(øøøøÝ(ð Að Að AÝ+;¸CÑ+@Ô+@��uÔ'Ñ(Ð(Ð(Ð(Ð(Ð(øøøøÝð ð ð Ø�ðøøøð
 ð 	*Ý! &Ñ)Ô)Ð)àˆ
s*   Â%"C$Ã$
D;Ã.DÄD;ÄD+Ä+D;Ä:D;c                 ó   — i }| j         }|D ]q}	 |                     |¦  «        }n# t          $ r Y Œ%w xY wt          |t          ¦  «        r|j        n|}|€d||j        <   ŒT|                     |¦  «        ||j        <   Œr|S )zA
        Object instance -> Dict of primitive datatypes.
        N)rõ   Úget_attributerJ   rÄ   rM   ÚpkrÅ   r‘   )rk   rY   r%  rÜ   rò   Ú	attributeÚcheck_for_nones          rn   r‘   zSerializer.to_representation  s²   € ð ˆØÔ&ˆàð 	Kð 	KˆEðØ!×/Ò/°Ñ9Ô9�	�	øÝð ð ð Ø�ðøøøõ .8¸	Å<Ñ-PÔ-PÐ_˜Yœ\˜\ÐV_ˆNØÐ%Ø(,��EÔ$Ñ%Ð%à(-×(?Ò(?À	Ñ(JÔ(J��EÔ$Ñ%Ð%àˆ
s   �%¥
2±2c                 ó   — |S rv   re   ©rk   rÇ   s     rn   r  zSerializer.validate,  ó   € Øˆro   c                 ó.   — t          j        | d¬¦  «        S ©NrÊ   )Úindent)r   Úserializer_reprrù   s    rn   Ú__repr__zSerializer.__repr__/  s   € ÝÔ-¨d¸1Ð=Ñ=Ô=Ð=ro   c              #   ó`   K  — | j                              ¦   «         D ]}| |j                 V — Œd S rv   )rÜ   rð   rÅ   rñ   s     rn   Ú__iter__zSerializer.__iter__6  sD   è è € Ø”[×'Ò'Ñ)Ô)ð 	)ð 	)ˆEØ�uÔ'Ô(Ð(Ð(Ð(Ð(ð	)ð 	)ro   c                 ób  — | j         |         }| j                             |¦  «        }t          | d¦  «        r| j                             |¦  «        nd }t          |t          ¦  «        rt          |||¦  «        S t          |t          ¦  «        rt          |||¦  «        S t          |||¦  «        S )Nrš   )rÜ   rZ   r  r    r¡   rÄ   ræ   r   r6   r   r   )rk   r~   rò   r   Úerrors        rn   Ú__getitem__zSerializer.__getitem__:  s¢   € Ø”˜CÔ ˆØ”	—’˜cÑ"Ô"ˆÝ(/°°iÑ(@Ô(@ÐJ�”—’ Ñ$Ô$Ð$ÀdˆÝ�e�ZÑ(Ô(ð 	9Ý# E¨5°%Ñ8Ô8Ð8Ý�e�YÑ'Ô'ð 	7Ý! %¨°Ñ6Ô6Ð6Ý˜% ¨Ñ.Ô.Ð.ro   c                 óL   •— t          ¦   «         j        }t          || ¬¦  «        S ©N©Ú
serializer)ri   rZ   r   ©rk   r%  rm   s     €rn   rZ   zSerializer.dataG  ó!   ø€ å‰gŒgŒlˆÝ˜#¨$Ð/Ñ/Ô/Ð/ro   c                 ó  •— t          ¦   «         j        }t          |t          ¦  «        rNt	          |¦  «        dk    r;t          |d         dd ¦  «        dk    r t          dd¬¦  «        }t          j        |gi}t          || ¬¦  «        S ©NrÊ   r   r  ÚnullzNo data providedr  r=  )
ri   r¡   rÄ   r×   Úlenr†   r   r   rã   r   ©rk   r%  r«   rm   s      €rn   r¡   zSerializer.errorsL  s�   ø€ å‰gŒgŒnˆÝ�c�4Ñ Ô ð 	@¥S¨¡X¤X°¢] ]µw¸sÀ1¼vÀvÈtÑ7TÔ7TÐX^Ò7^Ð7^õ !Ð!3¸&ÐAÑAÔAˆFÝÔ4°v°hÐ?ˆCÝ˜#¨$Ð/Ñ/Ô/Ð/ro   )r¸   r¹   rº   Ú_Údefault_error_messagesrì   r   rÜ   r½   ró   rõ   rî   rü   r³   rÿ   rK   rª   r  r  rŽ   r‘   r  r5  r7  r:  rZ   r¡   r¾   r¿   s   @rn   ræ   ræ   `  s¹  ø€ € € € € à�1�1ÐOÑPÔPðÐð%ð %ð %ð( ð
ð 
ñ „_ð
ð ðð ñ „Xðð
 ðð ñ „Xðð
4ð 4ð 4ð6ð 6ð 6ð
ð 
ð 
ð&6ð 6ð 6ð #(ð ð ð ð ð(ð ð ð 	,ð 	,ð 	,ð 	,ð 	,ð#ð #ð #ðJð ð ð4ð ð ð>ð >ð >ð)ð )ð )ð/ð /ð /ð ð0ð 0ð 0ð 0ñ „Xð0ð ð0ð 0ð 0ð 0ñ „Xð0ð 0ð 0ð 0ð 0ro   ræ   )Ú	metaclassc                   ó  ‡ — e Zd ZdZdZ ed¦  «         ed¦  «         ed¦  «         ed¦  «        dœZˆ fd„Zd	„ Zd
„ Z	e
fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zddœd„Zd„ Zeˆ fd„¦   «         Zeˆ fd„¦   «         Zˆ xZS )r‡   NTz5Expected a list of items but got type "{input_type}".zThis list may not be empty.z9Ensure this field has no more than {max_length} elements.z5Ensure this field has at least {min_length} elements.)Ú
not_a_listrK   r^   r_   c                 óà  •— |                      dt          j        | j        ¦  «        ¦  «        | _        |                      dd¦  «        | _        |                      dd ¦  «        | _        |                      dd ¦  «        | _        | j        €
J d¦   «         ‚t          j        | j        ¦  «        r
J d¦   «         ‚ t          ¦   «         j
        |i |¤Ž | j                             d| ¬	¦  «         d S )
Nry   rX   Tr^   r_   z`child` is a required argument.z"`child` has not been instantiated.Ú )rÅ   Úparent)rg   r÷   rø   ry   rX   r^   r_   ÚinspectÚisclassri   rj   Úbind)rk   rt   rl   rm   s      €rn   rj   zListSerializer.__init__e  sÖ   ø€ Ø—Z’Z ­¬°t´zÑ)BÔ)BÑCÔCˆŒ
Ø!Ÿ:š: m°TÑ:Ô:ˆÔØ Ÿ*š* \°4Ñ8Ô8ˆŒØ Ÿ*š* \°4Ñ8Ô8ˆŒØŒzÐ%Ð%Ð'HÑ%Ô%Ð%Ý”? 4¤:Ñ.Ô.ÐTÐTÐ0TÑTÔTÐTØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ØŒ
�Š 2¨dˆÑ3Ô3Ð3Ð3Ð3ro   c                 óZ   — t          | d¦  «        r|                      | j        ¦  «        S g S )Nrf   )r    r‘   rf   rù   s    rn   r³   zListSerializer.get_initialo  s0   € Ý�4˜Ñ(Ô(ð 	=Ø×)Ò)¨$Ô*;Ñ<Ô<Ð<Øˆ	ro   c                 ó¬   — t          j        |¦  «        r!t          j        || j        t          ¬¦  «        S |                     | j        t          ¦  «        S )zE
        Given the input dictionary, return the field value.
        )r  rQ   )r   r  Úparse_html_listrÅ   rK   r  r  s     rn   rÿ   zListSerializer.get_valuet  sI   € õ Ô˜jÑ)Ô)ð 	[ÝÔ'¨
¸4¼?ÕTYÐZÑZÔZÐZØ�~Š~˜dœo­uÑ5Ô5Ð5ro   c                 óD  — |                       |¦  «        \  }}|r|S |                      |¦  «        }	 |                      |¦  «         |                      |¦  «        }|€
J d¦   «         ‚n6# t          t
          f$ r"}t	          t          |¦  «        ¬¦  «        ‚d}~ww xY w|S r	  r
  r  s        rn   rª   zListSerializer.run_validation~  r  r  c                 ó6   — | j                              |¦  «        S )a%  
        Run validation on child serializer.
        You may need to override this method to support multiple updates. For example:

        self.child.instance = self.instance.get(pk=data['id'])
        self.child.initial_data = data
        return super().run_child_validation(data)
        )ry   rª   r�   s     rn   Úrun_child_validationz#ListSerializer.run_child_validation’  s   € ð Œz×(Ò(¨Ñ.Ô.Ð.ro   c                 ól  — t          j        |¦  «        rt          j        |g ¬¦  «        }t          |t          ¦  «        sQ| j        d                              t          |¦  «        j        ¬¦  «        }t          t          j        |gid¬¦  «        ‚| j        s>t          |¦  «        dk    r+| j        d         }t          t          j        |gid¬¦  «        ‚| j        �\t          |¦  «        | j        k    rD| j        d                              | j        ¬	¦  «        }t          t          j        |gid¬¦  «        ‚| j        �\t          |¦  «        | j        k     rD| j        d
                              | j        ¬¦  «        }t          t          j        |gid
¬¦  «        ‚g }g }|D ]s}	 |                      |¦  «        }|                     |¦  «         |                     i ¦  «         ŒC# t          $ r$}|                     |j        ¦  «         Y d}~Œld}~ww xY wt'          |¦  «        rt          |¦  «        ‚|S )zY
        List of dicts of native values <- List of dicts of primitive datatypes.
        ©rQ   rJ  )Ú
input_typer  r   rK   Nr^   )r^   r_   )r_   )r   r  rS  rÄ   r×   rW   r!  r"  r¸   r   r   rã   rX   rD  r^   r_   rV  Úappendr«   Úany)rk   rZ   r$  r%  r¡   ÚitemÚ	validatedr®   s           rn   rŽ   z ListSerializer.to_internal_value�  su  € õ Ô˜dÑ#Ô#ð 	:ÝÔ'¨°bÐ9Ñ9Ô9ˆDå˜$¥Ñ%Ô%ð 	"ØÔ)¨,Ô7×>Ò>Ý ™:œ:Ô.ð ?ñ ô ˆGõ "ÝÔ1°G°9ð#à ð"ñ "ô "ð "ð Ôð 	¥C¨¡I¤I°¢N NØÔ)¨'Ô2ˆGÝ!ÝÔ1°G°9ð#àðñ ô ð ð Œ?Ð&­3¨t©9¬9°t´Ò+FÐ+FØÔ)¨,Ô7×>Ò>È$Ì/Ð>ÑZÔZˆGÝ!ÝÔ1°G°9ð#à ð"ñ "ô "ð "ð Œ?Ð&­3¨t©9¬9°t´Ò+FÐ+FØÔ)¨,Ô7×>Ò>È$Ì/Ð>ÑZÔZˆGÝ!ÝÔ1°G°9ð#à ð"ñ "ô "ð "ð ˆØˆàð 	"ð 	"ˆDð"Ø ×5Ò5°dÑ;Ô;�	ð —
’
˜9Ñ%Ô%Ð%Ø—’˜bÑ!Ô!Ð!Ð!øõ	 #ð *ð *ð *Ø—’˜cœjÑ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð*øøøõ ˆv‰;Œ;ð 	*Ý! &Ñ)Ô)Ð)àˆ
s   Æ%G%Ç%
HÇ/HÈHc                 óŠ   ‡ — t          |t          j        j        ¦  «        r|                     ¦   «         n|}ˆ fd„|D ¦   «         S )zS
        List of object instances -> List of dicts of primitive datatypes.
        c                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS re   )ry   r‘   )r}   r\  rk   s     €rn   rÈ   z4ListSerializer.to_representation.<locals>.<listcomp>×  s6   ø€ ð 
ð 
ð 
Ø37ˆDŒJ×(Ò(¨Ñ.Ô.ð
ð 
ð 
ro   )rÄ   r   ÚmanagerÚBaseManagerÚall)rk   rZ   Úiterables   `  rn   r‘   z ListSerializer.to_representationÏ  sV   ø€ õ ",¨Dµ&´.Ô2LÑ!MÔ!MÐW�4—8’8‘:”:�:ÐSWˆð
ð 
ð 
ð 
Ø;Cð
ñ 
ô 
ð 	
ro   c                 ó   — |S rv   re   r/  s     rn   r  zListSerializer.validateÛ  r0  ro   c                 ó    — t          d¦  «        ‚)Na'  Serializers with many=True do not support multiple update by default, only multiple create. For updates it is unclear how to deal with insertions and deletions. If you need to support multiple update, use a `ListSerializer` class and override `.update()` so you can specify the behavior exactly.r‹   r“   s      rn   r„   zListSerializer.updateÞ  s   € Ý!ðCñ
ô 
ð 	
ro   c                 ó    ‡ — ˆ fd„|D ¦   «         S )Nc                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS re   )ry   r˜   )r}   rÇ   rk   s     €rn   rÈ   z)ListSerializer.create.<locals>.<listcomp>è  s6   ø€ ð 
ð 
ð 
Ø).ˆDŒJ×Ò˜eÑ$Ô$ð
ð 
ð 
ro   re   r—   s   ` rn   r˜   zListSerializer.createç  s.   ø€ ð
ð 
ð 
ð 
Ø2@ð
ñ 
ô 
ð 	
ro   c                 ó  ‡— d‰vs
J d¦   «         ‚ˆfd„| j         D ¦   «         }| j        �2|                      | j        |¦  «        | _        | j        €
J d¦   «         ‚n+|                      |¦  «        | _        | j        €
J d¦   «         ‚| j        S )z=
        Save and return a list of object instances.
        r›   rœ   c                 ó   •— g | ]}i |¥‰¥‘Œ	S re   re   )r}   rÇ   rl   s     €rn   rÈ   z'ListSerializer.save.<locals>.<listcomp>ú  s1   ø€ ð 
ð 
ð 
Ø$)ÐˆuÐ˜Ðð
ð 
ð 
ro   Nrž   rŸ   )r”   rY   r„   r˜   r¢   s    ` rn   r£   zListSerializer.saveì  sÄ   ø€ ð
 ˜vÐ%Ð%Ð%ðCñ &Ô%Ð%ð
ð 
ð 
ð 
Ø-1Ô-@ð
ñ 
ô 
ˆð Œ=Ð$Ø ŸKšK¨¬°~ÑFÔFˆDŒMØ”=Ð,Ð,Ø?ñ -Ô,Ð,Ð,ð !ŸKšK¨Ñ7Ô7ˆDŒMØ”=Ð,Ð,Ø?ñ -Ô,Ð,ð Œ}Ðro   Fr¤   c                ó^  — t          | d¦  «        s
J d¦   «         ‚t          | d¦  «        sR	 |                      | j        ¦  «        | _        g | _        n*# t
          $ r}g | _        |j        | _        Y d }~nd }~ww xY w| j        r|rt          | j        ¦  «        ‚t          | j        ¦  «         S r§   r©   r­   s      rn   r¯   zListSerializer.is_valid  sà   € õ �t˜^Ñ,Ô,ð 	
ð 	
ðAñ	
ô 	
ð 	
õ
 �tÐ.Ñ/Ô/ð 	"ð"Ø'+×':Ò':¸4Ô;LÑ'MÔ'M�Ô$ð
  "�”�øõ	 #ð *ð *ð *Ø')�Ô$Ø"œz�”�����øøøøð*øøøð Œ<ð 	/˜Oð 	/Ý! $¤+Ñ.Ô.Ð.å˜œÑ%Ô%Ð%Ð%r°   c                 ó.   — t          j        | d¬¦  «        S r2  )r   Ú	list_reprrù   s    rn   r5  zListSerializer.__repr__!  s   € ÝÔ'¨°QÐ7Ñ7Ô7Ð7ro   c                 óL   •— t          ¦   «         j        }t          || ¬¦  «        S r<  )ri   rZ   r   r?  s     €rn   rZ   zListSerializer.data'  r@  ro   c                 ó^  •— t          ¦   «         j        }t          |t          ¦  «        rNt	          |¦  «        dk    r;t          |d         dd ¦  «        dk    r t          dd¬¦  «        }t          j        |gi}t          |t          ¦  «        rt          || ¬¦  «        S t          || ¬¦  «        S rB  )ri   r¡   rÄ   r×   rD  r†   r   r   rã   rÚ   r   r   rE  s      €rn   r¡   zListSerializer.errors,  s¦   ø€ å‰gŒgŒnˆÝ�c�4Ñ Ô ð 	@¥S¨¡X¤X°¢] ]µw¸sÀ1¼vÀvÈtÑ7TÔ7TÐX^Ò7^Ð7^õ !Ð!3¸&ÐAÑAÔAˆFÝÔ4°v°hÐ?ˆCÝ�c�4Ñ Ô ð 	4Ý˜c¨dÐ3Ñ3Ô3Ð3Ý˜#¨$Ð/Ñ/Ô/Ð/ro   )r¸   r¹   rº   ry   rd   rF  rG  rj   r³   rÿ   rK   rª   rV  rŽ   r‘   r  r„   r˜   r£   r¯   r5  r½   rZ   r¡   r¾   r¿   s   @rn   r‡   r‡   Z  s¡  ø€ € € € € Ø€EØ€Dð �aÐOÑPÔPØ�Ð0Ñ1Ô1Ø�aÐSÑTÔTØ�aÐOÑPÔPð	ð Ðð4ð 4ð 4ð 4ð 4ðð ð ð
6ð 6ð 6ð #(ð ð ð ð ð(	/ð 	/ð 	/ð0ð 0ð 0ðd

ð 

ð 

ðð ð ð
ð 
ð 
ð
ð 
ð 
ð
ð ð ð> +0ð &ð &ð &ð &ð &ð,8ð 8ð 8ð ð0ð 0ð 0ð 0ñ „Xð0ð ð	0ð 	0ð 	0ð 	0ñ „Xð	0ð 	0ð 	0ð 	0ð 	0ro   r‡   c                 óž  ‡‡— |j         j        }t          j        |¦  «        Št	          ˆˆfd„|j        D ¦   «         ¦  «        r4J d                     | |j        j        |j        j	        ¬¦  «        ¦   «         ‚t	          ˆˆfd„|j        D ¦   «         ¦  «        r4J d                     | |j        j        |j        j	        ¬¦  «        ¦   «         ‚dS )aù  
    Enforce explicit handling of writable nested and dotted-source fields.

    This helper raises clear and actionable errors when a serializer attempts
    to perform writable nested updates or creates using the default
    `ModelSerializer` behavior.

    Writable nested relationships and dotted-source fields are intentionally
    unsupported by default due to ambiguous persistence semantics. Developers
    must either:
    - Override the `.create()` / `.update()` methods explicitly, or
    - Mark nested serializers as `read_only=True`

    This check is invoked internally by default `ModelSerializer.create()`
    and `ModelSerializer.update()` implementations.

    Eg. Suppose we have a `UserSerializer` with a nested profile. How should
    we handle the case of an update, where the `profile` relationship does
    not exist? Any of the following might be valid:
    * Raise an application error.
    * Silently ignore the nested part of the update.
    * Automatically create a profile instance.
    c              3   ó¾   •K  — | ]W}t          |t          ¦  «        o=|j        ‰v o4|j        ‰j        v o&t          ‰|j                 t          t
          f¦  «        V — ŒXd S rv   )rÄ   rb   rS   Ú	relationsr×   rÚ   ©r}   rò   Úmodel_field_infor”   s     €€rn   ú	<genexpr>z0raise_errors_on_nested_writes.<locals>.<genexpr>]  s„   øè è € ð ð ð
 õ	 	�5�.Ñ)Ô)ð 	?Ø	Œ˜Ð	'ð	?à	ŒÐ)Ô3Ð	3ð	?õ 	�> %¤,Ô/µ$½°Ñ>Ô>ð	ð ð ð ð ð ro   zÚThe `.{method_name}()` method does not support writable nested fields by default.
Write an explicit `.{method_name}()` method for serializer `{module}.{class_name}`, or set `read_only=True` on nested serializer fields.)Úmethod_nameÚmoduleÚ
class_namec              3   óè   •K  — | ]l}t          |j        ¦  «        d k    oO|j        d         ‰v o@|j        d         ‰j        v o,t          ‰|j        d                  t          t
          f¦  «        V — ŒmdS )rÊ   r   N)rD  r#  rq  rÄ   r×   rÚ   rr  s     €€rn   rt  z0raise_errors_on_nested_writes.<locals>.<genexpr>|  sŸ   øè è € ð ð ð
 õ	 	ˆEÔÑÔ !Ò#ð 	HØ	Ô	˜AÔ	 .Ð	0ð	Hà	Ô	˜AÔ	Ð"2Ô"<Ð	<ð	Hõ 	�> %Ô"4°QÔ"7Ô8½4Å¸,ÑGÔGð	ð ð ð ð ð ro   zèThe `.{method_name}()` method does not support writable dotted-source fields by default.
Write an explicit `.{method_name}()` method for serializer `{module}.{class_name}`, or set `read_only=True` on dotted-source serializer fields.N)
r�   Úmodelr   Úget_field_infor[  ró   r!  rm   r¹   r¸   )ru  r>  r”   Ú
ModelClassrs  s     ` @rn   Úraise_errors_on_nested_writesr|  <  s;  øø€ ð2 ”Ô&€JÝ!Ô0°Ñ<Ô<Ðõ ð ð ð ð ð ð
  Ô0ðñ ô ñ ô ð ð ð	$÷ %+¢FØ#ØÔ'Ô2Ø!Ô+Ô4ð %+ñ %
ô %
ñô ð õ> ð ð ð ð ð ð
  Ô0ðñ ô ñ ô ð ð ð	+÷ ,2ª6Ø#ØÔ'Ô2Ø!Ô+Ô4ð ,2ñ ,
ô ,
ñô ð ð ð ro   c                   ó´  — e Zd ZdZi ej        e“ej        e“ej        e“ej	        e	“ej
        e
“ej        e
“ej        e“ej        e“ej        e“ej        e“ej        e“ej        e“ej        e“ej        e“ej        e“ej        e“ej        e	“ej        eej        eej        eej        eej        e
ej        eej        eej        eej        e ej!        e!i
¥Z" e#ed¦  «        r
e$e"ej$        <   e%re&e"e%j&        <   e'e"e%j(        <   e$e"e%j$        <   e)Z*e+Z,e-Z.e/Z0dZ1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d	„ Z7d
„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd„ ZEd„ ZFdS )ÚModelSerializera¯  
    A `ModelSerializer` is just a regular `Serializer`, except that:

    * A set of default fields are automatically populated.
    * A set of default validators are automatically populated.
    * Default `.create()` and `.update()` implementations are provided.

    The process of automatically determining a set of serializer fields
    based on the model fields is reasonably complex, but you almost certainly
    don't need to dig into the implementation.

    If the `ModelSerializer` class *doesn't* generate the set of fields that
    you need you should either declare the extra/differing fields explicitly on
    the serializer class, or simply use a `Serializer` class.
    r6   Nc                 ór  — t          d| |¦  «         | j        j        }t          j        |¦  «        }i }|j                             ¦   «         D ](\  }}|j        r||v r|                     |¦  «        ||<   Œ)	  |j	        j
        di |¤Ž}nl# t          $ r_ t          j        ¦   «         }d|j        ›d|j	        j        ›d|j        ›d|j	        j        ›d| j        j        ›d|›�}	t          |	¦  «        ‚w xY w|r?|                     ¦   «         D ]*\  }}
t#          ||¦  «        }|                     |
¦  «         Œ+|S )aj  
        We have a bit of extra checking around this in order to provide
        descriptive messages when something goes wrong, but this method is
        essentially just:

            return ExampleModel.objects.create(**validated_data)

        If there are many to many fields present on the instance then they
        cannot be set until the model is instantiated, in which case the
        implementation is like so:

            example_relationship = validated_data.pop('example_relationship')
            instance = ExampleModel.objects.create(**validated_data)
            instance.example_relationship = example_relationship
            return instance

        The default implementation also does not handle nested relationships.
        If you want to support writable nested relationships you'll need
        to write an explicit `.create()` method.
        r˜   z Got a `TypeError` when calling `r  zs.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `zF.create()`. You may need to make the field read-only, or override the zD.create() method to handle this correctly.
Original exception was:
 re   )r|  r�   ry  r   rz  rq  r…   Úto_manyrg   Ú_default_managerr˜   Ú	TypeErrorÚ	tracebackÚ
format_excr¸   rÐ   rm   r†   rÙ   )rk   r”   r{  ÚinfoÚmany_to_manyrÅ   Úrelation_inforY   Útbrµ   r   rò   s               rn   r˜   zModelSerializer.createÐ  sŒ  € õ* 	& h°°nÑEÔEÐEà”Y”_ˆ
õ
 Ô(¨Ñ4Ô4ˆØˆØ)-¬×)=Ò)=Ñ)?Ô)?ð 	Jð 	JÑ%ˆJ˜ØÔ$ð J¨*¸Ð*FÐ*FØ+9×+=Ò+=¸jÑ+IÔ+I�˜ZÑ(øð	!Ø9�zÔ2Ô9ÐKÐK¸NÐKÐKˆHˆHøÝð 	!ð 	!ð 	!ÝÔ%Ñ'Ô'ˆBˆBð Ô'Ð'Ð'ØÔ/Ô4Ð4Ð4ØÔ'Ð'Ð'ØÔ/Ô4Ð4Ð4Ø”NÔ+Ð+Ð+Ø�Bðð õ  ˜C‘.”.Ð ð%	!øøøð* ð 	!Ø%1×%7Ò%7Ñ%9Ô%9ð !ð !Ñ!�
˜EÝ ¨*Ñ5Ô5�Ø—	’	˜%Ñ Ô Ð Ð àˆs   Á7B
 Â
A)C3c                 ó’  — t          d| |¦  «         t          j        |¦  «        }g }|                     ¦   «         D ]I\  }}||j        v r*|j        |         j        r|                     ||f¦  «         Œ8t          |||¦  «         ŒJ|                     ¦   «          |D ]*\  }}t          ||¦  «        }| 
                    |¦  «         Œ+|S )Nr„   )r|  r   rz  r…   rq  r€  rZ  Úsetattrr£   r†   rÙ   )rk   rY   r”   r…  Ú
m2m_fieldsÚattrr   rò   s           rn   r„   zModelSerializer.update  sá   € Ý% h°°nÑEÔEÐEÝÔ(¨Ñ2Ô2ˆð ˆ
Ø)×/Ò/Ñ1Ô1ð 	/ð 	/‰KˆD�%Ø�t”~Ð%Ð%¨$¬.¸Ô*>Ô*FÐ%Ø×!Ò! 4¨ -Ñ0Ô0Ð0Ð0å˜ $¨Ñ.Ô.Ð.Ð.à�Š‰Œˆð
 &ð 	ð 	‰KˆD�%Ý˜H dÑ+Ô+ˆEØ�IŠI�eÑÔÐÐàˆro   c                 óì  — | j         €t          j        | _         t          | d¦  «        s(J d                     | j        j        ¬¦  «        ¦   «         ‚t          | j        d¦  «        s(J d                     | j        j        ¬¦  «        ¦   «         ‚t          j	        | j        j
        ¦  «        rt          d¦  «        ‚t          j        | j        ¦  «        }t          | j        d¦  «        }t          | j        dd	¦  «        }|� |d	k    s
J d
¦   «         ‚|dk    s
J d¦   «         ‚t          j        |¦  «        }|                      ||¦  «        }|                      ¦   «         }|                      |||¦  «        \  }}i }|                     ¦   «         D ]J}	|	|j        v r?|j        |	         j        r-||	         j        € t          d|	› d| j        j        › d�¦  «        ‚ŒK|D ]‚}	|	|v r||	         ||	<   Œ|                     |	i ¦  «        }
|
                     dd¦  «        }|dk    r|	}|                      ||||¦  «        \  }}|                      ||
¦  «        } |di |¤Ž||	<   Œƒ|                     |¦  «         |S )z”
        Return the dict of field names -> field instances that should be
        used for `self.fields` when instantiating the serializer.
        Nr�   z1Class {serializer_class} missing "Meta" attribute©Úserializer_classry  z7Class {serializer_class} missing "Meta.model" attributez0Cannot use ModelSerializer with Abstract Models.Údepthr   z'depth' may not be negative.é
   z#'depth' may not be greater than 10.zThe field 'z' on serializer 'z@' is a ManyToMany field and cannot have a default value of None.rS   r  re   )Úurl_field_namer   ÚURL_FIELD_NAMEr    r!  rm   r¸   r�   r   Úis_abstract_modelry  Ú
ValueErrorr÷   rø   rÔ   r†   rz  Úget_field_namesÚget_extra_kwargsÚget_uniqueness_extra_kwargsrë   rq  r€  rQ   r  Úbuild_fieldÚinclude_extra_kwargsr„   )rk   Údeclared_fieldsry  r�  r…  Úfield_namesÚextra_kwargsÚhidden_fieldsrÜ   rÅ   Úextra_field_kwargsrS   Úfield_classÚfield_kwargss                 rn   rî   zModelSerializer.get_fields,  s  € ð
 ÔÐ&Ý".Ô"=ˆDÔå�t˜VÑ$Ô$ð 	
ð 	
Ø?×FÒFØ!%¤Ô!8ð Gñ ô ñ	
ô 	
ð 	
õ
 �t”y 'Ñ*Ô*ð 	
ð 	
ØE×LÒLØ!%¤Ô!8ð Mñ ô ñ	
ô 	
ð 	
õ
 Ô'¨¬	¬Ñ8Ô8ð 	ÝØBñô ð õ œ-¨Ô(=Ñ>Ô>ˆÝ˜œ	 7Ñ+Ô+ˆÝ˜œ	 7¨AÑ.Ô.ˆàÐØ˜A’:�:�:Ð=‘:”:�:Ø˜B’;�;�;Ð E‘;”;�;õ Ô(¨Ñ/Ô/ˆØ×*Ò*¨?¸DÑAÔAˆð ×,Ò,Ñ.Ô.ˆØ&*×&FÒ&FØ˜¨,ñ'
ô '
Ñ#ˆ�mð
 ˆð *×.Ò.Ñ0Ô0ð 	ð 	ˆJØ˜Tœ^Ð+Ð+°´¸zÔ0JÔ0RÐ+ÐWfÐgqÔWrÔWzð  XCÝ ð Y *ð  Yð  Y¸t¼~Ô?Vð  Yð  Yð  Yñô ð øð &ð 	=ð 	=ˆJà˜_Ð,Ð,Ø%4°ZÔ%@��zÑ"Øà!-×!1Ò!1°*¸bÑ!AÔ!AÐØ'×+Ò+¨H°cÑ:Ô:ˆFØ˜Š}ˆ}Ø#�ð )-×(8Ò(8Ø˜˜e Uñ)ô )Ñ%ˆK˜ð
  ×4Ò4ØÐ0ñô ˆLð
 "- Ð!<Ð!<¨|Ð!<Ð!<ˆF�:ÑÐð 	�Š�mÑ$Ô$Ð$àˆro   c           	      óT  — t          | j        dd¦  «        }t          | j        dd¦  «        }|rK|t          k    r@t          |t          t
          f¦  «        s$t          dt          |¦  «        j        z  ¦  «        ‚|r@t          |t          t
          f¦  «        s$t          dt          |¦  «        j        z  ¦  «        ‚|r*|r(J d 	                    | j
        j        ¬¦  «        ¦   «         ‚|€+|€)J d 	                    | j
        j        ¬¦  «        f¦   «         ‚|t          k    rd}|�st          |¦  «        }| j
        j        D ]#}|t          t          |d	g ¦  «        ¦  «        z  }Œ$|D ]/}||v s)J d
 	                    || j
        j        ¬¦  «        ¦   «         ‚Œ0|S |                      ||¦  «        }|�y|D ]v}|| j        vs)J d 	                    || j
        j        ¬¦  «        ¦   «         ‚||v s)J d 	                    || j
        j        ¬¦  «        ¦   «         ‚|                     |¦  «         Œw|S )a  
        Returns the list of all field names that should be created when
        instantiating this serializer class. This is based on the default
        set of fields, but also takes into account the `Meta.fields` or
        `Meta.exclude` options if they have been specified.
        rÜ   NÚexcludezAThe `fields` option must be a list or tuple or "__all__". Got %s.z5The `exclude` option must be a list or tuple. Got %s.zPCannot set both 'fields' and 'exclude' options on serializer {serializer_class}.rŽ  zÜCreating a ModelSerializer without either the 'fields' attribute or the 'exclude' attribute has been deprecated since 3.3.0, and is now disallowed. Add an explicit fields = '__all__' to the {serializer_class} serializer.rÔ   zyThe field '{field_name}' was declared on serializer {serializer_class}, but has not been included in the 'fields' option.)rÅ   r�  zÇCannot both declare the field '{field_name}' and include it in the {serializer_class} 'exclude' option. Remove the field or, if inherited from a parent serializer, disable with `{field_name} = None`.zƒThe field '{field_name}' was included on serializer {serializer_class} in the 'exclude' option, but does not match any model field.)r†   r�   Ú
ALL_FIELDSrÄ   r×   Útupler‚  r"  r¸   r!  rm   rÙ   Ú	__bases__Úget_default_field_namesrÔ   Úremove)rk   r›  r…  rÜ   r£  Úrequired_field_namesrs   rÅ   s           rn   r–  zModelSerializer.get_field_names  s½  € õ ˜œ H¨dÑ3Ô3ˆÝ˜$œ) Y°Ñ5Ô5ˆàð 	�f¥
Ò*Ð*µ:¸fÅtÍUÀmÑ3TÔ3TÐ*ÝðÝ  ™LœLÔ1ñ2ñô ð ð
 ð 	�: gµµe¨}Ñ=Ô=ð 	ÝØGÝ�W‘”Ô&ñ'ñô ð ð
 ð 	
˜wð 	
ð 	
ð-ß-3ªVØ!%¤Ô!8ð .4ñ .ô .ñ	
ô 	
ð 	
ð �N w  ð-÷ .4ªVØ!%¤Ô!8ð .4ñ .ô .ð	:
¡¤ ð •ZÒÐØˆFàÐõ $' Ñ#7Ô#7Ð Ø”~Ô/ð Rð R�Ø$­­G°CÐ9KÈRÑ,PÔ,PÑ(QÔ(QÑQÐ$Ð$à2ð ð �
Ø! VÐ+Ð+Ð+ð'ç'-¢vØ#-Ø)-¬Ô)@ð (.ñ (ô (ñ ,Ô+Ð+Ð+ð ˆMð ×-Ò-¨o¸tÑDÔDˆàÐà%ð *ð *�
Ø!¨Ô)>Ð>Ð>Ð>ð2÷ ’VØ#-Ø)-¬Ô)@ð ñ ô ñ ?Ô>Ð>ð " VÐ+Ð+Ð+ð1ç17²Ø#-Ø)-¬Ô)@ð 28ñ 2ô 2ñ ,Ô+Ð+ð —’˜jÑ)Ô)Ð)Ð)àˆro   c                 ó�   — |j         j        gt          |¦  «        z   t          |j        ¦  «        z   t          |j        ¦  «        z   S ©z€
        Return the default list of field names that will be used if the
        `Meta.fields` option is not specified.
        )r+  rÐ   r×   rÜ   Úforward_relations©rk   r›  Ú
model_infos      rn   r§  z'ModelSerializer.get_default_field_namesÛ  sL   € ð Œ]ÔÐ Ý�Ñ!Ô!ñ"å�Ô"Ñ#Ô#ñ$õ �Ô-Ñ.Ô.ñ/ð	
ro   c                 óž  — ||j         v r#|j         |         }|                      ||¦  «        S ||j        v r<|j        |         }|s|                      ||¦  «        S |                      |||¦  «        S t          ||¦  «        r|                      ||¦  «        S || j        k    r|                      ||¦  «        S |  	                    ||¦  «        S )zW
        Return a two tuple of (cls, kwargs) to build a serializer field with.
        )
Úfields_and_pkÚbuild_standard_fieldrq  Úbuild_relational_fieldÚbuild_nested_fieldr    Úbuild_property_fieldr’  Úbuild_url_fieldÚbuild_unknown_field)rk   rÅ   r…  Úmodel_classÚnested_depthÚmodel_fieldr‡  s          rn   r™  zModelSerializer.build_fieldé  sè   € ð ˜Ô+Ð+Ð+ØÔ,¨ZÔ8ˆKØ×,Ò,¨Z¸ÑEÔEÐEà˜4œ>Ð)Ð)Ø œN¨:Ô6ˆMØð XØ×2Ò2°:¸}ÑMÔMÐMà×.Ò.¨z¸=È,ÑWÔWÐWå�[ *Ñ-Ô-ð 	AØ×,Ò,¨Z¸ÑEÔEÐEà˜4Ô.Ò.Ð.Ø×'Ò'¨
°KÑ@Ô@Ð@à×'Ò'¨
°KÑ@Ô@Ð@ro   c                 ó„  — t          | j        ¦  «        }||         }t          ||¦  «        }|j        r|j        r| j        }|j        j        |d<   d|v r6| j        }h d£}t          |¦  «        D ]}||vr| 
                    |¦  «         Œt          |t          ¦  «        s| 
                    dd¦  «         t          |t          ¦  «        s+t          |t          ¦  «        s| 
                    dd¦  «         t          t           d¦  «        ot#          |t           j        ¦  «        }t&          rt#          |t&          j        ¦  «        s|r*t)          |dd¦  «        |d<   |rt)          |d	d¦  «        |d	<   t&          rEt#          |t&          j        ¦  «        r+|j        }	|                      d
|	¦  «        \  }
} |
di |¤Ž|d
<   ||fS )z.
        Create regular model fields.
        ÚquerysetÚchoices>   rT   rV   rS   r¼  rQ   rR   rP   rU   rN   r]   rû   rO   Úallow_blankrW   r¹  Nr½  r6   ÚencoderÚdecoderry   re   )r   Úserializer_field_mappingr   Ú
one_to_oneÚprimary_keyÚserializer_related_fieldÚrelated_modelÚobjectsÚserializer_choice_fieldr×   rg   Ú
issubclassr8   r&   r'   r    r   rÄ   r6   r   r†   Ú
ArrayFieldÚ
base_fieldr±  )rk   rÅ   r¹  Úfield_mappingr   r¡  Úvalid_kwargsr~   Úis_django_jsonfieldÚchild_model_fieldÚchild_field_classÚchild_field_kwargss               rn   r±  z$ModelSerializer.build_standard_field   s  € õ (¨Ô(EÑFÔFˆà# KÔ0ˆÝ'¨
°KÑ@Ô@ˆð Ô!ð 	I kÔ&=ð 	IØÔ7ˆKØ'2Ô'@Ô'HˆL˜Ñ$à˜Ð$Ð$ð Ô6ˆKðð ð ˆLõ ˜LÑ)Ô)ð *ð *�Ø˜lÐ*Ð*Ø ×$Ò$ SÑ)Ô)Ð)øå˜+¥zÑ2Ô2ð 	2ð ×Ò˜]¨DÑ1Ô1Ð1å˜+¥yÑ1Ô1ð 	2½*À[ÕR]Ñ:^Ô:^ð 	2à×Ò˜]¨DÑ1Ô1Ð1å%¥f¨kÑ:Ô:Ðh½zÈ+ÕW]ÔWgÑ?hÔ?hÐÝð 	P¥
¨;½Ô8QÑ RÔ Rð 	PÐWjð 	Põ '.¨k¸9ÀdÑ&KÔ&KˆL˜Ñ#Ø"ð PÝ*1°+¸yÈ$Ñ*OÔ*O�˜YÑ'åð 	L�z¨+µÔ7QÑRÔRð 	Lð !,Ô 6ÐØ48×4MÒ4MØÐ*ñ5ô 5Ñ1ÐÐ1ð %6Ð$5Ð$KÐ$KÐ8JÐ$KÐ$KˆL˜Ñ!à˜LÐ(Ð(ro   c                 ó,  — | j         }t          ||¦  «        }|                     dd¦  «        }|r7|j        s0|j        j                             |¦  «        j        s||d<   | j        }t          |t          ¦  «        s|                     dd¦  «         ||fS )zF
        Create fields for forward and reverse relationships.
        Úto_fieldNÚ
slug_fieldÚ	view_name)rÃ  r   rg   ÚreverserÄ  Ú_metaÚ	get_fieldrÂ  Úserializer_related_to_fieldrÇ  rB   )rk   rÅ   r‡  r   r¡  rÑ  s         rn   r²  z&ModelSerializer.build_relational_field=  s©   € ð Ô3ˆÝ*¨:°}ÑEÔEˆà×#Ò# J°Ñ5Ô5ˆØð 	;˜MÔ1ð 	;¸-Ô:UÔ:[×:eÒ:eÐfnÑ:oÔ:oÔ:{ð 	;Ø)1ˆL˜Ñ&ØÔ:ˆKõ ˜+Õ'>Ñ?Ô?ð 	0Ø×Ò˜[¨$Ñ/Ô/Ð/à˜LÐ(Ð(ro   c                 ó\   ‡‡—  G ˆˆfd„dt           ¦  «        }|}t          ‰¦  «        }||fS )úM
        Create nested fields for forward and reverse relationships.
        c                   ó0   •— e Zd Z G ˆ ˆfd„d¦  «        ZdS )ú<ModelSerializer.build_nested_field.<locals>.NestedSerializerc                   ó,   •— e Zd Z”j        Z” dz
  ZdZdS )úAModelSerializer.build_nested_field.<locals>.NestedSerializer.MetarÊ   r`   N©r¸   r¹   rº   rÄ  ry  r�  rÜ   ©r¸  r‡  s   €€rn   r�   rÝ  T  ó&   ø€ € € € € Ø%Ô3�Ø$ qÑ(�Ø"���ro   r�   N©r¸   r¹   rº   r�   rß  s   €€rn   ÚNestedSerializerrÛ  S  óL   ø€ € € € € ð#ð #ð #ð #ð #ð #ð #ð #ñ #ô #ð #ð #ð #ro   râ  )r~  r   ©rk   rÅ   r‡  r¸  râ  r   r¡  s     ``   rn   r³  z"ModelSerializer.build_nested_fieldO  s\   øø€ ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#�ñ 	#ô 	#ð 	#ð 'ˆÝ1°-Ñ@Ô@ˆà˜LÐ(Ð(ro   c                 ó   — t           }i }||fS )zL
        Create a read only field for model methods and properties.
        )r:   ©rk   rÅ   r·  r   r¡  s        rn   r´  z$ModelSerializer.build_property_field^  s   € õ $ˆØˆà˜LÐ(Ð(ro   c                 ó6   — | j         }t          |¦  «        }||fS )zC
        Create a field representing the object's own URL.
        )Úserializer_url_fieldr   ræ  s        rn   rµ  zModelSerializer.build_url_fieldg  s$   € ð Ô/ˆÝ% kÑ2Ô2ˆà˜LÐ(Ð(ro   c                 ól   — t          d|›d|j        ›d| j        j        ›d| j        j        ›d�	¦  «        ‚)z7
        Raise an error on any unknown fields.
        zField name `z` is not valid for model `z` in `r  z`.)r   r¸   rm   r¹   )rk   rÅ   r·  s      rn   r¶  z#ModelSerializer.build_unknown_fieldp  sK   € õ #Ð"àˆZˆZ˜Ô-Ð-Ð-¨t¬~Ô/HÐ/HÐ/HÈ$Ì.ÔJaÐJaÐJaðcñ
ô 
ð 	
ro   c                 ó”  — |                      dd¦  «        rdD ]}|                     |d¦  «         Œ|                      d¦  «        r,|                      d¦  «        du r|                     d¦  «         |                      d|                      dd¦  «        ¦  «        r|                     dd¦  «         |                     |¦  «         |S )z›
        Include any 'extra_kwargs' that have been included for this field,
        possibly removing any incompatible existing keyword arguments.
        rN   F)	rP   rQ   r½  r_   r^   Ú	min_valueÚ	max_valuerû   r»  NrQ   rP   )r  rg   r„   )rk   rl   r�  rŒ  s       rn   rš  z$ModelSerializer.include_extra_kwargsy  s×   € ð
 ×Ò˜K¨Ñ/Ô/ð 	'ðð 'ð '�ð —
’
˜4 Ñ&Ô&Ð&Ð&à×Ò˜IÑ&Ô&ð 	#¨6¯:ª:°jÑ+AÔ+AÀUÐ+JÐ+JØ�JŠJ�zÑ"Ô"Ð"à×Ò˜K¨¯ª°KÀÑ)GÔ)GÑHÔHð 	/Ø×Ò˜Z¨Ñ.Ô.Ð.à�Š�lÑ#Ô#Ð#àˆro   c                 óÆ  — t          j        t          | j        di ¦  «        ¦  «        }t          | j        dd¦  «        }|�ft	          |t
          t          f¦  «        s$t          dt          |¦  «        j	        z  ¦  «        ‚|D ]"}| 
                    |i ¦  «        }d|d<   |||<   Œ#n:t          | j        d¦  «        r%J d| j        j        ›d	| j        j	        ›d
�¦   «         ‚|S )zr
        Return a dictionary mapping field names to a dictionary of
        additional keyword arguments.
        r�  Úread_only_fieldsNz>The `read_only_fields` option must be a list or tuple. Got %s.TrN   Úreadonly_fieldszSerializer `r  zY` has field `readonly_fields`; the correct spelling for the option is `read_only_fields`.)r÷   rø   r†   r�   rÄ   r×   r¥  r‚  r"  r¸   r  r    rm   r¹   )rk   r�  rî  rÅ   rl   s        rn   r—  z ModelSerializer.get_extra_kwargs‘  s  € õ
 ”}¥W¨T¬Y¸ÈÑ%KÔ%KÑLÔLˆå" 4¤9Ð.@À$ÑGÔGÐØÐ'ÝÐ.µµu°Ñ>Ô>ð ÝðÝ $Ð%5Ñ 6Ô 6Ô ?ñ@ñô ð ð /ð 2ð 2�
Ø%×)Ò)¨*°bÑ9Ô9�Ø&*��{Ñ#Ø+1�˜ZÑ(Ð(ð2õ ˜tœyÐ*;Ñ<Ô<ð ð ð ð ”Ô*Ð*Ð*¨D¬NÔ,CÐ,CÐ,CðEñô ð ð Ðro   c              #   óˆ  K  — |gt          |j        j        ¦  «        z   D ]¡}|j        j        D ]}||j        g dfV — Œ|j        j        D ]v}t          |t          j        ¦  «        rZt          |j
        ¦  «        dk    rB|j        €g }n!t          t          |j        ¦  «        ¦  «        }|j
        |j        ||j        fV — ŒwŒ¢dS )zÝ
        Returns iterator of (fields, queryset, condition_fields, condition),
        each entry describes an unique together constraint on `fields` in `queryset`
        with respect of constraint's `condition`.
        NrÊ   )r×   rÕ  ÚparentsÚunique_togetherr�  ÚconstraintsrÄ   r   ÚUniqueConstraintrD  rÜ   Ú	conditionr   )rk   ry  Úparent_classrò  Ú
constraintÚcondition_fieldss         rn   Úget_unique_together_constraintsz/ModelSerializer.get_unique_together_constraints¯  s  è è € ð #˜G¥d¨5¬;Ô+>Ñ&?Ô&?Ñ?ð 		nð 		nˆLØ#/Ô#5Ô#Eð Hð H�Ø% uÔ'=¸rÀ4ÐGÐGÐGÐGÐGØ*Ô0Ô<ð nð n�
Ý˜j­&Ô*AÑBÔBð nÅsÈ:ÔK\ÑG]ÔG]Ð`aÒGaÐGaØ!Ô+Ð3Ø+-Ð(Ð(å+/Õ0QÐR\ÔRfÑ0gÔ0gÑ+hÔ+hÐ(Ø%Ô,¨eÔ.DÐFVÐXbÔXlÐmÐmÐmÐmøðnð		nð 		nro   c                 ó(  — t          | j        dd¦  «        �|i fS t          | j        d¦  «        }|                      |||¦  «        }t          ¦   «         }|                     ¦   «         D ]}||j        |j        |j        hz  }Œ|dhz  }t          |                     ¦   «         ¦  «        }|  	                    |¦  «        D ]@\  }	}
}}t          |	¦  «        t          |¦  «        z  }| 
                    |¦  «        r||z  }ŒAi }i }|D ]Ë}|j                             |¦  «        }t          |dd¦  «        rt          t          j        ¦  «        }nKt          |dd¦  «        rt          j        }n-|                     ¦   «         r|j        }n|j        rd}nt&          }||v r|t&          u rddi||<   Œ§d|i||<   Œ¯|t&          urt)          |¬	¦  «        ||<   ŒÌ|                     ¦   «         D ])\  }}||v r|                     ||         ¦  «         |||<   Œ*||fS )
zü
        Return any additional field options that need to be included as a
        result of uniqueness constraints on the model. This is returned as
        a two-tuple of:

        ('dict of updated extra kwargs', 'mapping of hidden fields')
        rû   Nry  Úauto_now_addÚauto_nowrP   TrQ   rX  )r†   r�   Ú_get_model_fieldsrÙ   rð   Úunique_for_dateÚunique_for_monthÚunique_for_yearrë   rù  Ú
issupersetrÕ  rÖ  rH   r
   ÚnowÚhas_defaultrQ   rC  rK   r1   r…   r„   )rk   rœ  r›  r�  ry  Úmodel_fieldsÚunique_constraint_namesr¹  Úmodel_fields_namesÚunique_together_listr»  rø  rõ  Ú)unique_together_list_and_condition_fieldsrž  Úuniqueness_extra_kwargsÚunique_constraint_nameÚunique_constraint_fieldrQ   r~   r   s                        rn   r˜  z+ModelSerializer.get_uniqueness_extra_kwargsÀ  s¨  € õ �4”9˜l¨DÑ1Ô1Ð=Ø  "Ð%Ð%å˜œ	 7Ñ+Ô+ˆØ×-Ò-Ø˜¨,ñ
ô 
ˆõ #&¡%¤%Ðà'×.Ò.Ñ0Ô0ð 	Eð 	EˆKà#¨Ô(CÀ[ÔEaØ(3Ô(Cð(Eñ EÐ#Ð#ð 	  D 6Ñ)ÐÝ  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5Ðð LP×KoÒKoÐpuÑKvÔKvð 	Uð 	UÑGÐ  (Ð,<¸iÝ8;Ð<PÑ8QÔ8QÕTWÐXhÑTiÔTiÑ8iÐ5Ø!×,Ò,Ð-VÑWÔWð UØ'Ð+TÑTÐ'øð
 ˆØ"$Ðà&=ð 	Uð 	UÐ"à&+¤k×&;Ò&;Ð<RÑ&SÔ&SÐ#åÐ.°ÀÑEÔEð 	 Ý+­H¬LÑ9Ô9��ÝÐ0°*¸dÑCÔCð  Ý"œ,��Ø(×4Ò4Ñ6Ô6ð  Ø1Ô9��Ø(Ô-ð  Ø��å�à%¨Ð5Ð5à�eÐ#Ð#ØGQÐSWÐFXÐ+Ð,BÑCÐCàGPÐRYÐFZÐ+Ð,BÑCÐCØ¥Ð%Ð%õ 9DÈGÐ8TÑ8TÔ8T�Ð4Ñ5øð 2×7Ò7Ñ9Ô9ð 	&ð 	&‰JˆC�Ø�lÐ"Ð"Ø—’˜\¨#Ô.Ñ/Ô/Ð/Ø %ˆL˜ÑÐà˜]Ð*Ð*ro   c                 óŽ  — t          | j        d¦  «        }i }|D ]ª}||v r||         }|j        p|}n"	 ||         d         }n# t          $ r |}Y nw xY wd|v s|dk    rŒEt	          j        t          ¦  «        5  |j                             |¦  «        }t          |t          ¦  «        r|||<   ddd¦  «         n# 1 swxY w Y   Œ«|S )zð
        Returns all the model fields that are being mapped to by fields
        on the serializer class.
        Returned as a dict of 'model field name' -> 'model field'.
        Used internally by `get_uniqueness_field_options`.
        ry  rS   r  r  N)r†   r�   rS   ÚKeyErrorÚ
contextlibÚsuppressr   rÕ  rÖ  rÄ   ÚDjangoModelField)	rk   rœ  r›  r�  ry  r  rÅ   rò   rS   s	            rn   rý  z!ModelSerializer._get_model_fields  s@  € õ ˜œ	 7Ñ+Ô+ˆØˆà%ð 	1ð 	1ˆJØ˜_Ð,Ð,à'¨
Ô3�ØœÐ3¨��ð(Ø)¨*Ô5°hÔ?�F�FøÝð (ð (ð (Ø'�F�F�Fð(øøøð �fˆ}ˆ} ¨#¢ ð åÔ$Õ%6Ñ7Ô7ð 1ð 1Øœ×-Ò-¨fÑ5Ô5�Ý˜eÕ%5Ñ6Ô6ð 1Ø+0�L Ñ(ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1øð
 Ðs#   ³AÁAÁAÁ85B9Â9B=	Ã B=	c                 ó¶   — t          t          | dd¦  «        dd¦  «        }|�t          |¦  «        S |                      ¦   «         |                      ¦   «         z   S )zW
        Determine the set of validators to use when instantiating serializer.
        r�   Nrû   )r†   r×   Úget_unique_together_validatorsÚget_unique_for_date_validators)rk   rû   s     rn   rü   zModelSerializer.get_validators0  s_   € õ
 �W T¨6°4Ñ8Ô8¸,ÈÑMÔMˆ
ØÐ!Ý˜
Ñ#Ô#Ð#ð ×/Ò/Ñ1Ô1Ø×/Ò/Ñ1Ô1ñ2ð	
ro   c                 ó`   — |                      ¦   «         }|j        d|j        iz  }||k    rdS |S )z~
        Returns the violation error message for the UniqueConstraint,
        or None if the message is the default.
        rÐ   N)Úget_violation_error_messageÚdefault_violation_error_messagerÐ   )rk   r÷  Úviolation_error_messageÚdefault_error_messages       rn   Ú'_get_constraint_violation_error_messagez7ModelSerializer._get_constraint_violation_error_message?  sD   € ð
 #-×"HÒ"HÑ"JÔ"JÐØ *Ô JÈfÐV`ÔVeÐMfÑ fÐØ"Ð&;Ò;Ð;Ø�4Ø&Ð&ro   c                 ó’  ‡— d„ | j         D ¦   «         }|                     d„ | j                             ¦   «         D ¦   «         ¦  «         t	          t
          ¦  «        Š|                     ¦   «         D ] \  }}‰|                              |¦  «         Œ!d„ g | j        j	        j
        j        ¢| j        j	        ‘R D ¦   «         }g }|                      | j        j	        ¦  «        D �]c\  }}}}	t          |¦  «        t          |¦  «        z  }
t          ‰¦  «                             |
¦  «        sŒJ|
D ]n}t          ‰|         ¦  «        dk    sSJ d                     | j        j	        j        | j        j        |d                     ‰|         ¦  «        ¬¦  «        ¦   «         ‚Œot)          ˆfd„|D ¦   «         ¦  «        }|                     t)          |¦  «        ¦  «        }|r|                      |¦  «        nd	}t/          ||t)          ˆfd
„|D ¦   «         ¦  «        |	|t1          |dd	¦  «        ¬¦  «        }|                     |¦  «         �Œe|S )z\
        Determine a default set of validators for any unique_together constraints.
        c                 óP   — i | ]#}|j         d k    ¯d|j         v¯|j        |j         “Œ$S r  )rS   rÅ   r  s     rn   r€   zBModelSerializer.get_unique_together_validators.<locals>.<dictcomp>R  sB   € ð 
ð 
ð 
Ø/4Ø” Ò#Ð#¨#°U´\Ð*AÐ*Að Ô˜eœlØ*AÐ*AÐ*Aro   c                 ó~   — i | ]:}|j         r1|j        t          k    ¯|j        d k    ¯$d|j        v¯-|j        |j        “Œ;S r  )rN   rQ   rK   rS   rÅ   r  s     rn   r€   zBModelSerializer.get_unique_together_validators.<locals>.<dictcomp>X  s\   € ð 
ð 
ð 
Ø/4Ø”ð
à&+¤mµuÒ&<Ð&<À5Ä<ÐSVÒCVÐCVÐ]`ÐhmÔhtÐ]tÐ]tð Ô˜eœlØ]tÐ]tÐ]tro   c                 óp   — i | ]3}|j         j        D ]$}t          |t          j        ¦  «        ¯|j        |“Œ%Œ4S re   )rÕ  ró  rÄ   r   rô  rÜ   )r}   Ú	model_clsr÷  s      rn   r€   zBModelSerializer.get_unique_together_validators.<locals>.<dictcomp>d  s\   € ð '
ð '
ð '
àØ'œoÔ9ð'
ð '
ð Ý˜*¥fÔ&=Ñ>Ô>ð	'
ØÔ˜zð'
ð '
ð '
ð '
ro   rÊ   a  Unable to create `UniqueTogetherValidator` for `{model}.{field}` as `{serializer}` has multiple fields ({fields}) that map to this model field. Either remove the extra fields, or override `Meta.validators` with a `UniqueTogetherValidator` using the desired field names.z, )ry  r>  rò   rÜ   c              3   ó4   •K  — | ]}‰|         d          V — ŒdS ©r   Nre   ©r}   rÖ   Ú
source_maps     €rn   rt  zAModelSerializer.get_unique_together_validators.<locals>.<genexpr>„  s,   øè è € ÐJÐJ°Q 
¨1¤¨aÔ 0ÐJÐJÐJÐJÐJÐJro   Nc              3   ó4   •K  — | ]}‰|         d          V — ŒdS r   re   r!  s     €rn   rt  zAModelSerializer.get_unique_together_validators.<locals>.<genexpr>Œ  s,   øè è € Ð&RÐ&R¸A z°!¤}°QÔ'7Ð&RÐ&RÐ&RÐ&RÐ&RÐ&Rro   Úviolation_error_code)r»  rÜ   rø  rõ  r$  r  )ró   r„   rÜ   rð   r   r×   r…   rZ  r�   ry  rÕ  rñ  rù  rÙ   r  rD  r!  r¸   rm   Újoinr¥  r  r  r#   r†   )rk   Úfield_sourcesrÐ   rS   Úunique_constraint_by_fieldsrû   rò  r»  rø  rõ  Ú$unique_together_and_condition_fieldsrœ  r÷  r  Ú	validatorr"  s                  @rn   r  z.ModelSerializer.get_unique_together_validatorsJ  s¨  ø€ ð
ð 
Ø8<Ô8Mð
ñ 
ô 
ˆð 	×Òð 
ð 
Ø8<¼×8JÒ8JÑ8LÔ8Lð
ñ 
ô 
ñ 	ô 	ð 	õ !¥Ñ&Ô&ˆ
Ø)×/Ò/Ñ1Ô1ð 	,ð 	,‰LˆD�&Ø�vÔ×%Ò% dÑ+Ô+Ð+Ð+ð'
ð '
àN˜tœyœÔ4Ô<ÐN¸d¼i¼oÐNÐNð'
ñ '
ô '
Ð#ð ˆ
ØFJ×FjÒFjÐkoÔktÔkzÑF{ÔF{ð #	)ñ #	)ÑBˆO˜XÐ'7¸å36°Ñ3GÔ3GÍ#ÐN^ÑJ_ÔJ_Ñ3_Ð0Ý�z‘?”?×-Ò-Ð.RÑSÔSð Øà>ð ð �Ý˜: fÔ-Ñ.Ô.°!Ò3Ð3Ð3ð5÷ ’VØ"œiœoÔ6Ø#'¤>Ô#:Ø$Ø#Ÿyšy¨°FÔ);Ñ<Ô<ð	 ñ ô ñ 4Ô3Ð3Ð3õ  ÐJÐJÐJÐJ¸/ÐJÑJÔJÑJÔJˆKà4×8Ò8½¸Ñ9OÔ9OÑPÔPˆJØblÐ&v d×&RÒ&RÐS]Ñ&^Ô&^Ð&^ÐrvÐ#å/Ø!Ø"Ý!&Ð&RÐ&RÐ&RÐ&RÐAQÐ&RÑ&RÔ&RÑ!RÔ!RØ#Ø/Ý˜ZÐ)?ÀÑFÔFðñ ô ˆIð ×Ò˜iÑ(Ô(Ð(Ñ(ØÐro   c                 ó6  — t          j        | j        j        ¦  «        }| j        j        j        }d„ | j                             ¦   «         D ¦   «         }g }|j                             ¦   «         D ]ª\  }}|j	        r0||v r,t          |||j	        ¬¦  «        }|                     |¦  «         |j        r0||v r,t          |||j        ¬¦  «        }|                     |¦  «         |j        r0||v r,t          |||j        ¬¦  «        }|                     |¦  «         Œ«|S )z¦
        Determine a default set of validators for the following constraints:

        * unique_for_date
        * unique_for_month
        * unique_for_year
        c                 ó   — g | ]	}|j         ‘Œ
S re   )rS   r  s     rn   rÈ   zBModelSerializer.get_unique_for_date_validators.<locals>.<listcomp>ž  s   € ÐFÐFÐF¨�u”|ÐFÐFÐFro   )r»  rò   Ú
date_field)r   rz  r�   ry  r�  rÜ   rð   r°  r…   rþ  r    rZ  rÿ  r!   r   r"   )rk   r…  Údefault_managerrœ  rû   rÅ   rò   r)  s           rn   r  z.ModelSerializer.get_unique_for_date_validators”  sU  € õ Ô(¨¬¬Ñ9Ô9ˆØœ)œ/Ô:ˆØFÐF°´×1CÒ1CÑ1EÔ1EÐFÑFÔFˆàˆ
à!%Ô!3×!9Ò!9Ñ!;Ô!;ð 	-ð 	-ÑˆJ˜ØÔ$ð -¨°{Ð)BÐ)BÝ2Ø,Ø$Ø$Ô4ðñ ô �	ð
 ×!Ò! )Ñ,Ô,Ð,àÔ%ð -¨*¸Ð*CÐ*CÝ3Ø,Ø$Ø$Ô5ðñ ô �	ð
 ×!Ò! )Ñ,Ô,Ð,àÔ$ð -¨°{Ð)BÐ)BÝ2Ø,Ø$Ø$Ô4ðñ ô �	ð
 ×!Ò! )Ñ,Ô,Ð,øàÐro   )Gr¸   r¹   rº   r»   r   Ú	AutoFieldr5   ÚBigAutoFieldr$   r%   r&   ÚCommaSeparatedIntegerFieldr(   r)   r*   r,   r-   r	   r8   r.   r0   r4   ÚNullBooleanFieldÚPositiveIntegerFieldÚPositiveSmallIntegerFieldr=   ÚSmallIntegerFieldÚ	TextFieldr>   r?   r@   ÚGenericIPAddressFieldr3   r/   rÀ  r    r6   r   r2   r7   rÈ  rD   rÃ  rF   r×  rA   rè  r'   rÆ  r’  r˜   r„   rî   r–  r§  r™  r±  r²  r³  r´  rµ  r¶  rš  r—  rù  r˜  rý  rü   r  r  r  re   ro   rn   r~  r~  Ž  sE  € € € € € ðð ð ØÔ˜,ð àÔ˜_ð ð 	Ô ð ð 	Ô˜\ð	 ð
 	Ô˜)ð ð 	Ô)¨9ð ð 	Ô˜)ð ð 	Ô˜mð ð 	Ô˜\ð ð 	Ô˜mð ð 	Ô˜:ð ð 	Œ�jð ð 	Ô˜)ð ð 	Ô˜:ð ð 	Ô˜:ð ð  	Ô˜\ð! ð" 	Ô ð# ð$ 	Ô# \ØÔ(¨,ØÔ˜)ØÔ  ,ØÔ˜)ØÔ˜)ØŒ˜ØÔ˜)ØÔ$ nØÔ˜mð7 ð  Ðð: €wˆv�{Ñ#Ô#ð ?Ø5>Ð  Ô!1Ñ2Øð HØ@KÐ  Ô!<Ñ=Ø?HÐ  Ô!;Ñ<Ø>GÐ  Ô!:Ñ;Ø5ÐØ"2ÐØ3ÐØ)Ðð €Nð>ð >ð >ð@ð ð ð8Oð Oð OðfZð Zð Zðx

ð 

ð 

ðAð Að Að.;)ð ;)ð ;)ðz)ð )ð )ð$)ð )ð )ð)ð )ð )ð)ð )ð )ð
ð 
ð 
ðð ð ð0ð ð ð<nð nð nð"K+ð K+ð K+ðZð ð ðF
ð 
ð 
ð	'ð 	'ð 	'ðHð Hð HðT'ð 'ð 'ð 'ð 'ro   r~  c                   ó"   — e Zd ZdZeZd„ Zd„ ZdS )ÚHyperlinkedModelSerializera  
    A type of `ModelSerializer` that uses hyperlinked relationships instead
    of primary key relationships. Specifically:

    * A 'url' field is included instead of the 'id' field.
    * Relationships to other instances are hyperlinks, instead of primary keys.
    c                 ó†   — | j         gt          |¦  «        z   t          |j        ¦  «        z   t          |j        ¦  «        z   S r«  )r’  r×   rÜ   r¬  r­  s      rn   r§  z2HyperlinkedModelSerializer.get_default_field_namesÈ  sJ   € ð Ô Ð!Ý�Ñ!Ô!ñ"å�Ô"Ñ#Ô#ñ$õ �Ô-Ñ.Ô.ñ/ð	
ro   c                 ó\   ‡‡—  G ˆˆfd„dt           ¦  «        }|}t          ‰¦  «        }||fS )rÙ  c                   ó0   •— e Zd Z G ˆ ˆfd„d¦  «        ZdS )úGHyperlinkedModelSerializer.build_nested_field.<locals>.NestedSerializerc                   ó,   •— e Zd Z”j        Z” dz
  ZdZdS )úLHyperlinkedModelSerializer.build_nested_field.<locals>.NestedSerializer.MetarÊ   r`   NrÞ  rß  s   €€rn   r�   r>  Ù  rà  ro   r�   Nrá  rß  s   €€rn   râ  r<  Ø  rã  ro   râ  )r8  r   rä  s     ``   rn   r³  z-HyperlinkedModelSerializer.build_nested_fieldÔ  s]   øø€ ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#Õ9ñ 	#ô 	#ð 	#ð 'ˆÝ1°-Ñ@Ô@ˆà˜LÐ(Ð(ro   N)r¸   r¹   rº   r»   rB   rÃ  r§  r³  re   ro   rn   r8  r8  ¾  sD   € € € € € ðð ð  7Ðð

ð 

ð 

ð)ð )ð )ð )ð )ro   r8  )pr»   r  r÷   rN  rƒ  Úcollectionsr   Úcollections.abcr   Údjango.core.exceptionsr   r   r   râ   Ú	django.dbr   Údjango.db.models.fieldsr	   r  Údjango.utilsr
   Údjango.utils.functionalr   Údjango.utils.translationr   rF  Úrest_framework.compatr   r   Úrest_framework.exceptionsr   Úrest_framework.fieldsr   Úrest_framework.settingsr   Úrest_framework.utilsr   r   r   Ú"rest_framework.utils.field_mappingr   r   r   r   r   Ú'rest_framework.utils.serializer_helpersr   r   r   r   r   r   Úrest_framework.validatorsr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   Úrest_framework.relationsrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r{   rƒ   r¤  rb   r"  rÁ   rä   ræ   r‡   r|  r~  r8  re   ro   rn   ú<module>rP     s—  ððð ð Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ KÐ KÐ KÐ KÐ KÐ KØ Ð Ð Ð Ð Ð Ø =Ð =Ð =Ð =Ð =Ð =Ø !Ð !Ð !Ð !Ð !Ð !Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðÐ ð !LÐ à€
ðu$ð u$ð u$ð u$ð u$�Uñ u$ô u$ð u$ðv#8ð #8ð #8ð #8ð #8˜$ñ #8ô #8ð #8ðL#ð #ð #ðLt0ð t0ð t0ð t0ð t0�Ð+>ð t0ñ t0ô t0ð t0ðt\0ð \0ð \0ð \0ð \0�^ñ \0ô \0ð \0ðDOð Oð Oðdmð mð mð mð m�jñ mô mð mð`#)ð #)ð #)ð #)ð #) ñ #)ô #)ð #)ð #)ð #)ro   