
    (ph                    *   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJr  S SKJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr   " S S5      r  " S S5      r! " S S5      r"\ " S S\"\!5      5       r#\!RH                  \!RJ                  \!RL                  \!RN                  \!RP                  4 V s0 s H(  n U \RR                  \RR                  \RR                  4/_M*     sn \!RH                  \!RT                  \!RJ                  \!RL                  \!RN                  \!RP                  4 V s0 s Hl  n U \RV                  \RV                  \RV                  4\RX                  \RX                  \RX                  4\RZ                  \RZ                  \RZ                  4/_Mn     sn \!RH                  \!RT                  \!RJ                  \!RL                  \!RN                  4 V s0 s H  n U \RV                  \RZ                  \RZ                  4\RZ                  \RV                  \RZ                  4\RV                  \RX                  \RX                  4\RX                  \RV                  \RX                  4/_M     sn \!R\                  \!R^                  \!R`                  \!Rb                  \!Rd                  4 V s0 s H(  n U \RV                  \RV                  \RV                  4/_M*     sn \!RH                  \!RT                  \!RJ                  \!RL                  \!RN                  \!RP                  4 V Vs0 s H8  n \RV                  \RZ                  \RX                  4  H  nU U\	U4\	X4/_M     M:     snn \!RH                  \Rf                  \Rh                  \Rj                  4\Rj                  \Rh                  \Rj                  4\Rh                  \Rf                  \Rj                  4\Rh                  \Rj                  \Rj                  4\Rh                  \Rh                  \Rh                  4\Rl                  \Rh                  \Rl                  4\Rh                  \Rl                  \Rl                  4/0\!RT                  \Rf                  \Rh                  \Rj                  4\Rj                  \Rh                  \Rj                  4\Rf                  \Rf                  \Rh                  4\Rf                  \Rj                  \Rh                  4\Rj                  \Rf                  \Rh                  4\Rj                  \Rj                  \Rh                  4\Rh                  \Rh                  \Rh                  4\Rl                  \Rh                  \Rl                  4\Rl                  \Rl                  \Rh                  4/	0/r7\" \85      r9S r:\7 H5  r;\;Ry                  5        H  u  r=r>\> H  u  r?r@rA\:" \?\=\@\A5        M     M      M7     \R                  " SS9S 5       rC " S S\ \#5      rD " S S\D5      rE " S S\D5      rF\" S S!9 " S" S#\!5      5       rG " S$ S%\G5      rH " S& S'\G5      rI\" S(S!9 " S) S*\ \#5      5       rJ\" S+S!9 " S, S-\ \#5      5       rK " S. S/\#5      rL " S0 S1\#5      rM " S2 S3\#5      rN " S4 S5\#5      rO " S6 S7\#5      rP " S8 S9\J5      rQ " S: S;\J5      rR\" S<S!9 " S= S>\ \#5      5       rS " S? S@\S5      rT\" SAS!9 " SB SC\#5      5       rU\" SDS!9 " SE SF\ \#5      5       rV " SG SH\"\!5      rW " SI SJ\W5      rX\" SKS!9 " SL SM\#5      5       rY " SN SO\ \#5      rZ " SP SQ\#5      r[ " SR SS\[5      r\ " ST SU\[5      r]gs  sn f s  sn f s  sn f s  sn f s  snn f )V    N)defaultdictDecimal)NoneType)UUID)EmptyResultSet
FieldErrorFullResultSet)DatabaseErrorNotSupportedError
connection)fields)
LOOKUP_SEP)Q)deconstructible)cached_property)make_hashablec                       \ rS rSrSrS rSrg)SQLiteNumericMixin   zd
Some expressions with output_field=DecimalField() must be cast to
numeric to be properly filtered.
c                     U R                   " X40 UD6u  pE U R                  R                  5       S:X  a  SU-  nXE4$ ! [         a     XE4$ f = f)NDecimalFieldz(CAST(%s AS NUMERIC)))as_sqloutput_fieldget_internal_typer	   )selfcompilerr   extra_contextsqlparamss         O/var/www/html/venv/lib/python3.13/site-packages/django/db/models/expressions.py	as_sqliteSQLiteNumericMixin.as_sqlite   sc    kk(H-H	  224F-3 {  	{	s   #= 
AA N)__name__
__module____qualname____firstlineno____doc__r"   __static_attributes__r$       r!   r   r      s    
r+   r   c                       \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S(r*g))*
Combinable$   zi
Provide the ability to combine one or two objects with
some connector. For example F('foo') + F('bar').
+-*/^z%%&|z<<z>>#c                 x    [        US5      (       d  [        U5      nU(       a  [        XU 5      $ [        XU5      $ Nresolve_expression)hasattrValueCombinedExpression)r   other	connectorreverseds       r!   _combineCombinable._combine=   s6    u233%LE%e==!$599r+   c                 <    U R                  SU R                  S5      $ )NFr@   MULr   s    r!   __neg__Combinable.__neg__J   s    }}R511r+   c                 :    U R                  XR                  S5      $ NFr@   ADDr   r=   s     r!   __add__Combinable.__add__M       }}UHHe44r+   c                 :    U R                  XR                  S5      $ rJ   r@   SUBrM   s     r!   __sub__Combinable.__sub__P   rP   r+   c                 :    U R                  XR                  S5      $ rJ   rD   rM   s     r!   __mul__Combinable.__mul__S   rP   r+   c                 :    U R                  XR                  S5      $ rJ   r@   DIVrM   s     r!   __truediv__Combinable.__truediv__V   rP   r+   c                 :    U R                  XR                  S5      $ rJ   r@   MODrM   s     r!   __mod__Combinable.__mod__Y   rP   r+   c                 :    U R                  XR                  S5      $ rJ   r@   POWrM   s     r!   __pow__Combinable.__pow__\   rP   r+   c                     [        U SS5      (       a)  [        USS5      (       a  [        U 5      [        U5      -  $ [        S5      eNconditionalFFUse .bitand(), .bitor(), and .bitxor() for bitwise logical operations.getattrr   NotImplementedErrorrM   s     r!   __and__Combinable.__and___   C    4..75-QV3W3WT7QuX%%!T
 	
