Ë
    ò%9ji ã                   ó¨  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZmZmZ d dlmZmZ d d	lmZmZ d d
lmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3  G d„ de«      Z4 G d„ d«      Z5 G d„ de5«      Z6 G d„ de5«      Z7 G d„ de5«      Z8 G d„ de5«      Z9d„ Z:y)é    N)Úpartial)Úchain)ÚEmptyResultSetÚ
FieldErrorÚFullResultSet)ÚDatabaseErrorÚNotSupportedError)Ú
LOOKUP_SEP)ÚColPairsÚFÚOrderByÚRawSQLÚRefÚValue)Ú	AutoFieldÚ	composite)ÚCastÚRandom)ÚLookup)Úselect_related_descend)ÚCURSORÚGET_ITERATOR_CHUNK_SIZEÚMULTIÚ
NO_RESULTSÚ	ORDER_DIRÚ	ROW_COUNTÚSINGLE)ÚQueryÚget_order_dir)ÚTransactionManagementError)Úcached_property)Úmake_hashable)Ú_lazy_re_compilec                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚPositionRefc                 ó4   •— || _         t        ‰| �	  ||«       y ©N)ÚordinalÚsuperÚ__init__)Úselfr(   ÚrefsÚsourceÚ	__class__s       €úY/var/www/html/truck-me/venv/lib/python3.12/site-packages/django/db/models/sql/compiler.pyr*   zPositionRef.__init__    s   ø€ ØˆŒÜ‰Ñ˜˜vÕ&ó    c                 ó0   — t        | j                  «      dfS )N© )Ústrr(   )r+   ÚcompilerÚ
connections      r/   Úas_sqlzPositionRef.as_sql$   s   € Ü�4—<‘<Ó  "Ð$Ð$r0   )Ú__name__Ú
__module__Ú__qualname__r*   r6   Ú__classcell__©r.   s   @r/   r%   r%      s   ø„ ô'ö%r0   r%   c                   ó6  — e Zd Z edej
                  ej                  z  «      Zd#d„Zd„ Z	d$d„Z
d$d„Zd„ Zd„ Zd$d	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd%d„Z	 d&d„Zd„ Z	 d'd„Zd„ Zd„ Z	 	 	 	 	 d(d„Zd„ Zd„ Zd„ Z d„ Z!d„ Z"ddde#fd„Z$d „ Z%e&de#fd!„Z'd"„ Z(y))ÚSQLCompilerz^(.*)\s(?:ASC|DESC).*c                 ó†   — || _         || _        || _        || _        ddi| _        d | _        d | _        d | _        d | _        y )NÚ*)	Úqueryr5   ÚusingÚelide_emptyÚquote_cacheÚselectÚannotation_col_mapÚ
klass_infoÚ_meta_ordering)r+   r@   r5   rA   rB   s        r/   r*   zSQLCompiler.__init__/   sM   € ØˆŒ
Ø$ˆŒØˆŒ
ð 'ˆÔØ ˜:ˆÔð
 ˆŒØ"&ˆÔØˆŒØ"ˆÕr0   c           	      ó¬   — d| j                   j                  › d| j                  j                  j                  › d| j                  ›d| j
                  ›d�	S )Nú<z model=z connection=z using=ú>)r.   r9   r@   Úmodelr5   rA   ©r+   s    r/   Ú__repr__zSQLCompiler.__repr__@   sU   € à�—‘×+Ñ+Ð,ð -Ø—Z‘Z×%Ñ%×2Ñ2Ð3ð 4ØŸ/™/Ð,¨G°D·J±J°>ÀðDð	
r0   Fc                 ó  ‡ — t        ˆ fd„‰ j                  j                  D «       «      r‰ j                  j                  «        ‰ j	                  |¬«      \  ‰ _        ‰ _        ‰ _        t        ‰ j
                  «      ‰ _	        y )Nc              3   óV   •K  — | ]   }‰j                   j                  |   d k(  –— Œ" y­w©r   N©r@   Úalias_refcount)Ú.0Úar+   s     €r/   ú	<genexpr>z*SQLCompiler.setup_query.<locals>.<genexpr>H   s%   øè ø€ ÒO°Qˆt�z‰z×(Ñ(¨Ñ+¨qÕ0ÑOùó   ƒ&)©Úwith_col_aliases)
Úallr@   Ú	alias_mapÚget_initial_aliasÚ
get_selectrD   rF   rE   ÚlenÚ	col_count)r+   rX   s   ` r/   Úsetup_queryzSQLCompiler.setup_queryG   sd   ø€ ÜÓO¸$¿*¹*×:NÑ:NÔOÔOØ�J‰J×(Ñ(Ô*Ø@DÇÁØ-ð APó A
Ñ=ˆŒ�T”_ dÔ&=ô ˜TŸ[™[Ó)ˆ�r0   c                 ó„  — | j                  |¬«       | j                  «       }| j                  j                  j	                  | j                  j
                  du¬«      \  | _        | _        | _        | j                  || j                  «      }t        |«      | _        | j                  | j                  |z   |«      }|||fS )zà
        Do any necessary class setup immediately prior to producing SQL. This
        is for things that can't necessarily be done in __init__ because we
        might not have all the pieces in place at that time.
        rW   N)Úmust_group_by)r_   Úget_order_byr@   ÚwhereÚsplit_having_qualifyÚgroup_byÚhavingÚqualifyÚget_extra_selectrD   ÚboolÚhas_extra_selectÚget_group_by)r+   rX   Úorder_byÚextra_selectre   s        r/   Úpre_sql_setupzSQLCompiler.pre_sql_setupO   s°   € ð 	×ÑÐ*:ÐÔ;Ø×$Ñ$Ó&ˆØ04·
±
×0@Ñ0@×0UÑ0UØŸ*™*×-Ñ-°TÐ9ð 1Vó 1
Ñ-ˆŒ
�D”K ¤ð ×,Ñ,¨X°t·{±{ÓCˆÜ $ \Ó 2ˆÔØ×$Ñ$ T§[¡[°<Ñ%?ÀÓJˆØ˜X xÐ/Ð/r0   c                 ó  — | j                   j                  €g S g }t        «       }| j                   j                  dur©| j                   j                  D ]�  }t        |d«      s| j                   j	                  |«      }t        |t        «      rF|j                  |vsŒI|j                  |j                  «       |j                  |j                  «       Œ€|j                  |«       Œ’ i }t        |d¬«      D ]4  \  }\  }}}	|	r|||<   |	|v rŒ|j                  |j                  «       «       Œ6 | j                  s0|D ]+  \  }\  }
}}|rŒ|j                  |j                  «       «       Œ- | j                  r| j                  j                  «       nd}|D ]  }|j                  |«       Œ g }t        «       }| j!                  ||«      }| j"                  j$                  j&                  }|D ]ˆ  }	 | j)                  |«      \  }
}|r!|j/                  |«      x}�t1        |«      d}}
n|j3                  | |
|«      \  }
}t5        |«      }|
|f|vsŒc|j                  |
|f«       |j                  |
|f«       ŒŠ |S # t*        t,        f$ r Y Œžw xY w)zí
        Return a list of 2-tuples of form (sql, params).

        The logic of what exactly the GROUP BY clause contains is hard
        to describe in other words than "if it passes the test suite,
        then it is correct".
        Tr6   é   ©Ústartr2   )r@   re   ÚsetÚhasattrÚresolve_refÚ
isinstancer   r,   ÚaddÚappendr-   Ú	enumerateÚextendÚget_group_by_colsrG   rf   Úcollapse_group_byr5   ÚfeaturesÚallows_group_by_select_indexÚcompiler   r   Úgetr3   Úselect_formatr"   )r+   rD   rl   ÚexpressionsÚgroup_by_refsÚexprÚselected_expr_positionsr(   Ú_ÚaliasÚsqlÚparamsÚis_refÚhaving_group_byÚresultÚseenr~   ÚpositionÚparams_hashs                      r/   rk   zSQLCompiler.get_group_by_   s‹  € ðL �:‰:×ÑÐ&ØˆIØˆÜ›ˆØ�:‰:×Ñ dÑ*ð Ÿ
™
×+Ñ+ò -�Ü˜t XÔ.ØŸ:™:×1Ñ1°$Ó7�DÜ˜d¤CÔ(Ø—y‘y¨Ò5Ø%×)Ñ)¨$¯)©)Ô4Ø#×*Ñ*¨4¯;©;Õ7à×&Ñ& tÕ,ð-ð #%ÐÜ)2°6ÀÔ)Cò 	9Ñ%ˆGÑ%�d˜A˜uÙØ07Ð'¨Ñ-ð ˜Ñ%ØØ×Ñ˜t×5Ñ5Ó7Õ8ð	9ð ×"Ò"Ø/7ò AÑ+�Ñ+�s˜F Fò Ø×&Ñ& t×'=Ñ'=Ó'?Õ@ð	Að
 >B¿[º[˜$Ÿ+™+×7Ñ7Ô9ÈbˆØ#ò 	%ˆDØ×Ñ˜tÕ$ð	%àˆÜ‹uˆØ×,Ñ,¨[¸/ÓJˆð �O‰O×$Ñ$×AÑAð 	%ð  ò 	-ˆDðØ"Ÿl™l¨4Ó0‘��Vñ -Ø!8×!<Ñ!<¸TÓ!BÐB�XÐOä! (›m¨R�V‘à"×0Ñ0°°s¸FÓC‘��VÜ'¨Ó/ˆKØ�[Ð!¨Ò-Ø—‘˜s F˜mÔ,Ø—‘˜#˜{Ð+Õ,ð	-ð  ˆøô #¤MÐ2ò Ùðús   Ç,I5É5JÊJc                 ó¶  — | j                   j                  j                  r©|D �ch c]_  }t        |d«      rQ|j                  j
                  r;| j                   j                  j                  |j                  j                  «      r|’Œa }}|D �ch c]  }|j                  ’Œ }}|D �cg c]  }||v s||v st        |dd «      |vr|‘Œ }}|S c c}w c c}w c c}w )NÚtargetr‡   )
r5   r}   Úallows_group_by_selected_pksrt   r‘   Úprimary_keyÚ%allows_group_by_selected_pks_on_modelrK   r‡   Úgetattr)r+   r‚   rf   r„   ÚpksÚaliasess         r/   r|   zSQLCompiler.collapse_group_byÆ   sà   € ð �?‰?×#Ñ#×@Ò@ð (ö
àä˜D (Ô+ØŸ™×/Ò/ØŸ™×0Ñ0×VÑVØŸ™×)Ñ)ôò ð
ˆCð 
ð /2Ö2 d�t—z“zÐ2ˆGÐ2ð (öàØ˜3‘;Ø˜6‘>Ü˜4 ¨$Ó/°wÑ>ò	 ðˆKð ð Ðùò'
ùò 3ùòs   ¥A$CÂCÂ( Cc           	      óÌ  ‡— g }d}i }| j                   j                  r| j                   j                  rJ ‚| j                   j                  «       }| j                   j                  r| j	                  |«      }n| j                   j                  }g }d}| j                   j
                  €¶g d„ | j                   j                  j                  «       D «       ¢d„ |D «       ¢| j                   j                  j                  «       ¢}t        t        t        | j                   j                  «      t        | j                   j                  «      t        |«      z   «      «      }n¯g }t        | j                   j
                  j                  «       «      D ]}  \  }	\  }
}t        |t        «      r| j                   j                  |   }n&t        |t         «      r|j#                  |	«       ||   }t        |t$        «      rd}
|j#                  |
|f«       Œ |r| j                   j&                  |dœ}t        |«      D ]"  \  }\  }
}|
r|||
<   |j#                  ||
f«       Œ$ | j                   j(                  r$| j+                  ||«      }||d<   ˆfd„Š ‰|«       g }d}|D ]T  \  }}
	 | j-                  |«      \  }}|j/                  | ||«      \  }}|
€|r
d|› �}
|dz  }|j#                  |||f|
f«       ŒV |||fS # t0        $ r? t3        |dt4        «      }|t4        u rd	\  }}n| j-                  t7        |«      «      \  }}Y Œrt8        $ r  | j-                  t7        d
«      «      \  }}Y Œ™w xY w)a   
        Return three values:
        - a list of 3-tuples of (expression, (sql, params), alias)
        - a klass_info structure,
        - a dictionary of annotations

        The (sql, params) is what the expression will produce, and alias is the
        "AS alias" for the column (possibly None).

        The klass_info structure contains the following information:
        - The base model of the query.
        - Which columns for that model are present in the query (by
          position of the select clause).
        - related_klass_infos: [f, klass_info] to descent into

        The annotations is a dictionary of {'attname': column position} values.
        Nc              3   ó6   K  — | ]  \  }}|t        |Ž f–— Œ y ­wr'   )r   )rS   r‡   Úargss      r/   rU   z)SQLCompiler.get_select.<locals>.<genexpr>  s%   è ø€ ò á#˜˜tð œF D˜MÔ*ñùs   ‚c              3   ó$   K  — | ]  }d |f–— Œ
 y ­wr'   r2   )rS   Úcols     r/   rU   z)SQLCompiler.get_select.<locals>.<genexpr>  s   è ø€ Ò. #�4˜”+Ñ.ùs   ‚)rK   Úselect_fieldsÚrelated_klass_infosc                 óP   •— | d   D ]  }|d   r| d   |d   z   |d<    ‰|«       Œ y )Nrž   Úfrom_parentr�   r2   )rF   ÚkiÚget_select_from_parents     €r/   r¢   z6SQLCompiler.get_select.<locals>.get_select_from_parent.  sF   ø€ Ø$Ð%:Ñ;ò /�BØ˜-Ò(à& Ñ7¸"¸_Ñ:MÑMð ˜?Ñ+ñ +¨2Õ.ñ/r0   rp   Úempty_result_set_value)Ú0r2   Trœ   )r@   rD   Údefault_colsÚget_select_maskÚget_default_columnsÚselectedrm   ÚitemsÚannotation_selectÚlistÚranger]   ry   rv   r3   ÚannotationsÚintrx   r   rK   Úselect_relatedÚget_related_selectionsr   r�   r   r•   ÚNotImplementedr   r   )r+   rX   rD   rF   r­   Úselect_maskÚcolsr¨   r�   Úindexr‡   Ú
expressionÚ
select_idxrž   ÚretÚcol_idxrœ   rˆ   r‰   r£   r¢   s                       @r/   r\   zSQLCompiler.get_selectæ   sO  ø€ ð$ ˆØˆ
ØˆØ—J‘J×%Ò%¨$¯*©*×*AÒ*AÐBÐBØ—j‘j×0Ñ0Ó2ˆØ�:‰:×"Ò"Ø×+Ñ+¨KÓ8‰Dð —:‘:×$Ñ$ˆDØˆØˆØ�:‰:×ÑÐ&ðñà'+§z¡z×'>Ñ'>×'DÑ'DÓ'Fôðñ
 /¨Ô.ðð —‘×-Ñ-×3Ñ3Ó5ðˆHô !ÜÜ˜Ÿ
™
×/Ñ/Ó0Ü˜Ÿ
™
×/Ñ/Ó0´3°t³9Ñ<óó‰Mð ˆMÜ.7¸¿
¹
×8KÑ8K×8QÑ8QÓ8SÓ.Tò 5Ñ*�Ñ*˜˜zä˜j¬#Ô.Ø!%§¡×!7Ñ!7¸
Ñ!C‘Jä 
¬CÔ0Ø!×(Ñ(¨Ô/Ø!% jÑ!1�Jä˜j¬(Ô3Ø �EØ—‘ ¨
Ð 3Õ4ð5ñ Ø#'§:¡:×#3Ñ#3ÀmÑTˆJä/8¸Ó/Bò 	/Ñ+ˆJÑ+˜ 
ÙØ%/�˜EÑ"Ø�M‰M˜: uÐ-Õ.ð	/ð
 �:‰:×$Ò$Ø"&×"=Ñ"=¸fÀkÓ"RÐØ0CˆJÐ,Ñ-ô/ñ # :Ô.àˆØˆØ ò 	4‰JˆC�ðCØ"Ÿl™l¨3Ó/‘��Vð "×/Ñ/°°c¸6ÓB‘��VØˆ}Ñ!1Ø˜g˜Y˜�Ø˜1‘�Ø�J‰J˜˜c 6˜]¨EÐ2Õ3ð'	4ð( �J Ð+Ð+øô# "ò NÜ)0ØÐ1´>ó*Ð&ð *¬^Ñ;à")‘K�C™à"&§,¡,¬uÐ5KÓ/LÓ"M‘K�C˜ùÜ ò 8Ø"Ÿl™l¬5°«;Ó7‘�’Vð8ús   ÊK4Ë4AM#Ì;%M#Í"M#c           
   #   óf  K  — | j                   j                  r| j                   j                  }n˜| j                   j                  s| j                   j                  }nk| j                   j                  r| j                   j                  }n>| j                   j	                  «       x}r |j
                  r|j
                  }|| _        ng }| j                   j                  rt        d   \  }}nt        d   \  }}i }|r@| j                  x}r2t        |d¬«      D ]"  \  }\  }}}	t        ||	|«      }
|	r|
||	<   |
||<   Œ$ |D �]m  }t        |d«      �rt        |t        «      rt        ||j                   «      }t        |t"        «      s|j%                  «       }| j                   j                  s |j'                  «       }|j)                  «        |j+                  |j,                  «      }|sAt        |j,                  t.        «      rÂ|j+                  |j,                  j0                  «      x}r›|j2                  €|j4                  � | j6                  j8                  j:                  r|j'                  «       }||_        nK| j                   j<                  r5|j'                  «       }t?        |j@                  |jB                  «      |_        ||d uf–— �Œ�|dk(  rt#        tE        «       «      df–— �Œ®tG        ||«      \  }}|dk(  }|j+                  |«      x}rt#        ||¬«      d	f–— �Œè| j                   jH                  j+                  |«      x}r|}g }n<|jK                  tL        «      ^}}| j                   jH                  j+                  |«      }|r˜| j                   j<                  r$| j                  r|rtO        d
«      ‚t/        |«      }|r#|D ]  }| j                   jQ                  ||«      }Œ  t        |t        «      rt        ||j                   «      }t#        ||¬«      df–— �Œêd|v r^|| j                   j                  v rF|jK                  dd«      \  }}t#        tS        | jU                  |«      ›d|›�g «      |¬«      df–— �ŒL| j                   jV                  rš|| j                   jV                  v r‚|| j                   jX                  v r:t#        t?        |tS        | j                   jV                  |   Ž «      |¬«      d	f–— �ŒÌt#        tS        | j                   jV                  |   Ž |¬«      df–— �Œü| j                   j<                  r(| j                  rt#        t/        |«      |¬«      df–— �Œ:| j[                  || j                   j	                  «       |¬«      E d {  –—†  �Œp y 7 Œ­w)NÚASCÚDESCrp   rq   Úresolve_expressionú?F©Ú
descendingTz;Ordering combined queries by transforms is not implemented.ú.)Údefault_order).r@   Úextra_order_byÚdefault_orderingrl   Úget_metaÚorderingrG   Ústandard_orderingr   rD   ry   r%   rt   rv   r   r   Úoutput_fieldr   ÚascÚcopyÚreverse_orderingr€   rµ   r   ÚnameÚnulls_firstÚ
nulls_lastr5   r}   Ú supports_order_by_nulls_modifierÚ
combinatorr   r,   r-   r   r   r­   Úsplitr
   ÚNotImplementedErrorÚtry_transformr   Úquote_name_unless_aliasÚextrarm   Úfind_ordering_name)r+   rÅ   ÚmetarÁ   r†   Úselected_exprsrD   r(   r„   r‡   Úpos_exprÚfieldÚ
select_refrœ   Úorderr¿   ÚrefÚ
transformsrË   Útables                       r/   Ú_order_by_pairszSQLCompiler._order_by_pairsP  s  è ø€ Ø�:‰:×$Ò$Ø—z‘z×0Ñ0‰HØ—‘×,Ò,Ø—z‘z×*Ñ*‰HØ�Z‰Z× Ò Ø—z‘z×*Ñ*‰HØ—j‘j×)Ñ)Ó+Ð+ˆdÐ+°·²Ø—}‘}ˆHØ"*ˆDÕàˆHØ�:‰:×'Ò'Ü(¨Ñ/ÑˆM™1ä(¨Ñ0ÑˆM˜1àˆñ  4§;¡;Ð.˜Ð.Ü-6°vÀQÔ-Gò 0Ñ)�Ñ)˜$  5Ü& w°°tÓ<�ÙØ,4�N 5Ñ)Ø'/�˜tÒ$ð	0ð ó r	ˆEÜ�uÐ2Õ3Ü˜e¤UÔ+ä  ¨×(:Ñ(:Ó;�EÜ! %¬Ô1Ø!ŸI™I›K�EØ—z‘z×3Ò3Ø!ŸJ™J›L�EØ×*Ñ*Ô,Ø+×/Ñ/°×0@Ñ0@ÓA�
ÙÜ˜u×/Ñ/´Ô3Ø'5×'9Ñ'9¸%×:JÑ:J×:OÑ:OÓ'PÐP˜ÐPð
 ×)Ñ)Ð1°e×6FÑ6FÐ6NØŸ™×1Ñ1×RÒRØ %§
¡
£˜Ø+5˜Õ(ð Ÿ™×.Ò.Ø %§
¡
£˜Ü+.¨z¯©À
×@QÑ@QÓ+R˜Ô(Ø˜Z¨tÐ3Ð3Ò3ÙØ˜Š|Üœf›hÓ'¨Ð.Ò.Ùä& u¨mÓ<‰JˆC�Ø &™ˆJà+×/Ñ/°Ó4Ð4ˆzÐ4ô Ø"Ø#-ôð ðò ñ à—z‘z×-Ñ-×1Ñ1°#Ó6Ð6ˆtÐ6Ø�Ø‘
à#&§9¡9¬ZÓ#8Ð ��jØ—z‘z×-Ñ-×1Ñ1°#Ó6�ÙØ—:‘:×(Ò(¨T¯[ª[Ù!Ü1ð+óð ô ˜S›6�DÙØ *ò D˜Ø#Ÿz™z×7Ñ7¸¸dÓC™ðDä˜d¤EÔ*ä  d×&7Ñ&7Ó8�DÜ˜d¨zÔ:¸EÐAÒAÙà�e‰| ¨¯©×)BÑ)BÑ Bð !ŸY™Y s¨AÓ.‘
��säÜØ'+×'CÑ'CÀEÕ'JÉCÐPÐRTóð $.ô	ð ðò ñ à�z‰z×Ò C¨4¯:©:×+;Ñ+;Ñ$;Ø˜$Ÿ*™*×1Ñ1Ñ1äÜ ¤V¨T¯Z©Z×-=Ñ-=¸cÑ-BÐ%CÓDØ'1ôð ðô ô  ¤¨¯
©
×(8Ñ(8¸Ñ(=Ð >È:ÔVØðô ð
 —:‘:×(Ò(¨T¯[ª[ô "¤! C£&°ZÔ@À%ÐGÔGð  $×6Ñ6ØØŸ
™
×+Ñ+Ó-Ø&3ð  7ó  ÷ ò ñ]r	ð\ús   ‚V$V1Ö&V/Ö'	V1c                 ój  — g }t        «       }| j                  «       D �]  \  }}|j                  | j                  dd¬«      }|�s}| j                  j                  �rf| j
                  �rY|j                  }|j                  }| j
                  D ]�  \  }}	}
||k(  sŒ| j                  j                  r8|
| j                  j                  v r t        |t        «      r|
|j                  k(  sŒ[|j                  t        |
r|
n|j                  j                  |«      g«        n¤ t!        | j                  j
                  «      dz   }d|› �}
| j                  j"                  D ]+  }|j                  rt%        d«      ‚|j'                  ||
«       Œ- | j                  j)                  ||
«       |j                  t        |
|«      g«       | j+                  |«      \  }}| j,                  j/                  |«      d   }t1        |«      }||f|v r�Œê|j3                  ||f«       |j5                  ||||ff«       �Œ |S )a/  
        Return a list of 2-tuples of the form (expr, (sql, params, is_ref)) for
        the ORDER BY clause.

        The order_by clause can alter the select clause (for example it can add
        aliases to clauses that do not yet have one, or it can add totally new
        select clauses).
        TN)Úallow_joinsÚreuserp   Ú__orderbycolz:ORDER BY term does not match any column in the result set.)rs   rß   r¼   r@   rÏ   rD   rµ   Úhas_select_fieldsrª   rv   r   rË   Úset_source_expressionsr   r‘   Úcolumnr]   Úcombined_queriesr   Úadd_annotationÚadd_select_colr   Úordering_partsÚsearchr"   rw   rx   )r+   rŒ   r�   r„   rŠ   ÚresolvedÚsrcÚexpr_srcÚsel_exprr†   Ú	col_aliasÚorder_by_idxÚqrˆ   r‰   Úwithout_orderingr�   s                    r/   rb   zSQLCompiler.get_order_byß  s  € ð ˆÜ‹uˆØ ×0Ñ0Ó2ó /	=‰LˆD�&Ø×.Ñ.¨t¯z©zÀtÐSWÐ.ÓXˆHÚ˜dŸj™j×3Ó3¸¿»Ø×)Ñ)�ØŸ?™?�Ø.2¯k©kò KÑ*�H˜a Ø˜h“ð !ŸJ™J×8Ò8Ø )¨T¯Z©Z×-IÑ-IÑ Iä *¨8´QÔ 7¸IÈÏÉÒ<Vð %Ø ×7Ñ7Ü ©i¡¸S¿Z¹Z×=NÑ=NÐPSÓTÐUôñ ðKô& $' t§z¡z×'8Ñ'8Ó#9¸AÑ#=�LØ".¨|¨nÐ =�IØ!ŸZ™Z×8Ñ8ò >˜ð ×.Ò.Ü"/ð!2ó#ð ð ×(Ñ(¨°9Õ=ð>ð —J‘J×-Ñ-¨h¸	ÔBØ×3Ñ3´S¸ÀCÓ5HÐ4IÔJØŸ,™, xÓ0‰KˆC�ð
  $×2Ñ2×9Ñ9¸#Ó>¸qÑAÐÜ'¨Ó/ˆKØ  +Ð.°$Ñ6ÙØ�H‰HÐ&¨Ð4Ô5Ø�M‰M˜8 c¨6°6Ð%:Ð;Ö<ð_/	=ð` ˆr0   c                 ó(  — g }| j                   j                  rt| j                   j                  s^|D �cg c]  }|d   ‘Œ	 }}|D ]G  \  }\  }}}	| j                  j	                  |«      d   }
