Ë
    ùi¯eÁ ã                   ó,  — 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	 d dl
mZ d dlmZmZmZ d dlmZ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  G d„ d«      Z  G d„ d«      Z! G d„ d«      Z"e G d„ de"e!«      «       Z#e!jH                  e!jJ                  e!jL                  e!jN                  e!jP                  fD � ci c]'  } | ejR                  ejR                  ejR                  fg“Œ) c} e!jH                  e!jT                  e!jJ                  e!jL                  e!jN                  e!jP                  fD � ci c]k  } | ejV                  ejV                  ejV                  fejX                  ejX                  ejX                  fejZ                  ejZ                  ejZ                  fg“Œm c} e!jH                  e!jT                  e!jJ                  e!jL                  e!jN                  fD � ci c]�  } | ejV                  ejZ                  ejZ                  fejZ                  ejV                  ejZ                  fejV                  ejX                  ejX                  fejX                  ejV                  ejX                  fg“Œ� c} e!j\                  e!j^                  e!j`                  e!jb                  e!jd                  fD � ci c]'  } | ejV                  ejV                  ejV                  fg“Œ) c} e!jH                  e!jT                  e!jJ                  e!jL                  e!jN                  e!jP                  fD � �ci c]5  } ejV                  ejZ                  ejX                  fD ]  }| |e	|fe	||fg“Œ Œ7 c}} e!jH                  ejf                  ejh                  ejj                  fejj                  ejh                  ejj                  fejh                  ejf                  ejj                  fejh                  ejj                  ejj                  fejh                  ejh                  ejh                  fejl                  ejh                  ejl                  fejh                  ejl                  ejl                  fgie!jT                  ejf                  ejh                  ejj                  fejj                  ejh                  ejj                  fejf                  ejf                  ejh                  fejf                  ejj                  ejh                  fejj                  ejf                  ejh                  fejj                  ejj                  ejh                  fejh                  ejh                  ejh                  fejl                  ejh                  ejl                  fejl                  ejl                  ejh                  fg	igZ7 ee8«      Z9d„ Z:e7D ]0  Z;e;jy                  «       D ]  \  Z=Z>e>D ]  \  Z?Z@ZA e:e?e=e@eA«       Œ Œ Œ2  ej„                  d¬«      d„ «       ZC G d„ de e#«      ZD G d„ deD«      ZE G d„ deD«      ZF ed ¬!«       G d"„ d#e!«      «       ZG G d$„ d%eG«      ZH G d&„ d'eG«      ZI ed(¬!«       G d)„ d*e e#«      «       ZJ ed+¬!«       G d,„ d-e e#«      «       ZK G d.„ d/e#«      ZL G d0„ d1e#«      ZM G d2„ d3e#«      ZN G d4„ d5e#«      ZO G d6„ d7e#«      ZP G d8„ d9eJ«      ZQ G d:„ d;eJ«      ZR ed<¬!«       G d=„ d>e e#«      «       ZS G d?„ d@eS«      ZT edA¬!«       G dB„ dCe#«      «       ZU edD¬!«       G dE„ dFe e#«      «       ZV G dG„ dHe"e!«      ZW G dI„ dJeW«      ZX edK¬!«       G dL„ dMe#«      «       ZY G dN„ dOe e#«      ZZ G dP„ dQe#«      Z[ G dR„ dSe[«      Z\ G dT„ dUe[«      Z]yc c} w c c} w c c} w c c} w c c}} w )Vé    N)Údefaultdict©ÚDecimal)ÚNoneType)ÚUUID)ÚEmptyResultSetÚ
FieldErrorÚFullResultSet)ÚDatabaseErrorÚNotSupportedErrorÚ
connection)Úfields)Ú
LOOKUP_SEP)ÚQ)Údeconstructible)Úcached_property)Úmake_hashablec                   ó   — e Zd ZdZd„ Zy)ÚSQLiteNumericMixinzp
    Some expressions with output_field=DecimalField() must be cast to
    numeric to be properly filtered.
    c                 ó¢   —  | j                   ||fi |¤Ž\  }}	 | j                  j                  «       dk(  rd|z  }||fS # t        $ r Y ||fS w xY w)NÚDecimalFieldz(CAST(%s AS NUMERIC)))Úas_sqlÚoutput_fieldÚget_internal_typer	   )ÚselfÚcompilerr   Úextra_contextÚsqlÚparamss         úEE:\TRUCKING_PROJECT\Lib\site-packages\django/db/models/expressions.pyÚ	as_sqlitezSQLiteNumericMixin.as_sqlite   sm   € Ø!�d—k‘k (¨JÑH¸-ÑH‰ˆˆVð	Ø× Ñ ×2Ñ2Ó4¸ÒFØ-°Ñ3�ð �Fˆ{Ðøô ò 	ØØ�Fˆ{Ðð	ús   ™"? ¿	AÁAN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   © ó    r    r   r      s   „ ñó
r'   r   c                   óØ   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(y')(Ú
Combinablezu
    Provide the ability to combine one or two objects with
    some connector. For example F('foo') + F('bar').
    ú+ú-Ú*ú/ú^z%%ú&ú|z<<z>>ú#c                 óh   — t        |d«      st        |«      }|rt        ||| «      S t        | ||«      S ©NÚresolve_expression)ÚhasattrÚValueÚCombinedExpression)r   ÚotherÚ	connectorÚreverseds       r    Ú_combinezCombinable._combine=   s7   € Ü�uÐ2Ô3ä˜%“LˆEáÜ% e¨Y¸Ó=Ð=Ü! $¨	°5Ó9Ð9r'   c                 ó<   — | j                  d| j                  d«      S )NéÿÿÿÿF©r;   ÚMUL©r   s    r    Ú__neg__zCombinable.__neg__J   s   € Ø�}‰}˜R §¡¨5Ó1Ð1r'   c                 ó<   — | j                  || j                  d«      S ©NF©r;   ÚADD©r   r8   s     r    Ú__add__zCombinable.__add__M   ó   € Ø�}‰}˜U D§H¡H¨eÓ4Ð4r'   c                 ó<   — | j                  || j                  d«      S rC   ©r;   ÚSUBrF   s     r    Ú__sub__zCombinable.__sub__P   rH   r'   c                 ó<   — | j                  || j                  d«      S rC   r>   rF   s     r    Ú__mul__zCombinable.__mul__S   rH   r'   c                 ó<   — | j                  || j                  d«      S rC   ©r;   ÚDIVrF   s     r    Ú__truediv__zCombinable.__truediv__V   rH   r'   c                 ó<   — | j                  || j                  d«      S rC   ©r;   ÚMODrF   s     r    Ú__mod__zCombinable.__mod__Y   rH   r'   c                 ó<   — | j                  || j                  d«      S rC   ©r;   ÚPOWrF   s     r    Ú__pow__zCombinable.__pow__\   rH   r'   c                 óz   — t        | dd«      r$t        |dd«      rt        | «      t        |«      z  S t        d«      ‚©NÚconditionalFúFUse .bitand(), .bitor(), and .bitxor() for bitwise logical operations.©Úgetattrr   ÚNotImplementedErrorrF   s     r    Ú__and__zCombinable.__and___   ó=   € Ü�4˜¨Ô.´7¸5À-ÐQVÔ3WÜ�T“7œQ˜u›XÑ%Ð%Ü!ØTó
ð 	
r'   c                 ó<   — | j                  || j                  d«      S rC   )r;   ÚBITANDrF   s     r    ÚbitandzCombinable.bitandf   ó   € Ø�}‰}˜U D§K¡K°Ó7Ð7r'   c                 ó<   — | j                  || j                  d«      S rC   )r;   ÚBITLEFTSHIFTrF   s     r    ÚbitleftshiftzCombinable.bitleftshifti   s   € Ø�}‰}˜U D×$5Ñ$5°uÓ=Ð=r'   c                 ó<   — | j                  || j                  d«      S rC   )r;   ÚBITRIGHTSHIFTrF   s     r    ÚbitrightshiftzCombinable.bitrightshiftl   s   € Ø�}‰}˜U D×$6Ñ$6¸Ó>Ð>r'   c                 óz   — t        | dd«      r$t        |dd«      rt        | «      t        |«      z  S t        d«      ‚r\   r_   rF   s     r    Ú__xor__zCombinable.__xor__o   rc   r'   c                 ó<   — | j                  || j                  d«      S rC   )r;   ÚBITXORrF   s     r    ÚbitxorzCombinable.bitxorv   rg   r'   c                 óz   — t        | dd«      r$t        |dd«      rt        | «      t        |«      z  S t        d«      ‚r\   r_   rF   s     r    Ú__or__zCombinable.__or__y   rc   r'   c                 ó<   — | j                  || j                  d«      S rC   )r;   ÚBITORrF   s     r    ÚbitorzCombinable.bitor€   s   € Ø�}‰}˜U D§J¡J°Ó6Ð6r'   c                 ó<   — | j                  || j                  d«      S ©NTrD   rF   s     r    Ú__radd__zCombinable.__radd__ƒ   ó   € Ø�}‰}˜U D§H¡H¨dÓ3Ð3r'   c                 ó<   — | j                  || j                  d«      S ry   rJ   rF   s     r    Ú__rsub__zCombinable.__rsub__†   r{   r'   c                 ó<   — | j                  || j                  d«      S ry   r>   rF   s     r    Ú__rmul__zCombinable.__rmul__‰   r{   r'   c                 ó<   — | j                  || j                  d«      S ry   rP   rF   s     r    Ú__rtruediv__zCombinable.__rtruediv__Œ   r{   r'   c                 ó<   — | j                  || j                  d«      S ry   rT   rF   s     r    Ú__rmod__zCombinable.__rmod__�   r{   r'   c                 ó<   — | j                  || j                  d«      S ry   rX   rF   s     r    Ú__rpow__zCombinable.__rpow__’   r{   r'   c                 ó   — t        d«      ‚©Nr^   ©ra   rF   s     r    Ú__rand__zCombinable.__rand__•   ó   € Ü!ØTó
ð 	
r'   c                 ó   — t        d«      ‚r‡   rˆ   rF   s     r    Ú__ror__zCombinable.__ror__š   rŠ   r'   c                 ó   — t        d«      ‚r‡   rˆ   rF   s     r    Ú__rxor__zCombinable.__rxor__Ÿ   rŠ   r'   c                 ó   — t        | «      S ©N)ÚNegatedExpressionr@   s    r    Ú
__invert__zCombinable.__invert__¤   s   € Ü  Ó&Ð&r'   N))r"   r#   r$   r%   rE   rK   r?   rQ   rY   rU   re   rv   ri   rl   rq   r;   rA   rG   rL   rN   rR   rV   rZ   rb   rf   rj   rm   ro   rr   rt   rw   rz   r}   r   r�   rƒ   r…   r‰   rŒ   rŽ   r’   r&   r'   r    r)   r)   $   sÆ   „ ñð €CØ
€CØ
€CØ
€CØ
€Cð €Cð
 €FØ€EØ€LØ€MØ€Fò:ò2ò5ò5ò5ò5ò5ò5ò
ò8ò>ò?ò
ò8ò
ò7ò4ò4ò4ò4ò4ò4ò
ò

ò

ó
'r'   r)   c                   óX  — e Zd ZdZeZdZdZdZdZ	dZ
d&d„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	 d'd„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zed„ «       Zed„ «       Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d „ Z)d!„ Z*d"„ Z+d#„ Z,d$„ Z-d%„ Z.y)(ÚBaseExpressionz%Base class for all query expressions.FTNc                 ó   — |�|| _         y y r�   ©r   ©r   r   s     r    Ú__init__zBaseExpression.__init__¶   s   € ØÐ#Ø ,ˆDÕð $r'   c                 ó^   — | j                   j                  «       }|j                  dd «       |S )NÚconvert_value)Ú__dict__ÚcopyÚpop)r   Ústates     r    Ú__getstate__zBaseExpression.__getstate__º   s'   € Ø—‘×"Ñ"Ó$ˆØ�	‰	�/ 4Ô(Øˆr'   c                 óˆ   — | j                   | j                  u rg n| j                   g| j                  j                  |«      z   S r�   )rš   Ú_convert_value_noopr   Úget_db_converters©r   r   s     r    r¢   z BaseExpression.get_db_converters¿   sG   € ð ×!Ñ! T×%=Ñ%=Ñ=ñ à×$Ñ$Ð%Ø×Ñ×/Ñ/°
Ó;ñ	<ð 	<r'   c                 ó   — g S r�   r&   r@   s    r    Úget_source_expressionsz%BaseExpression.get_source_expressionsÆ   ó   € Øˆ	r'   c                 ó   — |rJ ‚y r�   r&   ©r   Úexprss     r    Úset_source_expressionsz%BaseExpression.set_source_expressionsÉ   s
   € ÙÑ�5r'   c                 ó�   — |D �cg c]6  }t        |d«      r|n%t        |t        «      rt        |«      n
t	        |«      ‘Œ8 c}S c c}w r3   )r5   Ú
isinstanceÚstrÚFr6   )r   ÚexpressionsÚargs      r    Ú_parse_expressionsz!BaseExpression._parse_expressionsÌ   sO   € ð
 #ö	
ð ô �sÐ0Ô1ñ ä& s¬CÔ0”!�C”&´e¸C³jñBò
ð 	
ùò 
s   …;Ac                 ó   — t        d«      ‚)aÆ  
        Responsible for returning a (sql, [params]) tuple to be included
        in the current query.

        Different backends can provide their own implementation, by
        providing an `as_{vendor}` method and patching the Expression:

        ```
        def override_as_sql(self, compiler, connection):
            # custom logic
            return super().as_sql(compiler, connection)
        setattr(Expression, 'as_' + connection.vendor, override_as_sql)
        ```

        Arguments:
         * compiler: the query compiler responsible for generating the query.
           Must have a compile method, returning a (sql, [params]) tuple.
           Calling compiler(value) will return a quoted `value`.

         * connection: the database connection used for the current query.

        Return: (sql, params)
          Where `sql` is a string containing ordered sql parameters to be
          replaced with the elements of the list `params`.
        z"Subclasses must implement as_sql()rˆ   ©r   r   r   s      r    r   zBaseExpression.as_sqlÔ   s   € ô4 "Ð"FÓGÐGr'   c                 óB   — t        d„ | j                  «       D «       «      S )Nc              3   ó<   K  — | ]  }|xr |j                   –— Œ y ­wr�   )Úcontains_aggregate©Ú.0Úexprs     r    ú	<genexpr>z4BaseExpression.contains_aggregate.<locals>.<genexpr>ò   s#   è ø€ ò 