r+   c                 :    U R                  XR                  S5      $ rJ   )r@   BITANDrM   s     r!   bitandCombinable.bitandf       }}UKK77r+   c                 :    U R                  XR                  S5      $ rJ   )r@   BITLEFTSHIFTrM   s     r!   bitleftshiftCombinable.bitleftshifti   s    }}U$5$5u==r+   c                 :    U R                  XR                  S5      $ rJ   )r@   BITRIGHTSHIFTrM   s     r!   bitrightshiftCombinable.bitrightshiftl   s    }}U$6$6>>r+   c                     [        U SS5      (       a)  [        USS5      (       a  [        U 5      [        U5      -  $ [        S5      eri   rl   rM   s     r!   __xor__Combinable.__xor__o   rq   r+   c                 :    U R                  XR                  S5      $ rJ   )r@   BITXORrM   s     r!   bitxorCombinable.bitxorv   rv   r+   c                     [        U SS5      (       a)  [        USS5      (       a  [        U 5      [        U5      -  $ [        S5      eri   rl   rM   s     r!   __or__Combinable.__or__y   rq   r+   c                 :    U R                  XR                  S5      $ rJ   )r@   BITORrM   s     r!   bitorCombinable.bitor   s    }}UJJ66r+   c                 :    U R                  XR                  S5      $ NTrK   rM   s     r!   __radd__Combinable.__radd__       }}UHHd33r+   c                 :    U R                  XR                  S5      $ r   rR   rM   s     r!   __rsub__Combinable.__rsub__   r   r+   c                 :    U R                  XR                  S5      $ r   rD   rM   s     r!   __rmul__Combinable.__rmul__   r   r+   c                 :    U R                  XR                  S5      $ r   rZ   rM   s     r!   __rtruediv__Combinable.__rtruediv__   r   r+   c                 :    U R                  XR                  S5      $ r   r_   rM   s     r!   __rmod__Combinable.__rmod__   r   r+   c                 :    U R                  XR                  S5      $ r   rd   rM   s     r!   __rpow__Combinable.__rpow__   r   r+   c                     [        S5      eNrk   rn   rM   s     r!   __rand__Combinable.__rand__       !T
 	
r+   c                     [        S5      er   r   rM   s     r!   __ror__Combinable.__ror__   r   r+   c                     [        S5      er   r   rM   s     r!   __rxor__Combinable.__rxor__   r   r+   c                     [        U 5      $ N)NegatedExpressionrF   s    r!   
__invert__Combinable.__invert__   s     &&r+   r$   N)+r%   r&   r'   r(   r)   rL   rS   rE   r[   re   r`   rs   r   rx   r|   r   r@   rG   rN   rT   rW   r\   ra   rf   ro   rt   ry   r}   r   r   r   r   r   r   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                   d   \ rS rSrSr\rSrSrSr	Sr
SrS(S jrS rS rS	 rS
 rS rS r\S 5       r\S 5       r\S 5       r\S 5       r S)S jr\S 5       r\S 5       r\S 5       r\S 5       rS r\S 5       r \S 5       r!S r"S r#S r$S r%S r&S r'S r(S  r)S! r*S" r+S# r,S$ r-S% r.S& r/S'r0g)*BaseExpression   z%Base class for all query expressions.FTNc                     Ub  Xl         g g r   r   r   r   s     r!   __init__BaseExpression.__init__   s    # , $r+   c                 ^    U R                   R                  5       nUR                  SS 5        U$ )Nconvert_value)__dict__copypop)r   states     r!   __getstate__BaseExpression.__getstate__   s'    ""$		/4(r+   c                     U R                   U R                  L a  / OU R                   /U R                  R                  U5      -   $ r   )r   _convert_value_noopr   get_db_convertersr   r   s     r!   r    BaseExpression.get_db_converters   sG     !!T%=%== $$%//
;	< 	<r+   c                     / $ r   r$   rF   s    r!   get_source_expressions%BaseExpression.get_source_expressions       	r+   c                     U(       a   eg r   r$   r   exprss     r!   set_source_expressions%BaseExpression.set_source_expressions   s    y5r+   c                     U Vs/ s HA  n[        US5      (       a  UO*[        U[        5      (       a  [        U5      O
[	        U5      PMC     sn$ s  snf r8   )r:   
isinstancestrFr;   )r   expressionsargs      r!   _parse_expressions!BaseExpression._parse_expressions   s\     #
 # 3 455  *3 4 4af%*F #
 	
 
s   AAc                     [        S5      e)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   BaseExpression.as_sql   s    4 ""FGGr+   c                 B    [        S U R                  5        5       5      $ )Nc              3   J   #    U  H  o=(       a    UR                   v   M     g 7fr   )contains_aggregate.0exprs     r!   	<genexpr>4BaseExpression.contains_aggregate.<locals>.<genexpr>   s       
9V,T,,,9V   !#anyr   rF   s    r!   r   !BaseExpression.contains_aggregate   s%     
9=9T9T9V
 
 	
r+   c                 B    [        S U R                  5        5       5      $ )Nc              3   J   #    U  H  o=(       a    UR                   v   M     g 7fr   )contains_over_clauser   s     r!   r   6BaseExpression.contains_over_clause.<locals>.<genexpr>   s       
;X4.T...;Xr   r   rF   s    r!   r   #BaseExpression.contains_over_clause   s%     
;?;V;V;X
 
 	
r+   c                 B    [        S U R                  5        5       5      $ )Nc              3   L   #    U  H  nU=(       a    UR                   v   M     g 7fr   )contains_column_referencesr   s     r!   r   <BaseExpression.contains_column_references.<locals>.<genexpr>   s%      
5 4T4445s   "$r   rF   s    r!   r   )BaseExpression.contains_column_references   %     
335
 
 	
r+   c                 B    [        S U R                  5        5       5      $ )Nc              3   t   #    U  H.  nU=(       a     [        US S5      =(       d    UR                  v   M0     g7f)subqueryFN)rm   contains_subqueryr   s     r!   r   3BaseExpression.contains_subquery.<locals>.<genexpr>  s3      
5 QgdJ6P$:P:PQ5s   68r   rF   s    r!   r    BaseExpression.contains_subquery  r   r+   c                     U R                  5       nXFl        UR                  UR                  5        Vs/ s H  nU(       a  UR	                  XX45      OSPM      sn5        U$ s  snf )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   r9   )r   queryallow_joinsreuse	summarizefor_savecr   s           r!   r9   !BaseExpression.resolve_expression  sr    " IIK 	   446 7D  ++EQ 7		
 s   %A"c                 J    [        U R                  [        R                  5      $ r   )r   r   r   BooleanFieldrF   s    r!   rj   BaseExpression.conditional+  s    $++V-@-@AAr+   c                     U R                   $ r   r   rF   s    r!   fieldBaseExpression.field/  s       r+   c                 P    U R                  5       nUc  SU l        [        S5      eU$ )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   BaseExpression.output_field3  s2     11326D/STTr+   c                 `     U R                   $ ! [         a    U R                  (       d  e  gf = f)zn
Return the output field of this expression, or None if
_resolve_output_field() didn't return an output type.
N)r   r	   r	  rF   s    r!   _output_field_or_none$BaseExpression._output_field_or_none<  s3    	$$$ 	66 7	s    --c           	         S U R                  5        5       nU Hd  nU HY  n[        X#R                  5      (       a  M  [        SUR                  R                  < SUR                  R                  < S35      e   Us  $    g)aE  
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   .   #    U  H  oc  M  Uv   M     g 7fr   r$   )r   sources     r!   r   7BaseExpression._resolve_output_field.<locals>.<genexpr>V  s      
!9vFF!9s   	z!Expression contains mixed types: , . You must set output_field.N)get_source_fieldsr   	__class__r	   r%   )r   sources_iterr   r  s       r!   r  $BaseExpression._resolve_output_fieldH  s{    
!%!7!7!9
 )L&!,0@0@AA$ )22;;",,55	  '   )r+   c                     U $ r   r$   value
expressionr   s      r!   r   "BaseExpression._convert_value_noopf  s    r+   c                     U R                   nUR                  5       nUS:X  a  S $ UR                  S5      (       a  S $ US:X  a  S $ U R                  $ )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                 "    U c  S $ [        U 5      $ r   )floatr  s      r!   <lambda>.BaseExpression.convert_value.<locals>.<lambda>t  s    75<7r+   IntegerFieldc                 "    U c  S $ [        U 5      $ r   )intr  s      r!   r!  r"  x  s    53u:5r+   r   c                 "    U c  S $ [        U 5      $ r   r   r  s      r!   r!  r"  |  s    975>9r+   )r   r   endswithr   )r   r  internal_types      r!   r   BaseExpression.convert_valuej  sn     !!//1L(  ##N33  n,  '''r+   c                 8    U R                   R                  U5      $ r   )r   
get_lookup)r   lookups     r!   r+  BaseExpression.get_lookup  s      ++F33r+   c                 8    U R                   R                  U5      $ r   )r   get_transformr   names     r!   r/  BaseExpression.get_transform  s      ..t44r+   c                     U R                  5       nUR                  U R                  5        Vs/ s H  nUb  UR                  U5      OS PM     sn5        U$ s  snf r   )r   r   r   relabeled_clone)r   
change_mapclonees       r!   r4  BaseExpression.relabeled_clone  sa    		$$ 4466A 23!!*-DH6	
 s    Ac                     UR                  U 5      =n(       a  U$ U R                  5       nUR                  5       nUR                  U Vs/ s H  nU(       a  UR	                  U5      OS PM     sn5        U$ s  snf r   )getr   r   r   replace_expressions)r   replacementsreplacementr6  source_expressionsr   s         r!   r;  "BaseExpression.replace_expressions  s    &**400;0		"99;$$ /.D ;?((6DH.	
 s   
$A7c                 l    [        5       nU R                  5        H  nXR                  5       -  nM     U$ r   )setr   get_refs)r   refsr   s      r!   rB  BaseExpression.get_refs  s/    u//1DMMO#D 2r+   c                 .    [         R                   " U 5      $ r   r   rF   s    r!   r   BaseExpression.copy      yyr+   c           	      
   U R                  5       nUR                  U R                  5        Vs/ s HB  n[        U[        5      (       a  [	        U UR
                   35      OUR                  U5      PMD     sn5        U$ s  snf r   )r   r   r   r   r   r1  prefix_references)r   prefixr6  r   s       r!   rJ   BaseExpression.prefix_references  s    		$$ !779 :D "$** ,-//78 :		
 s   A	B c                     U R                   (       d  U /$ / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ r   )r   r   extendget_group_by_colsr   colsr  s      r!   rO   BaseExpression.get_group_by_cols  sD    &&6M113FKK0023 4r+   c                 `    U R                  5        Vs/ s H  oR                  PM     sn$ s  snf )z9Return the underlying field types used by this aggregate.)r   r  )r   r7  s     r!   r   BaseExpression.get_source_fields  s)    151L1L1NO1NA''1NOOOs   +c                     [        U 40 UD6$ r   OrderByr   kwargss     r!   ascBaseExpression.asc      t&v&&r+   c                     [        U 4SS0UD6$ N
descendingTrV  rX  s     r!   descBaseExpression.desc      t7777r+   c                     U $ r   r$   rF   s    r!   reverse_orderingBaseExpression.reverse_ordering      r+   c              #      #    U v   U R                  5        H;  nU(       d  M  [        US5      (       a  UR                  5        Sh  vN   M7  Uv   M=     g N7f)zQ
Recursively yield this expression and all subexpressions, in
depth-first order.
flattenN)r   r:   rh  )r   r   s     r!   rh  BaseExpression.flatten  sJ     
 
//1Dt4++#||~--J 2 .s   A$AAAc                 v    [        U R                  S5      (       a  U R                  R                  XU5      $ X#4$ )zn
Custom format for select clauses. For example, EXISTS expressions need
to be wrapped in CASE WHEN on Oracle.
select_format)r:   r   rk  r   r   r   r    s       r!   rk  BaseExpression.select_format  s8    
 4$$o66$$228&II{r+   )r	  r   r   NTNFF)1r%   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   r9   propertyrj   r  r   r  r  staticmethodr   r   r+  r/  r4  r;  rB  r   rJ  rO  r  rZ  r`  rd  rh  rk  r*   r$   r+   r!   r   r      sl   /+J%*"JO-
<
H8 
 

 
 

 
 
 
 
 SX> B B ! !   	 	 <   ( (,45P'8r+   r   c                   4    \ rS rSrSr\S 5       rS rS rSr	g)
Expressioni  z:An expression that can be combined with other expressions.c                 J   [         R                  " U R                  5      nU R                  u  p#UR                  " U0 UD6nUR                  5         UR                  R                  5       nU R                  /nU H  u  px[        U[        R                  5      (       a[  UR                  (       a>  UR                  (       a-  UR                  R                  R                  UR                  4nO[!        U5      nO[#        U5      nUR%                  Xx45        M     ['        U5      $ r   )inspect	signaturer   _constructor_argsbind_partialapply_defaults	argumentsitemsr  r   r   Fieldr1  model_metalabeltyper   appendtuple)	r   constructor_signatureargsrY  rz  r~  identityr   r  s	            r!   r  Expression.identity  s     ' 1 1$-- @--)66GG	  "''--/	NN##JC%..::%++"[[..44ejjAE KE%e,OOSL) $ Xr+   c                 j    [        U[        5      (       d  [        $ UR                  U R                  :H  $ r   )r   rw  ro  r  rM   s     r!   __eq__Expression.__eq__  s(    %,,!!~~..r+   c                 ,    [        U R                  5      $ r   )hashr  rF   s    r!   __hash__Expression.__hash__  s    DMM""r+   r$   N)
r%   r&   r'   r(   r)   r   r  r  r  r*   r$   r+   r!   rw  rw    s!    D $/
#r+   rw  c                 8    [         U   R                  XU45        g)z
Register combinable types:
    lhs <connector> rhs -> result
e.g.
    register_combinable_fields(
        IntegerField, Combinable.ADD, FloatField, FloatField
    )
N)_connector_combinatorsr  )lhsr>   rhsresults       r!   register_combinable_fieldsr    s     9%,,c-?@r+      )maxsizec                     [         R                  U S5      nU H,  u  pEn[        X5      (       d  M  [        X%5      (       d  M*  Us  $    g )Nr$   )r  r:  
issubclass)r>   lhs_typerhs_typecombinatorscombinator_lhs_typecombinator_rhs_typecombined_types          r!   _resolve_combined_typer    sH    (,,Y;KCN?-h44:
 :
 ! 	 DOr+   c                   l   ^  \ rS rSrSU 4S jjrS rS rS rS rS r	S r
 SS	 jr\S
 5       rSrU =r$ )r<   i  c                 D   > [         TU ]  US9  X l        Xl        X0l        g Nr   )superr   r>   r  r  )r   r  r>   r  r   r  s        r!   r   CombinedExpression.__init__  s"    l3"r+   c                 N    SR                  U R                  R                  U 5      $ )Nz<{}: {}>)formatr  r%   rF   s    r!   __repr__CombinedExpression.__repr__  s      !8!8$??r+   c                 d    SR                  U R                  U R                  U R                  5      $ )Nz{} {} {})r  r  r>   r  rF   s    r!   __str__CombinedExpression.__str__  s#      4>>488DDr+   c                 2    U R                   U R                  /$ r   r  r  rF   s    r!   r   )CombinedExpression.get_source_expressions  s    $((##r+   c                 "    Uu  U l         U l        g r   r  r   s     r!   r   )CombinedExpression.set_source_expressions  s    "$(r+   c           	         [        U R                  [        U R                  R                  5      [        U R
                  R                  5      5      nUcp  [        SU R                  < SU R                  R                  R                  R                   SU R
                  R                  R                  R                   S35      eU" 5       $ )NzCannot infer type of z# expression involving these types: r  r  )
r  r>   r  r  r  r  r	   r   r  r%   )r   r  s     r!   r  (CombinedExpression._resolve_output_field  s     /NN//0//0

  ''9 :((//99BBC288((22;;< = !  r+   c                 b   / n/ nUR                  U R                  5      u  pVUR                  U5        UR                  U5        UR                  U R                  5      u  pVUR                  U5        UR                  U5        SnUR
                  R                  U R                  U5      nXu-  U4$ Nz(%s))compiler  r  rN  r  opscombine_expressionr>   )r   r   r   r   expression_paramsr   r    expression_wrappers           r!   r   CombinedExpression.as_sql  s    &&txx03  (&&txx03  (#nn//L!'):::r+   c                 
   U R                   R                  XX4U5      nU R                  R                  XX4U5      n[        U [        [
        45      (       d   UR                  R                  5       n UR                  R                  5       n	SX1;   aC  X:w  a>  [	        U R                   U R                  U R                  5      R                  UUUUU5      $ 1 Skn
U R                  U R                  :X  a=  X;   a8  X:X  a3  [        U R                   U R                  5      R                  UUUUU5      $ U R                  5       nXKl        Xkl         X{l        U$ ! [        [        4 a    S n Nf = f! [        [        4 a    S n	 Nf = f)NDurationField>   	DateField	TimeFieldDateTimeField)r  r9   r  r   DurationExpressionTemporalSubtractionr   r   AttributeErrorr	   r>   rS   r   r   )r   r   r   r   r   r   r  r  r  r  datetime_fieldsr   s               r!   r9   %CombinedExpression.resolve_expression  s|    hh))(
 hh))(
 $!35H IJJ ++==? ++==? 8"668;O)HHdnndhh$$ JO$((*/(*488TXX>QQ  IIK C #J/    #J/   s$   E 2E- E*)E*-FFc                 h    U R                   R                  =(       a    U R                  R                  $ r   )r  rs  r  rF   s    r!   rs  "CombinedExpression.allowed_default  s!    xx''DDHH,D,DDr+   )r>   r  r  r   rn  )r%   r&   r'   r(   r   r  r  r   r   r  r   r9   r   rs  r*   __classcell__r  s   @r!   r<   r<     sK    @E$#"; SX-^ E Er+   r<   c                   4   ^  \ rS rSrS rU 4S jrS rSrU =r$ )r  i  c                      UR                   nUR                  5       S:X  a0  UR                  U5      u  pVUR                  R	                  U5      U4$  UR                  U5      $ ! [
         a     Nf = f)Nr  )r   r   r  r  format_for_duration_arithmeticr	   )r   sider   r   outputr   r    s          r!   r  DurationExpression.compile  s~    	R&&F '')_<&..t4!~~DDSI6QQ = %%  		s   A$ $
A10A1c                   > UR                   R                  (       a  [        TU ]  X5      $ UR                  R                  U 5        / n/ nU R                  U R                  X5      u  pVUR                  U5        UR                  U5        U R                  U R                  X5      u  pVUR                  U5        UR                  U5        SnUR                  R                  U R                  U5      nXu-  U4$ r  )featureshas_native_duration_fieldr  r   r  check_expression_supportr  r  r  rN  r  combine_duration_expressionr>   )	r   r   r   r   r  r   r    r  r  s	           r!   r   DurationExpression.as_sql  s    887>(77//5ll488XB3  (ll488XB3  (#nn88U!'):::r+   c                    U R                   " X40 UD6u  pEU R                  [        R                  [        R                  1;   at   U R
                  R                  R                  5       nU R                  R                  R                  5       n1 SknXh;  d  Xx;  a  [        SU R                   S35      e XE4$ XE4$ ! [        [        4 a     XE4$ f = f)N>   r  r   r#  r  zInvalid arguments for operator .)r   r>   r-   rE   r[   r  r   r   r  r   r  r	   )	r   r   r   r   r   r    r  r  allowed_fieldss	            r!   r"   DurationExpression.as_sqlite  s    kk(H-H>>jnnjnn==8800BBD8800BBD" 1X5S'9$..9IK  6T {s{ #J/  {s   AB; ;CCr$   )	r%   r&   r'   r(   r  r   r"   r*   r  r  s   @r!   r  r    s    	&;" r+   r  c                   P   ^  \ rS rSr\R
                  " 5       rU 4S jrS rSr	U =r
$ )r  i4  c                 :   > [         TU ]  XR                  U5        g r   )r  r   rS   )r   r  r  r  s      r!   r   TemporalSubtraction.__init__7  s    hh,r+   c                     UR                   R                  U 5        UR                  U R                  5      nUR                  U R                  5      nUR                   R                  U R                  R                  R                  5       X45      $ r   )r  r  r  r  r  subtract_temporalsr   r   )r   r   r   r  r  s        r!   r   TemporalSubtraction.as_sql:  sk    //5txx(txx(~~00HH!!335s
 	
r+   r$   )r%   r&   r'   r(   r   r  r   r   r   r*   r  r  s   @r!   r  r  4  s     '')L-
 
r+   r  zdjango.db.models.F)pathc                   X    \ rS rSrSrSrS rS r SS jrS r	S	 r
S
 rS rS rS rSrg)r   iC  zDAn object capable of resolving references to existing query objects.Fc                     Xl         g)zF
Arguments:
 * name: the name of the field this expression references
Nr1  r0  s     r!   r   
F.__init__I  s	    
 	r+   c                 b    SR                  U R                  R                  U R                  5      $ N{}({}))r  r  r%   r1  rF   s    r!   r  
F.__repr__P  s!    t~~66		BBr+   Nc                 <    UR                  U R                  X#U5      $ r   )resolve_refr1  r   r   r   r   r   r   s         r!   r9   F.resolve_expressionS  s       K	JJr+   c                 $    UR                  X 5      $ r   )r:  )r   r<  s     r!   r;  F.replace_expressionsX  s    ++r+   c                     [        U 40 UD6$ r   rV  rX  s     r!   rZ  F.asc[  r\  r+   c                     [        U 4SS0UD6$ r^  rV  rX  s     r!   r`  F.desc^  rb  r+   c                 t    U R                   UR                   :H  =(       a    U R                  UR                  :H  $ r   )r  r1  rM   s     r!   r  F.__eq__a  s'    ~~0LTYY%**5LLr+   c                 ,    [        U R                  5      $ r   )r  r1  rF   s    r!   r  
F.__hash__d  s    DIIr+   c                 .    [         R                   " U 5      $ r   rF  rF   s    r!   r   F.copyg  rH  r+   r  rn  )r%   r&   r'   r(   r)   rs  r   r  r9   r;  rZ  r`  r  r  r   r*   r$   r+   r!   r   r   C  sA    NOC SXK
,'8Mr+   r   c                   F   ^  \ rS rSrSrSrSrS rU 4S jrS r	S r
SrU =r$ )	ResolvedOuterRefik  z
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                     [        S5      e)NzXThis queryset contains a reference to an outer query and may only be used in a subquery.)
ValueErrorr   r  rY  s      r!   r   ResolvedOuterRef.as_sqlv  s    *
 	
r+   c                    > [         TU ]  " U0 UD6nUR                  (       a  [        SU R                   S35      e[
        U R                  ;   Ul        U$ )Nz<Referencing outer query window expression is not supported: r  )r  r9   r   r   r1  r   possibly_multivalued)r   r  rY  colr  s       r!   r9   #ResolvedOuterRef.resolve_expression|  sX    g($9&9###N99+Q   $.#: 
r+   c                     U $ r   r$   r   relabelss     r!   r4   ResolvedOuterRef.relabeled_clone  rf  r+   c                     / $ r   r$   rF   s    r!   rO  "ResolvedOuterRef.get_group_by_cols  r   r+   r$   )r%   r&   r'   r(   r)   r   r   r   r9   r4  rO  r*   r  r  s   @r!   r  r  k  s/      
 r+   r  c                   (    \ rS rSrSrSrS rS rSrg)OuterRefi  Fc                     [        U R                  U R                  5      (       a  U R                  $ [        U R                  5      $ r   )r   r1  r  r  r  s      r!   r9   OuterRef.resolve_expression  s0    dii0099		**r+   c                     U $ r   r$   r  s     r!   r4  OuterRef.relabeled_clone  rf  r+   r$   N)	r%   r&   r'   r(   r   r   r9   r4  r*   r$   r+   r!   r  r    s     +
r+   r  zdjango.db.models.Funcc                      ^  \ rS rSrSrSrSrSrSrSS.U 4S jjr	S r
S	 rS
 rS r SS jr   SS jrU 4S jr\S 5       rSrU =r$ )Funci  zAn SQL function call.Nz%(function)s(%(expressions)s)r  r   c                J  > U R                   bn  [        U5      U R                   :w  aU  [        SU R                  R                  < SU R                   < SU R                   S:X  a  SOS< S[        U5      < S3	5      e[
        TU ]  US	9  U R                  " U6 U l        X0l	        g )
N'z' takes exactly     argumentr~  z (z given)r   )
aritylen	TypeErrorr  r%   r  r   r   r>  extra)r   r   r   r  r  s       r!   r   Func.__init__  s    ::!c+&6$**&D NN++JJ"&**/J{B$  	l3"&"9"9;"G
r+   c                    U R                   R                  S U R                   5       5      n0 U R                  EU R	                  5       EnU(       aU  SR                  S [        UR                  5       5       5       5      nSR                  U R                  R                  X5      $ SR                  U R                  R                  U5      $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr   r   r   r   s     r!   r    Func.__repr__.<locals>.<genexpr>       #P8OCHH8O   r  c              3   Z   #    U  H!  u  p[        U5      S -   [        U5      -   v   M#     g7f)=Nr  )r   keyvals      r!   r   r!    s'      :OhcC3S):Os   )+
{}({}, {})r  )

arg_joinerjoinr>  r  _get_repr_optionssortedr  r  r  r%   )r   r  r  s      r!   r  Func.__repr__  s    ###P8O8O#PP:4:::!7!7!9:II :@:O E  &&t~~'>'>LLt~~66==r+   c                     0 $ )zAReturn a dict of extra __init__() options to include in the repr.r$   rF   s    r!   r+  Func._get_repr_options  s    	r+   c                     U R                   $ r   r>  rF   s    r!   r   Func.get_source_expressions  s    &&&r+   c                     Xl         g r   r1  r   s     r!   r   Func.set_source_expressions  s    "'r+   c                     U R                  5       nXFl        [        UR                  5       H%  u  pxUR	                  XX4U5      UR                  U'   M'     U$ r   )r   r   	enumerater>  r9   )	r   r   r   r   r   r   r   posr   s	            r!   r9   Func.resolve_expression  sT     IIK !!"6"67HC(+(>(>Eh)A  % 8 r+   c                    UR                   R                  U 5        / n/ nU R                   H9  n	 UR                  U	5      u  pUR                  U
5        UR                  U5        M;     0 U R                  EUEnUb  X=S'   OUR                  SU R                  5        U=(       d    UR                  SU R                  5      nU=(       d    UR                  SU R                   5      nUR#                  U5      =US'   US'   XM-  U4$ ! [         a;    [        U	S[        5      nU[        L a  e UR                  [        U5      5      u  p GN[         a     UR                  [        S5      5      u  p GN/f = f)Nrp  Tfunctiontemplater)  r   r  )r  r  r>  r  r   rm   ro  r;   r
   r  rN  r  
setdefaultr:  r:  r;  r)  r*  )r   r   r   r:  r;  r)  r   	sql_partsr    r   arg_sql
arg_paramsrp  datas                 r!   r   Func.as_sql  sg    	//5	**C
D&.&6&6s&;# W%MM*% + /$**.. 'OOJ6Btxx
DMMBJ488L$//#J
.8ooi.HH]d7m&&- " V)01>*& *^;&.&6&6u=S7T&U#  D&.&6&6uT{&C#Ds   DAE3
%E32E3c                    > [         TU ]  5       nU R                  S S  Ul        U R                  R                  5       Ul        U$ r   )r  r   r>  r  )r   r   r  s     r!   r   	Func.copy  s8    w|~"&"9"9!"<ZZ__&
r+   c                 :    [        S U R                   5       5      $ )Nc              3   8   #    U  H  oR                   v   M     g 7fr   rs  )r   r  s     r!   r   'Func.allowed_default.<locals>.<genexpr>  s     X@W*--@Wr#  )allr>  rF   s    r!   rs  Func.allowed_default  s    X@W@WXXXr+   )r  r>  rn  )NNN)r%   r&   r'   r(   r)   r:  r;  r)  r  r   r  r+  r   r   r9   r   r   r   rs  r*   r  r  s   @r!   r  r    ss    H.HJE26  >'( SX	 %'N Y Yr+   r  zdjango.db.models.Valuec                   r   ^  \ rS rSrSrSrSrSU 4S jjrS rS r	 SU 4S jjr
S	 rS
 r\S 5       rSrU =r$ )r;   i  z9Represent a wrapped value as a node within an expression.FTc                 ,   > [         TU ]  US9  Xl        g)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   Value.__init__  s     	l3