|	rŒ+|
|f|vsŒ2|j                  ||
|fd f«       ŒI |S c c}w )Nrp   )r@   ÚdistinctÚdistinct_fieldsrê   rë   rx   )r+   rl   rD   rm   ÚtÚ
select_sqlr„   rˆ   r‰   rŠ   ró   s              r/   rh   zSQLCompiler.get_extra_select  s¨   € ØˆØ�:‰:×Ò t§z¡z×'AÒ'AØ(.Ö/ 1˜!˜A›$Ð/ˆJÐ/Ø/7ò RÑ+�Ñ+�s˜F FØ#'×#6Ñ#6×#=Ñ#=¸cÓ#BÀ1Ñ#EÐ ÚÐ#3°VÐ"<ÀJÒ"NØ ×'Ñ'¨Ð0@À&Ð/IÈ4Ð(PÕQðRð Ðùò 0s   ³Bc                 óÔ  — || j                   v r| j                   |   S || j                  j                  v r|| j                  j                  vsU|| j                  j                  v s=| j                  j
                  j                  |«      r)|| j                  j                  vr|| j                   |<   |S | j                  j                  j                  |«      }|| j                   |<   |S )zÛ
        A wrapper around connection.ops.quote_name that doesn't quote aliases
        for table names. This avoids problems with some SQL dialects that treat
        quoted strings specially (e.g. PostgreSQL).
        )
rC   r@   rZ   Ú	table_maprm   Úexternal_aliasesr€   r5   ÚopsÚ
quote_name)r+   rË   Úrs      r/   rÓ   z#SQLCompiler.quote_name_unless_alias&  sÈ   € ð �4×#Ñ#Ñ#Ø×#Ñ# DÑ)Ð)à�T—Z‘Z×)Ñ)Ñ)¨d¸$¿*¹*×:NÑ:NÑ.NØ�t—z‘z×.Ñ.Ñ.à—
‘
×+Ñ+×/Ñ/°Ô5Ø §
¡
× 4Ñ 4Ñ4ð &*ˆD×Ñ˜TÑ"ØˆKØ�O‰O×Ñ×*Ñ*¨4Ó0ˆØ!"ˆ×Ñ˜ÑØˆr0   c                 óÈ   — t        |d| j                  j                  z   d «      }|r || | j                  «      \  }}||fS |j                  | | j                  «      \  }}||fS )NÚas_)r•   r5   Úvendorr6   )r+   ÚnodeÚvendor_implrˆ   r‰   s        r/   r   zSQLCompiler.compile<  sf   € Ü˜d E¨D¯O©O×,BÑ,BÑ$BÀDÓIˆÙÙ% d¨D¯O©OÓ<‰KˆC�ð �Fˆ{Ðð Ÿ+™+ d¨D¯O©OÓ<‰KˆC�Ø�Fˆ{Ðr0   c                 ó  ‡— | j                   j                  }| j                  j                  D �cg c]3  }|j	                  | j
                  | j                   | j                  «      ‘Œ5 }}|j                  sC|D ]>  }|j                  j                  rt        d«      ‚|j                  «       sŒ5t        d«      ‚ g }d }|D ]#  }	 |j                  | j                  |«      «       Œ% |st        ‚t        |«      dk(  rB|dk(  r=| j                  j                  r'd|_        |j                  | j                  |«      «       | j                   j                  j                   |   }	|r