Ø15ˆDÒ,�T×,Ñ,Ó,ñ
ùó   ‚©Úanyr¥   r@   s    r    r¶   z!BaseExpression.contains_aggregateð   s%   € äñ 
Ø9=×9TÑ9TÓ9Vô
ó 
ð 	
r'   c                 óB   — t        d„ | j                  «       D «       «      S )Nc              3   ó<   K  — | ]  }|xr |j                   –— Œ y ­wr�   )Úcontains_over_clauser·   s     r    rº   z6BaseExpression.contains_over_clause.<locals>.<genexpr>ø   s#   è ø€ ò 
Ø37ˆDÒ.�T×.Ñ.Ó.ñ
ùr»   r¼   r@   s    r    rÀ   z#BaseExpression.contains_over_clauseö   s%   € äñ 
Ø;?×;VÑ;VÓ;Xô
ó 
ð 	
r'   c                 óB   — t        d„ | j                  «       D «       «      S )Nc              3   ó<   K  — | ]  }|xr |j                   –— Œ y ­wr�   )Úcontains_column_referencesr·   s     r    rº   z<BaseExpression.contains_column_references.<locals>.<genexpr>þ   s&   è ø€ ò 
àð Ò4�T×4Ñ4Ó4ñ
ùr»   r¼   r@   s    r    rÃ   z)BaseExpression.contains_column_referencesü   ó%   € äñ 
à×3Ñ3Ó5ô
ó 
ð 	
r'   c                 óB   — t        d„ | j                  «       D «       «      S )Nc              3   óZ   K  — | ]#  }|xr t        |d d«      xs |j                  –— Œ% y­w)ÚsubqueryFN)r`   Úcontains_subqueryr·   s     r    rº   z3BaseExpression.contains_subquery.<locals>.<genexpr>  s4   è ø€ ò 
àð ÒQ”g˜d J°Ó6ÒP¸$×:PÑ:PÓQñ
ùs   ‚)+r¼   r@   s    r    rÈ   z BaseExpression.contains_subquery  rÄ   r'   c                 óÄ   — | j                  «       }||_        |j                  |j                  «       D �cg c]  }|r|j	                  ||||«      nd‘Œ c}«       |S c c}w )a
  
        Provide the chance to do any preprocessing or validation before being
        added to the query.

        Arguments:
         * query: the backend query implementation
         * allow_joins: boolean allowing or denying use of joins
           in this query
         * reuse: a set of reusable joins for multijoins
         * summarize: a terminal aggregate clause
         * for_save: whether this expression about to be used in a save or update

        Return: an Expression to be added to the query.
        N)rœ   Ú
is_summaryrª   r¥   r4   )r   ÚqueryÚallow_joinsÚreuseÚ	summarizeÚfor_saveÚcr¹   s           r    r4   z!BaseExpression.resolve_expression
  sq   € ð" �I‰I‹KˆØ ˆŒØ	× Ñ ð
 ×4Ñ4Ó6ö	ð ñ ð ×'Ñ'¨¨{¸EÀ9ÔMàñòô	
ð ˆùòs   µAc                 óJ   — t        | j                  t        j                  «      S r�   )r¬   r   r   ÚBooleanFieldr@   s    r    r]   zBaseExpression.conditional'  s   € ä˜$×+Ñ+¬V×-@Ñ-@ÓAÐAr'   c                 ó   — | j                   S r�   r–   r@   s    r    ÚfieldzBaseExpression.field+  s   € à× Ñ Ð r'   c                 óN   — | j                  «       }|€d| _        t        d«      ‚|S )z+Return the output type of this expressions.Tz4Cannot resolve expression type, unknown output_field)Ú_resolve_output_fieldÚ_output_field_resolved_to_noner	   r—   s     r    r   zBaseExpression.output_field/  s2   € ð ×1Ñ1Ó3ˆØÐØ26ˆDÔ/ÜÐSÓTÐTØÐr'   c                 óT   — 	 | j                   S # t        $ r | j                  s‚ Y yw xY w)z†
        Return the output field of this expression, or None if
        _resolve_output_field() didn't return an output type.
        N)r   r	   r×   r@   s    r    Ú_output_field_or_nonez$BaseExpression._output_field_or_none8  s3   € ð	Ø×$Ñ$Ð$øÜò 	Ø×6Ò6Øñ 7ð	ús   ‚ Ž'¦'c           	      óô   — d„ | j                  «       D «       }|D ]\  }|D ]R  }t        ||j                  «      rŒt        d|j                  j                  ›d|j                  j                  ›d�«      ‚ |c S  y)a}  
        Attempt to infer the output type of the expression.

        As a guess, if the output fields of all source fields match then simply
        infer the same type here.

        If a source's output field resolves to None, exclude it from this check.
        If all sources are None, then an error is raised higher up the stack in
        the output_field property.
        c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr�   r&   )r¸   Úsources     r    rº   z7BaseExpression._resolve_output_field.<locals>.<genexpr>R  s   è ø€ ò 
Ø¸VÑ=OŒFñ
ùs   ‚Šz!Expression contains mixed types: ú, ú. You must set output_field.N)Úget_source_fieldsr¬   Ú	__class__r	   r"   )r   Úsources_iterr   rÜ   s       r    rÖ   z$BaseExpression._resolve_output_fieldD  s„   € ñ
Ø!%×!7Ñ!7Ó!9ô
ˆð )ò 	 ˆLØ&ò 	�Ü! ,°×0@Ñ0@ÕAÝ$ð )×2Ñ2×;Ó;Ø"×,Ñ,×5Ó5ð	óð ð	ð  Òñ	 r'   c                 ó   — | S r�   r&   ©ÚvalueÚ
expressionr   s      r    r¡   z"BaseExpression._convert_value_noopb  s   € àˆr'   c                 óš   — | j                   }|j                  «       }|dk(  rd„ S |j                  d«      rd„ S |dk(  rd„ S | j                  S )zÑ
        Expressions provide their own converters because users have the option
        of manually specifying the output_field which may be a different type
        from the one the database returns.
        Ú
FloatFieldc                 ó    — | €d S t        | «      S r�   )Úfloatrã   s      r    ú<lambda>z.BaseExpression.convert_value.<locals>.<lambda>q  s   € Ø�=ð 7;€ ä˜5“\ð r'   ÚIntegerFieldc                 ó    — | €d S t        | «      S r�   )Úintrã   s      r    rê   z.BaseExpression.convert_value.<locals>.<lambda>w  s   € Ø�=ð 7;€ ä˜“Zð r'   r   c                 ó    — | €d S t        | «      S r�   r   rã   s      r    rê   z.BaseExpression.convert_value.<locals>.<lambda>}  s   € Ø�=ð 7;€ ä˜U“^ð r'   )r   r   Úendswithr¡   )r   rÔ   Úinternal_types      r    rš   zBaseExpression.convert_valuef  sk   € ð ×!Ñ!ˆØ×/Ñ/Ó1ˆØ˜LÒ(ñ"ðð
 ×#Ñ# NÔ3ñ ðð
 ˜nÒ,ñ$ðð
 ×'Ñ'Ð'r'   c                 ó8   — | j                   j                  |«      S r�   )r   Ú
get_lookup)r   Úlookups     r    rò   zBaseExpression.get_lookupƒ  s   € Ø× Ñ ×+Ñ+¨FÓ3Ð3r'   c                 ó8   — | j                   j                  |«      S r�   )r   Úget_transform©r   Únames     r    rõ   zBaseExpression.get_transform†  s   € Ø× Ñ ×.Ñ.¨tÓ4Ð4r'   c                 ó°   — | j                  «       }|j                  | j                  «       D �cg c]  }|�|j                  |«      nd ‘Œ c}«       |S c c}w r�   )rœ   rª   r¥   Úrelabeled_clone)r   Ú
change_mapÚcloneÚes       r    rù   zBaseExpression.relabeled_clone‰  s\   € Ø—	‘	“ˆØ×$Ñ$ð ×4Ñ4Ó6öàð 23°�×!Ñ! *Ô-ÀDÑHòô	
ð ˆùòs   ®Ac                 óÞ   — |j                  | «      x}r|S | j                  «       }|j                  «       }|j                  |D �cg c]  }|r|j	                  |«      nd ‘Œ c}«       |S c c}w r�   )Úgetrœ   r¥   rª   Úreplace_expressions)r   ÚreplacementsÚreplacementrû   Úsource_expressionsr¹   s         r    rÿ   z"BaseExpression.replace_expressions“  s|   € Ø&×*Ñ*¨4Ó0Ð0ˆ;Ð0ØÐØ—	‘	“ˆØ"×9Ñ9Ó;ÐØ×$Ñ$ð /öàñ ;?�×(Ñ(¨Ô6ÀDÑHòô	
ð ˆùòs   ÁA*c                 ój   — t        «       }| j                  «       D ]  }||j                  «       z  }Œ |S r�   )Úsetr¥   Úget_refs)r   Úrefsr¹   s      r    r  zBaseExpression.get_refs   s6   € Ü‹uˆØ×/Ñ/Ó1ò 	$ˆDØ�D—M‘M“OÑ#‰Dð	$àˆr'   c                 ó,   — t        j                   | «      S r�   ©rœ   r@   s    r    rœ   zBaseExpression.copy¦  ó   € Ü�y‰y˜‹Ðr'   c           	      óú   — | j                  «       }|j                  | j                  «       D �cg c]<  }t        |t        «      rt	        |› |j
                  › �«      n|j                  |«      ‘Œ> c}«       |S c c}w r�   )rœ   rª   r¥   r¬   r®   r÷   Úprefix_references)r   Úprefixrû   r¹   s       r    r  z BaseExpression.prefix_references©  s{   € Ø—	‘	“ˆØ×$Ñ$ð
 !×7Ñ7Ó9ö	ð ô ˜d¤AÔ&ô �V�H˜TŸY™Y˜KÐ(Ô)à×+Ñ+¨FÓ3ñ4òô	
ð ˆùòs   ®AA8c                 ó�   — | j                   s| gS g }| j                  «       D ]!  }|j                  |j                  «       «       Œ# |S r�   )r¶   r¥   ÚextendÚget_group_by_cols©r   ÚcolsrÜ   s      r    r  z BaseExpression.get_group_by_colsµ  sI   € Ø×&Ò&Ø�6ˆMØˆØ×1Ñ1Ó3ò 	4ˆFØ�K‰K˜×0Ñ0Ó2Õ3ð	4àˆr'   c                 ó\   — | j                  «       D �cg c]  }|j                  ‘Œ c}S c c}w )z9Return the underlying field types used by this aggregate.)r¥   rÙ   )r   rü   s     r    rß   z BaseExpression.get_source_fields½  s%   € à15×1LÑ1LÓ1NÖO¨A�×'Ó'ÒOÐOùÒOs   “)c                 ó   — t        | fi |¤ŽS r�   ©ÚOrderBy©r   Úkwargss     r    ÚasczBaseExpression.ascÁ  ó   € Ü�tÑ&˜vÑ&Ð&r'   c                 ó   — t        | fddi|¤ŽS ©NÚ
descendingTr  r  s     r    ÚdesczBaseExpression.descÄ  ó   € Ü�tÑ7¨Ð7°Ñ7Ð7r'   c                 ó   — | S r�   r&   r@   s    r    Úreverse_orderingzBaseExpression.reverse_orderingÇ  ó   € Øˆr'   c              #   óš   K  — | –— | j                  «       D ].  }|sŒt        |d«      r|j                  «       E d{  –—†  Œ+|–— Œ0 y7 Œ­w)zi
        Recursively yield this expression and all subexpressions, in
        depth-first order.
        ÚflattenN)r¥   r5   r#  )r   r¹   s     r    r#  zBaseExpression.flattenÊ  sK   è ø€ ð
 Š
Ø×/Ñ/Ó1ò 	ˆDÚÜ˜4 Ô+Ø#Ÿ|™|›~×-Ñ-à“Jñ	ð .ús   ‚A�A¼A	½Ac                 óp   — t        | j                  d«      r| j                  j                  |||«      S ||fS )z†
        Custom format for select clauses. For example, EXISTS expressions need
        to be wrapped in CASE WHEN on Oracle.
        Úselect_format)r5   r   r%  ©r   r   r   r   s       r    r%  zBaseExpression.select_format×  s9   € ô
 �4×$Ñ$ oÔ6Ø×$Ñ$×2Ñ2°8¸SÀ&ÓIÐIØ�Fˆ{Ðr'   r�   ©NTNFF)/r"   r#   r$   r%   ÚNotImplementedÚempty_result_set_valuerÊ   r×   Ú
filterableÚwindow_compatibleÚallowed_defaultr˜   rŸ   r¢   r¥   rª   r±   r   r   r¶   rÀ   rÃ   rÈ   r4   Úpropertyr]   rÔ   r   rÙ   rÖ   Ústaticmethodr¡   rš   rò   rõ   rù   rÿ   r  rœ   r  r  rß   r  r  r   r#  r%  r&   r'   r    r”   r”   ¨   sl  „ Ù/à+Ðà€JØ%*Ð"à€JàÐà€Oó-òò
<òòò
òHð8 ñ
ó ð
ð
 ñ
ó ð
ð
 ñ