r+   c                 P    U R                   R                   SU R                  < S3$ )N())r  r%   r  rF   s    r!   r  Value.__repr__  s$    ..))*!DJJ>;;r+   c                 2   UR                   R                  U 5        U R                  nU R                  nUbV  U R                  (       a  UR                  X2S9nOUR                  X2S9n[        US5      (       a  UR                  X1U5      U/4$ Uc  S/ 4$ SU/4$ )N)r   get_placeholderNULLz%s)	r  r  r  r  r   get_db_prep_saveget_db_prep_valuer:   rR  )r   r   r   r'  r   s        r!   r   Value.as_sql  s    //5jj11#}}"33C3O"44S4P|%677#33C:NQTPUUU; 2:cU{r+   c                 6   > [         TU ]  XX4U5      nXVl        U$ r   )r  r9   r   )r   r   r   r   r   r   r   r  s          r!   r9   Value.resolve_expression0  s"     G&u5XV
r+   c                     / $ r   r$   rF   s    r!   rO  Value.get_group_by_cols7  r   r+   c                    [        U R                  [        5      (       a  [        R                  " 5       $ [        U R                  [
        5      (       a  [        R                  " 5       $ [        U R                  [        5      (       a  [        R                  " 5       $ [        U R                  [        5      (       a  [        R                  " 5       $ [        U R                  [        R                  5      (       a  [        R                  " 5       $ [        U R                  [        R                  5      (       a  [        R                  " 5       $ [        U R                  [        R                  5      (       a  [        R                   " 5       $ [        U R                  [        R"                  5      (       a  [        R$                  " 5       $ [        U R                  [&        5      (       a  [        R(                  " 5       $ [        U R                  [*        5      (       a  [        R,                  " 5       $ [        U R                  [.        5      (       a  [        R0                  " 5       $ g r   )r   r  r   r   	CharFieldboolr  r%  r#  r   r  datetimer  dater  timer  	timedeltar  r   r   bytesBinaryFieldr   	UUIDFieldrF   s    r!   r  Value._resolve_output_field:  s{   djj#&&##%%djj$''&&((djj#&&&&((djj%(($$&&djj("3"344''))djj(--00##%%djj(--00##%%djj("4"455''))djj'**&&((djj%((%%''djj$''##%% (r+   c                     U R                   $ r   r  rF   s    r!   rp  Value.empty_result_set_valueR  s    zzr+   rg  r   rn  )r%   r&   r'   r(   r)   r   rs  r   r  r   r9   rO  r  rt  rp  r*   r  r  s   @r!   r;   r;     sK    C HO
<& SX&0  r+   r;   c                   T   ^  \ rS rSrSrS	U 4S jjrS rS rS r S
U 4S jjr	Sr
U =r$ )RawSQLiW  Tc                 l   > Uc  [         R                  " 5       nXsU l        U l        [        TU ]  US9  g r  )r   r  r   r    r  r   )r   r   r    r   r  s       r!   r   RawSQL.__init__Z  s2    !<<>L #$+l3r+   c                 x    SR                  U R                  R                  U R                  U R                  5      $ Nr(  )r  r  r%   r   r    rF   s    r!   r  RawSQL.__repr__`  s)    ""4>>#:#:DHHdkkRRr+   c                 8    SU R                   -  U R                  4$ r  )r   r    r   s      r!   r   RawSQL.as_sqlc  s     $++--r+   c                     U /$ r   r$   rF   s    r!   rO  RawSQL.get_group_by_colsf  	    vr+   c                   > UR                   (       a  UR                   R                  R                  5        H~  nUR                  R                   Ha  nUR	                  5       u  pU	R                  5       U R                  R                  5       ;   d  MC  UR                  UR                  X#U5          M|     M     [        T
U ])  XX4U5      $ r   )r  r  get_parent_listlocal_fieldsget_attname_columnlowerr   r  r1  r  r9   )r   r   r   r   r   r   parentparent_field_column_namer  s             r!   r9   RawSQL.resolve_expressioni  s     ;;++++;;=$*LL$=$=L%1%D%D%FNA"((*dhhnn.>>))(--{9  %> > w)(
 	
r+   )r    r   r   rn  )r%   r&   r'   r(   rs  r   r  r   rO  r9   r*   r  r  s   @r!   rj  rj  W  s.    O4S. SX
 
r+   rj  c                        \ rS rSrS rS rSrg)Stari{  c                     g)Nz'*'r$   rF   s    r!   r  Star.__repr__|  s    r+   c                 
    S/ 4$ )Nr1   r$   r   s      r!   r   Star.as_sql  s    Bwr+   r$   N)r%   r&   r'   r(   r  r   r*   r$   r+   r!   r  r  {  s    r+   r  c                       \ rS rSrSrS rSrg)DatabaseDefaulti  zCPlaceholder expression for the database default in an insert query.c                 
    S/ 4$ )NDEFAULTr$   r   s      r!   r   DatabaseDefault.as_sql  s    "}r+   r$   N)r%   r&   r'   r(   r)   r   r*   r$   r+   r!   r  r    s
    Mr+   r  c                   R   ^  \ rS rSrSrSrSU 4S jjrS rS rS r	S r
S	 rS
rU =r$ )Coli  TFc                 F   > Uc  Un[         TU ]  US9  XsU l        U l        g r  )r  r   aliastarget)r   r  r  r   r  s       r!   r   Col.__init__  s,    !Ll3"'
DKr+   c                     U R                   U R                  p!U(       a  U[        U5      4O[        U5      4nSR                  U R                  R
                  SR                  U5      5      $ )Nr  r  )r  r  r   r  r  r%   r*  )r   r  r  identifierss       r!   r  Col.__repr__  sM    

DKKv.3uc&k*#f+t~~66		+8NOOr+   c                     U R                   U R                  R                  pCU(       a  X44OU4nSR                  [	        UR
                  U5      5      nU/ 4$ )Nr  )r  r  columnr*  mapquote_name_unless_alias)r   r   r   r  r  r  r   s          r!   r   
Col.as_sql  sH    

DKK$6$6v).uoVIhhs8;;[IJBwr+   c                     U R                   c  U $ U R                  UR                  U R                   U R                   5      U R                  U R                  5      $ r   )r  r  r:  r  r   r  s     r!   r4  Col.relabeled_clone  sF    ::K~~LLTZZ0$++t?P?P
 	
r+   c                     U /$ r   r$   rF   s    r!   rO  Col.get_group_by_cols  rt  r+   c                     U R                   U R                  :X  a  U R                  R                  U5      $ U R                  R                  U5      U R                   R                  U5      -   $ r   )r  r   r   r   s     r!   r   Col.get_db_converters  s^    ;;$+++$$66zBB  22
KK))*56 	6r+   )r  r  r   )r%   r&   r'   r(   r   r  r   r  r   r4  rO  r   r*   r  r  s   @r!   r  r    s3    !% 0P

6 6r+   r  c                   b   ^  \ rS rSrSrU 4S jrS rS rS r SS jr	S r
S	 rS
 rS rSrU =r$ )Refi  zr
Reference to column alias of the query. For example, Ref('sum_cost') in
qs.annotate(sum_cost=Sum('cost')) query.
c                 >   > [         TU ]  5         XsU l        U l        g r   )r  r   rC  r  )r   rC  r  r  s      r!   r   Ref.__init__  s    !%	4;r+   c                 x    SR                  U R                  R                  U R                  U R                  5      $ rn  )r  r  r%   rC  r  rF   s    r!   r  Ref.__repr__  s)    ""4>>#:#:DIIt{{SSr+   c                     U R                   /$ r   r  rF   s    r!   r   Ref.get_source_expressions  s    }r+   c                     Uu  U l         g r   r  r   s     r!   r   Ref.set_source_expressions  s    r+   c                     U $ r   r$   r  s         r!   r9   Ref.resolve_expression  s	    
 r+   c                     U R                   1$ r   )rC  rF   s    r!   rB  Ref.get_refs  s    		{r+   c                 f    U R                  5       nU R                  R                  U5      Ul        U$ r   )r   r  r4  )r   r  r6  s      r!   r4  Ref.relabeled_clone  s(    		{{228<r+   c                 P    UR                   R                  U R                  5      / 4$ r   )r  
quote_namerC  r   s      r!   r   
Ref.as_sql  s     ~~((3R77r+   c                     U /$ r   r$   rF   s    r!   rO  Ref.get_group_by_cols  rt  r+   )rC  r  rn  )r%   r&   r'   r(   r)   r   r  r   r   r9   rB  r4  r   rO  r*   r  r  s   @r!   r  r    sB    
.T SX
8 r+   r  c                   B   ^  \ rS rSrSrSrU 4S jrS rS rS r	Sr
U =r$ )	ExpressionListi  z
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                 x   > U(       d"  [        SU R                  R                  -  5      e[        TU ]  " U0 UD6  g )Nz$%s requires at least one expression.)r  r  r%   r  r   r   r   r  r  s      r!   r   ExpressionList.__init__  s9    69P9PP  	+//r+   c                 Z    U R                   R                  S U R                   5       5      $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr   r  r   s     r!   r   )ExpressionList.__str__.<locals>.<genexpr>  r"  r#  )r)  r*  r>  rF   s    r!   r  ExpressionList.__str__  s#    ###P8O8O#PPPr+   c                 (    U R                   " X40 UD6$ r   )r   )r   r   r   r   s       r!   r"   ExpressionList.as_sqlite  s    {{8A=AAr+   c                 v    / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ r   r   rN  rO  )r   group_by_cols	partitions      r!   rO   ExpressionList.get_group_by_cols  s7    446I  !<!<!>? 7r+   r$   )r%   r&   r'   r(   r)   r;  r   r  r"   rO  r*   r  r  s   @r!   r  r    s*     !H0QB r+   r  c                   B   ^  \ rS rSrSrSrU 4S jrU 4S jrS rSr	U =r
$ )OrderByListi  FzORDER BY %(expressions)sc                 8   > S U 5       n[         TU ]  " U0 UD6  g )Nc              3      #    U  H;  n[        U[        5      (       a  US    S:X  a  [        [        USS 5      SS9OUv   M=     g7f)r   r0   r  NTr_  )r   r   rW  r   r   s     r!   r   'OrderByList.__init__.<locals>.<genexpr>  sM      
 $ dC((T!W^ $qr(5 $s   AA)r  r   r  s      r!   r   OrderByList.__init__  s(    
 $
 	+//r+   c                 H   > U R                   (       d  g[        TU ]  " U0 UD6$ )N) r$   )r>  r  r   )r   r  rY  r  s      r!   r   OrderByList.as_sql  s#    &&w~t.v..r+   c                 v    / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ r   r  )r   r  order_bys      r!   rO  OrderByList.get_group_by_cols  s7    335H  !;!;!=> 6r+   r$   )r%   r&   r'   r(   rs  r;  r   r   rO  r*   r  r  s   @r!   r  r    s!    O)H	0/
 r+   r  z"django.db.models.ExpressionWrapperc                   `   ^  \ rS rSrSrU 4S jrS rS rU 4S jrS r	S r
\S	 5       rS
rU =r$ )ExpressionWrapperi  z
An expression that can wrap another expression so that it can provide
extra context to the inner expression, such as the output_field.
c                 ,   > [         TU ]  US9  Xl        g r  )r  r   r  )r   r  r   r  s      r!   r   ExpressionWrapper.__init__  s    l3$r+   c                     US   U l         g Nr   r  r   s     r!   r   (ExpressionWrapper.set_source_expressions      (r+   c                     U R                   /$ r   r  rF   s    r!   r   (ExpressionWrapper.get_source_expressions!        r+   c                    > [        U R                  [        5      (       a;  U R                  R                  5       nU R                  Ul        UR                  5       $ [        TU ]  5       $ r   )r   r  rw  r   r   rO  r  r   r  r  s     r!   rO  #ExpressionWrapper.get_group_by_cols$  sS    dooz22--/J&*&7&7J#//11 w(**r+   c                 8    UR                  U R                  5      $ r   )r  r  r   s      r!   r   ExpressionWrapper.as_sql-  s    00r+   c                 b    SR                  U R                  R                  U R                  5      $ r  )r  r  r%   r  rF   s    r!   r  ExpressionWrapper.__repr__0  s!    t~~66HHr+   c                 .    U R                   R                  $ r   )r  rs  rF   s    r!   rs  !ExpressionWrapper.allowed_default3  s    ...r+   r  )r%   r&   r'   r(   r)   r   r   r   rO  r   r  rt  rs  r*   r  r  s   @r!   r  r    s;    
%#!+1I / /r+   r  c                   V   ^  \ rS rSrSrU 4S jrS rU 4S jr S	U 4S jjrS r	Sr
U =r$ )
r   i8  z1The logical negation of a conditional expression.c                 H   > [         TU ]  U[        R                  " 5       S9  g r  )r  r   r   r  r  s     r!   r   NegatedExpression.__init__;  s    &2E2E2GHr+   c                 6    U R                   R                  5       $ r   )r  r   rF   s    r!   r   NegatedExpression.__invert__>  s    ##%%r+   c                 X  >  [         TU ]  X5      u  p4UR                  R                  nUR                  U R                  5      (       d  SU S3U4$ SU 3U4$ ! [         aF    UR                  R                  nUR
                  (       d   gUR                  [        S5      5      s $ f = f)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_clauser  r;   r  0conditional_expression_supported_in_where_clauser  )r   r   r   r   r    r  r  r  s          r!   r   NegatedExpression.as_sqlA  s    	1'.>KC !!%% CCDOOTTu$:;VCCcU|V##  	1**33HBB ##E$K00		1s   A 1B)B)(B)c                 x   > [         TU ]  XX4U5      n[        UR                  SS5      (       d  [	        S5      eU$ )Nrj   Fz*Cannot negate non-conditional expressions.)r  r9   rm   r  r  )r   r   r   r   r   r   resolvedr  s          r!   r9   $NegatedExpression.resolve_expressionQ  sC     7-(
 x**M5AAHIIr+   c                     UR                   R                  R                  nUR                   R                  R                  (       d(  U" U R
                  5      (       a  SR                  U5      nX#4$ NzCASE WHEN {} THEN 1 ELSE 0 END)r   r  r  r  r  r  r  )r   r   r   r    $expression_supported_in_where_clauses        r!   rk  NegatedExpression.select_format[  s\    
 ##TT 	- ##,,SS4T__EE299#>C{r+   r$   rn  )r%   r&   r'   r(   r)   r   r   r   r9   rk  r*   r  r  s   @r!   r   r   8  s,    ;I&$" SX r+   r   zdjango.db.models.Whenc                   ~   ^  \ rS rSrSrSrSU 4S jjrS rS rS r	S r
S	 r SS
 jrSS jrS r\S 5       rSrU =r$ )Whenik  z"WHEN %(condition)s THEN %(result)sFc                 f  > U(       a/  Uc  [        S0 UD6S p1O[        USS5      (       a  [        U40 UD6S p1Ub  [        USS5      (       a  U(       a  [        S5      e[        U[         5      (       a  U(       d  [	        S5      e[
        TU ]  S S9  Xl        U R                  U5      S   U l	        g )Nrj   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   rm   r  r   r  r  r   	conditionr   r  )r   r  thenlookupsr  s       r!   r   When.__init__q  s     %&\\47M599%&y%<G%<d7GI}e$L$LPW"  i##IPQQd+"--d3A6r+   c                 >    SU R                   < SU R                  < 3$ )NzWHEN z THEN r  r  rF   s    r!   r  When.__str__  s    $(NNDKK@@r+   c                 @    SU R                   R                  < SU < S3$ N<z: >r  r%   rF   s    r!   r  When.__repr__      !^^44d;;r+   c                 2    U R                   U R                  /$ r   r  rF   s    r!   r   When.get_source_expressions  s    ,,r+   c                 "    Uu  U l         U l        g r   r  r   s     r!   r   When.set_source_expressions  s    &+#r+   c                 0    U R                   R                  /$ r   )r  r  rF   s    r!   r  When.get_source_fields  s    1122r+   c                     U R                  5       nXFl        [        UR                  S5      (       a"  UR                  R	                  XX4S5      Ul        UR
                  R	                  XX4U5      Ul        U$ )Nr9   F)r   r   r:   r  r9   r  )r   r   r   r   r   r   r   s          r!   r9   When.resolve_expression  si     IIK 1;; 455++88EeAK 88..(
 r+   c                    UR                   R                  U 5        Un/ nUR                  U R                  5      u  pxXuS'   UR                  U R                  5      u  pXS'   U=(       d    U R
                  nX5-  / UQUQU
Q74$ )Nr  r  )r  r  r  r  r  r;  )r   r   r   r;  r   template_params
sql_paramscondition_sqlcondition_params
result_sqlresult_paramss              r!   r   When.as_sql  s    //5'
*2*:*:4>>*J''4$$,$4$4T[[$A!
$.!,t}}) ,
,
,
 ,
 
 	