|dk(  r|	dz  }	dŠ| j                  j"                  s|j                  rd	Št%        ˆfd
„|D «       Ž \  }
}dj'                  |	«      j)                  |
«      g}g }|D ]  }|j+                  |«       Œ ||fS c c}w # t        $ r |dk(  s|dk(  r|r|}Y �ŒE‚ w xY w)Nz>LIMIT/OFFSET not allowed in subqueries of compound statements.z:ORDER BY not allowed in subqueries of compound statements.ÚunionÚ
differencerp   Fz ALLz{}ú({})c              3   óJ   •K  — | ]  \  }}‰j                  |«      |f–— Œ y ­wr'   )Úformat)rS   rˆ   rš   Úbracess      €r/   rU   z1SQLCompiler.get_combinator_sql.<locals>.<genexpr>q  s#   øè ø€ Ò@©Y¨S°$ˆv�}‰}˜SÓ! 4Ô(Ñ@ùó   ƒ #z {} )r5   r}   r@   rç   Úget_compilerrA   rB   Ú%supports_slicing_ordering_in_compoundÚ	is_slicedr   rb   rx   Ú_get_combinator_part_sqlr   r]   rü   Úset_operatorsÚsubqueryÚzipr	  Újoinrz   )r+   rÏ   rY   r}   r@   Ú	compilersr4   ÚpartsÚempty_compilerÚcombinator_sqlÚ	sql_partsÚ
args_partsrŒ   r‰   Úpartr
  s                  @r/   Úget_combinator_sqlzSQLCompiler.get_combinator_sqlD  s  ø€ Ø—?‘?×+Ñ+ˆð Ÿ™×4Ñ4ö
àð ×Ñ˜tŸz™z¨4¯?©?¸D×<LÑ<LÕMð
ˆ	ð 
ð ×=Ò=Ø%ò �Ø—>‘>×+Ò+Ü'ØXóð ð ×(Ñ(Õ*Ü'ØTóð ðð ˆØˆØ!ò 		ˆHðØ—‘˜T×:Ñ:¸8ÓDÕEð		ñ Ü Ð Ü�‹Z˜1Š_ ¨wÒ!6¸4¿:¹:×;OÒ;Oð */ˆNÔ&Ø�L‰L˜×6Ñ6°~ÓFÔGØŸ™×,Ñ,×:Ñ:¸:ÑFˆÙ�: Ò(Ø˜fÑ$ˆNØˆØ�z‰z×"Ò" x×'UÒ'UØˆFÜ #Û@¸%Ô@ð!
Ñˆ	�:ð —-‘- Ó/×4Ñ4°YÓ?Ð@ˆØˆØò 	 ˆDØ�M‰M˜$Õð	 à�vˆ~Ðùòc
øô& "ò ð  Ò(¨Z¸<Ò-GÉEØ%-�NÚØðús   °8G%Ã G*Ç*HÈHc                 ór  — | j                   j                  }| j                  j                  }|�P|j                  j                  €:|j                  j	                  «       |_        |j                  j                  |«       |j                  d¬«      \  }}|j                  j                  rX|j                  sdj                  |«      }||fS | j                  j                  s|j                  sdj                  |«      }||fS | j                  j                  r|j                  rdj                  |«      }||fS )NTrW   zSELECT * FROM ({})r  )r5   r}   r@   r¨   ÚcloneÚ
set_valuesr6   rÏ   Ú supports_parentheses_in_compoundr	  r  r  )r+   r4   r}   r¨   Úpart_sqlÚ	part_argss         r/   r  z$SQLCompiler._get_combinator_part_sqly  s
  € Ø—?‘?×+Ñ+ˆð —:‘:×&Ñ&ˆØÐ H§N¡N×$;Ñ$;Ð$CØ%Ÿ^™^×1Ñ1Ó3ˆHŒNØ�N‰N×%Ñ% hÔ/Ø&Ÿo™o¸t˜oÓDÑˆ�)Ø�>‰>×$Ò$ð ×<Ò<Ø/×6Ñ6°xÓ@�ð ˜Ð"Ð"ð —
‘
×#Ò#Ø×EÒEà!Ÿ=™=¨Ó2�ð ˜Ð"Ð"ð �Z‰Z× Ò  X×%SÒ%SØ—}‘} XÓ.ˆHØ˜Ð"Ð"r0   c                 óü  ‡‡‡‡‡— g }| j                   r|j                  | j                   «       | j                  r|j                  | j                  «       | j                  j	                  «       Šd‰_        ‰j                   j                  |«      ‰_         | j                  d¬«      d   D ���ci c]	  \  }}}||“Œ c}}}Št        ‰j                  «       «      Št        «       Ši Šˆˆˆˆˆfd„} |t        | j                  j                  «       «      «       | j                  j                  ‰j                  «       D ��ci c]  \  }}|t        ||«      “Œ c}}«      | _        g }| j!                  «       D ]f  ^}} ||j#                  «       «       |j                  |j                  ‰j                  «       D ��ci c]  \  }}|t        ||«      “Œ c}}«      «       Œh ‰j%                  | j&                  | j(                  | j*                  ¬«      }|j-                  dd¬«      \  }	}
| j/                  | j                  «      \  }}d|	d	| j(                  j0                  j3                  d
«      d|g}‰r}‰j                  «       D �cg c]'  }| j(                  j0                  j3                  |«      ‘Œ) }}ddj5                  |«      dg|¢d	‘| j(                  j0                  j3                  d«      ‘}t        |
«      |z   }|rag }|D ]8  }| j/                  |«      \  }}|j                  |«       |j7                  |«       Œ: |j7                  ddj5                  |«      g«       ||fS c c}}}w c c}}w c c}}w c c}w )NTrW   r   c                 óº  •— | rØ| j                  «       }|‰v rŒ‰j                  |«      x}r|‰|<   n¦t        |t        «      r | j	                  |j                  «       «       nvt        |t        «      r.|j                  ‰vrX| j	                  |j                  «       «       n8t        ‰«      }d|› �}‰j                  |«       ‰j                  ||«       |‰|<   | rŒ×y y )NÚqual)Úpopr€   rv   r   rz   Úget_source_expressionsr   r,   r]   rw   rè   )	r‚   r„   Úselect_aliasÚnum_qual_aliasÚinner_queryÚqual_aliasesÚreplacementsrD   Úselect_aliasess	       €€€€€r/   Úcollect_replacementsz9SQLCompiler.get_qualify_sql.<locals>.collect_replacements§  sÍ   ø€ ÙØ"—‘Ó(�Ø˜<Ñ'ØØ%+§Z¡Z°Ó%5Ð5�\Ð5Ø)5�L Ò&Ü ¤fÔ-Ø×&Ñ& t×'BÑ'BÓ'DÕEÜ ¤cÔ*Ø—y‘y¨Ñ6Ø#×*Ñ*¨4×+FÑ+FÓ+HÕIä%(¨Ó%6�NØ%)¨.Ð)9Ð#:�LØ ×$Ñ$ \Ô2Ø×.Ñ.¨t°\ÔBØ)5�L Ñ&ô! r0   )r5   rB   F)Úwith_limitsrX   úSELECT * FROM (ú)rg   ÚWHEREÚSELECTú, zFROM (Úqualify_maskzORDER BY)rc   rx   rf   r@   r  r  r.   r\   rs   Úvaluesr«   rg   ÚleavesÚreplace_expressionsr©   r   rb   r&  r  rA   r5   rB   r6   r   rü   rý   r  rz   )r+   Úwhere_partsr„   r†   r‡   r-  rl   Úorder_by_exprÚinner_query_compilerÚ	inner_sqlÚinner_paramsÚqualify_sqlÚqualify_paramsrŒ   r³   r‰   Úordering_sqlsrÅ   Úordering_sqlÚordering_paramsr)  r*  r+  rD   r,  s                       @@@@@r/   Úget_qualify_sqlzSQLCompiler.get_qualify_sql“  sL  ü€ ØˆØ�:Š:Ø×Ñ˜tŸz™zÔ*Ø�;Š;Ø×Ñ˜tŸ{™{Ô+Ø—j‘j×&Ñ&Ó(ˆØ#ˆÔØ'×-Ñ-×7Ñ7¸ÓDˆÔð /3¯o©oÈt¨oÓ.TÐUVÑ.W÷
ð 
Ù*˜D ! UˆD�%‰Kô
ˆô ˜VŸ]™]›_Ó-ˆÜ“uˆØˆ÷	6ð 	6ñ& 	œT $§,¡,×"5Ñ"5Ó"7Ó8Ô9Ø—|‘|×7Ñ7Ø7C×7IÑ7IÓ7K×L©¨¨eˆT”3�u˜dÓ#Ñ#ÓLó
ˆŒð ˆØ!%×!2Ñ!2Ó!4ò 	ÐˆM˜AÙ  ×!EÑ!EÓ!GÔHØ�O‰OØ×1Ñ1Ø?K×?QÑ?QÓ?S×T±°°e�Tœ3˜u dÓ+Ñ+ÓTóõð	ð  +×7Ñ7Ø�J‰J 4§?¡?À×@PÑ@Pð  8ó  
Ðð #7×"=Ñ"=ð ð "ð #>ó #
Ñˆ	�<ð '+§l¡l°4·<±<Ó&@Ñ#ˆ�^àØØØ�O‰O×Ñ×*Ñ*¨9Ó5ØØð
ˆñ ð HNÇ}Á}ÃÖW¸e�D—O‘O×'Ñ'×2Ñ2°5Õ9ÐWˆDÐWàØ—	‘	˜$“Øðð ð	ð
 ðð —‘×#Ñ#×.Ñ.¨~Ó>ðˆFô �lÓ# nÑ4ˆñ ØˆMØ$ò /�Ø04·±¸XÓ0FÑ-�˜oØ×$Ñ$ \Ô2Ø—‘˜oÕ.ð/ð �M‰M˜: t§y¡y°Ó'?Ð@ÔAØ�vˆ~Ðùôc