ó ð
ð ñ
ó ð
ð SXóð: ñBó ðBð ñ!ó ð!ð ñó ðð ñ	ó ð	ò ð< ñó ðð ñ(ó ð(ò84ò5òòòòò
òòPò'ò8òòór'   r”   c                   ó,   — e Zd ZdZed„ «       Zd„ Zd„ Zy)Ú
Expressionz:An expression that can be combined with other expressions.c                 ó,  — t        j                  | j                  «      }| j                  \  }} |j                  |i |¤Ž}|j                  «        |j                  j                  «       }| j                  g}|D ]Ž  \  }}t        |t        j                  «      rQ|j                  r9|j                  r-|j                  j                  j                  |j                  f}nt!        |«      }nt#        |«      }|j%                  ||f«       Œ� t'        |«      S r�   )ÚinspectÚ	signaturer˜   Ú_constructor_argsÚbind_partialÚapply_defaultsÚ	argumentsÚitemsrà   r¬   r   ÚFieldr÷   ÚmodelÚ_metaÚlabelÚtyper   ÚappendÚtuple)	r   Úconstructor_signatureÚargsr  r3  r7  Úidentityr°   rä   s	            r    rB  zExpression.identityå  så   € ä '× 1Ñ 1°$·-±-Ó @ÐØ×-Ñ-‰ˆˆfØ6Ð)×6Ñ6¸ÐGÀÑGˆ	Ø× Ñ Ô"Ø×'Ñ'×-Ñ-Ó/ˆ	Ø—N‘NÐ#ˆØ#ò 	*‰JˆC�Ü˜%¤§¡Ô.Ø—:’: %§+¢+Ø"Ÿ[™[×.Ñ.×4Ñ4°e·j±jÐA‘Eä  ›K‘Eä% eÓ,�Ø�O‰O˜S %˜LÕ)ð	*ô �X‹Ðr'   c                 ó`   — t        |t        «      st        S |j                  | j                  k(  S r�   )r¬   r0  r(  rB  rF   s     r    Ú__eq__zExpression.__eq__ø  s%   € Ü˜%¤Ô,Ü!Ð!Ø�~‰~ §¡Ñ.Ð.r'   c                 ó,   — t        | j                  «      S r�   )ÚhashrB  r@   s    r    Ú__hash__zExpression.__hash__ý  s   € Ü�D—M‘MÓ"Ð"r'   N)r"   r#   r$   r%   r   rB  rD  rG  r&   r'   r    r0  r0  á  s!   „ áDàñó ðò$/ó
#r'   r0  c                 ó:   — t         |   j                  | ||f«       y)zÂ
    Register combinable types:
        lhs <connector> rhs -> result
    e.g.
        register_combinable_fields(
            IntegerField, Combinable.ADD, FloatField, FloatField
        )
    N)Ú_connector_combinatorsr>  )Úlhsr9   ÚrhsÚresults       r    Úregister_combinable_fieldsrM    s   € ô ˜9Ñ%×,Ñ,¨c°3¸Ð-?Õ@r'   é€   )Úmaxsizec                 ó€   — t         j                  | d«      }|D ]#  \  }}}t        ||«      sŒt        ||«      sŒ!|c S  y )Nr&   )rI  rþ   Ú
issubclass)r9   Úlhs_typeÚrhs_typeÚcombinatorsÚcombinator_lhs_typeÚcombinator_rhs_typeÚcombined_types          r    Ú_resolve_combined_typerX  ‘  sL   € ä(×,Ñ,¨Y¸Ó;€KØCNò !Ñ?ÐÐ0°-Ü�hÐ 3Õ4¼ØÐ)õ:
ð !Ò ñ	!r'   c                   ó^   ‡ — e Zd Zd
ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z		 dd„Z
ed	„ «       Zˆ xZS )r7   c                 óP   •— t         ‰| �  |¬«       || _        || _        || _        y ©Nr–   )Úsuperr˜   r9   rJ  rK  )r   rJ  r9   rK  r   rà   s        €r    r˜   zCombinedExpression.__init__œ  s(   ø€ Ü‰Ñ lÐÔ3Ø"ˆŒØˆŒØˆ�r'   c                 óN   — dj                  | j                  j                  | «      S )Nz<{}: {}>)Úformatrà   r"   r@   s    r    Ú__repr__zCombinedExpression.__repr__¢  s   € Ø× Ñ  §¡×!8Ñ!8¸$Ó?Ð?r'   c                 ód   — dj                  | j                  | j                  | j                  «      S )Nz{} {} {})r^  rJ  r9   rK  r@   s    r    Ú__str__zCombinedExpression.__str__¥  s#   € Ø× Ñ  §¡¨4¯>©>¸4¿8¹8ÓDÐDr'   c                 ó2   — | j                   | j                  gS r�   ©rJ  rK  r@   s    r    r¥   z)CombinedExpression.get_source_expressions¨  s   € Ø—‘˜$Ÿ(™(Ð#Ð#r'   c                 ó"   — |\  | _         | _        y r�   rc  r¨   s     r    rª   z)CombinedExpression.set_source_expressions«  s   € Ø"ÑˆŒ�$•(r'   c           	      ó”  — t        | j                  t        | j                  j                  «      t        | j
                  j                  «      «      }|€ot        d| j                  ›d| j                  j                  j                  j                  › d| j
                  j                  j                  j                  › d�«      ‚ |«       S )NzCannot infer type of z# expression involving these types: rÝ   rÞ   )
rX  r9   r=  rJ  rÙ   rK  r	   r   rà   r"   )r   rW  s     r    rÖ   z(CombinedExpression._resolve_output_field®  s­   € ô /Ø�N‰NÜ�—‘×/Ñ/Ó0Ü�—‘×/Ñ/Ó0ó
ˆð
 Ð ÜØ'¨¯©Ð'9ð :ØŸ(™(×/Ñ/×9Ñ9×BÑBÐCÀ2Ø—8‘8×(Ñ(×2Ñ2×;Ñ;Ð<ð = ð!óð ñ ‹Ðr'   c                 óh  — g }g }|j                  | j                  «      \  }}|j                  |«       |j                  |«       |j                  | j                  «      \  }}|j                  |«       |j                  |«       d}|j
                  j                  | j                  |«      }||z  |fS ©Nz(%s))ÚcompilerJ  r>  r  rK  ÚopsÚcombine_expressionr9   )r   r   r   r¯   Úexpression_paramsr   r   Úexpression_wrappers           r    r   zCombinedExpression.as_sql¿  s¦   € ØˆØÐØ×&Ñ& t§x¡xÓ0‰ˆˆVØ×Ñ˜3ÔØ× Ñ  Ô(Ø×&Ñ& t§x¡xÓ0‰ˆˆVØ×Ñ˜3ÔØ× Ñ  Ô(à#ÐØ�n‰n×/Ñ/°·±ÀÓLˆØ! CÑ'Ð):Ð:Ð:r'   c                 ó  — | j                   j                  |||||«      }| j                  j                  |||||«      }t        | t        t
        f«      sØ	 |j                  j                  «       }	 |j                  j                  «       }	d||	hv rC||	k7  r>t	        | j                   | j                  | j                  «      j                  |||||«      S h d£}
| j                  | j                  k(  r<||
v r8||	k(  r3t        | j                   | j                  «      j                  |||||«      S | j                  «       }||_        ||_         ||_        |S # t        t        f$ r d }Y Œ÷w xY w# t        t        f$ r d }	Y Œów xY w)NÚDurationField>   Ú	DateFieldÚ	TimeFieldÚDateTimeField)rJ  r4   rK  r¬   ÚDurationExpressionÚTemporalSubtractionr   r   ÚAttributeErrorr	   r9   rK   rœ   rÊ   )r   rË   rÌ   rÍ   rÎ   rÏ   rJ  rK  rR  rS  Údatetime_fieldsrÐ   s               r    r4   z%CombinedExpression.resolve_expressionÍ  s�  € ð �h‰h×)Ñ)Ø�;  y°(ó
ˆð �h‰h×)Ñ)Ø�;  y°(ó
ˆô ˜$Ô!3Ô5HÐ IÔJð Ø×+Ñ+×=Ñ=Ó?�ð Ø×+Ñ+×=Ñ=Ó?�ð  8¨XÐ"6Ñ6¸8ÀxÒ;OÜ)Ø—H‘H˜dŸn™n¨d¯h©hóç$Ñ$ØØØØØóðò JˆOà—‘ $§(¡(Ò*Ø Ñ/Ø Ò(ä*¨4¯8©8°T·X±XÓ>×QÑQØØØØØóð ð �I‰I‹KˆØ ˆŒØˆŒØˆŒØˆøôC #¤JÐ/ò  Ø’ð ûô #¤JÐ/ò  Ø’ð ús$   ÁE Á1E+ ÅE(Å'E(Å+E?Å>E?c                 ó^   — | j                   j                  xr | j                  j                  S r�   )rJ  r,  rK  r@   s    r    r,  z"CombinedExpression.allowed_defaultü  s!   € à�x‰x×'Ñ'ÒD¨D¯H©H×,DÑ,DÐDr'   r�   r'  )r"   r#   r$   r˜   r_  ra  r¥   rª   rÖ   r   r4   r   r,  Ú__classcell__©rà   s   @r    r7   r7   ›  sK   ø„ õò@òEò$ò#òò";ð SXó-ð^ ñEó ôEr'   r7   c                   ó*   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zˆ xZS )rr  c                 óä   — 	 |j                   }|j                  «       dk(  r1|j                  |«      \  }}|j                  j	                  |«      |fS |j                  |«      S # t
        $ r Y Œw xY w)Nrn  )r   r   rh  ri  Úformat_for_duration_arithmeticr	   )r   Úsider   r   Úoutputr   r   s          r    rh  zDurationExpression.compile  sy   € ð	RØ×&Ñ&ˆFð ×'Ñ'Ó)¨_Ò<Ø&×.Ñ.¨tÓ4‘��VØ!—~‘~×DÑDÀSÓIÈ6ÐQÐQØ×Ñ Ó%Ð%øô ò 	Ùð	ús   ‚A# Á#	A/Á.A/c                 óô  •— |j                   j                  rt        ‰| �  ||«      S |j                  j                  | «       g }g }| j                  | j                  ||«      \  }}|j                  |«       |j                  |«       | j                  | j                  ||«      \  }}|j                  |«       |j                  |«       d}|j                  j                  | j                  |«      }||z  |fS rg  )ÚfeaturesÚhas_native_duration_fieldr\  r   ri  Úcheck_expression_supportrh  rJ  r>  r  rK  Úcombine_duration_expressionr9   )	r   r   r   r¯   rk  r   r   rl  rà   s	           €r    r   zDurationExpression.as_sql  sÝ   ø€ Ø×Ñ×8Ò8Ü‘7‘> (¨JÓ7Ð7Ø�‰×/Ñ/°Ô5ØˆØÐØ—l‘l 4§8¡8¨X°zÓB‰ˆˆVØ×Ñ˜3ÔØ× Ñ  Ô(Ø—l‘l 4§8¡8¨X°zÓB‰ˆˆVØ×Ñ˜3ÔØ× Ñ  Ô(à#ÐØ�n‰n×8Ñ8¸¿¹ÈÓUˆØ! CÑ'Ð):Ð:Ð:r'   c                 ó¤  —  | j                   ||fi |¤Ž\  }}| j                  t        j                  t        j                  hv rr	 | j
                  j                  j                  «       }| j                  j                  j                  «       }h d£}||vs||vrt        d| j                  › d�«      ‚||fS ||fS # t        t        f$ r Y ||fS w xY w)N>   rç   r   rë   rn  zInvalid arguments for operator ú.)r   r9   r)   r?   rQ   rJ  r   r   rK  r   rt  r	   )	r   r   r   r   r   r   rR  rS  Úallowed_fieldss	            r    r!   zDurationExpression.as_sqlite  sÛ   € Ø!�d—k‘k (¨JÑH¸-ÑH‰ˆˆVØ�>‰>œjŸn™n¬j¯n©nÐ=Ñ=ðØŸ8™8×0Ñ0×BÑBÓD�ØŸ8™8×0Ñ0×BÑBÓD�ò"�ð  >Ñ1°XÀ^Ñ5SÜ'Ø9¸$¿.¹.Ð9IÈÐKóð ð �Fˆ{Ðˆs�Fˆ{Ðøô #¤JÐ/ò Øð �Fˆ{Ððús   ÁAB: Â:CÃC)r"   r#   r$   rh  r   r!   rw  rx  s   @r    rr  rr    s   ø„ ò	&ô;ö"r'   rr  c                   óF   ‡ — e Zd Z ej                  «       Zˆ fd„Zd„ Zˆ xZS )rs  c                 ó<   •— t         ‰| �  || j                  |«       y r�   )r\  r˜   rK   )r   rJ  rK  rà   s      €r    r˜   zTemporalSubtraction.__init__7  s   ø€ Ü‰Ñ˜˜dŸh™h¨Õ,r'   c                 ó"  — |j                   j                  | «       |j                  | j                  «      }|j                  | j                  «      }|j                   j                  | j                  j                  j                  «       ||«      S r�   )ri  r�  rh  rJ  rK  Úsubtract_temporalsr   r   )r   r   r   rJ  rK  s        r    r   zTemporalSubtraction.as_sql:  sm   € Ø�‰×/Ñ/°Ô5Ø×Ñ˜tŸx™xÓ(ˆØ×Ñ˜tŸx™xÓ(ˆØ�~‰~×0Ñ0Ø�H‰H×!Ñ!×3Ñ3Ó5°s¸Có
ð 	
r'   )	r"   r#   r$   r   rn  r   r˜   r   rw  rx  s   @r    rs  rs  4  s   ø„ Ø'�6×'Ñ'Ó)€Lô-ö
r'   rs  zdjango.db.models.F)Úpathc                   óN   — e Zd ZdZdZd„ Zd„ Z	 dd„Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zy)r®   zDAn object capable of resolving references to existing query objects.Fc                 ó   — || _         y)z^
        Arguments:
         * name: the name of the field this expression references
        N)r÷   rö   s     r    r˜   z
F.__init__I  s   € ð
 ˆ�	r'   c                 ób   — dj                  | j                  j                  | j                  «      S ©Nú{}({}))r^  rà   r"   r÷   r@   s    r    r_  z
F.__repr__P  s!   € Ø�‰˜tŸ~™~×6Ñ6¸¿	¹	ÓBÐBr'   Nc                 ó>   — |j                  | j                  |||«      S r�   )Úresolve_refr÷   ©r   rË   rÌ   rÍ   rÎ   rÏ   s         r    r4   zF.resolve_expressionS  s   € ð × Ñ  §¡¨K¸À	ÓJÐJr'   c                 ó&   — |j                  | | «      S r�   )rþ   )r   r   s     r    rÿ   zF.replace_expressionsX  s   € Ø×Ñ  dÓ+Ð+r'   c                 ó   — t        | fi |¤ŽS r�   r  r  s     r    r  zF.asc[  r  r'   c                 ó   — t        | fddi|¤ŽS r  r  r  s     r    r  zF.desc^  r  r'   c                 ój   — | j                   |j                   k(  xr | j                  |j                  k(  S r�   )rà   r÷   rF   s     r    rD  zF.__eq__a  s'   € Ø�~‰~ §¡Ñ0ÒL°T·Y±YÀ%Ç*Á*Ñ5LÐLr'   c                 ó,   — t        | j                  «      S r�   )rF  r÷   r@   s    r    rG  z
F.__hash__d  s   € Ü�D—I‘I‹Ðr'   c                 ó,   — t        j                   | «      S r�   r  r@   s    r    rœ   zF.copyg  r	  r'   r'  )r"   r#   r$   r%   r,  r˜   r_  r4   rÿ   r  r  rD  rG  rœ   r&   r'   r    r®   r®   C  sA   „ áNà€OòòCð SXóKò
,ò'ò8òMòór'   r®   c                   ó<   ‡ — e Zd ZdZdZdZd„ Zˆ fd„Zd„ Zd„ Z	ˆ xZ
S )ÚResolvedOuterRefz¿
    An object that contains a reference to an outer query.

    In this case, the reference to the outer query has been resolved because
    the inner query has been used as a subquery.
    Fc                 ó   — t        d«      ‚)NzXThis queryset contains a reference to an outer query and may only be used in a subquery.)Ú