r+   c                 v    / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ r   r  rP  s      r!   rO  When.get_group_by_cols  s4    113FKK0023 4r+   c                 h    U R                   R                  =(       a    U R                  R                  $ r   )r  rs  r  rF   s    r!   rs  When.allowed_default  s!    ~~--M$++2M2MMr+   r  NNrn  r   )r%   r&   r'   r(   r;  rj   r   r  r  r   r   r  r9   r   rO  r   rs  r*   r  r  s   @r!   r  r  k  sX    3HK7"A<-,3
 SX
 N Nr+   r  zdjango.db.models.Casec                      ^  \ rS rSrSrSrSrSSS.U 4S jjrS rS	 r	S
 r
S r SS jrU 4S jr SS jrU 4S jr\S 5       rSrU =r$ )Casei  z
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                   > [        S U 5       5      (       d  [        S5      e[        TU ]  U5        [	        U5      U l        U R                  U5      S   U l        X@l        g )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )r   r  )r   cases     r!   r    Case.__init__.<locals>.<genexpr>  s     <ed:dD))es   z.Positional arguments must all be When objects.r   )	rH  r  r  r   listcasesr   r  r  )r   r  r   r$  r  r  s        r!   r   Case.__init__  sT    <e<<<LMM&%[
..w7:
r+   c                 j    SSR                  S U R                   5       5      < SU R                  < 3$ )NzCASE r  c              3   8   #    U  H  n[        U5      v   M     g 7fr   r  )r   r   s     r!   r   Case.__str__.<locals>.<genexpr>  s     1jc!ffjr#  z, ELSE )r*  r$  r  rF   s    r!   r  Case.__str__  s)    II1djj11LL
 	