ùó8 Mùó Uùò4 Xs   Â0M&ÅM-
Æ<M3Ê,M9c                 ó°  — | j                   j                  j                  «       }	 | j                   j                  }| j	                  |xs t        |«      ¬«      \  }}}d}|xr | j                   j                  }	| j                   j                  }| j                  j                  }
|r`t        |
dj                  |«      «      st        dj                  |«      «      ‚| j                  || j                   j                  «      \  }}�nn| j                  r| j                  «       \  }}d}�nK| j!                  «       \  }}| j#                  «       \  }}	 | j$                  �| j'                  | j$                  «      ndg f\  }}	 | j.                  �| j'                  | j.                  «      ndg f\  }}dg}g }| j                   j0                  r3| j                  j2                  j5                  ||«      \  }}||z  }||z  }g }| j6                  |z   D ]W  \  }\  }}}|r*|›d| j                  j2                  j9                  |«      ›�}|j;                  |«       |j=                  |«       ŒY |d	j?                  |«      gz  }|r	|d
g|¢z  }nD| j                  j                  j@                  r$|| j                  j                  j@                  gz  }|j;                  |«       | j                   jB                  �rJ|
jD                  �r=| j                  jG                  «       r|
jH                  rtK        d«      ‚|	r|
jL                  st        d«      ‚| j                   jN                  }| j                   jP                  }| j                   jR                  }| j                   jT                  }|r|
jV                  st        d«      ‚|r|
jX                  st        d«      ‚|r|
jZ                  st        d«      ‚|r|
j\                  st        d«      ‚| j                  j2                  j_                  ||| ja                  «       |¬«      }|r|
jb                  r|j=                  |«       |r%|j=                  d|z  «       |j;                  |«       g }|D ]'  \  } }!|j=                  | «       |j;                  |!«       Œ) |rf|rte        d«      ‚|xs$ | j                  j2                  jg                  «       }|j=                  dd	j?                  |«      z  «       | jh                  rd}|rZ|s3|j;                  | j                  j2                  jk                  «       «       |j=                  d|z  «       |j;                  |«       | j                   jl                  rs|jo                  d | j                  j2                  jp                  | j                   jl                  j                  fi | j                   jl                  jr                  ¤Ž«       |rog }"|D ]+  \  }\  }#}$}|"j=                  |#«       |j;                  |$«       Œ- dd	j?                  |"«      z  }%|r|
jt                  r
dg|¢d‘|%‘}n|j=                  |%«       |	r]|j=                  | j                  j2                  jw                  | j                   jx                  | j                   jz                  «      «       |r|
jb                  s|j=                  |«       | j                   j|                  �r7|�r4g }&g }'t        | j6                  d¬«      D ]Æ  \  }(\  })}}|r]|&j=                  | j                  j2                  j9                  d«      ›d| j                  j2                  j9                  |«      ›�«       Œi|)j�                  |)j‚                  di«      }*|*j…                  | | j                  «      \  }+},|&j=                  |+«       |'j;                  |,«       ŒÈ dd	j?                  |&«      ›dd j?                  |«      ›d!�t‡        |'|z   «      f| j                   j‰                  |«       S d j?                  |«      t‡        |«      f| j                   j‰                  |«       S # t(        $ r | j*                  r‚ dg }}Y �Œt,        $ r dg }}Y �Œw xY w# t,        $ r dg }}Y �Œw xY w# | j                   j‰                  |«       w xY w)"zÍ
        Create the SQL for this query. Return the SQL string and list of
        parameters.

        If 'with_limits' is False, any limit/offset information is not included
        in the query.
        rW   Nzsupports_select_{}z-{} is not supported on this database backend.Ú z0 = 1r2  z AS r3  ÚFROMz:select_for_update cannot be used outside of a transaction.zNLIMIT/OFFSET is not supported with select_for_update on this database backend.z1NOWAIT is not supported on this database backend.z6SKIP LOCKED is not supported on this database backend.z8FOR UPDATE OF is not supported on this database backend.z<FOR NO KEY UPDATE is not supported on this database backend.)ÚnowaitÚskip_lockedÚofÚno_keyúWHERE %sz1annotate() + distinct(fields) is not implemented.zGROUP BY %sz	HAVING %sr   zORDER BY %sr/  r0  rp   rq   r  rÀ   úSELECT ú FROM (ú ú
) subquery)Er@   rR   rÉ   rÏ   rn   ri   r  r5   r}   r•   r	  r	   r  Úcombinator_allrg   rB  Úget_distinctÚget_from_clauserc   r   r   rB   r   rf   rõ   rü   Údistinct_sqlrD   rý   rz   rx   r  Úbare_select_suffixÚselect_for_updateÚhas_select_for_updateÚget_autocommitÚsupports_transactionsr    Ú%supports_select_for_update_with_limitÚselect_for_update_nowaitÚselect_for_update_skip_lockedÚselect_for_update_ofÚselect_for_no_key_updateÚhas_select_for_update_nowaitÚ!has_select_for_update_skip_lockedÚhas_select_for_update_ofÚhas_select_for_no_key_updateÚfor_update_sqlÚ"get_select_for_update_of_argumentsÚfor_update_after_fromrÑ   Úforce_no_orderingrG   Úforce_group_byÚexplain_infoÚinsertÚexplain_query_prefixÚoptionsÚ#requires_compound_order_by_subqueryÚlimit_offset_sqlÚlow_markÚ	high_markr  ry   Úrelabeled_cloner‡   r6   ÚtupleÚreset_refcounts)-r+   r.  rX   Úrefcounts_beforerÏ   rm   rl   re   Úfor_update_partÚwith_limit_offsetr}   rŒ   r‰   rö   Údistinct_paramsÚfrom_Úf_paramsrc   Úw_paramsrf   Úh_paramsÚdistinct_resultÚout_colsr†   Ús_sqlÚs_paramsr‡   rF  rG  rH  rI  ÚgroupingÚg_sqlÚg_paramsrÅ   Úo_sqlÚo_paramsÚorder_by_sqlÚsub_selectsÚ
sub_paramsr´   rD   Úselect_cloneÚ	subselectÚ	subparamss-                                                r/   r6   zSQLCompiler.as_sqló  s  € ð  Ÿ:™:×4Ñ4×9Ñ9Ó;ÐðX	9ØŸ™×.Ñ.ˆJØ/3×/AÑ/AØ!1Ò!E´T¸*Ó5Eð 0Bó 0Ñ,ˆL˜( Hð #ˆOà +Ò D°·
±
×0DÑ0DÐØŸ™×.Ñ.ˆJØ—‘×/Ñ/ˆHÙÜ˜xÐ)=×)DÑ)DÀZÓ)PÔQÜ+ØG×NÑNØ&óóð ð
 "&×!8Ñ!8Ø §
¡
× 9Ñ 9ó"‘�šð —’Ø!%×!5Ñ!5Ó!7‘�˜Ø’à37×3DÑ3DÓ3FÑ0� ð #'×"6Ñ"6Ó"8‘��xð
-à48·J±JÐ4J˜Ÿ™ T§Z¡ZÔ0ÐQSÐUWÐPXñ $�E˜8ð.ð  Ÿ;™;Ð2ð Ÿ™ T§[¡[Ô1à  "˜Xñ %�F˜Hð #˜�Ø�à—:‘:×&Ò&Ø7;·±×7JÑ7J×7WÑ7WØ'Ø'ó8Ñ4�O _ð ˜oÑ-�FØ˜oÑ-�Fà�Ø37·;±;ÀÑ3Mò +Ñ/�AÑ(˜˜x¨%Ùâ!Ø ŸO™O×/Ñ/×:Ñ:¸5ÔAð!˜ð —M‘M (Ô+Ø—O‘O EÕ*ð+ð ˜4Ÿ9™9 XÓ.Ð/Ñ/�ÙØ˜vÐ.¨Ð.Ñ.‘FØ—_‘_×-Ñ-×@Ò@Ø˜tŸ™×7Ñ7×JÑJÐKÑK�FØ—‘˜hÔ'à—:‘:×/Ó/°H×4RÓ4RàŸ™×6Ñ6Ô8ð %×:Ò:ä8ØXóð ñ
 *Ø (× NÒ Nä/ðJóð ð "ŸZ™Z×@Ñ@�FØ"&§*¡*×"JÑ"J�KØŸ™×8Ñ8�BØ!ŸZ™Z×@Ñ@�Fñ  h×&KÒ&KÜ/ØOóð ñ %¨X×-WÒ-WÜ/ØTóð ñ  H×$EÒ$EÜ/ØVóð ñ  ¨×(MÒ(MÜ/ð0óð ð '+§o¡o×&9Ñ&9×&HÑ&HØ%Ø$/Ø×BÑBÓDØ%ð	 'Ió '�Oñ # x×'EÒ'EØ—M‘M /Ô2áØ—M‘M *¨uÑ"4Ô5Ø—M‘M (Ô+à�Ø'/ò ,‘O�E˜8Ø—O‘O EÔ*Ø—M‘M (Õ+ð,ñ Ù&Ü1ØOóð ð  (ÒR¨4¯?©?×+>Ñ+>×+PÑ+PÓ+R�HØ—M‘M -°$·)±)¸HÓ2EÑ"EÔFØ×*Ò*Ø#'˜ÙÙ#ØŸ™ d§o¡o×&9Ñ&9×&HÑ&HÓ&JÔKØ—M‘M +°Ñ"6Ô7Ø—M‘M (Ô+à�z‰z×&Ò&Ø—‘ØØ<�D—O‘O×'Ñ'×<Ñ<ØŸ
™
×/Ñ/×6Ñ6ñàŸ*™*×1Ñ1×9Ñ9ñôñ Ø�Ø/7ò ,Ñ+�AÑ+˜˜x¨Ø—O‘O EÔ*Ø—M‘M (Õ+ð,ð  -¨t¯y©y¸Ó/BÑB�Ù (×"NÒ"NØ/ÐL°&ÐL¸#ÐL¸|ÐL‘Fà—M‘M ,Ô/á Ø—‘Ø—O‘O×'Ñ'×8Ñ8ØŸ
™
×+Ñ+¨T¯Z©Z×-AÑ-Aóôñ  x×'EÒ'EØ—‘˜oÔ.à�z‰z×"Ó"¢|ð !�Ø�
Ü1:¸4¿;¹;ÈaÔ1Pò 5Ñ-�EÑ-˜F A uÙØ#×*Ñ*ð !%§¡× 3Ñ 3× >Ñ >¸zÕ JØ $§¡× 3Ñ 3× >Ñ >¸uÔ Eðõð (.×'=Ñ'=Ø#Ÿ\™\¨:Ð6ó(˜ð 0<×/BÑ/BØ  $§/¡/ó0Ñ,˜	 9ð $×*Ñ*¨9Ô5Ø"×)Ñ)¨)Õ4ñ#5ð& —I‘I˜kÕ*Ø—H‘H˜VÕ$ðô ˜ fÑ,Ó-ð.ð �J‰J×&Ñ&Ð'7Õ8ð —8‘8˜FÓ#¤U¨6£]Ð2ð �J‰J×&Ñ&Ð'7Õ8øôq &ò 2Ø×'Ò'Øà&-¨r˜8“EÜ$ò -Ø&(¨"˜8“Eð-ûô %ò .Ø')¨2˜H“Fð.ûðV �J‰J×&Ñ&Ð'7Õ8úsa   ¦D,b8 Å.a4 Æ.b$ Æ0Y1b8 à=b8 á4b!âb8 âb!âb8 â b!â!b8 â$b5â1b8 â4b5â5b8 â8cNc                 óN  — g }|€| j                   j                  «       x}€|S |xs | j                   j                  «       }d|i}t        t	        j
                  |«      «      }|j                  D ]³  }|j                  j                  j                  }	|	|j                  k(  rd}	|r7|	�5t        |j                  j                  |	j                  j                  «      rŒm|r||vrŒt| j                   j                  ||	||«      }
|j                  |
«      }|j                  |«       Œµ |S )aT  
        Compute the default columns for selecting every field in the base
        model. Will sometimes be called to pull in related models (e.g. via
        select_related), in which case "opts" and "start_alias" will be given
        to provide a starting point for the traversal.

        Return a list of strings, quoted appropriately for use in SQL
        directly, as well as a set of aliases used in the select statement (if
        'as_pairs' is True, return a list of (alias, col_name) pairs instead
        of strings as the first component and None as the second component).
        N)r@   rÄ   r[   rs   r   ÚunnestÚconcrete_fieldsrK   Ú_metaÚconcrete_modelÚ
issubclassÚjoin_parent_modelÚget_colrx   )r+   r²   Ústart_aliasÚoptsr    rŒ   Úseen_modelsÚselect_mask_fieldsrÙ   rK   r‡   ræ   s               r/   r§   zSQLCompiler.get_default_columnsÖ  s  € ð ˆØˆ<ØŸ
™
×+Ñ+Ó-Ð-�Ð6Ø�Ø!ÒC T§Z¡Z×%AÑ%AÓ%Cˆð ˜[Ð)ˆÜ ¤×!1Ñ!1°+Ó!>Ó?Ðà×)Ñ)ò 	"ˆEØ—K‘K×%Ñ%×4Ñ4ˆEð ˜Ÿ
™
Ò"Ø�áØÐ%ÜØ×%Ñ%×4Ñ4°e·k±k×6PÑ6Pôð Ù˜uÐ,>Ñ>ØØ—J‘J×0Ñ0°°u¸kÈ;ÓWˆEØ—]‘] 5Ó)ˆFØ�M‰M˜&Õ!ð/	"ð0 ˆr0   c                 ó@  — g }g }| j                   j                  «       }| j                   j                  D ]ä  }|j                  t        «      }| j                  ||d«      \  }}}}	}
}}| j                   j                  ||	|
«      \  }}}|D ]Œ  }|| j                   j                  v r5|j                  | j                  j                  j                  |«      «       ŒP| j                   |||«      «      \  }}|j                  |«       |j                  |«       ŒŽ Œæ ||fS )zÎ
        Return a quoted list of fields to use in DISTINCT ON part of the query.

        This method can alter the tables in the query, and thus it must be
        called before get_from_clause().
        N)r@   rÄ   rö   rÐ   r
   Ú_setup_joinsÚ
trim_joinsrª   rx   r5   rü   rý   r   )r+   rŒ   r‰   r‘  rË   r  r†   Útargetsr‡   ÚjoinsÚpathÚtransform_functionr‘   rþ   Úps                  r/   rP  zSQLCompiler.get_distinct	  s  € ð ˆØˆØ�z‰z×"Ñ"Ó$ˆà—J‘J×.Ñ.ò 	%ˆDØ—J‘JœzÓ*ˆEØDH×DUÑDUØ�t˜TóEÑAˆAˆw˜˜u d¨AÐ/Að !%§
¡
× 5Ñ 5°g¸uÀdÓ KÑˆG�U˜AØ!ò %�Ø˜4Ÿ:™:×7Ñ7Ñ7Ø—M‘M $§/¡/×"5Ñ"5×"@Ñ"@ÀÓ"FÕGàŸ<™<Ñ(:¸6À5Ó(IÓJ‘D�A�qØ—M‘M !Ô$Ø—M‘M !Õ$ñ%ð	%ð �vˆ~Ðr0   c                 óž  ‡ ‡— t        ‰|«      \  Š}|dk(  }‰j                  t        «      }‰ j                  |||«      \  }	}
}}}}}|	j                  �r1|j
                  �r$t        |	dd«      |d   k7  �r‰dk7  �r
t        |dd«      sý|xs
 t        «       }t        ˆ fd„|D «       «      }||v rt        d	«      ‚|j                  |«       g }|j
                  D ]¨  }t        |d
«      r2t        |t        «      s"|r|j                  «       n|j                  «       }t        |t        «      r+|j!                  |j#                  ‰› t        › �«      df«       Œ||j%                  ˆfd„‰ j'                  |||||«      D «       «       Œª |S ‰ j(                  j+                  |
||«      \  }
}}|
D �cg c]  }t         |||«      |¬«      df‘Œ c}S c c}w )zâ
        Return the table alias (the name might be ambiguous, the alias will
        not be) and column name for ordering by the given 'name' parameter.
        The 'name' is of the form 'field1__field2__...__fieldN'.
        r»   ÚattnameNéÿÿÿÿÚpkÚhas_transformsFc              3   óf   •K  — | ](  }t        ‰j                  j                  |   d d«      –— Œ* y­w)Ú	join_colsN)r•   r@   rZ   )rS   Újr+   s     €r/   rU   z1SQLCompiler.find_ordering_name.<locals>.<genexpr>E  s.   øè ø€ ò ØHI”˜Ÿ
™
×,Ñ,¨QÑ/°¸d×Cñùs   ƒ.1z!Infinite loop caused by ordering.r¼   c              3   óZ   •K  — | ]"  \  }}|j                  ‰› t        › �«      |f–— Œ$ y ­wr'   )Úprefix_referencesr
   )rS   r„   rŠ   rË   s      €r/   rU   z1SQLCompiler.find_ordering_name.<locals>.<genexpr>W  s6   øè ø€ ò á$˜˜fð ×+Ñ+¨t¨f´Z°LÐ,AÓBÀFÔKñùs   ƒ(+r¾   )r   rÐ   r
   r•  Úis_relationrÅ   r•   rs   ro  r   rw   rt   rv   r   ÚdescrÈ   rx   r¥  rz   rÕ   r@   r–  )r+   rË   r‘  r‡   rÁ   Úalready_seenrÛ   r¿   ÚpiecesrÙ   r—  r˜  r™  rš  Ú
join_tupleÚresultsÚitemr†   r÷   s   ``                 r/   rÕ   zSQLCompiler.find_ordering_name#  sè  ù€ ô $ D¨-Ó8‰ˆˆeØ˜f‘_ˆ
Ø—‘œJÓ'ˆð ×Ñ˜f d¨EÓ2ñ	
ØØØØØØØð ×ÓØ—“Ü˜˜y¨$Ó/°6¸"±:Ó=Ø˜“ÜÐ.Ð0@À%ÔHð (Ò0¬3«5ˆLÜó ØMRôó ˆJð ˜\Ñ)Ü Ð!DÓEÐEØ×Ñ˜ZÔ(àˆGØŸ™ò �Ü˜4Ð!5Ô6¼zØœ'ô@ñ +5˜4Ÿ9™9œ;¸$¿(¹(»*�DÜ˜d¤GÔ,Ø—N‘NØ×/Ñ/°4°&¼¸Ð0EÓFÈÐNôð Ø—‘ó à(,×(?Ñ(?Ø˜d E¨5°,ó)ôõ ðð  ˆNØ ŸJ™J×1Ñ1°'¸5À$ÓGÑˆ�˜ð ö
àô Ñ'¨¨5Ó1¸jÔIÈ5ÒQò
ð 	
ùò 
s   Æ*G
c                 ó¢   — |xs | j                   j                  «       }| j                   j                  |||«      \  }}}}}}|d   }|||||||fS )a$  
        Helper method for get_order_by() and get_distinct().

        get_ordering() and get_distinct() must produce same target columns on
        same input, as the prefixes of get_ordering() and get_distinct() must
        match. Executing SQL where this is not true is an error.
        rž  )r@   r[   Úsetup_joins)	r+   r©  r‘  r‡   rÙ   r—  r˜  r™  rš  s	            r/   r•  zSQLCompiler._setup_joinsd  sf   € ð Ò7˜Ÿ™×5Ñ5Ó7ˆØ@DÇ
Á
×@VÑ@VØ�D˜%óA
Ñ=ˆˆw˜˜e TÐ+=ð �b‘	ˆØ�g˜u e¨T°4Ð9KÐKÐKr0   c                 ó>  — g }g }t        | j                  j                  j                  «       «      D ]U  \  }}| j                  j                  |   sŒ | j                  |«      \  }}|j                  |«       |j                  |«       ŒW | j                  j                  D ]x  }| j                  j                  |«      \  }}|| j                  j                  vs| j                  j                  |   dk(  sŒV|j                  d| j                  |«      z  «       Œz ||fS )aÛ  
        Return a list of strings that are joined together to go after the
        "FROM" part of the query, as well as a list any extra parameters that
        need to be included. Subclasses, can override this to create a
        from-clause via a "select".

        This should only be called after any SQL construction methods that
        might change the tables that are needed. This means the select columns,
        ordering, and distinct must be done first.
        rp   z, %s)ro  r@   rZ   r©   rR   r   rx   rz   Úextra_tablesÚtable_aliasrÓ   )	r+   rŒ   r‰   r‡   Úfrom_clauseÚ
clause_sqlÚclause_paramsr÷   r†   s	            r/   rQ  zSQLCompiler.get_from_clauses  s  € ð ˆØˆô #(¨¯
©
×(<Ñ(<×(BÑ(BÓ(DÓ"Eò 	)ÑˆE�;Ø—:‘:×,Ñ,¨UÒ3ØØ(,¯©°[Ó(AÑ%ˆJ˜Ø�M‰M˜*Ô%Ø�M‰M˜-Õ(ð	)ð —‘×(Ñ(ò 		LˆAØ—z‘z×-Ñ-¨aÓ0‰HˆE�1ð
 ˜TŸZ™Z×1Ñ1Ñ1Ø—:‘:×,Ñ,¨UÑ3°qÓ8à—‘˜f t×'CÑ'CÀEÓ'JÑJÕKð		Lð �vˆ~Ðr0   c           
      óð  ‡ ‡— ˆˆ fd„}g }	|s|‰ j                   j                  kD  r|	S ‰s4‰ j                   j                  «       Š‰ j                   j                  «       }t	        «       }
|€<t        ‰ j                   j                  t        «      }|r‰ j                   j                  }d„ }‰j                  D �]î  }|
j                  |j                  «       |rk|j                  |j                  i «      }|j                  sE|s|j                  |v r5t        d|j                  ›ddj                   |«       «      xs d›�«      ‚d}t        ||||«      sŒ�|j                  |«      xs i }|j                   j"                  |d|j$                  |j&                  r|j                   j$                  nd	„ dd
œ}|	j)                  |«       g }‰ j                   j+                  |j                  g‰|«      \  }}}}}}|d   }‰ j-                  |||j                   j"                  j.                  ¬«      }|D ]/  }|j)                  t1        |«      «       |j)                  |df«       Œ1 ||d<   ‰ j3                  |||j                   j"                  j.                  ||dz   ||«      } |||«       �Œñ |�rÇ‰j4                  D �cg c]=  }|j6                  j&                  r%|j8                  s||j6                  |j:                  f‘Œ? }}|D �]p  \  }}}t        ||||«      sŒ|j                  |«      xs i }|j=                  «       }|
j                  |«       ‰ j                   j+                  |g‰|«      }|j>                  d   }tA        |‰j"                  «      xr |‰j"                  u}||d|j$                  |j$                  |d
œ}|	j)                  |«       g }‰ j-                  |||j.                  ‰j"                  ¬«      }|D ]/  }|j)                  t1        |«      «       |j)                  |df«       Œ1 ||d<   |j                  |i «      }‰ j3                  |||j.                  ||dz   ||«      } |||«       �Œs d„ }d„ } d„ }!tC        |«      D �]Š  }"|dkD  r �n‚|"‰ j                   jD                  v sŒ%|
j                  |"«       ‰ j                   j+                  |"g‰|«      \  }#}}$}}}|$j"                  }|d   }tA        |‰j"                  «      xr |‰j"                  u}||#dt1        |«      dk  rtG        ||#«      n| tG        |!|"«      |d
œ}|	j)                  |«       g }|j                  |"|#f«      xs i }%‰ j-                  |%||j.                  ‰j"                  ¬«      }|D ]/  }|j)                  t1        |«      «       |j)                  |df«       Œ1 ||d<   |j                  |"i «      }&‰ j3                  ||%|j.                  ||dz   |&|¬«      } |||«       �Œ� t	        |«      jI                  |
«      }'|'rAd„ |'D «       }(t        ddj                  |(«      ›ddj                   |«       «      xs d›�«      ‚|	S c c}w )a  
        Fill in the information needed for a select_related query. The current
        depth is measured as the number of connections away from the root model
        (for example, cur_depth=1 means we are looking at models with direct
        connections to the root model).
        c                  ó’   •— d„ ‰j                   D «       } d„ ‰j                  D «       }t        | |‰j                  j                  «      S )Nc              3   óN   K  — | ]  }|j                   sŒ|j                  –— Œ y ­wr'   )r¦  rË   ©rS   Úfs     r/   rU   zQSQLCompiler.get_related_selections.<locals>._get_field_choices.<locals>.<genexpr>§  s   è ø€ ÒK¨¸Q¿]»]˜aŸf�fÑKùs   ‚%”%c              3   ó|   K  — | ]4  }|j                   j                  r|j                   j                  «       –— Œ6 y ­wr'   )rÙ   ÚuniqueÚrelated_query_namer¸  s     r/   rU   zQSQLCompiler.get_related_selections.<locals>._get_field_choices.<locals>.<genexpr>¨  s0   è ø€ ò àØ—7‘7—>’>ð —‘×*Ñ*×,ñùs   ‚:<)ÚfieldsÚrelated_objectsr   r@   Ú_filtered_relations)Údirect_choicesÚreverse_choicesr‘  r+   s     €€r/   Ú_get_field_choicesz>SQLCompiler.get_related_selections.<locals>._get_field_choices¦  sF   ø€ ÙK¨d¯k©kÔKˆNñà×-Ñ-ôˆOô
 Ø °·±×1OÑ1Oóð r0   Nc                 ó   — || d<   y )Nrž   r2   )rF   rž   s     r/   Úget_related_klass_infoszCSQLCompiler.get_related_selections.<locals>.get_related_klass_infosÂ  s   € Ø0CˆJÐ,Ò-r0   z/Non-relational field given in select_related: 'z'. Choices are: r3  z(none)Fc                  ó   — y r'   r2   )ÚxÚys     r/   ú<lambda>z4SQLCompiler.get_related_selections.<locals>.<lambda>â  s   � r0   )rK   rÙ   ÚreverseÚlocal_setterÚremote_setterr    rž  )r�  r‘  r�   rp   T)r�  r‘  r    c                 óB   — |r| j                   j                  ||«       y y r'   )Úremote_fieldÚset_cached_value)Úfinal_fieldÚobjÚfrom_objs      r/   rÊ  z8SQLCompiler.get_related_selections.<locals>.local_setter4  s    € áØ×,Ñ,×=Ñ=¸hÈÕLð r0   c                  ó   — y r'   r2   )rÐ  rÑ  s     r/   Úlocal_setter_noopz=SQLCompiler.get_related_selections.<locals>.local_setter_noop9  s   € Ør0   c                 ó   — t        || |«       y r'   )Úsetattr)rË   rÐ  rÑ  s      r/   rË  z9SQLCompiler.get_related_selections.<locals>.remote_setter<  s   € Ü˜ $¨Õ,r0   é   )r‘  Ú
root_aliasÚ	cur_depthÚ	requestedÚ
restrictedc              3   ó&   K  — | ]	  }d |z  –— Œ y­w)z'%s'Nr2   )rS   Úss     r/   rU   z5SQLCompiler.get_related_selections.<locals>.<genexpr>s  s   è ø€ Ò!G° &¨1¥*Ñ!Gùs   ‚z/Invalid field name(s) given in select_related: z. Choices are: )%r@   Ú	max_depthrÄ   r[   rs   rv   r¯   Údictr½  rw   rË   r€   r¦  r   r  r   rÍ  rK   rÎ  r»  rx   r®  r§   r‹  r]   r°   r¾  rÙ   Úmany_to_manyÚrelated_modelr¼  r˜  r�  r«   r¿  r   r  ))r+   rD   r²   r‘  r×  rØ  rÙ  rÚ  rÂ  rž   Úfields_foundrÄ  r¹  ÚnextÚrelated_select_maskrF   r�   r†   r˜  r‡   Úcolumnsrœ   Únext_klass_infosÚoÚrelated_fieldsÚrelated_objectÚrelated_fieldrK   Úrelated_field_nameÚ	join_infor    rÊ  rÓ  rË  rË   rÏ  Ú	join_optsÚfield_select_maskÚnext_requestedÚfields_not_foundÚinvalid_fieldss)   `  `                                     r/   r°   z"SQLCompiler.get_related_selections•  sª  ù€ õ"		ð !ÐÙ˜i¨$¯*©*×*>Ñ*>Ò>à&Ð&áØ—:‘:×&Ñ&Ó(ˆDØŸ™×5Ñ5Ó7ˆJô “uˆØÐÜ# D§J¡J×$=Ñ$=¼tÓDˆJÙØ ŸJ™J×5Ñ5�	ò	Dð —‘ó 5	BˆAØ×Ñ˜QŸV™VÔ$áØ —}‘} Q§V¡V¨RÓ0�Ø—}’}ñ ˜qŸv™v¨Ñ2Ý(ð !"§£Ø $§	¡	Ñ*<Ó*>Ó ?Ò KÀ8Ð Kð	óð ð �ä)¨!¨Z¸ÀKÔPØØ"-§/¡/°!Ó"4Ò":¸ÐàŸ™×-Ñ-ØØ Ø !× 2Ñ 2à78·x²x�A—N‘N×3Ò3ÑEVà$ñ	ˆJð  ×&Ñ& zÔ2ØˆMØ#'§:¡:×#9Ñ#9¸1¿6¹6¸(ÀDÈ*Ó#UÑ ˆAˆq�!�U˜A˜qØ˜"‘IˆEØ×.Ñ.Ø#°¸Q¿^¹^×=QÑ=Q×=WÑ=Wð /ó ˆGð ò +�Ø×$Ñ$¤S¨£[Ô1Ø—‘˜s D˜kÕ*ð+ð +8ˆJ�Ñ'Ø#×:Ñ:ØØ#Ø—‘×$Ñ$×*Ñ*ØØ˜A‘ØØó Ðñ $ JÐ0@ÖAðk5	Bòn ð ×-Ñ-öàØ—7‘7—>’>¨!¯.ª.ð �A—G‘G˜QŸ_™_Ò-ðˆNð ð
 9Gó 0FÑ4� ¨uÜ-Ø"ØØØô	ð à&1§o¡o°nÓ&EÒ&KÈÐ#Ø%2×%EÑ%EÓ%GÐ"Ø× Ñ Ð!3Ô4à ŸJ™J×2Ñ2Ø'Ð(¨$°
ó�	ð "Ÿ™¨Ñ+�Ü(¨°·
±
Ó;ÒWÀÈTÏZÉZÐ@W�à"Ø*Ø#Ø$2×$CÑ$CØ%2×%CÑ%CØ#.ñ�
ð $×*Ñ*¨:Ô6Ø "�Ø×2Ñ2Ø'Ø %ØŸ™Ø $§
¡
ð	 3ó �ð #ò /�CØ!×(Ñ(¬¨V«Ô5Ø—M‘M 3¨ +Õ.ð/ð /<�
˜?Ñ+Ø —}‘}Ð%7¸Ó<�Ø#'×#>Ñ#>ØØ'Ø—K‘KØØ ‘MØØó$Ð ñ (¨
Ð4DÖEða0FòdMò
ò-ô ˜Y›ó 1J�à˜q’=ÚØ˜4Ÿ:™:×9Ñ9Ò9Ø ×$Ñ$ TÔ*Ø=A¿Z¹Z×=SÑ=SØ˜  jó>Ñ:�K  I¨u°a¸ð &ŸO™O�EØ! "™I�Eä" 5¨$¯*©*Ó5ÒQ¸%ÀtÇzÁzÐ:Qð  ð "'Ø!,Ø#'ô  # 5›z¨Qšô $ L°+Ô>à!2ä)0°ÀÓ)EØ'2ñ"�Jð (×.Ñ.¨zÔ:Ø$&�MØ(3¯©¸¸{Ð8KÓ(LÒ(RÐPRÐ%Ø"×6Ñ6Ø)Ø$)Ø"Ÿ[™[Ø$(§J¡Jð	 7ó �Gð  'ò 3˜Ø%×,Ñ,¬S°«[Ô9ØŸ™ s¨D kÕ2ð3ð 3@�J˜Ñ/Ø%.§]¡]°4¸Ó%<�NØ'+×'BÑ'BØØ)Ø"Ÿ[™[Ø#(Ø"+¨a¡-Ø"0Ø#-ð (Có (Ð$ñ ,¨JÐ8HÖIðc1Jôd  # 9›~×8Ñ8¸ÓFÐÙÙ!GÐ6FÔ!G�Ý ð Ÿ	™	 .Õ1ØŸ	™	Ñ"4Ó"6Ó7ÒC¸8ÐCð	óð ð #Ð"ùòs   Ê8AY3c           	      ó  ‡ ‡— ˆ fd„Šˆ fd„}ˆˆ fd„}‰ j                   sg S g }g }‰ j                  j                  D �]  }‰ j                   }|dk(  r	 ||«      }n†|j                  t        «      D ]R  }g |j                  dg «      ¢ ‰|«      ¢­}	|	D ]+  }
|
d   }|
d   r|j                  }|j                  |k(  sŒ)|
} ŒO d} n |€|j                  |«       Œœ ||«      }|€Œ§‰ j                  j                  j                  r$|j                  ‰ j                  |«      d	   «       Œë|j                  ‰ j                  |j                  «      «       �Œ |r5t        d
dj!                  |«      ›ddj!                   |«       «      ›d�«      ‚|S )zk
        Return a quoted list of arguments for the SELECT FOR UPDATE OF part of
        the query.
        c           	   3   ó¤  •K  — | d   j                   j                  }|j                   j                  j                  «       D ]†  \  }}|j                   j                  }||d| d   D �cg c]U  }‰j
                  |   d   j                  j                  |k(  s(‰j
                  |   d   j                  j                  |v r|‘ŒW c}dœ–— Œˆ y c c}w ­w)NrK   Fr�   r   )rK   rÙ   rÉ  r�   )r‹  rŒ  Úparentsr©   Úall_parentsrD   r‘   rK   )rF   rŒ  Úparent_modelÚparent_linkrô  Úselect_indexr+   s         €r/   Ú_get_parent_klass_infozNSQLCompiler.get_select_for_update_of_arguments.<locals>._get_parent_klass_info„  sÒ   øè ø€ Ø'¨Ñ0×6Ñ6×EÑEˆNØ-;×-AÑ-A×-IÑ-I×-OÑ-OÓ-Qò Ñ)�˜kØ*×0Ñ0×<Ñ<�à)Ø(Ø$ð -7°Ñ,Gö&à(ð !ŸK™K¨Ñ5°aÑ8×?Ñ?×EÑEÈÒUØ#Ÿ{™{¨<Ñ8¸Ñ;×BÑB×HÑHÈKÑWò %ò&ñ	ó ñùò&ùs   ƒA$CÁ'ACÃCc                 óÆ   •— | d   j                   j                  }| d   D ]?  }‰j                  |   d   j                  j                  |k(  sŒ-‰j                  |   d   c S  y)zì
            Find the first selected column from a model. If it doesn't exist,
            don't lock a model.

            select_fields is filled recursively, so it also contains fields
            from the parent models.
            rK   r�   r   N)r‹  rŒ  rD   r‘   rK   )rF   rŒ  r÷  r+   s      €r/   Ú"_get_first_selected_col_from_modelzZSQLCompiler.get_select_for_update_of_arguments.<locals>._get_first_selected_col_from_model—  se   ø€ ð (¨Ñ0×6Ñ6×EÑEˆNØ *¨?Ñ ;ò 8�Ø—;‘;˜|Ñ,¨QÑ/×6Ñ6×<Ñ<ÀÓNØŸ;™; |Ñ4°QÑ7Ò7ñ8r0   c               3   ó¦  •‡K  — t        j                  d‰j                  fg«      } | r§| j                  «       \  }}|€g Šd–— n=|d   }|d   r|j                  }||j
                  gz   Št        j                  ‰«      –— | j                  ˆfd„ ‰|«      D «       «       | j                  ˆfd„|j                  dg «      D «       «       | rŒ¦yy­w)z<Yield all allowed field paths in breadth-first search order.Nr+   rÙ   rÉ  c              3   ó&   •K  — | ]  }‰|f–— Œ
 y ­wr'   r2   ©rS   rF   r™  s     €r/   rU   z]SQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices.<locals>.<genexpr>²  ó   øè ø€ ò à"ð ˜:Ô&ñùó   ƒc              3   ó&   •K  — | ]  }‰|f–— Œ
 y ­wr'   r2   rý  s     €r/   rU   z]SQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices.<locals>.<genexpr>¶  rþ  rÿ  rž   )
ÚcollectionsÚdequerF   ÚpopleftrÍ  rË   r
   r  rz   r€   )ÚqueueÚparent_pathrF   rÙ   r™  rø  r+   s       @€€r/   rÂ  zJSQLCompiler.get_select_for_update_of_arguments.<locals>._get_field_choices¤  sÌ   ùè ø€ ä×%Ñ%¨¨d¯o©oÐ'>Ð&?Ó@ˆEÙØ*/¯-©-«/Ñ'�˜ZØÐ&Ø�DØ “Là& wÑ/�EØ! )Ò,Ø %× 2Ñ 2˜Ø&¨%¯*©*¨Ñ5�DÜ$Ÿ/™/¨$Ó/Ò/Ø—‘ó á&<¸ZÓ&Hôô ð —‘ó à&0§n¡nÐ5JÈBÓ&Oôô ô ùs   „C
CÃCr+   rž   rÙ   rÉ  Nr   z<Invalid field name(s) given in select_for_update(of=(...)): r3  zI. Only relational fields followed in the query are allowed. Choices are: rÀ   )rF   r@   r[  rÐ   r
   r€   rÍ  rË   rx   r5   r}   Úselect_for_update_of_columnr   rÓ   r‡   r   r  )r+   rú  rÂ  rŒ   Úinvalid_namesrË   rF   rœ   r  Úklass_infosÚrelated_klass_inforÙ   rø  s   `           @r/   rb  z.SQLCompiler.get_select_for_update_of_arguments~  s˜  ù€ ô	ô&	8õ	ð. �ŠØˆIØˆØˆØ—J‘J×3Ñ3ó 	KˆDØŸ™ˆJØ�vŠ~Ù8¸ÓD‘à ŸJ™J¤zÓ2ò �Dð#Ø#Ÿ™Ð(=¸rÓBð#á/°