ValueError©r   rA  r  s      r    r   zResolvedOuterRef.as_sqlv  s   € Üð*ó
ð 	
r'   c                 óž   •— t        ‰| �  |i |¤Ž}|j                  rt        d| j                  › d�«      ‚t
        | j                  v |_        |S )Nz<Referencing outer query window expression is not supported: r„  )r\  r4   rÀ   r   r÷   r   Úpossibly_multivalued)r   rA  r  Úcolrà   s       €r    r4   z#ResolvedOuterRef.resolve_expression|  sX   ø€ Ü‰gÑ(¨$Ð9°&Ñ9ˆØ×#Ò#Ü#ØNØ—9‘9�+˜Qð óð ô $.°·±Ð#:ˆÔ Øˆ
r'   c                 ó   — | S r�   r&   ©r   Úrelabelss     r    rù   z ResolvedOuterRef.relabeled_clone‰  r!  r'   c                 ó   — g S r�   r&   r@   s    r    r  z"ResolvedOuterRef.get_group_by_colsŒ  r¦   r'   )r"   r#   r$   r%   r¶   rÀ   r   r4   rù   r  rw  rx  s   @r    rš  rš  k  s*   ø„ ñð ÐØ Ðò
ôòör'   rš  c                   ó    — e Zd ZdZdZd„ Zd„ Zy)ÚOuterRefFc                 ó„   — t        | j                  | j                  «      r| j                  S t        | j                  «      S r�   )r¬   r÷   rà   rš  r�  s      r    r4   zOuterRef.resolve_expression”  s-   € Ü�d—i‘i §¡Ô0Ø—9‘9ÐÜ §	¡	Ó*Ð*r'   c                 ó   — | S r�   r&   r¢  s     r    rù   zOuterRef.relabeled_clone™  r!  r'   N)r"   r#   r$   r¶   rÀ   r4   rù   r&   r'   r    r¦  r¦  �  s   „ ØÐØ Ðò+ó
r'   r¦  zdjango.db.models.Funcc                   ó‚   ‡ — e Zd ZdZdZdZdZdZddœˆ fd„
Zd„ Z	d„ Z
d	„ Zd
„ Z	 dd„Z	 	 	 dd„Zˆ fd„Zed„ «       Zˆ xZS )ÚFunczAn SQL function call.Nz%(function)s(%(expressions)s)rÝ   r–   c                óD  •— | j                   �ht        |«      | j                   k7  rPt        d| j                  j                  ›d| j                   ›d| j                   dk(  rdnd›dt        |«      ›d�	«      ‚t
        ‰| �  |¬	«        | j                  |Ž | _        || _	        y )
Nú'z' takes exactly ú é   Úargumentr7  z (z given)r–   )
ÚarityÚlenÚ	TypeErrorrà   r"   r\  r˜   r±   r  Úextra)r   r   r¯   r³  rà   s       €r    r˜   zFunc.__init__¦  s�   ø€ Ø�:‰:Ð!¤c¨+Ó&6¸$¿*¹*Ò&DÝð —N‘N×+Ó+Ø—J“JØ"&§*¡*°¢/‘J°{ÑBÜ˜Õ$ðóð ô 	‰Ñ lÐÔ3Ø"9 $×"9Ñ"9¸;Ð"GˆÔØˆ�
r'   c                 ó’  — | j                   j                  d„ | j                  D «       «      }i | j                  ¥| j	                  «       ¥}|rVdj                  d„ t        |j                  «       «      D «       «      }dj                  | j                  j                  ||«      S dj                  | j                  j                  |«      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr�   ©r­   ©r¸   r°   s     r    rº   z Func.__repr__.<locals>.<genexpr>¶  ó   è ø€ Ò#P°¤C¨§HÑ#Pùó   ‚rÝ   c              3   óV   K  — | ]!  \  }}t        |«      d z   t        |«      z   –— Œ# y­w)ú=Nr¶  )r¸   ÚkeyÚvals      r    rº   z Func.__repr__.<locals>.<genexpr>¹  s*   è ø€ ò Ù.6¨c°3”�C“˜3‘¤ S£Õ)ñùs   ‚')ú
{}({}, {})r�  )
Ú
arg_joinerÚjoinr  r³  Ú_get_repr_optionsÚsortedr8  r^  rà   r"   )r   rA  r³  s      r    r_  zFunc.__repr__µ  s£   € Ø�‰×#Ñ#Ñ#P¸×8OÑ8OÔ#PÓPˆØ:�4—:‘:Ð: ×!7Ñ!7Ó!9Ð:ˆÙØ—I‘Iñ Ü:@ÀÇÁÃÓ:Oôó ˆEð  ×&Ñ& t§~¡~×'>Ñ'>ÀÀeÓLÐLØ�‰˜tŸ~™~×6Ñ6¸Ó=Ð=r'   c                 ó   — i S )zAReturn a dict of extra __init__() options to include in the repr.r&   r@   s    r    rÁ  zFunc._get_repr_options¿  s   € àˆ	r'   c                 ó   — | j                   S r�   ©r  r@   s    r    r¥   zFunc.get_source_expressionsÃ  s   € Ø×&Ñ&Ð&r'   c                 ó   — || _         y r�   rÅ  r¨   s     r    rª   zFunc.set_source_expressionsÆ  s
   € Ø"'ˆÕr'   c                 ó²   — | j                  «       }||_        t        |j                  «      D ]'  \  }}|j	                  |||||«      |j                  |<   Œ) |S r�   )rœ   rÊ   Ú	enumerater  r4   )	r   rË   rÌ   rÍ   rÎ   rÏ   rÐ   Úposr°   s	            r    r4   zFunc.resolve_expressionÉ  sa   € ð �I‰I‹KˆØ ˆŒÜ! !×"6Ñ"6Ó7ò 	‰HˆC�Ø(+×(>Ñ(>Ø�{ E¨9°hó)ˆA× Ñ  Ò%ð	ð ˆr'   c                 óÔ  — |j                   j                  | «       g }g }| j                  D ]9  }		 |j                  |	«      \  }
}|j                  |
«       |j                  |«       Œ; i | j                  ¥|¥}|�||d<   n|j                  d| j                  «       |xs |j                  d| j                  «      }|xs |j                  d| j                   «      }|j#                  |«      x|d<   |d<   ||z  |fS # t        $ r: t        |	dt        «      }|t        u r‚ |j                  t        |«      «      \  }
}Y Œút        $ r! |j                  t        d«      «      \  }
}Y �Œ"w xY w)Nr)  TÚfunctionÚtemplater¿  r¯   rÔ   )ri  r�  r  rh  r   r`   r(  r6   r
   r>  r  r³  Ú
setdefaultrË  rþ   rÌ  r¿  rÀ  )r   r   r   rË  rÌ  r¿  r   Ú	sql_partsr   r°   Úarg_sqlÚ
arg_paramsr)  Údatas                 r    r   zFunc.as_sqlÔ  sr  € ð 	�‰×/Ñ/°Ô5Øˆ	ØˆØ×*Ñ*ò 	&ˆCð
DØ&.×&6Ñ&6°sÓ&;Ñ#�˜ð ×Ñ˜WÔ%Ø�M‰M˜*Õ%ð	&ð /�$—*‘*Ð. Ð.ˆð ÐØ'ˆD�Òà�O‰O˜J¨¯©Ô6ØÒB˜tŸx™x¨
°D·M±MÓBˆØÒJ 4§8¡8¨L¸$¿/¹/Ó#Jˆ
Ø.8¯o©o¸iÓ.HÐHˆˆ]Ñ˜d 7™mØ˜$‰ Ð&Ð&øô- "ò VÜ)0ØÐ1´>ó*Ð&ð *¬^Ñ;ØØ&.×&6Ñ&6´uÐ=SÓ7TÓ&UÑ#�šÜ ò DØ&.×&6Ñ&6´u¸T³{Ó&CÑ#�›ðDús   °C<Ã<A E'Ä>%E'Å&E'c                 óŠ   •— t         ‰| �  «       }| j                  d d  |_        | j                  j                  «       |_        |S r�   )r\  rœ   r  r³  )r   rœ   rà   s     €r    rœ   z	Func.copyû  s8   ø€ Ü‰w‰|‹~ˆØ"&×"9Ñ"9¹!Ð"<ˆÔØ—Z‘Z—_‘_Ó&ˆŒ
Øˆr'   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr�   ©r,  )r¸   rå   s     r    rº   z'Func.allowed_default.<locals>.<genexpr>  s   è ø€ ÒX°*�:×-Õ-ÑXùó   ‚)Úallr  r@   s    r    r,  zFunc.allowed_default  s   € äÑXÀ×@WÑ@WÔXÓXÐXr'   r'  )NNN)r"   r#   r$   r%   rË  rÌ  r¿  r°  r˜   r_  rÁ  r¥   rª   r4   r   rœ   r   r,  rw  rx  s   @r    rª  rª  �  sn   ø„ áà€HØ.€HØ€JØ€Eà26ö ò>òò'ò(ð SXó	ð ØØó%'ôNð ñYó ôYr'   rª  zdjango.db.models.Valuec                   ób   ‡ — e Zd ZdZdZdZdˆ fd„	Zd„ Zd„ Z	 dˆ fd„	Z	d„ Z
d	„ Zed
„ «       Zˆ xZS )r6   z9Represent a wrapped value as a node within an expression.FTc                 ó4   •— t         ‰| �  |¬«       || _        y)a:  
        Arguments:
         * value: the value this expression represents. The value will be
           added into the sql parameter list and properly quoted.

         * output_field: an instance of the model field type that this
           expression will return, such as IntegerField() or CharField().
        r–   N)r\  r˜   rä   )r   rä   r   rà   s      €r    r˜   zValue.__init__  s   ø€ ô 	‰Ñ lÐÔ3Øˆ�
r'   c                 óN   — | j                   j                  › d| j                  ›d�S )Nú(ú))rà   r"   rä   r@   s    r    r_  zValue.__repr__  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯J©J¨>¸Ð;Ð;r'   c                 ó,  — |j                   j                  | «       | j                  }| j                  }|�U| j                  r|j                  ||¬«      }n|j                  ||¬«      }t        |d«      r|j                  |||«      |gfS |€dg fS d|gfS )N)r   Úget_placeholderÚNULLz%s)	ri  r�  rä   rÙ   rÏ   Úget_db_prep_saveÚget_db_prep_valuer5   rÞ  )r   r   r   r½  r   s        r    r   zValue.as_sql  s¥   € Ø�‰×/Ñ/°Ô5Ø�j‰jˆØ×1Ñ1ˆØÐ#Ø�}Š}Ø"×3Ñ3°CÀJÐ3ÓO‘à"×4Ñ4°SÀZÐ4ÓP�Ü�|Ð%6Ô7Ø#×3Ñ3°C¸À:ÓNÐQTÐPUÐUÐUØˆ;ð ˜2�:ÐØ�c�Uˆ{Ðr'   c                 ó<   •— t         ‰| �  |||||«      }||_        |S r�   )r\  r4   rÏ   )r   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rà   s          €r    r4   zValue.resolve_expression0  s(   ø€ ô ‰GÑ& u¨k¸5À)ÈXÓVˆØˆŒ
Øˆr'   c                 ó   — g S r�   r&   r@   s    r    r  zValue.get_group_by_cols7  r¦   r'   c                 óH  — t        | j                  t        «      rt        j                  «       S t        | j                  t
        «      rt        j                  «       S t        | j                  t        «      rt        j                  «       S t        | j                  t        «      rt        j                  «       S t        | j                  t        j                  «      rt        j                  «       S t        | j                  t        j                  «      rt        j                  «       S t        | j                  t        j                  «      rt        j                   «       S t        | j                  t        j"                  «      rt        j$                  «       S t        | j                  t&        «      rt        j(                  «       S t        | j                  t*        «      rt        j,                  «       S t        | j                  t.        «      rt        j0                  «       S y r�   )r¬   rä   r­   r   Ú	CharFieldÚboolrÒ   rí   rë   ré   rç   Údatetimerq  Údatero  Útimerp  Ú	timedeltarn  r   r   ÚbytesÚBinaryFieldr   Ú	UUIDFieldr@   s    r    rÖ   zValue._resolve_output_field:  sZ  € Ü�d—j‘j¤#Ô&Ü×#Ñ#Ó%Ð%Ü�d—j‘j¤$Ô'Ü×&Ñ&Ó(Ð(Ü�d—j‘j¤#Ô&Ü×&Ñ&Ó(Ð(Ü�d—j‘j¤%Ô(Ü×$Ñ$Ó&Ð&Ü�d—j‘j¤(×"3Ñ"3Ô4Ü×'Ñ'Ó)Ð)Ü�d—j‘j¤(§-¡-Ô0Ü×#Ñ#Ó%Ð%Ü�d—j‘j¤(§-¡-Ô0Ü×#Ñ#Ó%Ð%Ü�d—j‘j¤(×"4Ñ"4Ô5Ü×'Ñ'Ó)Ð)Ü�d—j‘j¤'Ô*Ü×&Ñ&Ó(Ð(Ü�d—j‘j¤%Ô(Ü×%Ñ%Ó'Ð'Ü�d—j‘j¤$Ô'Ü×#Ñ#Ó%Ð%ð (r'   c                 ó   — | j                   S r�   )rä   r@   s    r    r)  zValue.empty_result_set_valueR  s   € à�z‰zÐr'   r�   r'  )r"   r#   r$   r%   rÏ   r,  r˜   r_  r   r4   r  rÖ   r-  r)  rw  rx  s   @r    r6   r6     sK   ø„ áCð €HØ€Oõ