r+   c                 @    SU R                   R                  < SU < S3$ r  r  rF   s    r!   r  Case.__repr__  r  r+   c                 6    U R                   U R                  /-   $ r   r$  r  rF   s    r!   r   Case.get_source_expressions  s    zzT\\N**r+   c                 "    UGt U l         U l        g r   r-  r   s     r!   r   Case.set_source_expressions  s    $)!T\r+   c                     U R                  5       nXFl        [        UR                  5       H%  u  pxUR	                  XX4U5      UR                  U'   M'     UR
                  R	                  XX4U5      Ul        U$ r   )r   r   r6  r$  r9   r  )	r   r   r   r   r   r   r   r7  r!  s	            r!   r9   Case.resolve_expression  sn     IIK "177+IC22EhAGGCL , II00(
	 r+   c                 L   > [         TU ]  5       nUR                  S S  Ul        U$ r   )r  r   r$  )r   r   r  s     r!   r   	Case.copy  s"    GLN''!*r+   c                 L   UR                   R                  U 5        U R                  (       d  UR                  U R                  5      $ 0 U R
                  EUEn/ n/ nUR                  U R                  5      u  pU R                   H9  n UR                  U5      u  pUR                  U5        UR                  U5        M;     U(       d  X4$ U=(       d    U R                  nUR                  U5      US'   XS'   UR                  U
5        U=(       d    UR                  SU R                  5      nX6-  nU R                  b(  UR                   R!                  U R"                  5      U-  nX4$ ! [         a     M  [         a"    UR                  UR                  5      u  p   M  f = f)Nr$  r  r;  )r  r  r$  r  r  r  r   r
   r  r  rN  case_joinerr*  r:  r;  r  unification_cast_sqlr   )r   r   r   r;  r6  r   r  
case_partsr  default_sqldefault_paramsr!  case_sqlcase_paramsr   s                  r!   r   Case.as_sql  s    	//5zz##DLL119TZZ9=9

&.&6&6t||&D#JJD(0(8(8(>% h'k*  ..!5T%5%5#.#3#3J#? %0	".)M22:t}}M(%%1..55d6G6GH3NC# "   .6.>.>t{{.K+s   	E++
F#8&F#"F#c                 v   > U R                   (       d  U R                  R                  5       $ [        TU ]	  5       $ r   )r$  r  rO  r  )r   r  s    r!   rO  Case.get_group_by_cols  s+    zz<<1133w(**r+   c                 t    U R                   R                  =(       a    [        S U R                   5       5      $ )Nc              3   8   #    U  H  oR                   v   M     g 7fr   rF  )r   case_s     r!   r   'Case.allowed_default.<locals>.<genexpr>  s      4
/9e!!zr#  )r  rs  rH  r$  rF   s    r!   rs  Case.allowed_default  s1    ||++ 
 4
/3zz4
 1
 	
r+   )r$  r  r  rn  r  )r%   r&   r'   r(   r)   r;  r6  r   r  r  r   r   r9   r   r   rO  r   rs  r*   r  r  s   @r!   r  r    sn    
 5HK'+$  