Ó;ñ#�Kð /:ò 	Ð*Ø 2°7Ñ ;˜Ø-¨iÒ8Ø$)×$6Ñ$6˜EØ Ÿ:™:¨Ó-Ø);˜JÙ!ð	ð &*˜
Ùðð Ð%Ø!×(Ñ(¨Ô.ØÙ8¸ÓD�Ø‰Ø—?‘?×+Ñ+×GÒGØ—M‘M $§,¡,¨sÓ"3°AÑ"6Õ7à—M‘M $×">Ñ">¸s¿y¹yÓ"IÖJð9	Kñ: Ýð
 —I‘I˜mÕ,Ø—I‘IÑ0Ó2Õ3ðóð ð ˆr0   c                 óœ  — d}i }|D ]Â  }t        |t        «      rU|j                  «       }| j                  |«      }|j	                  «       D ]  \  }\  }}	||	f|||z   <   Œ |t        |«      z  }Œh|rT| j                  j                  j                  |«      }
|j                  | j                  «      }|
s|r
|
|z   |f||<   |dz  }Œ¾|dz  }ŒÄ |S )Nr   rp   )	rv   r   r&  Úget_convertersr©   r]   r5   rü   Úget_db_converters)r+   r‚   ÚiÚ
convertersrµ   r³   Úcols_convertersr£  Úconvsrœ   Úbackend_convertersÚfield_converterss               r/   r  zSQLCompiler.get_convertersè  sê   € ØˆØˆ
à%ò 	ˆJÜ˜*¤hÔ/Ø!×8Ñ8Ó:�Ø"&×"5Ñ"5°dÓ";�Ø'6×'<Ñ'<Ó'>ò 5‘O�A‘|˜˜sØ).°¨�J˜q 1™uÒ%ð5à”S˜“_Ñ$‘ÙØ%)§_¡_×%8Ñ%8×%JÑ%JÈ:Ó%VÐ"Ø#-×#?Ñ#?ÀÇÁÓ#PÐ Ù%Ñ)9Ø%7Ð:JÑ%JÈJÐ$W�J˜q‘MØ�Q‘‘à�Q‘‘ð	ð  Ðr0   c              #   óØ   K  — | j                   }t        |j                  «       «      }t        t        |«      D ].  }|D ]#  \  }\  }}||   }|D ]  }	 |	|||«      }Œ |||<   Œ% |–— Œ0 y ­wr'   )r5   r«   r©   Úmap)
r+   Úrowsr  r5   ÚrowÚposr  rµ   ÚvalueÚ	converters
             r/   Úapply_converterszSQLCompiler.apply_convertersþ  sˆ   è ø€ Ø—_‘_ˆ