ò<òð& SXõòò&ð0 ñó ôr'   r6   c                   óD   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Z	 dˆ fd„	Zˆ xZ	S )	ÚRawSQLTc                 óp   •— |€t        j                  «       }||c| _        | _        t        ‰| �  |¬«       y r[  )r   r9  r   r   r\  r˜   )r   r   r   r   rà   s       €r    r˜   zRawSQL.__init__Z  s4   ø€ ØÐÜ!Ÿ<™<›>ˆLØ # VÐˆŒ�$”+Ü‰Ñ lÐÕ3r'   c                 óx   — dj                  | j                  j                  | j                  | j                  «      S ©Nr¾  )r^  rà   r"   r   r   r@   s    r    r_  zRawSQL.__repr__`  s)   € Ø×"Ñ" 4§>¡>×#:Ñ#:¸D¿H¹HÀdÇkÁkÓRÐRr'   c                 ó8   — d| j                   z  | j                  fS rg  )r   r   r³   s      r    r   zRawSQL.as_sqlc  s   € Ø˜Ÿ™Ñ  $§+¡+Ð-Ð-r'   c                 ó   — | gS r�   r&   r@   s    r    r  zRawSQL.get_group_by_colsf  ó	   € Øˆvˆr'   c                 ó„  •— |j                   r¡|j                   j                  j                  «       D ]z  }|j                  j                  D ]_  }|j	                  «       \  }}	|	j                  «       | j                  j                  «       v sŒA|j                  |j                  |||«        Œz Œ| t        ‰
| �)  |||||«      S r�   )r:  r;  Úget_parent_listÚlocal_fieldsÚget_attname_columnÚlowerr   r‘  r÷   r\  r4   )r   rË   rÌ   rÍ   rÎ   rÏ   ÚparentÚparent_fieldÚ_Úcolumn_namerà   s             €r    r4   zRawSQL.resolve_expressioni  s¶   ø€ ð �;Š;ØŸ+™+×+Ñ+×;Ñ;Ó=ò �Ø$*§L¡L×$=Ñ$=ò �LØ%1×%DÑ%DÓ%F‘N�A�{Ø"×(Ñ(Ó*¨d¯h©h¯n©nÓ.>Ò>Ø×)Ñ)Ø(×-Ñ-¨{¸EÀ9ôñ ñðô ‰wÑ)Ø�;  y°(ó
ð 	
r'   r�   r'  )
r"   r#   r$   r,  r˜   r_  r   r  r4   rw  rx  s   @r    rð  rð  W  s.   ø„ Ø€Oõ4òSò.òð SX÷
ñ 
r'   rð  c                   ó   — e Zd Zd„ Zd„ Zy)ÚStarc                  ó   — y)Nz'*'r&   r@   s    r    r_  zStar.__repr__|  s   € Ør'   c                 ó
   — dg fS )Nr,   r&   r³   s      r    r   zStar.as_sql  s   € Ø�Bˆwˆr'   N)r"   r#   r$   r_  r   r&   r'   r    r  r  {  s   „ òór'   r  c                   ó   — e Zd ZdZd„ Zy)ÚDatabaseDefaultzCPlaceholder expression for the database default in an insert query.c                 ó
   — dg fS )NÚDEFAULTr&   r³   s      r    r   zDatabaseDefault.as_sql†  s   € Ø˜"ˆ}Ðr'   N)r"   r#   r$   r%   r   r&   r'   r    r  r  ƒ  s
   „ ÙMór'   r  c                   óF   ‡ — e Zd ZdZdZd	ˆ fd„	Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )
ÚColTFc                 óL   •— |€|}t         ‰| �  |¬«       ||c| _        | _        y r[  )r\  r˜   ÚaliasÚtarget)r   r  r  r   rà   s       €r    r˜   zCol.__init__Ž  s.   ø€ ØÐØ!ˆLÜ‰Ñ lÐÔ3Ø"'¨ÐˆŒ
�D•Kr'   c                 óÒ   — | j                   | j                  }}|r|t        |«      fnt        |«      f}dj                  | j                  j
                  dj                  |«      «      S )Nr�  rÝ   )r  r  r­   r^  rà   r"   rÀ  )r   r  r  Úidentifierss       r    r_  zCol.__repr__”  sO   € ØŸ
™
 D§K¡KˆvˆÙ.3�uœc &›kÑ*¼#¸f»+¸ˆØ�‰˜tŸ~™~×6Ñ6¸¿	¹	À+Ó8NÓOÐOr'   c                 óª   — | j                   | j                  j                  }}|r||fn|f}dj                  t	        |j
                  |«      «      }|g fS )Nr„  )r  r  ÚcolumnrÀ  ÚmapÚquote_name_unless_alias)r   r   r   r  r  r  r   s          r    r   z
Col.as_sql™  sL   € ØŸ
™
 D§K¡K×$6Ñ$6ˆvˆÙ).�u˜f‘o°V°IˆØ�h‰h”s˜8×;Ñ;¸[ÓIÓJˆØ�Bˆwˆr'   c                 ó´   — | j                   €| S | j                  |j                  | j                   | j                   «      | j                  | j                  «      S r�   )r  rà   rþ   r  r   r¢  s     r    rù   zCol.relabeled_cloneŸ  sF   € Ø�:‰:ÐØˆKØ�~‰~Ø�L‰L˜Ÿ™ T§Z¡ZÓ0°$·+±+¸t×?PÑ?Pó
ð 	
r'   c                 ó   — | gS r�   r&   r@   s    r    r  zCol.get_group_by_cols¦  rö  r'   c                 óØ   — | j                   | j                  k(  r| j                  j                  |«      S | j                  j                  |«      | j                   j                  |«      z   S r�   )r  r   r¢   r£   s     r    r¢   zCol.get_db_converters©  s^   € Ø�;‰;˜$×+Ñ+Ò+Ø×$Ñ$×6Ñ6°zÓBÐBØ× Ñ ×2Ñ2Øó
à�K‰K×)Ñ)¨*Ó5ñ6ð 	6r'   r�   )r"   r#   r$   rÃ   rŸ  r˜   r_  r   rù   r  r¢   rw  rx  s   @r    r	  r	  Š  s.   ø„ Ø!%ÐØ Ðõ0òPò
ò
òö6r'   r	  c                   óV   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Z	 dd„Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )ÚRefz~
    Reference to column alias of the query. For example, Ref('sum_cost') in
    qs.annotate(sum_cost=Sum('cost')) query.
    c                 ó@   •— t         ‰| �  «        ||c| _        | _        y r�   )r\  r˜   r  rÜ   )r   r  rÜ   rà   s      €r    r˜   zRef.__init__·  s   ø€ Ü‰ÑÔØ!% vÐˆŒ	�4•;r'   c                 óx   — dj                  | j                  j                  | j                  | j                  «      S ró  )r^  rà   r"   r  rÜ   r@   s    r    r_  zRef.__repr__»  s)   € Ø×"Ñ" 4§>¡>×#:Ñ#:¸D¿I¹IÀtÇ{Á{ÓSÐSr'   c                 ó   — | j                   gS r�   ©rÜ   r@   s    r    r¥   zRef.get_source_expressions¾  s   € Ø—‘ˆ}Ðr'   c                 ó   — |\  | _         y r�   r  r¨   s     r    rª   zRef.set_source_expressionsÁ  s   € Ø‰ˆ�r'   c                 ó   — | S r�   r&   r’  s         r    r4   zRef.resolve_expressionÄ  s	   € ð
 ˆr'   c                 ó   — | j                   hS r�   )r  r@   s    r    r  zRef.get_refsË  s   € Ø—	‘	ˆ{Ðr'   c                 óf   — | j                  «       }| j                  j                  |«      |_        |S r�   )rœ   rÜ   rù   )r   r£  rû   s      r    rù   zRef.relabeled_cloneÎ  s(   € Ø—	‘	“ˆØ—{‘{×2Ñ2°8Ó<ˆŒØˆr'   c                 óP   — |j                   j                  | j                  «      g fS r�   )ri  Ú
quote_namer  r³   s      r    r   z
Ref.as_sqlÓ  s    € Ø�~‰~×(Ñ(¨¯©Ó3°RÐ7Ð7r'   c                 ó   — | gS r�   r&   r@   s    r    r  zRef.get_group_by_colsÖ  rö  r'   r'  )r"   r#   r$   r%   r˜   r_  r¥   rª   r4   r  rù   r   r  rw  rx  s   @r    r  r  ±  s=   ø„ ñô
.òTòòð SXóòòò
8ör'   r  c                   ó8   ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zd„ Zˆ xZ	S )ÚExpressionListz¬
    An expression containing multiple expressions. Can be used to provide a
    list of expressions as an argument to another expression, like a partition
    clause.
    z%(expressions)sc                 ól   •— |s"t        d| j                  j                  z  «      ‚t        ‰| �  |i |¤Ž y )Nz$%s requires at least one expression.)rœ  rà   r"   r\  r˜   ©r   r¯   r³  rà   s      €r    r˜   zExpressionList.__init__ã  s9   ø€ ÙÜØ6¸¿¹×9PÑ9PÑPóð ô 	‰Ñ˜+Ð/¨Ó/r'   c                 óZ   — | j                   j                  d„ | j                  D «       «      S )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr�   r¶  r·  s     r    rº   z)ExpressionList.__str__.<locals>.<genexpr>ë  r¸  r¹  )r¿  rÀ  r  r@   s    r    ra  zExpressionList.__str__ê  s#   € Ø�‰×#Ñ#Ñ#P¸×8OÑ8OÔ#PÓPÐPr'   c                 ó*   —  | j                   ||fi |¤ŽS r�   )r   )r   r   r   r   s       r    r!   zExpressionList.as_sqliteí  s   € àˆt�{‰{˜8 ZÑA°=ÑAÐAr'   c                 ór   — g }| j                  «       D ]!  }|j                  |j                  «       «       Œ# |S r�   ©r¥   r  r  )r   Úgroup_by_colsÚ	partitions      r    r  z ExpressionList.get_group_by_colsñ  s>   € ØˆØ×4Ñ4Ó6ò 	@ˆIØ× Ñ  ×!<Ñ!<Ó!>Õ?ð	@àÐr'   )
r"   r#   r$   r%   rÌ  r˜   ra  r!   r  rw  rx  s   @r    r$  r$  Ú  s%   ø„ ñð !€Hô0òQòBör'   r$  c                   ó6   ‡ — e Zd ZdZdZˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚOrderByListFzORDER BY %(expressions)sc                 ó6   •— d„ |D «       }t        ‰| �  |i |¤Ž y )Nc              3   ó‚   K  — | ]7  }t        |t        «      r!|d    dk(  rt        t        |dd «      d¬«      n|–— Œ9 y­w)r   r+   r®  NT©r  )r¬   r­   r  r®   r·   s     r    rº   z'OrderByList.__init__.<locals>.<genexpr>ý  sI   è ø€ ò 
ð ô ˜d¤CÔ(¨T°!©W¸ª^ô œ˜$˜q˜r˜(›°Õ5àóñ
ùs   ‚=?)r\  r˜   r&  s      €r    r˜   zOrderByList.__init__ü  s(   ø€ ñ
ð $ô
ˆô 	‰Ñ˜+Ð/¨Ó/r'   c                 ó<   •— | j                   syt        ‰| �  |i |¤ŽS )N)Ú r&   )r  r\  r   )r   rA  r  rà   s      €r    r   zOrderByList.as_sql  s#   ø€ Ø×&Ò&ØÜ‰w‰~˜tÐ. vÑ.Ð.r'   c                 ór   — g }| j                  «       D ]!  }|j                  |j                  «       «       Œ# |S r�   r+  )r   r,  Úorder_bys      r    r  zOrderByList.get_group_by_cols  s<   € ØˆØ×3Ñ3Ó5ò 	?ˆHØ× Ñ  ×!;Ñ!;Ó!=Õ>ð	?àÐr'   )	r"   r#   r$   r,  rÌ  r˜   r   r  rw  rx  s   @r    r/  r/  ø  s   ø„ Ø€OØ)€Hô	0ô/ö
r'   r/  z"django.db.models.ExpressionWrapperc                   óT   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ fd„Zd„ Zd„ Z	e
d„ «       Zˆ xZS )	ÚExpressionWrapperz”
    An expression that can wrap another expression so that it can provide
    extra context to the inner expression, such as the output_field.
    c                 ó4   •— t         ‰| �  |¬«       || _        y r[  )r\  r˜   rå   )r   rå   r   rà   s      €r    r˜   zExpressionWrapper.__init__  s   ø€ Ü‰Ñ lÐÔ3Ø$ˆ�r'   c                 ó   — |d   | _         y ©Nr   ©rå   r¨   s     r    rª   z(ExpressionWrapper.set_source_expressions  ó   € Ø ™(ˆ�r'   c                 ó   — | j                   gS r�   r<  r@   s    r    r¥   z(ExpressionWrapper.get_source_expressions!  ó   € Ø—‘Ð Ð r'   c                 óÊ   •— t        | j                  t        «      r;| j                  j                  «       }| j                  |_        |j                  «       S t        ‰| �  «       S r�   )r¬   rå   r0  rœ   r   r  r\  ©r   rå   rà   s     €r    r  z#ExpressionWrapper.get_group_by_cols$  sP   ø€ Ü�d—o‘o¤zÔ2ØŸ™×-Ñ-Ó/ˆJØ&*×&7Ñ&7ˆJÔ#Ø×/Ñ/Ó1Ð1ô ‰wÑ(Ó*Ð*r'   c                 ó8   — |j                  | j                  «      S r�   )rh  rå   r³   s      r    r   zExpressionWrapper.as_sql-  s   € Ø×Ñ §¡Ó0Ð0r'   c                 ób   — dj                  | j                  j                  | j                  «      S rŽ  )r^  rà   r"   rå   r@   s    r    r_  zExpressionWrapper.__repr__0  s!   € Ø�‰˜tŸ~™~×6Ñ6¸¿¹ÓHÐHr'   c                 ó.   — | j                   j                  S r�   )rå   r,  r@   s    r    r,  z!ExpressionWrapper.allowed_default3  s   € à�‰×.Ñ.Ð.r'   )r"   r#   r$   r%   r˜   rª   r¥   r  r   r_  r-  r,  rw  rx  s   @r    r8  r8    s;   ø„ ñô