<+* SX @D@+
 
 
r+   r  c                      ^  \ rS rSrSrSrSrSrSrSU 4S jjr	S r
S	 rS
 rU 4S jr\S 5       rS rSS jrS rSrU =r$ )Subqueryi"  z
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                    > [        USU5      R                  5       U l        SU R                  l        X0l        [
        TU ]  U5        g )Nr   T)rm   r6  r   r   r  r  r   )r   querysetr   r  r  s       r!   r   Subquery.__init__-  s:    Xw9??A
"


&r+   c                     U R                   /$ r   r   rF   s    r!   r   Subquery.get_source_expressions4  s    

|r+   c                     US   U l         g r  rK  r   s     r!   r   Subquery.set_source_expressions7  s    1X
r+   c                 .    U R                   R                  $ r   )r   r   rF   s    r!   r  Subquery._resolve_output_field:  s    zz&&&r+   c                 b   > [         TU ]  5       nUR                  R                  5       Ul        U$ r   )r  r   r   r6  )r   r6  r  s     r!   r   Subquery.copy=  s'    kk'')r+   c                 .    U R                   R                  $ r   )r   external_aliasesrF   s    r!   rT  Subquery.external_aliasesB  s    zz***r+   c                 6    U R                   R                  5       $ r   )r   get_external_colsrF   s    r!   rW  Subquery.get_external_colsF  s    zz++--r+   c                     UR                   R                  U 5        0 U R                  EUEnU R                  R	                  X5      u  pgUSS US'   U=(       d    UR                  SU R                  5      nX5-  nX4$ )Nr  rC   r   r;  )r  r  r  r   r   r:  r;  )	r   r   r   r;  r   r  subquery_sqlr  r   s	            r!   r   Subquery.as_sqlI  sz    //59TZZ9=9#'::#4#4X#J &21R&8
#M22:t}}M(r+   c                 4    U R                   R                  U S9$ )N)wrapper)r   rO  rF   s    r!   rO  Subquery.get_group_by_colsS  s    zz++D+99r+   )r  r   r   )r%   r&   r'   r(   r)   r;  r   rp  r   r   r   r   r  r   rt  rT  rW  r   rO  r*   r  r  s   @r!   rF  rF  "  sa    
  H!H''
 + +.: :r+   rF  c                   d   ^  \ rS rSrSr\R                  " 5       rSrU 4S jr	S r