Ü˜*×*Ñ*Ó,Ó-ˆ
Ü”t˜T“?ò 	ˆCØ,6ò !Ñ(�Ñ(�e˜ZØ˜C™�Ø!&ò E�IÙ% e¨Z¸ÓD‘EðEà ��C’ð	!ð
 ‹Iñ	ùs   ‚A(A*c                 ó&   — t        d„ |D «       «      S )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr'   )rv   r   )rS   rµ   s     r/   rU   z3SQLCompiler.has_composite_fields.<locals>.<genexpr>  s   è ø€ ÒR¸
”:˜j¬(×3ÑRùs   ‚)Úany)r+   r‚   s     r/   Úhas_composite_fieldsz SQLCompiler.has_composite_fields	  s   € ô ÑRÀkÔRÓRÐRr0   c              #   ó  K  — t        |«      D ��cg c]-  \  }}t        |t        «      rt        ||t	        |«      z   «      ‘Œ/ }}}t        t        |«      D ]  }|D ]  }t        ||   «      f||<   Œ |–— Œ! y c c}}w ­wr'   )ry   rv   r   Úslicer]   r  r«   ro  )r+   r  r‚   r  rµ   Úcol_pair_slicesr  r  s           r/   Úcomposite_fields_to_tuplesz&SQLCompiler.composite_fields_to_tuples  sŽ   è ø€ ô "+¨;Ó!7÷
á��:Ü˜*¤hÔ/ô �!�Qœ˜Z›Ñ(Õ)ð
ˆñ 
ô ”t˜T“?ò 	ˆCØ&ò .�Ü! # c¡(›OÐ-��C’ð.ð ‹Iñ		ùó
ùs   ‚A?‘2A9Á<A?c                 ót  — |€| j                  t        ||¬«      }| j                  d| j                   D �cg c]  }|d   ‘Œ	 }}| j	                  |«      }t        j                  |«      }|r| j                  ||«      }| j                  |«      r| j                  ||«      }|rt        t        |«      }|S c c}w )z>Return an iterator over the results from executing this query.)Úchunked_fetchÚ
chunk_sizer   )Úexecute_sqlr   rD   r^   r  r   Úfrom_iterabler  r  r"  r  ro  )	r+   r«  Útuple_expectedr$  r%  rÜ  r½  r  r  s	            r/   Úresults_iterzSQLCompiler.results_iter  s¼   € ð ˆ?Ø×&Ñ&Ü ]¸zð 'ó ˆGð !%§¡¨A°·±Ð ?Ö@˜1�!�A“$Ð@ˆÐ@Ø×(Ñ(¨Ó0ˆ
Ü×"Ñ" 7Ó+ˆÙØ×(Ñ(¨¨zÓ:ˆDØ×$Ñ$ VÔ,Ø×2Ñ2°4¸Ó@ˆDÙÜ”u˜dÓ#ˆDØˆùò As   ¶B5c                 ó>   — t        | j                  t        «      «      S )z€
        Backends (e.g. NoSQL) can override this in order to use optimized
        versions of "query has any results."
        )ri   r&  r   rL   s    r/   Úhas_resultszSQLCompiler.has_results2  s   € ô
 �D×$Ñ$¤VÓ,Ó-Ð-r0   c                 óÔ  — |xs t         }	 | j                  «       \  }}|st        ‚	 |r| j
                  j                  «       }n| j
                  j                  «       }	 |j                  ||«       |t        k(  r	 |j                  |j                  «        S |t        k(  r|S |t        k(  rD	 |j                  «       }|r|d| j                    |j                  «        S ||j                  «        S |t         k(  r|j                  «        yt#        || j
                  j$                  j&                  | j(                  r| j                   nd|«      }|r | j
                  j$                  j*                  st-        |«      S |S # t        $ r |t        k(  rt	        g «      cY S Y yw xY w# t        $ r |j                  «        ‚ w xY w# |j                  «        w xY w# |j                  «        w xY w)a"  
        Run the query against the database and return the result(s). The
        return value depends on the value of result_type.

        When result_type is:
        - MULTI: Retrieves all rows using fetchmany(). Wraps in an iterator for
           chunked reads when supported.
        - SINGLE: Retrieves a single row using fetchone().
        - ROW_COUNT: Retrieves the number of rows in the result.
        - CURSOR: Runs the query, and returns the cursor object. It is the
           caller's responsibility to close the cursor.
        Nr   )r   r6   r   r   Úiterr5   Úchunked_cursorÚcursorÚexecuteÚ	ExceptionÚcloser   Úrowcountr   r   Úfetchoner^   Úcursor_iterr}   Úempty_fetchmany_valuerj   Úcan_use_chunked_readsr«   )	r+   Úresult_typer$  r%  rˆ   r‰   r/  ÚvalrŒ   s	            r/   r&  zSQLCompiler.execute_sql9  s§  € ð "Ò/¤Zˆð	ØŸ+™+›-‰KˆC�ÙÜ$Ð$ð ñ Ø—_‘_×3Ñ3Ó5‰Fà—_‘_×+Ñ+Ó-ˆFð	Ø�N‰N˜3 Ô'ð œ)Ò#ðØ—‘à—‘•Øœ&Ò àˆMØœ&Ò ðØ—o‘oÓ'�ÙØ˜q 4§>¡>Ð2ð —‘•ð ð —‘•Øœ*Ò$Ø�L‰LŒNØäØØ�O‰O×$Ñ$×:Ñ:Ø"×3Ò3ˆD�NŠN¸Øó	
ˆñ  D§O¡O×$<Ñ$<×$RÒ$Rô
 ˜“<ÐØˆøôc ò 	ØœeÒ#Ü˜B“x’áð		ûô ò 	à�L‰LŒNØð	ûð —‘•ûð —‘•ús;   ŒE= Á F" Á<G  Â- G ÃG Å=FÆFÆ"F=Ç GÇG'c           
   #   ór  K  — t        | j                  «       «      }| j                  j                  j                  }|r#|j                  «       dk(  rt        j                  nt        }|D ]E  }|D ]>  }t        |t        «      s(dj                  |D �cg c]
  } ||«      ‘Œ c}«      –— Œ;|–— Œ@ ŒG y c c}w ­w)NÚjsonrM  )r«   r&  r@   rf  r	  Úlowerr;  Údumpsr3   rv   r  )r+   rŒ   Úformat_Úoutput_formatterr  r  Úcs          r/   Úexplain_queryzSQLCompiler.explain_query€  sŸ   è ø€ Ü�d×&Ñ&Ó(Ó)ˆð —*‘*×)Ñ)×0Ñ0ˆÙ)0°W·]±]³_ÈÒ5Nœ4Ÿ:š:ÔTWÐØò 	 ˆCØò  �Ü! %¬Ô-ØŸ(™(ÀÖ#G¸AÑ$4°QÕ$7Ò#GÓHÓHà“Kñ	 ñ	 ùò $Hùs   ‚BB7ÂB2ÂB7)T)F)TF)NNN)Nrº   N)NNrp   NN))r7   r8   r9   r#   ÚreÚ	MULTILINEÚDOTALLrê   r*   rM   r_   rn   rk   r|   r\   rß   rb   rh   rÓ   r   r  r  rB  r6   r§   rP  rÕ   r•  rQ  r°   rb  r  r  r  r"  r   r)  r+  r   r&  rA  r2   r0   r/   r=   r=   (   s	  „ á%Ø Ø
�‰�r—y‘yÑ ó€Nó
#ò"
ó*ó0ò eòNó@h,òTMò^;òzòò,ò3òj#ò4^ó@a9ðH EIó1òfð6 IMó?
òBLò ðL ØØØØóg#òRhòTò,	òSò
ð ØØØ*óò..ð  ¨uÐAXóEóN r0   r=   c                   ó:   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d	d„Z
y)
ÚSQLInsertCompilerNr2   c                 óä   — |€|g }}n@t        |d«      r| j                  |«      \  }}n|� ||| | j                  «      |g}}nd|g}}| j                  j                  j	                  ||«      }||fS )at  
        Take a field and a value intended to be saved on that field, and
        return placeholder SQL and accompanying params. Check for raw values,
        expressions, and fields with get_placeholder() defined in that order.

        When field is None, consider the value raw and use it as the
        placeholder, with no corresponding parameters returned.
        r6   ú%s)rt   r   r5   rü   Úmodify_insert_params)r+   rÙ   Úget_placeholderr9  rˆ   r‰   s         r/   Úfield_as_sqlzSQLInsertCompiler.field_as_sql’  sƒ   € ð ˆ=à˜r�‰CÜ�S˜(Ô#àŸ,™, sÓ+‰KˆC‘ØÐ(ñ *¨#¨t°T·_±_ÓEÈÀu�‰Cð   �ˆCð —‘×$Ñ$×9Ñ9¸#¸vÓFˆà�Fˆ{Ðr0   c                 ól  — t        |d«      rŒ|j                  | j                  dd¬«      }|j                  rt	        d|›d|›d�«      ‚|j
                  rt        d|j                  ›d	|›d
�«      ‚|j                  rt        d|j                  ›d	|›d
�«      ‚|j                  || j                  ¬«      S )zœ
        Prepare a value to be used in a query by resolving it if it is an
        expression and otherwise calling the field's get_db_prep_save().
        r¼   FT©rá   Úfor_savezFailed to insert expression "z" on z<. F() expressions can only be used to update, not to insert.ú3Aggregate functions are not allowed in this query (ú=ú).ú2Window expressions are not allowed in this query (©r5   )rt   r¼   r@   Úcontains_column_referencesÚ
ValueErrorÚcontains_aggregater   rË   Úcontains_over_clauseÚget_db_prep_saver5   )r+   rÙ   r  s      r/   Úprepare_valuezSQLInsertCompiler.prepare_value²  sº   € ô
 �5Ð.Ô/Ø×,Ñ,Ø—
‘
¨¸ð -ó ˆEð ×/Ò/Ý âDIÊ5ðRóð ð ×'Ò'Ý à"'§*£*ªeð5óð ð ×)Ò)Ý à—z“z¢5ð*óð ð ×%Ñ% e¸¿¹Ð%ÓHÐHr0   c                 ó€   — | j                   j                  rt        ||j                  «      S |j	                  |d¬«      S )z¦
        Get the given field's value off the given obj. pre_save() is used for
        things like auto_now on DateTimeField. Skip it if this is a raw query.
        T)rw   )r@   Úrawr•   r�  Úpre_save)r+   rÙ   rÐ  s      r/   Úpre_save_valzSQLInsertCompiler.pre_save_valÏ  s3   € ð
 �:‰:�>Š>Ü˜3 §¡Ó.Ð.Ø�~‰~˜c tˆ~Ó,Ð,r0   c                 ó  ‡ ‡‡— |sg g fS ‰D �cg c]  }t        |dd«      ‘Œ c}Šˆˆˆ fd„|D «       }d„ |D «       }t        |Ž \  }}|D ��	�
cg c]  }|D �	�
cg c]  }	|	D ]  }
|
‘Œ Œ c}
}	‘Œ }}	}}
||fS c c}w c c}
}	w c c}
}	}w )a+  
        Take a sequence of N fields and a sequence of M rows of values, and
        generate placeholder SQL and parameters for each field and value.
        Return a pair containing:
         * a sequence of M rows of N SQL placeholder strings, and
         * a sequence of M rows of corresponding parameter values.

        Each placeholder string may contain any number of '%s' interpolation
        strings, and each parameter row will contain exactly as many params
        as the total number of '%s's in the corresponding placeholder row.
        rJ  Nc              3   óJ   •K  — | ]  }ˆfd „t        ‰‰|«      D «       –— Œ y­w)c              3   óL   •K  — | ]  \  }}}‰j                  |||«      –— Œ y ­wr'   )rK  )rS   rÙ   rJ  r  r+   s       €r/   rU   z>SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>.<genexpr>ë  s.   øè ø€ ò á1�E˜?¨Eð ×!Ñ! %¨¸%×@ñùs   ƒ!$N©r  )rS   r  r½  Úget_placeholdersr+   s     €€€r/   rU   z4SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>ê  s3   øè ø€ ò !
ð
 ó	ä58¸ÐAQÐSVÓ5W÷ð ñ!
ùr  c              3   ó,   K  — | ]  }t        |Ž –— Œ y ­wr'   ra  )rS   r  s     r/   rU   z4SQLInsertCompiler.assemble_as_sql.<locals>.<genexpr>ô  s   è ø€ Ò"N°¤3¨¤9Ñ"Nùs   ‚)r•   r  )r+   r½  Ú
value_rowsrÙ   Úrows_of_fields_as_sqlÚsql_and_param_pair_rowsÚplaceholder_rowsÚ
param_rowsr  Úpsr›  rb  s   ``         @r/   Úassemble_as_sqlz!SQLInsertCompiler.assemble_as_sqlØ  s®   ú€ ñ Ø�r�6ˆMð RXÖXÈœG EÐ+<¸dÕCÒXÐõ!
ð
 "ô!
Ðñ #OÐ8MÔ"NÐô (+Ð,CÐ'DÑ$Ð˜*ð @J×JÐJ¸ 3×3˜R°Ò3¨1’qÐ3�qÕ3ÐJˆ
ÒJà Ð+Ð+ùò) Yùó$ 4ùÔJs   ŽA4Á
A?ÁA9Á&A?Á9A?c                 óè  ‡— | j                   j                  j                  Š| j                  j	                  «       }| j                   j                  j                  | j                  j                  ¬«      }|›d ‰|j                  «      ›�g}| j                  j                  xs |j                  g}|j                  ddj                  ˆfd„|D «       «      z  «       | j                  j                  rT| j                  j                  D ��cg c]2  }|D �cg c]$  }| j                  || j                  ||«      «      ‘Œ& c}‘Œ4 }}}nI| j                  j                  D �cg c]'  }| j                   j                  j                  «       g‘Œ) }}d g}| j                    xr  | j                   j"                  j$                  }	| j'                  ||«      \  }
}| j                   j                  j)                  || j                  j                  d„ | j                  j*                  D «       d„ | j                  j,                  D «       «      }| j                   �rB| j                   j"                  j.                  �r!| j                   j"                  j0                  r8|j                  | j                   j                  j3                  ||
«      «       |}n,|j                  ddj                  |
d	   «      z  «       |d	   g}|r|j                  |«       | j                   j                  j5                  | j                   «      \  }| _        |r!|j                  |«       || j6                  gz  }dj                  |«      t9        t;        j<                  |«      «      fgS |	rl|j                  | j                   j                  j3                  ||
«      «       |r|j                  |«       dj                  |«      t9        d
„ |D «       «      fgS |r|j                  |«       t?        |
|«      D ��cg c].  \  }}dj                  |ddj                  |«      z  gz   «      |f‘Œ0 c}}S c c}w c c}}w c c}w c c}}w )N)Úon_conflictrM  z(%s)r3  c              3   óB   •K  — | ]  } ‰|j                   «      –— Œ y ­wr'   ©ræ   )rS   r¹  Úqns     €r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>	  s   øè ø€ Ò(F¸!©¨A¯H©H¯Ñ(Fùó   ƒc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr'   rn  r¸  s     r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>'  ó   è ø€ Ò8˜!ˆQ�X�XÑ8ùó   ‚c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr'   rn  r¸  s     r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>(  rr  rs  zVALUES (%s)r   c              3   ó.   K  — | ]  }|D ]  }|–— Œ Œ y ­wr'   r2   )rS   ri  r›  s      r/   rU   z+SQLInsertCompiler.as_sql.<locals>.<genexpr>F  s   è ø€ Ò,P°2ÈRÒ,PÈ¬QÐ,P¨QÑ,Pùs   ‚) r5   rü   rý   r@   rÄ   Úinsert_statementrl  Údb_tabler½  rŸ  rx   r  ÚobjsrY  r]  Úpk_default_valueÚreturning_fieldsr}   Úhas_bulk_insertrj  Úon_conflict_suffix_sqlÚupdate_fieldsÚunique_fieldsÚcan_return_columns_from_insertÚ can_return_rows_from_bulk_insertÚbulk_insert_sqlÚreturn_insert_columnsÚreturning_paramsro  r   r'  r  )r+   r‘  rv  rŒ   r½  rÐ  rÙ   rd  r†   Úcan_bulkrg  rh  r|  r‰   Úr_sqlr›  Úvalsro  s                    @r/   r6   zSQLInsertCompiler.as_sqlÿ  sÂ  ø€ ð �_‰_× Ñ ×+Ñ+ˆØ�z‰z×"Ñ"Ó$ˆØŸ?™?×.Ñ.×?Ñ?ØŸ
™
×.Ñ.ð @ó 
Ðò .©r°$·-±-Ô/@ÐAÐBˆØ—‘×"Ñ"Ò/ t§w¡w iˆØ�‰�f˜tŸy™yÓ(F¸vÔ(FÓFÑFÔGà�:‰:×Òð  Ÿ:™:Ÿ?™?÷ð
 ð "(öàð ×&Ñ& u¨d×.?Ñ.?ÀÀsÓ.KÕLôðˆJò ð CGÇ*Á*Ç/Á/öØ=>�—‘×$Ñ$×5Ñ5Ó7Ò8ðˆJð ð �VˆFð ×%Ñ%Ð%ÒR¨$¯/©/×*BÑ*B×*RÑ*Rð 	ð (,×';Ñ';¸FÀJÓ'OÑ$Ð˜*à!%§¡×!4Ñ!4×!KÑ!KØØ�J‰J×"Ñ"Ù8˜tŸz™z×7Ñ7Ô8Ù8˜tŸz™z×7Ñ7Ô8ó	"
Ðð ×!Ó!Ø—‘×(Ñ(×GÓGà�‰×'Ñ'×HÒHØ—‘Ø—O‘O×'Ñ'×7Ñ7¸Ð@PÓQôð $‘à—‘˜m¨d¯i©iÐ8HÈÑ8KÓ.LÑLÔMØ$ Q™-˜�Ù%Ø—‘Ð4Ô5ð ,0¯?©?×+>Ñ+>×+TÑ+TØ×%Ñ%ó,Ñ(ˆE�4Ô(ñ Ø—‘˜eÔ$Ø˜4×0Ñ0Ð1Ñ1�Ø—X‘X˜fÓ%¤u¬U×-@Ñ-@ÀÓ-HÓ'IÐJÐKÐKáØ�M‰M˜$Ÿ/™/×-Ñ-×=Ñ=¸fÐFVÓWÔXÙ%Ø—‘Ð4Ô5Ø—X‘X˜fÓ%¤uÑ,P¸Ô,PÓ'PÐQÐRÐRá%Ø—‘Ð4Ô5ô  #Ð#3°ZÓ@÷á�A�tð —‘˜& M°D·I±I¸a³LÑ$@Ð#AÑAÓBÀDÒIóð ùò{ùóùòùójs$   Ä	Q#Ä)QÅ Q#Å!,Q)Ð'3Q.ÑQ#c                 ó¦  — |rDt        | j                  j                  «      dk7  r"| j                  j                  j
                  sJ ‚| j                  j                  «       }|| _        g }| j                  j                  «       5 }| j                  «       D ]  \  }}|j                  ||«       Œ | j                  sg cd d d «       S | j                  j                  j
                  r{t        | j                  j                  «      dkD  rY| j                  j                  j                  |«      }| j                  D �cg c]  }|j                  |j                  «      ‘Œ }}�n$| j                  j                  j                  rˆt        | j                  j                  «      dk(  sJ ‚| j                  j                  j!                  || j"                  «      g}| j                  D �cg c]  }|j                  |j                  «      ‘Œ }}n||rot%        |d   x}	t&        «      rZ|	j                  |j                  «      g}| j                  j                  j)                  ||j                  |	j*                  «      fg}ng cd d d «       S d d d «       | j-                  |«      }
|
r| j/                  |
«      }t1        «      S c c}w c c}w # 1 sw Y   ŒCxY w)Nrp   r   )r]   r@   rx  r5   r}   r€  rÄ   rz  r/  r6   r0  rü   Úfetch_returned_insert_rowsr�  rw  r  Úfetch_returned_insert_columnsrƒ  rv   r   Úlast_insert_idræ   r  r  r«   )r+   rz  r‘  r³   r/  rˆ   r‰   r  rÙ   Úreturning_fieldr  s              r/   r&  zSQLInsertCompiler.execute_sqlO  sb  € áÜ�D—J‘J—O‘OÓ$¨Ò)Ø—O‘O×,Ñ,×MÒMð	
ð 
ð
 �z‰z×"Ñ"Ó$ˆØ 0ˆÔØˆØ�_‰_×#Ñ#Ó%ð $	¨Ø#Ÿ{™{›}ò ,‘��VØ—‘˜s FÕ+ð,à×(Ò(Ø÷	$	ñ $	ð —‘×(Ñ(×IÒIÜ˜Ÿ
™
Ÿ™Ó(¨1Ò,à—‘×*Ñ*×EÑEÀfÓM�ØBF×BWÑBWÖX¸˜Ÿ™ d§m¡mÕ4ÐX�ÒXØ—‘×)Ñ)×HÒHÜ˜4Ÿ:™:Ÿ?™?Ó+¨qÒ0Ð0Ð0à—O‘O×'Ñ'×EÑEØØ×-Ñ-óð�ð CG×BWÑBWÖX¸˜Ÿ™ d§m¡mÕ4ÐX�ÑXÙ!¤jØ#3°AÑ#6Ð6�¼	ô'ð (×/Ñ/°·±Ó>Ð?�ð Ÿ™×+Ñ+×:Ñ:Ø"Ø ŸM™MØ+×2Ñ2óðð‘ð ÷I$	÷ $	ñ $	ðJ ×(Ñ(¨Ó.ˆ
ÙØ×(Ñ(¨¨zÓ:ˆDÜ�D‹zÐùò= Yùò Y÷'$	ð $	ús3   Â8KÃA5KÄ;"J=ÅBKÇ$"KÈA5KÊ=
KËKr'   )r7   r8   r9   rz  rƒ  rK  rY  r]  rj  r6   r&  r2   r0   r/   rF  rF  Ž  s1   „ ØÐØÐòò@Iò:-ò%,òNNô`1r0   rF  c                   óH   — e Zd Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Z	y)ÚSQLDeleteCompilerc                 óŽ   ‡ — ‰ j                   j                  «        t        ˆ fd„‰ j                   j                  D «       «      dk(  S )Nc              3   óV   •K  — | ]   }‰j                   j                  |   d kD  –— Œ" y­wrP   rQ   )rS   r÷   r+   s     €r/   rU   z1SQLDeleteCompiler.single_alias.<locals>.<genexpr>ˆ  s%   øè ø€ ÒR¸�4—:‘:×,Ñ,¨QÑ/°!Õ3ÑRùrV   rp   )r@   r[   ÚsumrZ   rL   s   `r/   Úsingle_aliaszSQLDeleteCompiler.single_alias„  s6   ø€ ð 	�
‰
×$Ñ$Ô&ÜÓR¸T¿Z¹Z×=QÑ=QÔRÓRÐVWÑWÐWr0   c                 ó¤   ‡ ‡— t        |t        «      r|j                  ‰k(  S t        |d«      syt	        ˆˆ fd„|j                  «       D «       «      S )Nr&  Fc              3   óB   •K  — | ]  }‰j                  |‰«      –— Œ y ­wr'   )Ú_expr_refs_base_model)rS   Úsource_exprÚ
base_modelÚclss     €€r/   rU   z:SQLDeleteCompiler._expr_refs_base_model.<locals>.<genexpr>�  s&   øè ø€ ò 
àð ×%Ñ% k°:×>ñ
ùrp  )rv   r   rK   rt   r  r&  )r—  r„   r–  s   ` `r/   r”  z'SQLDeleteCompiler._expr_refs_base_modelŠ  sM   ù€ ä�dœEÔ"Ø—:‘: Ñ+Ð+Ü�tÐ5Ô6ØÜô 
à#×:Ñ:Ó<ô
ó 
ð 	
r0   c                 óÀ   ‡ — t        ˆ fd„t        ‰ j                  j                  j	                  «       ‰ j                  j
                  j                  «      D «       «      S )Nc              3   ój   •K  — | ]*  }‰j                  |‰j                  j                  «      –— Œ, y ­wr'   )r”  r@   rK   )rS   r„   r+   s     €r/   rU   zESQLDeleteCompiler.contains_self_reference_subquery.<locals>.<genexpr>—  s0   øè ø€ ò 