%ò#ò!ô+ò1òIð ñ/ó ô/r'   r8  c                   óF   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ fd„Z	 dˆ fd„	Zd„ Zˆ xZ	S )r‘   z1The logical negation of a conditional expression.c                 óL   •— t         ‰| �  |t        j                  «       ¬«       y r[  )r\  r˜   r   rÒ   rA  s     €r    r˜   zNegatedExpression.__init__;  s   ø€ Ü‰Ñ˜´&×2EÑ2EÓ2GÐÕHr'   c                 ó6   — | j                   j                  «       S r�   )rå   rœ   r@   s    r    r’   zNegatedExpression.__invert__>  s   € Ø�‰×#Ñ#Ó%Ð%r'   c                 óF  •— 	 t         ‰| �  ||«      \  }}|j                  j                  }|j                  | j                  «      sd|› d�|fS d|› �|fS # t        $ rA |j                  j                  }|j
                  sY y|j                  t        d«      «      cY S w xY w)N)z1=1r&   Tz
CASE WHEN z = 0 THEN 1 ELSE 0 ENDzNOT )r\  r   r   r   r  Ú&supports_boolean_expr_in_select_clauserh  r6   ri  Ú0conditional_expression_supported_in_where_clauserå   )r   r   r   r   r   r  ri  rà   s          €r    r   zNegatedExpression.as_sqlA  s¬   ø€ ð	1Ü™'™.¨°:Ó>‰KˆC�ð ×!Ñ!×%Ñ%ˆð ×CÑCÀDÇOÁOÔTØ ˜uÐ$:Ð;¸VÐCÐCØ�c�Uˆ|˜VÐ#Ð#øô ò 	1Ø×*Ñ*×3Ñ3ˆHØ×BÒBÙ Ø×#Ñ#¤E¨$£KÓ0Ò0ð		1ús   ƒA Á+B ÂB ÂB c                 ór   •— t         ‰| �  |||||«      }t        |j                  dd«      st	        d«      ‚|S )Nr]   Fz*Cannot negate non-conditional expressions.)r\  r4   r`   rå   r²  )r   rË   rÌ   rÍ   rÎ   rÏ   Úresolvedrà   s          €r    r4   z$NegatedExpression.resolve_expressionQ  sD   ø€ ô ‘7Ñ-Ø�;  y°(ó
ˆô �x×*Ñ*¨M¸5ÔAÜÐHÓIÐIØˆr'   c                 óÐ   — |j                   j                  j                  }|j                   j                  j                  s# || j
                  «      rdj                  |«      }||fS ©NzCASE WHEN {} THEN 1 ELSE 0 END)r   ri  rJ  r  rI  rå   r^  )r   r   r   r   Ú$expression_supported_in_where_clauses        r    r%  zNegatedExpression.select_format[  s[   € ð
 ×Ñ×#Ñ#×TÑTð 	-ð ×#Ñ#×,Ñ,×SÒSá4°T·_±_ÔEà2×9Ñ9¸#Ó>ˆCØ�Fˆ{Ðr'   r'  )
r"   r#   r$   r%   r˜   r’   r   r4   r%  rw  rx  s   @r    r‘   r‘   8  s'   ø„ Ù;ôIò&ô$ð" SXõör'   r‘   zdjango.db.models.Whenc                   ón   ‡ — e Zd ZdZdZdˆ fd„	Zd„ Zd„ Zd„ Zd„ Z	d„ Z
	 dd	„Zdd
„Zd„ Zed„ «       Zˆ xZS )ÚWhenz"WHEN %(condition)s THEN %(result)sFc                 ó2  •— |r+|€t        di |¤Žd }}nt        |dd«      rt        |fi |¤Žd }}|�t        |dd«      r|rt        d«      ‚t        |t         «      r|st	        d«      ‚t
        ‰| �  d ¬«       || _        | j                  |«      d   | _	        y )Nr]   FzLWhen() supports a Q object, a boolean expression, or lookups as a condition.z1An empty Q() can't be used as a When() condition.r–   r   r&   )
r   r`   r²  r¬   rœ  r\  r˜   Ú	conditionr±   rL  )r   rS  ÚthenÚlookupsrà   s       €r    r˜   zWhen.__init__q  s¨   ø€ ÙØÐ Ü%&¡\¨¡\°4˜7‘	Ü˜ M°5Ô9Ü%& yÑ%<°GÑ%<¸d˜7�	ØÐ¤G¨I°}ÀeÔ$LÑPWÜð"óð ô �i¤Ô#©IÜÐPÓQÐQÜ‰Ñ dÐÔ+Ø"ˆŒØ×-Ñ-¨dÓ3°AÑ6ˆ�r'   c                 ó:   — d| j                   ›d| j                  ›�S )NzWHEN z THEN ©rS  rL  r@   s    r    ra  zWhen.__str__‚  s   � Ø$(§N£N°D·K²KÐ@Ð@r'   c                 ó<   — d| j                   j                  ›d| ›d�S ©Nú<z: ú>©rà   r"   r@   s    r    r_  zWhen.__repr__…  ó   � Ø!Ÿ^™^×4Ó4²dÐ;Ð;r'   c                 ó2   — | j                   | j                  gS r�   rW  r@   s    r    r¥   zWhen.get_source_expressionsˆ  s   € Ø—‘ §¡Ð,Ð,r'   c                 ó"   — |\  | _         | _        y r�   rW  r¨   s     r    rª   zWhen.set_source_expressions‹  s   € Ø&+Ñ#ˆŒ˜�r'   c                 ó0   — | j                   j                  gS r�   )rL  rÙ   r@   s    r    rß   zWhen.get_source_fieldsŽ  s   € à—‘×1Ñ1Ð2Ð2r'   c                 óð   — | j                  «       }||_        t        |j                  d«      r$|j                  j	                  ||||d«      |_        |j
                  j	                  |||||«      |_        |S )Nr4   F)rœ   rÊ   r5   rS  r4   rL  )r   rË   rÌ   rÍ   rÎ   rÏ   rÐ   s          r    r4   zWhen.resolve_expression’  sp   € ð �I‰I‹KˆØ ˆŒÜ�1—;‘;Ð 4Ô5ØŸ+™+×8Ñ8Ø�{ E¨9°eóˆAŒKð —8‘8×.Ñ.Ø�;  y°(ó
ˆŒð ˆr'   c                 ó  — |j                   j                  | «       |}g }|j                  | j                  «      \  }}||d<   |j                  | j                  «      \  }	}
|	|d<   |xs | j
                  }||z  g |¢|¢|
¢­fS )NrS  rL  )ri  r�  rh  rS  rL  rÌ  )r   r   r   rÌ  r   Útemplate_paramsÚ
sql_paramsÚcondition_sqlÚcondition_paramsÚ
result_sqlÚresult_paramss              r    r   zWhen.as_sql   s¤   € Ø�‰×/Ñ/°Ô5Ø'ˆØˆ
Ø*2×*:Ñ*:¸4¿>¹>Ó*JÑ'ˆÐ'Ø'4ˆ˜Ñ$Ø$,×$4Ñ$4°T·[±[Ó$AÑ!ˆ
�MØ$.ˆ˜Ñ!ØÒ,˜tŸ}™}ˆØ˜/Ñ)ð ,
Øð,
àð,
ð ñ,
ð 
ð 	
r'   c                 ór   — g }| j                  «       D ]!  }|j                  |j                  «       «       Œ# |S r�   r+  r  s      r    r  zWhen.get_group_by_cols¯  s9   € àˆØ×1Ñ1Ó3ò 	4ˆFØ�K‰K˜×0Ñ0Ó2Õ3ð	4àˆr'   c                 ó^   — | j                   j                  xr | j                  j                  S r�   )rS  r,  rL  r@   s    r    r,  zWhen.allowed_default¶  s!   € à�~‰~×-Ñ-ÒM°$·+±+×2MÑ2MÐMr'   ©NNr'  r�   )r"   r#   r$   rÌ  r]   r˜   ra  r_  r¥   rª   rß   r4   r   r  r   r,  rw  rx  s   @r    rQ  rQ  k  sX   ø„ à3€Hà€Kõ7ò"Aò<ò-ò,ò3ð
 SXóó
òð ñNó ôNr'   rQ  zdjango.db.models.Casec                   ó‚   ‡ — e Zd ZdZdZdZdddœˆ fd„
Zd„ Zd„ Zd	„ Z	d
„ Z
	 dd„Zˆ fd„Z	 dd„Zˆ fd„Zed„ «       Zˆ xZS )ÚCasezÊ
    An SQL searched CASE expression:

        CASE
            WHEN n > 0
                THEN 'positive'
            WHEN n < 0
                THEN 'negative'
            ELSE 'zero'
        END
    z#CASE %(cases)s ELSE %(default)s ENDr­  N)Údefaultr   c                ó¾   •— t        d„ |D «       «      st        d«      ‚t        ‰| �  |«       t	        |«      | _        | j                  |«      d   | _        || _        y )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr�   )r¬   rQ  )r¸   Úcases     r    rº   z Case.__init__.<locals>.<genexpr>Í  s   è ø€ Ò<¨d”:˜d¤D×)Ñ<ùr»   z.Positional arguments must all be When objects.r   )	r×  r²  r\  r˜   ÚlistÚcasesr±   rn  r³  )r   rn  r   rs  r³  rà   s        €r    r˜   zCase.__init__Ì  sS   ø€ ÜÑ<°eÔ<Ô<ÜÐLÓMÐMÜ‰Ñ˜Ô&Ü˜%“[ˆŒ
Ø×.Ñ.¨wÓ7¸Ñ:ˆŒØˆ�
r'   c                 óf   — ddj                  d„ | j                  D «       «      ›d| j                  ›�S )NzCASE rÝ   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr�   r¶  )r¸   rÐ   s     r    rº   zCase.__str__.<locals>.<genexpr>Ö  s   è ø€ Ò1 ”c˜!—fÑ1ùr¹  z, ELSE )rÀ  rs  rn  r@   s    r    ra  zCase.__str__Ô  s)   � à�I‰IÑ1 d§j¡jÔ1Õ1Ø�LŠLð
ð 	
r'   c                 ó<   — d| j                   j                  ›d| ›d�S rY  r\  r@   s    r    r_  zCase.__repr__Ú  r]  r'   c                 ó6   — | j                   | j                  gz   S r�   ©rs  rn  r@   s    r    r¥   zCase.get_source_expressionsÝ  s   € Ø�z‰z˜TŸ\™\˜NÑ*Ð*r'   c                 ó"   — |�^ | _         | _        y r�   rx  r¨   s     r    rª   zCase.set_source_expressionsà  s   € Ø$)Ñ!ˆŒ�T•\r'   c                 óú   — | j                  «       }||_        t        |j                  «      D ]'  \  }}|j	                  |||||«      |j                  |<   Œ) |j
                  j	                  |||||«      |_        |S r�   )rœ   rÊ   rÈ  rs  r4   rn  )	r   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÉ  rq  s	            r    r4   zCase.resolve_expressionã  s   € ð �I‰I‹KˆØ ˆŒÜ" 1§7¡7Ó+ò 	‰IˆC�Ø×2Ñ2Ø�{ E¨9°hóˆA�G‰G�CŠLð	ð —I‘I×0Ñ0Ø�;  y°(ó
ˆŒ	ð ˆr'   c                 óL   •— t         ‰| �  «       }|j                  d d  |_        |S r�   )r\  rœ   rs  )r   rÐ   rà   s     €r    rœ   z	Case.copyñ  s"   ø€ Ü‰G‰L‹NˆØ—'‘'™!�*ˆŒØˆr'   c                 ó$  — |j                   j                  | «       | j                  s|j                  | j                  «      S i | j
                  ¥|¥}g }g }|j                  | j                  «      \  }	}
| j                  D ]9  }	 |j                  |«      \  }}|j                  |«       |j                  |«       Œ; |s|	|
fS |xs | j                  }|j                  |«      |d<   |	|d<   |j                  |
«       |xs |j                  d| j                  «      }||z  }| j                  �(|j                   j!                  | j"                  «      |z  }||fS # t        $ r Y Œät        $ r" |j                  |j                  «      \  }	}
Y  ŒÑw xY w)Nrs  rn  rÌ  )ri  r�  rs  rh  rn  r³  r   r
   rL  r>  r  Úcase_joinerrÀ  rþ   rÌ  rÙ   Úunification_cast_sqlr   )r   r   r   rÌ  r}  r   rc  Ú
case_partsrd  Údefault_sqlÚdefault_paramsrq  Úcase_sqlÚcase_paramsr   s                  r    r   zCase.as_sqlö  s’  € ð 	�‰×/Ñ/°Ô5Ø�zŠzØ×#Ñ# D§L¡LÓ1Ð1Ø9˜TŸZ™ZÐ9¨=Ð9ˆØˆ
Øˆ
Ø&.×&6Ñ&6°t·|±|Ó&DÑ#ˆ�^Ø—J‘Jò 		+ˆDðØ(0×(8Ñ(8¸Ó(>Ñ%�˜+ð ×Ñ˜hÔ'Ø×Ñ˜kÕ*ð		+ñ Ø Ð.Ð.Ø!Ò5 T×%5Ñ%5ˆØ#.×#3Ñ#3°JÓ#?ˆ˜Ñ Ø%0ˆ˜	Ñ"Ø×Ñ˜.Ô)ØÒM˜×2Ñ2°:¸t¿}¹}ÓMˆØ˜Ñ(ˆØ×%Ñ%Ð1Ø—.‘.×5Ñ5°d×6GÑ6GÓHÈ3ÑNˆCØ�JˆÐøô# "ò ÙÜ ò Ø.6×.>Ñ.>¸t¿{¹{Ó.KÑ+�˜^Úðús   ÂEÅ	FÅ%&FÆFc                 ól   •— | j                   s| j                  j                  «       S t        ‰| �	  «       S r�   )rs  rn  r  r\  )r   rà   s    €r    r  zCase.get_group_by_cols  s+   ø€ Ø�zŠzØ—<‘<×1Ñ1Ó3Ð3Ü‰wÑ(Ó*Ð*r'   c                 ój   — | j                   j                  xr t        d„ | j                  D «       «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr�   rÕ  )r¸   Úcase_s     r    rº   z'Case.allowed_default.<locals>.<genexpr>  s   è ø€ ò 4
Ø&+ˆE×!Õ!ñ4
ùrÖ  )rn  r,  r×  rs  r@   s    r    r,  zCase.allowed_default  s1   € à�|‰|×+Ñ+ò 
´ñ 4
Ø/3¯z©zô4
ó 1
ð 	
r'   r'  rk  )r"   r#   r$   r%   rÌ  r}  r˜   ra  r_  r¥   rª   r4   rœ   r   r  r   r,  rw  rx  s   @r    rm  rm  »  si   ø„ ñ
ð 5€HØ€Kà'+¸$ö ò
ò<ò+ò*ð SXóôð @Dóô@+ð
 ñ
ó ô
r'   rm  c                   ót   ‡ — e Zd ZdZdZdZdZdZdˆ fd„	Zd„ Z	d„ Z
d	„ Zˆ fd
„Zed„ «       Zd„ Zdd„Zd„ Zˆ xZS )ÚSubqueryz”
    An explicit subquery. It may contain OuterRef() references to the outer
    query which will be resolved when it is applied to that query.
    z(%(subquery)s)FNTc                 ó”   •— t        |d|«      j                  «       | _        d| j                  _        || _        t
        ‰| �  |«       y )NrË   T)r`   rû   rË   rÇ   r³  r\  r˜   )r   Úquerysetr   r³  rà   s       €r    r˜   zSubquery.__init__-  s<   ø€ ä˜X w°Ó9×?Ñ?ÓAˆŒ