U 4S jrSrU =r$ )ExistsiW  zEXISTS(%(subquery)s)Fc                 f   > [         TU ]  " U40 UD6  U R                  R                  5       U l        g r   )r  r   r   exists)r   rH  rY  r  s      r!   r   Exists.__init__\  s)    ,V,ZZ&&(
r+   c                 t    UR                   R                  R                  (       d  SR                  U5      nX#4$ r  )r   r  r  r  rl  s       r!   rk  Exists.select_format`  s1     ""++RR299#>C{r+   c                    >  [         TU ]  " U/UQ70 UD6$ ! [         aF    UR                  R                  nUR
                  (       d   gUR                  [        S5      5      s $ f = f)N)z1=0r$   F)r  r   r   r   r  r  r  r;   )r   r   r  rY  r  r  s        r!   r   Exists.as_sqlh  sb    	27>(<T<V<< 	2**33HBB ##E%L11		2s    1A'
A'&A'rK  )r%   r&   r'   r(   r;  r   r  r   rp  r   rk  r   r*   r  r  s   @r!   r`  r`  W  s0    %H&&(L")2 2r+   r`  zdjango.db.models.OrderByc                   `    \ rS rSrSrSrSS jrS rS rS r	SS	 jr
S
 rS rS rS rS rSrg)rW  ir  z%(expression)s %(ordering)sFNc                     U(       a  U(       a  [        S5      eUSL d  USL a  [        S5      eX0l        X@l        X l        [	        US5      (       d  [        S5      eXl        g )Nz1nulls_first and nulls_last are mutually exclusiveFz7nulls_first and nulls_last values must be True or None.r9   z%expression must be an expression type)r  nulls_first
nulls_lastr_  r:   r  )r   r  r_  rj  rk  s        r!   r   OrderBy.__init__w  s]    :PQQ%:#6VWW&$$z#788DEE$r+   c                 x    SR                  U R                  R                  U R                  U R                  5      $ )Nz{}({}, descending={}))r  r  r%   r  r_  rF   s    r!   r  OrderBy.__repr__  s.    &--NN##T__doo
 	
r+   c                     US   U l         g r  r  r   s     r!   r   OrderBy.set_source_expressions  r  r+   c                     U R                   /$ r   r  rF   s    r!   r   OrderBy.get_source_expressions  r  r+   c                    U=(       d    U R                   nUR                  R                  (       a.  U R                  (       a  SU-  nOU R                  (       a  SU-  nOU R                  (       a2  U R
                  (       a  UR                  R                  (       d  SU-  nOBU R                  (       a1  U R
                  (       d  UR                  R                  (       d  SU-  nUR                  R                  U 5        UR                  U R                  5      u  pVUU R
                  (       a  SOSS.UEnXcR                  S5      -  nX7-  R                  5       U4$ )	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_modifierrk  rj  r_  order_by_nulls_firstr  r  r  r  countrstrip)r   r   r   r;  r   expression_sqlr    placeholderss           r!   r   OrderBy.as_sql  s   ,t}}??*X5!!+h6J$7$7$L$L88C!!OO
(;(;(P(P<xG//5!)!1!1$//!B("&//u
 

 	..!122'//1699r+   c                 4   UR                   R                  (       dm  UR                  R                  U R                  5      (       aC  U R                  5       n[        [        U R                  SS9SS9Ul        UR                  " X5      $ U R                  X5      $ )NT)r  F)r  )	r  r  r  r  r  r   r  r  r   )r   r   r   r   s       r!   	as_oracleOrderBy.as_oracle  s{     ##JJOO  99;D"T__40DO ;;x44{{800r+   c                 v    / nU R                  5        H"  nUR                  UR                  5       5        M$     U$ r   r  rP  s      r!   rO  OrderBy.get_group_by_cols  s4    113FKK0023 4r+   c                     U R                   (       + U l         U R                  (       a  SU l        S U l        U $ U R                  (       a  SU l        S U l        U $ r   )r_  rj  rk  rF   s    r!   rd  OrderBy.reverse_ordering  sL    "oo-"DO#D  __#D"DOr+   c                     SU l         g rJ   r  rF   s    r!   rZ  OrderBy.asc  s	    r+   c                     SU l         g r   r  rF   s    r!   r`  OrderBy.desc  s	    r+   )r_  r  rj  rk  )FNNr   )r%   r&   r'   r(   r;  rj   r   r  r   r   r   r  rO  rd  rZ  r`  r*   r$   r+   r!   rW  rW  r  s>    ,HK
%

#!:41" r+   rW  c                   z   ^  \ rS rSrSrSrSr    SU 4S jjrS rS r	S r
SS	 jrU 4S
 jrS rS rS rSrU =r$ )Windowi  z %(expression)s OVER (%(window)s)FTc                   > X l         X0l        X@l        [        USS5      (       d"  [	        SUR
                  R                  -  5      eU R                   bN  [        U R                   [        [        45      (       d  U R                   4U l         [        U R                   6 U l         U R                  b  [        U R                  [        [        45      (       a  [        U R                  6 U l        OK[        U R                  [        [        45      (       a  [        U R                  5      U l        O[	        S5      e[        TU ]=  US9  U R!                  U5      S   U l        g )Nrr  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_byr  framerm   r  r  r%   r   r  r#  r  r  r   r   r  r   r   source_expression)r   r  r  r  r  r   r  s         r!   r   Window.__init__  s$    ) 
z#6>>E&&//0 
 (d//%??%)%6%6$8! .0A0A BD==$$--$77 +T]] ;DMMNC+@AA +DMM : H  	l3!%!8!8!DQ!Gr+   c                 .    U R                   R                  $ r   )r  r   rF   s    r!   r  Window._resolve_output_field  s    %%222r+   c                 ^    U R                   U R                  U R                  U R                  /$ r   r  r  r  r  rF   s    r!   r   Window.get_source_expressions  s%    &&(9(94==$**UUr+   c                 :    Uu  U l         U l        U l        U l        g r   r  r   s     r!   r   Window.set_source_expressions  s    OTL 14=$*r+   c                    UR                   R                  U 5        UR                  R                  (       d  [	        S5      eUR                  U R                  5      u  pE/ SpvU R                  b<  U R                  R                  UUSS9u  pUR                  U5        U[        U	5      -  nU R                  b<  UR                  U R                  5      u  pUR                  U
5        U[        U5      -  nU R                  (       a<  UR                  U R                  5      u  pUR                  U5        U[        U5      -  nU=(       d    U R                  nX4SR                  U5      R                  5       S.-  / UQUQ74$ )Nz1This backend does not support window expressions.r$   zPARTITION BY %(expressions)s)r   r   r;  r  )r  window)r  r  r  supports_over_clauser   r  r  r  r   r  r  r  r  r;  r*  strip)r   r   r   r;  expr_sqlr    
window_sqlwindow_paramssql_exprr  	order_sqlorder_params	frame_sqlframe_paramss                 r!   r   Window.as_sql  s^   //5""77#$WXX#++D,B,BC$&M(#'#4#4#;#;!%7 $< $ H
 h'U:..M==$&.&6&6t}}&E#Ii(U<00M::&.&6&6tzz&B#Ii(U<00M,t}} #((::N:T:T:VWW%f%}%
 	
r+   c                 >  > [        U R                  [        R                  5      (       ac  U R	                  5       nUR
                  " 5       n[        R                  " 5       US   l        UR                  " U5        [        [        U]+  X5      $ U R                  X5      $ r  )r   r   r   r   r   r   r  r   r  r  r"   r   )r   r   r   r   r>  r  s        r!   r"   Window.as_sqlite&  s}    d'')<)<==99;D!%!<!<!>171B1B1Dq!.''(:;0FF{{800r+   c           	         SR                  [        U R                  5      U R                  (       a  S[        U R                  5      -   OS[        U R                  =(       d    S5      [        U R
                  =(       d    S5      5      $ )Nz{} OVER ({}{}{})zPARTITION BY r  )r  r   r  r  r  r  rF   s    r!   r  Window.__str__0  sb    !((&&'8<8I8IOc$"3"344r#$

 b!	
 	
r+   c                 @    SU R                   R                  < SU < S3$ r  r  rF   s    r!   r  Window.__repr__8  r  r+   c                     / nU R                   (       a)  UR                  U R                   R                  5       5        U R                  b)  UR                  U R                  R                  5       5        U$ r   )r  rN  rO  r  )r   r  s     r!   rO  Window.get_group_by_cols;  sX      !2!2!D!D!FG==$  !@!@!BCr+   )r  r  r  r  )NNNNr   )r%   r&   r'   r(   r;  r   r   r   r  r   r   r   r"   r  r  rO  r*   r  r  s   @r!   r  r    s[    1H 
 "HH3VU
B1
< r+   r  c                   P    \ rS rSrSrSrSS jrS rS rS r	S	 r
S
 rS rS rSrg)WindowFrameiD  a>  
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    [        U5      U l        [        U5      U l        g r   )r;   startendr   r  r  s      r!   r   WindowFrame.__init__O  s    5\
:r+   c                 "    Uu  U l         U l        g r   r  r  r   s     r!   r   "WindowFrame.set_source_expressionsS  s    $
DHr+   c                 2    U R                   U R                  /$ r   r  rF   s    r!   r   "WindowFrame.get_source_expressionsV  s    

DHH%%r+   c                     UR                   R                  U 5        U R                  X R                  R                  U R
                  R                  5      u  p4U R                  U R                  UUS.-  / 4$ )N
frame_typer  r  )r  r  window_frame_start_endr  r  r  r;  r  )r   r   r   r  r  s        r!   r   WindowFrame.as_sqlY  sl    //500

(($((..

 MM"oo 
 	
r+   c                 @    SU R                   R                  < SU < S3$ r  r  rF   s    r!   r  WindowFrame.__repr__h  r  r+   c                     / $ r   r$   rF   s    r!   rO  WindowFrame.get_group_by_colsk  r   r+   c                 z   U R                   R                  bW  U R                   R                  S:  a=  S[        U R                   R                  5      [        R                  R
                  4-  nOfU R                   R                  b5  U R                   R                  S:X  a  [        R                  R                  nO[        R                  R                  nU R                  R                  bN  U R                  R                  S:  a4  SU R                  R                  [        R                  R                  4-  nOfU R                  R                  b5  U R                  R                  S:X  a  [        R                  R                  nO[        R                  R                  nU R                  U R                  UUS.-  $ )Nr   z%d %sr  )r  r  absr   r  	PRECEDINGCURRENT_ROWUNBOUNDED_PRECEDINGr  	FOLLOWINGUNBOUNDED_FOLLOWINGr;  r  r  s      r!   r  WindowFrame.__str__n  s&   ::'DJJ,<,<q,@s4::#3#34jnn6N6NOOEZZ)djj.>.>!.CNN..ENN66E88>>%$((..1*<TXX^^Z^^-E-EFFCXX^^'DHHNNa,?..,,C..44C}}// 
 
 	
r+   c                     [        S5      e)Nz3Subclasses must implement window_frame_start_end().r   r   r   r  r  s       r!   r  "WindowFrame.window_frame_start_end  s    !"WXXr+   )r  r  r  )r%   r&   r'   r(   r)   r;  r   r   r   r   r  rO  r  r  r*   r$   r+   r!   r  r  D  s7     >H%&
<
(Yr+   r  c                       \ rS rSrSrS rSrg)RowRangei  ROWSc                 8    UR                   R                  X#5      $ r   )r  window_frame_rows_start_endr  s       r!   r  RowRange.window_frame_start_end  s    ~~99%EEr+   r$   Nr%   r&   r'   r(   r  r  r*   r$   r+   r!   r  r    s    JFr+   r  c                       \ rS rSrSrS rSrg)
ValueRangei  RANGEc                 8    UR                   R                  X#5      $ r   )r  window_frame_range_start_endr  s       r!   r  !ValueRange.window_frame_start_end  s    ~~::5FFr+   r$   Nr  r$   r+   r!   r  r    s    JGr+   r  )^r   r^  	functoolsry  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   rw  rL   rE   r[   r`   re   PositiveIntegerFieldrS   r#  r  r   rs   r   rx   r|   r   r  r  r  r  _connector_combinationsr#  r  r  dr  r>   field_typesr  r  r  	lru_cacher  r<   r  r  r   r  r  r  r;   rj  r  r  r  r  r  r  r  r   r  r  rF  r`  rW  r  r  r  r  )r>   
field_types   00r!   <module>r     s       #    L L B B # 1 * 4 3 /  A' A'Hv vr	 # # #f NNNNNNNNNN

I 	++++++
 	

0 NNNNNN NNNNNN	
	
I 	  &"5"5v7J7JK 1 163D3DE  &"5"5v7J7JK
 	

	
4 NNNNNNNNNN

I 	  &"5"5v7J7JK  &"5"5v7J7JK  &"3"3V5F5FG 3 3V5F5FG	
 	

* ##$$
	
I 	  &"5"5v7J7JK
 	

	& NNNNNNNNNNNN


I "..0C0CVEVEVWJ 	:.z.
 	
 X 	
" 	v33V5I5IJ!!6#7#79M9MN!!6#3#3V5I5IJ!!6#7#79M9MN!!6#7#79M9MNv33V5E5EF!!6#3#3V5E5EF
 	v33V5I5IJ!!6#7#79M9MNv//1E1EFv33V5I5IJ!!6#3#3V5I5IJ!!6#7#79M9MN!!6#7#79M9MNv33V5E5EFv//1E1EF
Er h %T* 	A 
!A"#'')	; +Cf&sIsFC !, #, 
! 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* $6N&* &RT <$ 6 :;!/*J !/ <!/H0) 0f -.LN: LN /LN^ -.c
z c
 /c
L2:~z 2:j2X 26 01Zj Z 2Zzq qh?Y* ?YDF{ FG GC,"$ s    /];A3^ 2B^/^

<?^