àð ×&Ñ& t¨T¯Z©Z×-=Ñ-=×>ñ
ùs   ƒ03)r  r   r@   r­   r5  rc   ÚchildrenrL   s   `r/   Ú contains_self_reference_subqueryz2SQLDeleteCompiler.contains_self_reference_subquery•  sJ   ø€ äó 
äØ—
‘
×&Ñ&×-Ñ-Ó/°·±×1AÑ1A×1JÑ1Jóô
ó 
ð 	
r0   c                 óÆ   — d| j                  |j                  «      z  }	 | j                  |j                  «      \  }}|› d|› �t        |«      fS # t        $ r |dfcY S w xY w)NzDELETE FROM %sr2   z WHERE )rÓ   Ú
base_tabler   rc   r   ro  )r+   r@   Údeleterc   r‰   s        r/   Ú_as_sqlzSQLDeleteCompiler._as_sqlž  so   € Ø! D×$@Ñ$@À×AQÑAQÓ$RÑRˆð	Ø ŸL™L¨¯©Ó5‰MˆE�6ð �˜  Ð(¬%°«-Ð7Ð7øô ò 	Ø˜2�:Òð	ús    A ÁA ÁA c                 ó   — | j                   rG| j                  j                  j                  s| j                  s| j                  | j                  «      S | j                  j                  «       }t        |_	        |j                  «        | j                  j                  j                  j                  }|j                  | j                  j                  «       «      g|_        t        | j                  j                  «      }| j                  j                  j"                  s<|j%                  | j                  ¬«      j'                  «       \  }}t)        d|z  |«      }|j+                  d|«       | j                  |«      S )úf
        Create the SQL for this query. Return the SQL string and list of
        parameters.
        rS  zSELECT * FROM (%s) subqueryÚpk__in)r‘  r5   r}   Ú"delete_can_self_reference_subqueryr›  rŸ  r@   r  r   r.   Úclear_select_clauserK   r‹  rŸ  r�  r[   rD   Úupdate_can_self_selectr  r6   r   Ú
add_filter)r+   ÚinnerqrŸ  Úouterqrˆ   r‰   s         r/   r6   zSQLDeleteCompiler.as_sql¦  s  € ð
 ×ÒØ�O‰O×$Ñ$×GÒGØ×8Ò8à—<‘< §
¡
Ó+Ð+Ø—‘×!Ñ!Ó#ˆÜ ˆÔØ×"Ñ"Ô$Ø�Z‰Z×Ñ×#Ñ#×&Ñ&ˆØŸ™ D§J¡J×$@Ñ$@Ó$BÓCÐDˆŒÜ�t—z‘z×'Ñ'Ó(ˆØ�‰×'Ñ'×>Ò>ð !×-Ñ-¸¿¹Ð-ÓI×PÑPÓR‰KˆC�ÜÐ9¸CÑ?ÀÓHˆFØ×Ñ˜( FÔ+Ø�|‰|˜FÓ#Ð#r0   N)
r7   r8   r9   r!   r‘  Úclassmethodr”  r›  rŸ  r6   r2   r0   r/   r�  r�  ƒ  sH   „ ØñXó ðXð
 ñ
ó ð
ð ñ
ó ð
ò8ó$r0   r�  c                   ó.   ‡ — e Zd Zd„ Zˆ fd„Zˆ fd„Zˆ xZS )ÚSQLUpdateCompilerc           
      ó¾  — | j                  «        | j                  j                  sy| j                  }g g }}| j                  j                  D �]î  \  }}}t	        |d«      r–|j                  | j                  dd¬«      }|j                  rt        d|j                  ›d|›d�«      ‚|j                  rt        d	|j                  ›d|›d�«      ‚t        |t        «      rkt        d
|j                  z  «      ‚t	        |d«      rG|j                  r|j                  |«      }n)t        d|›d|›d|j                  j                   ›d�«      ‚|j#                  || j$                  ¬«      }t	        |d«      r|j'                  || | j$                  «      }nd}|j(                  }t	        |d«      rF| j+                  |«      \  }	}
|j-                   ||«      ›d||	z  ›�«       |j/                  |
«       �Œ¤|�/|j-                   ||«      ›d|›�«       |j-                  |«       �ŒÕ|j-                  d ||«      z  «       �Œñ | j                  j0                  }d ||«      z  dj3                  |«      g}	 | j+                  | j                  j4                  «      \  }}
|j-                  d|z  «       dj3                  |«      t9        ||
z   «      fS # t6        $ r g }
Y Œ,w xY w)r¡  )rD  r2   r¼   FTrM  rO  rP  rQ  rR  zNComposite primary keys expressions are not allowed in this query (%s=F('pk')).Úprepare_database_savezTried to update field z with a model instance, z. Use a value compatible with rÀ   rS  rJ  rH  r6   z = z	%s = NULLzUPDATE %s SETr3  rJ  rM  )rn   r@   r5  rÓ   rt   r¼   rV  r   rË   rW  rv   r   rÍ  r­  Ú	TypeErrorr.   r7   rX  r5   rJ  ræ   r   rx   rz   r�  r  rc   r   ro  )r+   ro  r5  Úupdate_paramsrÙ   rK   r9  ÚplaceholderrË   rˆ   r‰   rÞ   rŒ   rc   s                 r/   r6   zSQLUpdateCompiler.as_sqlÀ  s«  € ð
 	×ÑÔØ�z‰z× Ò ØØ×)Ñ)ˆØ " B�ˆØ!%§¡×!2Ñ!2ó -	6ÑˆE�5˜#Ü�sÐ0Ô1Ø×,Ñ,Ø—J‘J¨E¸Dð -ó �ð ×)Ò)Ý$à&+§j£j²#ð7óð ð ×+Ò+Ý$à&+§j£j²#ð7óð ô ˜c¤8Ô,Ü$ð6Ø8=¿
¹
ñCóð ô ˜Ð5Ô6Ø×%Ò%Ø×3Ñ3°EÓ:‘Cå#ò !¢# u§¡×'?Ó'?ðAóð ð
 ×(Ñ(¨¸¿¹Ð(ÓIˆCô �uÐ/Ô0Ø#×3Ñ3°C¸¸t¿¹ÓO‘à"�Ø—<‘<ˆDÜ�s˜HÔ%Ø"Ÿl™l¨3Ó/‘��VØ—‘©2¨d­8°[À3Ò5FÐGÔHØ×$Ñ$ VÖ,Ø�Ø—‘©2¨d­8±[ÐAÔBØ×$Ñ$ SÖ)à—‘˜k©B¨t«HÑ4Ö5ð[-	6ð\ —
‘
×%Ñ%ˆà™b ›iÑ'Ø�I‰I�fÓð
ˆð	.Ø ŸL™L¨¯©×)9Ñ)9Ó:‰MˆE�6ð �M‰M˜* uÑ,Ô-Ø�x‰x˜Ó¤ }°vÑ'=Ó!>Ð>Ð>øô	 ò 	ØŠFð	ús   É3(K ËKËKc                 óà   •— t         ‰| �  |«      }|du }|xs d}| j                  j                  «       D ]6  }|j	                  | j
                  «      j                  |«      }|sŒ0|sŒ3|}d}Œ8 |S )a  
        Execute the specified update. Return the number of rows affected by
        the primary update query. The "primary update query" is the first
        non-empty query that is executed. Row counts for any subsequent,
        related queries are not available.
        Nr   F)r)   r&  r@   Úget_related_updatesr  rA   )r+   r8  Ú	row_countÚis_emptyr@   Úaux_row_countr.   s         €r/   r&  zSQLUpdateCompiler.execute_sql  s{   ø€ ô ‘GÑ'¨Ó4ˆ	Ø Ð$ˆØ’N ˆ	à—Z‘Z×3Ñ3Ó5ò 	!ˆEà!×.Ñ.¨t¯z©zÓ:×FÑFÀ{ÓSˆMÚšMð *�	Ø ‘ð	!ð Ðr0   c                 ó  •‡— | j                   j                  j                  «       }| j                   j                  «        | j                   j	                  «       }| j                   j
                  s|dk(  ry| j                   j                  t        ¬«      }d|_        |j                  d¬«       i |_
        g |_        |j                  «       }|j                  j                  g}g }| j                   j
                  D ]‚  }t        d„ |j!                  |«      D «       «      r|j#                  |df«       Œ8|j#                  |t%        |«      f«       |j#                  |j&                  j                  j                  «       Œ„ |j)                  |«       t*        ‰| �Y  «        |j.                  }|dkD  xr! | j0                  j2                  j4                   }	| j                   j7                  «        | j                   j
                  s|	rÊg }
t9        j:                  t<        «      }|j?                  | j@                  «      jC                  tD        «      D ]P  }|D �cg c]  }|r|n|d   ‘Œ }}|
jG                  |«       |D ]"  \  }Š||   jG                  ˆfd	„|D «       «       Œ$ ŒR | j                   jI                  d
|
«       || j                   _%        n| j                   jI                  d
|«       | j                   jM                  |«       yc c}w )aO  
        If the update depends on results from other tables, munge the "where"
        conditions to match the format required for (portable) SQL updates.

        If multiple updates are required, pull out the id values to update at
        this point so that they don't change as a result of the progressive
        updates.
        rp   N)ÚklassFT)Úforcec              3   óH   K  — | ]  }|j                   j                  –— Œ y ­wr'   )Ú
join_fieldr“   )rS   r™  s     r/   rU   z2SQLUpdateCompiler.pre_sql_setup.<locals>.<genexpr>2  s   è ø€ ò Ø04�—‘×+Õ+ñùs   ‚ "r   c              3   ó(   •K  — | ]	  }|‰   –— Œ y ­wr'   r2   )rS   rþ   r´   s     €r/   rU   z2SQLUpdateCompiler.pre_sql_setup.<locals>.<genexpr>S  s   øè ø€ Ò.F¸A¨q°­xÑ.Fùs   ƒr¢  )'r@   rR   rÉ   r[   Úcount_active_tablesÚrelated_updatesr   r   r¯   Úclear_orderingrÔ   rD   rÄ   rŸ  rË   rY   Úget_path_to_parentrx   r]   r‹  Ú
add_fieldsr)   rn   Úis_composite_pkr5   r}   r¥  Úclear_wherer  Údefaultdictr«   r  rA   r&  r   rz   r¦  Úrelated_idsrp  )r+   rq  Úcountr@   rÖ   r½  Úrelated_ids_indexÚrelatedrÁ  Úmust_pre_selectÚidentsrÄ  r  r  r–   Úparentr´   r.   s                   @€r/   rn   zSQLUpdateCompiler.pre_sql_setup  sŽ  ù€ ð  Ÿ:™:×4Ñ4×9Ñ9Ó;Ðà�
‰
×$Ñ$Ô&Ø—
‘
×.Ñ.Ó0ˆØ�z‰z×)Ò)¨e°qªjØØ—
‘
× Ñ ¤uÐ Ó-ˆØ$ˆÔØ×Ñ 4ÐÔ(ØˆŒØˆŒØ�~‰~ÓˆØ—'‘'—,‘,�ˆØÐØ—z‘z×1Ñ1ò 	5ˆGÜñ Ø8<×8OÑ8OÐPWÓ8Xôô ð
 "×(Ñ(¨'°1¨Õ6ð
 "×(Ñ(¨'´3°v³;Ð)?Ô@Ø—‘˜gŸm™m×.Ñ.×3Ñ3Õ4ð	5ð 	×Ñ˜Ô Ü‰ÑÔà×.Ñ.ˆà�A‰IÒM˜dŸo™o×6Ñ6×MÑMÐMð 	ð 	�
‰
×ÑÔ Ø�:‰:×%Ò%©ð ˆFÜ%×1Ñ1´$Ó7ˆKØ×*Ñ*¨4¯:©:Ó6×BÑBÄ5ÓIò G�ØEIÖJ¸c™o‘s°3°q±6Ñ9ÐJ�ÐJØ—‘˜cÔ"Ø%6ò G‘M�F˜EØ Ñ'×.Ñ.Ó.FÀÔ.FÕFñGðGð
 �J‰J×!Ñ! (¨FÔ3Ø%0ˆD�J‰JÕ"ð �J‰J×!Ñ! (¨EÔ2Ø�
‰
×"Ñ"Ð#3Õ4ùò Ks   ÉL	)r7   r8   r9   r6   r&  rn   r:   r;   s   @r/   r«  r«  ¿  s   ø„ òC?ôJ÷*?5ð ?5r0   r«  c                   ó   — e Zd Zd„ Zy)ÚSQLAggregateCompilerc                 ó4  — g g }}| j                   j                  j                  «       D ]N  }| j                  |«      \  }}|j	                  | ||«      \  }}|j                  |«       |j                  |«       ŒP t        | j                   j                  «      | _        dj                  |«      }t        |«      }| j                   j                  j                  | j                  | j                  ¬«      j                  d¬«      \  }}d|›d|›d�}||z  }||fS )r¡  r3  )rB   TrW   rK  rL  rN  )r@   rª   r5  r   r�   rx   rz   r]   r^   r  ro  r)  r  rA   rB   r6   )r+   rˆ   r‰   Ú
annotationÚann_sqlÚ
ann_paramsÚinner_query_sqlÚinner_query_paramss           r/   r6   zSQLAggregateCompiler.as_sql]  s  € ð
 ˜"ˆVˆØŸ*™*×6Ñ6×=Ñ=Ó?ò 	&ˆJØ"&§,¡,¨zÓ":ÑˆG�ZØ",×":Ñ":¸4ÀÈ*Ó"UÑˆG�ZØ�J‰J�wÔØ�M‰M˜*Õ%ð		&ô
 ˜TŸZ™Z×9Ñ9Ó:ˆŒØ�i‰i˜‹nˆÜ�v“ˆà.2¯j©j×.DÑ.D×.QÑ.QØ�J‰JØ×(Ñ(ð /Ró /
÷ ‰& $ˆ&Ó
'ñ 	,ˆÑ+ò 14²_ÐEˆØÐ$Ñ$ˆØ�Fˆ{Ðr0   N)r7   r8   r9   r6   r2   r0   r/   rÌ  rÌ  \  s   „ ór0   rÌ  c              #   óÄ   ‡ ‡K  — 	 t        ˆ ˆfd„|«      D ]  }|€|n|D �cg c]  }|d| ‘Œ	 c}–— Œ 	 ‰ j                  «        yc c}w # ‰ j                  «        w xY w­w)z[
    Yield blocks of rows from a cursor and ensure the cursor is closed when
    done.
    c                  ó&   •— ‰ j                  ‰«      S r'   )Ú	fetchmany)r/  Úitersizes   €€r/   rÈ  zcursor_iter.<locals>.<lambda>{  s   ø€  &×"2Ñ"2°8Ó"<€ r0   N)r-  r2  )r/  Úsentinelr^   rÖ  r  rþ   s   `  `  r/   r5  r5  u  s^   ùè ø€ ð
ÜÔ<¸xÓHò 	OˆDØ#Ð+‘$ÈÖ1NÀA°!°J°Y²-Ò1NÓNñ	Oð 	�‰�ùò 2Oøà�‰�üs+   „A †A ¡A­A µA ÁA ÁAÁA );r  r;  rB  Ú	functoolsr   Ú	itertoolsr   Údjango.core.exceptionsr   r   r   Ú	django.dbr   r	   Údjango.db.models.constantsr
   Údjango.db.models.expressionsr   r   r   r   r   r   Údjango.db.models.fieldsr   r   Údjango.db.models.functionsr   r   Údjango.db.models.lookupsr   Údjango.db.models.query_utilsr   Údjango.db.models.sql.constantsr   r   r   r   r   r   r   Údjango.db.models.sql.queryr   r   Údjango.db.transactionr    Údjango.utils.functionalr!   Údjango.utils.hashabler"   Údjango.utils.regex_helperr#   r%   r=   rF  r�  r«  rÌ  r5  r2   r0   r/   ú<module>rè     s§   ðÛ Û Û 	Ý Ý ç LÑ Lß 6Ý 1ß Q× Qß 8ß 3Ý +Ý ?÷÷ ñ ÷ <Ý <Ý 3Ý /Ý 6ô%�#ô %÷c ñ c ôL3r˜ô rôj9$˜ô 9$ôxZ5˜ô Z5ôz˜;ô ó2	r0   