Ø"ˆ�
‰
ÔØˆŒ
Ü‰Ñ˜Õ&r'   c                 ó   — | j                   gS r�   ©rË   r@   s    r    r¥   zSubquery.get_source_expressions4  s   € Ø—
‘
ˆ|Ðr'   c                 ó   — |d   | _         y r;  r�  r¨   s     r    rª   zSubquery.set_source_expressions7  s   € Ø˜1‘Xˆ�
r'   c                 ó.   — | j                   j                  S r�   )rË   r   r@   s    r    rÖ   zSubquery._resolve_output_field:  s   € Ø�z‰z×&Ñ&Ð&r'   c                 ób   •— t         ‰| �  «       }|j                  j                  «       |_        |S r�   )r\  rœ   rË   rû   )r   rû   rà   s     €r    rœ   zSubquery.copy=  s'   ø€ Ü‘‘“ˆØ—k‘k×'Ñ'Ó)ˆŒØˆr'   c                 ó.   — | j                   j                  S r�   )rË   Úexternal_aliasesr@   s    r    r’  zSubquery.external_aliasesB  s   € à�z‰z×*Ñ*Ð*r'   c                 ó6   — | j                   j                  «       S r�   )rË   Úget_external_colsr@   s    r    r”  zSubquery.get_external_colsF  s   € Ø�z‰z×+Ñ+Ó-Ð-r'   c                 óø   — |j                   j                  | «       i | j                  ¥|¥}| j                  j	                  ||«      \  }}|dd |d<   |xs |j                  d| j                  «      }||z  }||fS )Nr®  r=   rÇ   rÌ  )ri  r�  r³  rË   r   rþ   rÌ  )	r   r   r   rÌ  r   rc  Úsubquery_sqlrd  r   s	            r    r   zSubquery.as_sqlI  s‚   € Ø�‰×/Ñ/°Ô5Ø9˜TŸZ™ZÐ9¨=Ð9ˆØ#'§:¡:×#4Ñ#4°X¸zÓ#JÑ ˆ�jØ&2°1°RÐ&8ˆ˜
Ñ#àÒM˜×2Ñ2°:¸t¿}¹}ÓMˆØ˜Ñ(ˆØ�JˆÐr'   c                 ó:   — | j                   j                  | ¬«      S )N)Úwrapper)rË   r  r@   s    r    r  zSubquery.get_group_by_colsS  s   € Ø�z‰z×+Ñ+°DÐ+Ó9Ð9r'   r�   )r"   r#   r$   r%   rÌ  r¶   r)  rÇ   r˜   r¥   rª   rÖ   rœ   r-  r’  r”  r   r  rw  rx  s   @r    r‰  r‰  "  s\   ø„ ñð
  €HØÐØ!ÐØ€Hõ'òòò'ôð
 ñ+ó ð+ò.óö:r'   r‰  c                   óX   ‡ — e Zd ZdZ ej
                  «       ZdZˆ fd„Zd„ Z	ˆ fd„Z
ˆ xZS )ÚExistszEXISTS(%(subquery)s)Fc                 ód   •— t        ‰| �  |fi |¤Ž | j                  j                  «       | _        y r�   )r\  r˜   rË   Úexists)r   r‹  r  rà   s      €r    r˜   zExists.__init__\  s)   ø€ Ü‰Ñ˜Ñ, VÒ,Ø—Z‘Z×&Ñ&Ó(ˆ�
r'   c                 ól   — |j                   j                  j                  sdj                  |«      }||fS rN  )r   r  rI  r^  r&  s       r    r%  zExists.select_format`  s3   € ð ×"Ñ"×+Ñ+×RÒRØ2×9Ñ9¸#Ó>ˆCØ�Fˆ{Ðr'   c                 óÆ   •— 	 t        ‰| �  |g|¢­i |¤ŽS # t        $ rA |j                  j                  }|j
                  sY y|j                  t        d«      «      cY S w xY w)N)z1=0r&   F)r\  r   r   r   r  rI  rh  r6   )r   r   rA  r  r  rà   s        €r    r   zExists.as_sqlh  sb   ø€ ð	2Ü‘7‘> (Ð<¨TÒ<°VÑ<Ð<øÜò 	2Ø×*Ñ*×3Ñ3ˆHØ×BÒBÙ Ø×#Ñ#¤E¨%£LÓ1Ò1ð		2ús   ƒ –+A ÁA ÁA )r"   r#   r$   rÌ  r   rÒ   r   r)  r˜   r%  r   rw  rx  s   @r    rš  rš  W  s2   ø„ Ø%€HØ&�6×&Ñ&Ó(€LØ"Ðô)ò÷2ð 2r'   rš  zdjango.db.models.OrderByc                   óT   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zy)r  z%(expression)s %(ordering)sFNc                 ó®   — |r|rt        d«      ‚|du s|du rt        d«      ‚|| _        || _        || _        t	        |d«      st        d«      ‚|| _        y )Nz1nulls_first and nulls_last are mutually exclusiveFz7nulls_first and nulls_last values must be True or None.r4   z%expression must be an expression type)rœ  Únulls_firstÚ
nulls_lastr  r5   rå   )r   rå   r  r¡  r¢  s        r    r˜   zOrderBy.__init__w  sb   € Ù™:ÜÐPÓQÐQØ˜%Ñ :°Ñ#6ÜÐVÓWÐWØ&ˆÔØ$ˆŒØ$ˆŒÜ�zÐ#7Ô8ÜÐDÓEÐEØ$ˆ�r'   c                 óx   — dj                  | j                  j                  | j                  | j                  «      S )Nz{}({}, descending={}))r^  rà   r"   rå   r  r@   s    r    r_  zOrderBy.__repr__ƒ  s.   € Ø&×-Ñ-Ø�N‰N×#Ñ# T§_¡_°d·o±oó
ð 	
r'   c                 ó   — |d   | _         y r;  r<  r¨   s     r    rª   zOrderBy.set_source_expressionsˆ  r=  r'   c                 ó   — | j                   gS r�   r<  r@   s    r    r¥   zOrderBy.get_source_expressions‹  r?  r'   c                 óR  — |xs | j                   }|j                  j                  r$| j                  rd|z  }ny| j                  rmd|z  }ng| j                  r(| j
                  r|j                  j                  sd|z  }n3| j                  r'| j
                  s|j                  j                  sd|z  }|j                  j                  | «       |j                  | j                  «      \  }}|| j
                  rdnddœ|¥}||j                  d«      z  }||z  j                  «       |fS )	Nz%s NULLS LASTz%s NULLS FIRSTz%%(expression)s IS NULL, %sz%%(expression)s IS NOT NULL, %sÚDESCÚASC)rå   Úorderingz%(expression)s)rÌ  r  Ú supports_order_by_nulls_modifierr¢  r¡  r  Úorder_by_nulls_firstri  r�  rh  rå   ÚcountÚrstrip)r   r   r   rÌ  r   Úexpression_sqlr   Úplaceholderss           r    r   zOrderBy.as_sqlŽ  s
  € ØÒ,˜tŸ}™}ˆØ×Ñ×?Ò?Ø�ŠØ*¨XÑ5‘Ø×!Ò!Ø+¨hÑ6‘à�ŠØ—’ J×$7Ñ$7×$LÒ$Là8¸8ÑC‘Ø×!Ò!Ø—O’O¨
×(;Ñ(;×(PÒ(Pà<¸xÑG�Ø�‰×/Ñ/°Ô5Ø!)×!1Ñ!1°$·/±/Ó!BÑˆ˜à(Ø"&§/¢/™°uñ
ð ð
ˆð
 	�(—.‘.Ð!1Ó2Ñ2ˆØ˜<Ñ'×/Ñ/Ó1°6Ð9Ð9r'   c                 ó0  — |j                   j                  so|j                  j                  | j                  «      rJ| j                  «       }t        t        | j                  d¬«      d¬«      |_         |j                  ||«      S | j                  ||«      S )NT)rT  F)rn  )	r  rI  ri  rJ  rå   rœ   rm  rQ  r   )r   r   r   rœ   s       r    Ú	as_oraclezOrderBy.as_oracle¨  s|   € ð ×#Ñ#×JÒJØ—‘×OÑOØ—‘ôð —9‘9“;ˆDÜ"Ü�T—_‘_¨4Ô0ØôˆDŒOð �4—;‘;˜x¨Ó4Ð4Ø�{‰{˜8 ZÓ0Ð0r'   c                 ór   — g }| j                  «       D ]!  }|j                  |j                  «       «       Œ# |S r�   r+  r  s      r    r  zOrderBy.get_group_by_cols¹  s9   € ØˆØ×1Ñ1Ó3ò 	4ˆFØ�K‰K˜×0Ñ0Ó2Õ3ð	4àˆr'   c                 ó–   — | j                    | _         | j                  rd| _        d | _        | S | j                  rd| _        d | _        | S ry   )r  r¡  r¢  r@   s    r    r   zOrderBy.reverse_ordering¿  sL   € Ø"Ÿo™oÐ-ˆŒØ×ÒØ"ˆDŒOØ#ˆDÔð ˆð �_Š_Ø#ˆDÔØ"ˆDŒOØˆr'   c                 ó   — d| _         y rC   r2  r@   s    r    r  zOrderBy.ascÉ  s	   € Øˆ�r'   c                 ó   — d| _         y ry   r2  r@   s    r    r  zOrderBy.descÌ  s	   € Øˆ�r'   )FNNr�   )r"   r#   r$   rÌ  r]   r˜   r_  rª   r¥   r   r±  r  r   r  r  r&   r'   r    r  r  r  s>   „ à,€HØ€Kó
%ò
ò
#ò!ó:ò41ò"òò ór'   r  c                   ój   ‡ — e Zd ZdZdZdZ	 	 	 	 dˆ fd„	Zd„ Zd„ Zd„ Z	dd„Z
ˆ fd	„Zd
„ Zd„ Zd„ Zˆ xZS )ÚWindowz %(expression)s OVER (%(window)s)FTc                 óž  •— || _         || _        || _        t        |dd«      s"t	        d|j
                  j                  z  «      ‚| j                   �It        | j                   t        t        f«      s| j                   f| _         t        | j                   Ž | _         | j                  �~t        | j                  t        t        f«      rt        | j                  Ž | _        nFt        | j                  t        t        f«      rt        | j                  «      | _        nt	        d«      ‚t        ‰| �=  |¬«       | j!                  |«      d   | _        y )Nr+  Fz3Expression '%s' isn't compatible with OVER clauses.zhWindow.order_by must be either a string reference to a field, an expression, or a list or tuple of them.r–   r   )Úpartition_byr6  Úframer`   rœ  rà   r"   r¬   r?  rr  r$  r/  r”   r­   r\  r˜   r±   Úsource_expression)r   rå   r¹  r6  rº  r   rà   s         €r    r˜   zWindow.__init__Ø  s  ø€ ð )ˆÔØ ˆŒØˆŒ
ä�zÐ#6¸Ô>ÜØEØ×&Ñ&×/Ñ/ñ0óð ð
 ×ÑÐ(Ü˜d×/Ñ/´%¼°Ô?Ø%)×%6Ñ%6Ð$8�Ô!Ü .°×0AÑ0AÐ BˆDÔà�=‰=Ð$Ü˜$Ÿ-™-¬$´¨Ô7Ü +¨T¯]©]Ð ;�•Ü˜DŸM™M¬N¼CÐ+@ÔAÜ +¨D¯M©MÓ :�•ä ðHóð ô 	‰Ñ lÐÔ3Ø!%×!8Ñ!8¸Ó!DÀQÑ!GˆÕr'   c                 ó.   — | j                   j                  S r�   )r»  r   r@   s    r    rÖ   zWindow._resolve_output_fieldü  s   € Ø×%Ñ%×2Ñ2Ð2r'   c                 ó^   — | j                   | j                  | j                  | j                  gS r�   ©r»  r¹  r6  rº  r@   s    r    r¥   zWindow.get_source_expressionsÿ  s%   € Ø×&Ñ&¨×(9Ñ(9¸4¿=¹=È$Ï*É*ÐUÐUr'   c                 ó:   — |\  | _         | _        | _        | _        y r�   r¾  r¨   s     r    rª   zWindow.set_source_expressions  s   € ØOTÑLˆÔ Ô 1°4´=À$Å*r'   c                 óò  — |j                   j                  | «       |j                  j                  st	        d«      ‚|j                  | j                  «      \  }}g d}}| j                  �@| j                  j                  ||d¬«      \  }}	|j                  |«       |t        |	«      z  }| j                  �=|j                  | j                  «      \  }
}|j                  |
«       |t        |«      z  }| j                  r=|j                  | j                  «      \  }}|j                  |«       |t        |«      z  }|xs | j                  }||dj                  |«      j                  «       dœz  g |¢|¢­fS )Nz1This backend does not support window expressions.r&   zPARTITION BY %(expressions)s)r   r   rÌ  r­  )rå   Úwindow)ri  r�  r  Úsupports_over_clauser   rh  r»  r¹  r   r>  r?  r6  rº  rÌ  rÀ  Ústrip)r   r   r   rÌ  Úexpr_sqlr   Ú
window_sqlÚwindow_paramsÚsql_exprrd  Ú	order_sqlÚorder_paramsÚ	frame_sqlÚframe_paramss                 r    r   zWindow.as_sql  sj  € Ø�‰×/Ñ/°Ô5Ø×"Ñ"×7Ò7Ü#Ð$WÓXÐXØ#×+Ñ+¨D×,BÑ,BÓCÑˆ�&Ø$&¨�Mˆ
à×ÑÐ(Ø#'×#4Ñ#4×#;Ñ#;Ø!Ø%Ø7ð $<ó $Ñ ˆH�jð
 ×Ñ˜hÔ'ØœU :Ó.Ñ.ˆMà�=‰=Ð$Ø&.×&6Ñ&6°t·}±}Ó&EÑ#ˆI�|Ø×Ñ˜iÔ(ØœU <Ó0Ñ0ˆMà�:Š:Ø&.×&6Ñ&6°t·z±zÓ&BÑ#ˆI�|Ø×Ñ˜iÔ(ØœU <Ó0Ñ0ˆMàÒ,˜tŸ}™}ˆð  h¸#¿(¹(À:Ó:N×:TÑ:TÓ:VÑWÑWØ%ˆfÐ%�}Ñ%ð
ð 	
r'   c                 ó6  •— t        | j                  t        j                  «      rc| j	                  «       } |j
                  «       }t        j                  «       |d   _         |j                  |«       t        t        |�+  ||«      S | j                  ||«      S r;  )r¬   r   r   r   rœ   r¥   rç   rª   r\  r·  r!   r   )r   r   r   rœ   r  rà   s        €r    r!   zWindow.as_sqlite&  s‚   ø€ Ü�d×'Ñ'¬×)<Ñ)<Ô=à—9‘9“;ˆDØ!< ×!<Ñ!<Ó!>ÐÜ17×1BÑ1BÓ1DÐ˜qÑ!Ô.Ø'ˆD×'Ñ'Ð(:Ô;Üœ Ñ0°¸:ÓFÐFØ�{‰{˜8 ZÓ0Ð0r'   c           	      óô   — dj                  t        | j                  «      | j                  rdt        | j                  «      z   ndt        | j                  xs d«      t        | j
                  xs d«      «      S )Nz{} OVER ({}{}{})zPARTITION BY r4  )r^  r­   r»  r¹  r6  rº  r@   s    r    ra  zWindow.__str__0  sb   € Ø!×(Ñ(Ü�×&Ñ&Ó'Ø8<×8IÒ8IˆOœc $×"3Ñ"3Ó4Ò4ÈrÜ�—‘Ò# Ó$Ü�—
‘
Ò ˜bÓ!ó	
ð 	
r'   c                 ó<   — d| j                   j                  ›d| ›d�S rY  r\  r@   s    r    r_  zWindow.__repr__8  r]  r'   c                 óÞ   — g }| j                   r)|j                  | j                   j                  «       «       | j                  �)|j                  | j                  j                  «       «       |S r�   )r¹  r  r  r6  )r   r,  s     r    r  zWindow.get_group_by_cols;  sX   € ØˆØ×ÒØ× Ñ  ×!2Ñ!2×!DÑ!DÓ!FÔGØ�=‰=Ð$Ø× Ñ  §¡×!@Ñ!@Ó!BÔCØÐr'   )NNNNr�   )r"   r#   r$   rÌ  r¶   rÀ   r˜   rÖ   r¥   rª   r   r!   ra  r_  r  rw  rx  s   @r    r·  r·  Ð  sV   ø„ Ø1€Hð ÐØÐð
 ØØØõ"HòH3òVòUó
ôB1ò
ò<ör'   r·  c                   óF   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zy)ÚWindowFrameaV  
    Model the frame clause in window expressions. There are two types of frame
    clauses which are subclasses, however, all processing and validation (by no
    means intended to be complete) is done here. Thus, providing an end for a
    frame is optional (the default is UNBOUNDED FOLLOWING, which is the last
    row in the frame).
    z,%(frame_type)s BETWEEN %(start)s AND %(end)sNc                 óD   — t        |«      | _        t        |«      | _        y r�   )r6   ÚstartÚend©r   rÓ  rÔ  s      r    r˜   zWindowFrame.__init__O  s   € Ü˜5“\ˆŒ
Ü˜“:ˆ�r'   c                 ó"   — |\  | _         | _        y r�   ©rÓ  rÔ  r¨   s     r    rª   z"WindowFrame.set_source_expressionsS  s   € Ø$ÑˆŒ
�D•Hr'   c                 ó2   — | j                   | j                  gS r�   r×  r@   s    r    r¥   z"WindowFrame.get_source_expressionsV  s   € Ø—
‘
˜DŸH™HÐ%Ð%r'   c                 óò   — |j                   j                  | «       | j                  || j                  j                  | j
                  j                  «      \  }}| j                  | j                  ||dœz  g fS )N©Ú
frame_typerÓ  rÔ  )ri  r�  Úwindow_frame_start_endrÓ  rä   rÔ  rÌ  rÛ  )r   r   r   rÓ  rÔ  s        r    r   zWindowFrame.as_sqlY  sp   € Ø�‰×/Ñ/°Ô5Ø×0Ñ0Ø˜Ÿ
™
×(Ñ(¨$¯(©(¯.©.ó
‰
ˆˆsð �M‰Mà"Ÿo™oØØññð ð
ð 	
r'   c                 ó<   — d| j                   j                  ›d| ›d�S rY  r\  r@   s    r    r_  zWindowFrame.__repr__h  r]  r'   c                 ó   — g S r�   r&   r@   s    r    r  zWindowFrame.get_group_by_colsk  r¦   r'   c                 ój  — | j                   j                  �V| j                   j                  dk  r=dt        | j                   j                  «      t        j                  j
                  fz  }nd| j                   j                  �4| j                   j                  dk(  rt        j                  j                  }nt        j                  j                  }| j                  j                  �M| j                  j                  dkD  r4d| j                  j                  t        j                  j                  fz  }nd| j                  j                  �4| j                  j                  dk(  rt        j                  j                  }nt        j                  j                  }| j                  | j                  ||dœz  S )Nr   z%d %srÚ  )rÓ  rä   Úabsr   ri  Ú	PRECEDINGÚCURRENT_ROWÚUNBOUNDED_PRECEDINGrÔ  Ú	FOLLOWINGÚUNBOUNDED_FOLLOWINGrÌ  rÛ  rÕ  s      r    ra  zWindowFrame.__str__n  s&  € Ø�:‰:×ÑÐ'¨D¯J©J×,<Ñ,<¸qÒ,@Øœs 4§:¡:×#3Ñ#3Ó4´j·n±n×6NÑ6NÐOÑO‰EØ�Z‰Z×ÑÐ)¨d¯j©j×.>Ñ.>À!Ò.CÜ—N‘N×.Ñ.‰Eä—N‘N×6Ñ6ˆEà�8‰8�>‰>Ð%¨$¯(©(¯.©.¸1Ò*<Ø˜TŸX™XŸ^™^¬Z¯^©^×-EÑ-EÐFÑF‰CØ�X‰X�^‰^Ð'¨D¯H©H¯N©N¸aÒ,?Ü—.‘.×,Ñ,‰Cä—.‘.×4Ñ4ˆCØ�}‰}ØŸ/™/ØØñ 
ñ 
ð 	
r'   c                 ó   — t        d«      ‚)Nz3Subclasses must implement window_frame_start_end().rˆ   ©r   r   rÓ  rÔ  s       r    rÜ  z"WindowFrame.window_frame_start_end‚  s   € Ü!Ð"WÓXÐXr'   rk  )r"   r#   r$   r%   rÌ  r˜   rª   r¥   r   r_  r  ra  rÜ  r&   r'   r    rÑ  rÑ  D  s7   „ ñð >€Hóò%ò&ò
ò<òò
ó(Yr'   rÑ  c                   ó   — e Zd ZdZd„ Zy)ÚRowRangeÚROWSc                 ó:   — |j                   j                  ||«      S r�   )ri  Úwindow_frame_rows_start_endrç  s       r    rÜ  zRowRange.window_frame_start_end‰  s   € Ø�~‰~×9Ñ9¸%ÀÓEÐEr'   N©r"   r#   r$   rÛ  rÜ  r&   r'   r    ré  ré  †  s   „ Ø€JóFr'   ré  c                   ó   — e Zd ZdZd„ Zy)Ú
ValueRangeÚRANGEc                 ó:   — |j                   j                  ||«      S r�   )ri  Úwindow_frame_range_start_endrç  s       r    rÜ  z!ValueRange.window_frame_start_end�  s   € Ø�~‰~×:Ñ:¸5À#ÓFÐFr'   Nrí  r&   r'   r    rï  rï  �  s   „ Ø€JóGr'   rï  )^rœ   rç  Ú	functoolsr2  Úcollectionsr   Údecimalr   Útypesr   Úuuidr   Údjango.core.exceptionsr   r	   r
   Ú	django.dbr   r   r   Údjango.db.modelsr   Údjango.db.models.constantsr   Údjango.db.models.query_utilsr   Údjango.utils.deconstructr   Údjango.utils.functionalr   Údjango.utils.hashabler   r   r)   r”   r0  rE   r?   rQ   rU   rY   ÚPositiveIntegerFieldrK   rë   rç   r   re   rv   ri   rl   rq   ro  rn  rq  rp  Ú_connector_combinationsrr  rI  rM  Údr8  r9   Úfield_typesrJ  rK  rL  Ú	lru_cacherX  r7   rr  rs  r®   rš  r¦  rª  r6   rð  r  r  r	  r  r$  r/  r8  r‘   rQ  rm  r‰  rš  r  r·  rÑ  ré  rï  )r9   Ú
field_types   00r    ú<module>r     sð  ðÛ Û Û Û Ý #Ý Ý Ý ç LÑ Lß BÑ BÝ #Ý 1Ý *Ý 4Ý 3Ý /÷ñ ÷ A'ñ A'÷Hvñ vðr	 ô#� ó #ó ð#ðf �N‰NØ�N‰NØ�N‰NØ�N‰NØ�N‰Nð
öð ð 	à×+Ñ+Ø×+Ñ+Ø×+Ñ+ðð
ñ 	
òð0 �N‰NØ�N‰NØ�N‰Nð �N‰NØ�N‰NØ�N‰Nð	
öð ð 	Ø× Ñ  &×"5Ñ"5°v×7JÑ7JÐKØ×Ñ × 1Ñ 1°6×3DÑ3DÐEØ× Ñ  &×"5Ñ"5°v×7JÑ7JÐKð
ñ 	
òð4 �N‰NØ�N‰NØ�N‰NØ�N‰NØ�N‰Nð
öð ð 	Ø× Ñ  &×"5Ñ"5°v×7JÑ7JÐKØ× Ñ  &×"5Ñ"5°v×7JÑ7JÐKØ× Ñ  &×"3Ñ"3°V×5FÑ5FÐGØ×Ñ × 3Ñ 3°V×5FÑ5FÐGð	
ñ 	
òð* ×ÑØ×ÑØ×#Ñ#Ø×$Ñ$Ø×Ñð
ö	ð ð 	Ø× Ñ  &×"5Ñ"5°v×7JÑ7JÐKð
ñ 	
òð& �N‰NØ�N‰NØ�N‰NØ�N‰NØ�N‰NØ�N‰Nð
÷ð
 ð "×.Ñ.°×0CÑ0CÀV×EVÑEVÐWòð ð 	Ø˜ :Ð.Ø�z :Ð.ð
ñ 	
ðØóð" 	�‰à×Ñ˜v×3Ñ3°V×5IÑ5IÐJØ×!Ñ! 6×#7Ñ#7¸×9MÑ9MÐNØ×!Ñ! 6×#3Ñ#3°V×5IÑ5IÐJØ×!Ñ! 6×#7Ñ#7¸×9MÑ9MÐNà×!Ñ! 6×#7Ñ#7¸×9MÑ9MÐNà×Ñ˜v×3Ñ3°V×5EÑ5EÐFØ×!Ñ! 6×#3Ñ#3°V×5EÑ5EÐFð
ðð 	�‰à×Ñ˜v×3Ñ3°V×5IÑ5IÐJØ×!Ñ! 6×#7Ñ#7¸×9MÑ9MÐNØ×Ñ˜v×/Ñ/°×1EÑ1EÐFØ×Ñ˜v×3Ñ3°V×5IÑ5IÐJØ×!Ñ! 6×#3Ñ#3°V×5IÑ5IÐJØ×!Ñ! 6×#7Ñ#7¸×9MÑ9MÐNà×!Ñ! 6×#7Ñ#7¸×9MÑ9MÐNà×Ñ˜v×3Ñ3°V×5EÑ5EÐFØ×Ñ˜v×/Ñ/°×1EÑ1EÐFð
ððErÐ ñh % TÓ*Ð ò	Að 
!ò D€AØ"#§'¡'£)ò DÑˆ	�;Ø +ò 	DÑˆC��fÙ& s¨I°s¸FÕCñ	DñDðDð €×Ñ˜SÔ!ñ!ó "ð!ôcEÐ+¨Zô cEôL0Ð+ô 0ôf
Ð,ô 
ñ Ð*Ô+ô$ˆ
ó $ó ,ð$ôN"�qô "ôJ
ˆqô 
ñ Ð-Ô.ôeYÐ˜zó eYó /ðeYñP Ð.Ô/ôMÐ 
ó Mó 0ðMô`!
ˆZô !
ôHˆ:ô ô�jô ô$6ˆ*ô $6ôN&ˆ*ô &ôR�Tô ô<�$ô ñ6 Ð:Ô;ô!/Ð*¨Jó !/ó <ð!/ôH0Ð)ô 0ñf Ð-Ô.ôLNˆ:ó LNó /ðLNñ^ Ð-Ô.ôc
Ð˜zó c
ó /ðc
ôL2:ˆ~˜zô 2:ôj2ˆXô 2ñ6 Ð0Ô1ôZˆjó Zó 2ðZôzqÐ ô qôh?Y�*ô ?YôDFˆ{ô FôG�õ GùòC,ùò"ùò$ùò ùós    Ã,]<Ä?A0^Ç,B^Ê;,^
Ì0:^