§
    ÕóÉj› ã                  óš  — U d Z ddlmZ ddlZddlmZ ddlZddlm	Z	 ddl
Z
ddlZddlZddlZddlmZ ddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& ddlm'Z' ddlm(Z( ddlm)Z) dd l*m+Z+ dd!l*m,Z, dd"l*m-Z- dd#l*m.Z. dd$l*m/Z/ dd%l*m0Z0 dd&l*m1Z1 dd'l*m2Z2 dd(l*m3Z3 dd)l*m4Z4 dd*l*m5Z6 dd+l7m8Z8 dd,l7m9Z9 dd-l+m:Z: dd.l+m;Z; dd/l+m<Z< dd0l+m=Z= dd1l+m>Z> dd2l.m?Z? dd3l4m@Z@ dd4lAmBZB d5d6l*mCZC d5d*l*m5Z5 d5d7l5mDZD d5d8lEmFZF d5d9lEmGZG d5d:lEmHZH ej'        �rhdd;lImJZJ dd<l+mKZK dd=l+mLZL dd>l+mMZM dd?l+mNZN dd@lOmPZP ddAlQmRZR ddBlQmSZS ddClQmTZT ddDlQmUZU ddElVmWZW ddFlVmXZX ddGlVmYZY ddHlVmZZZ ddIlVm[Z[ ddJlVm\Z\ ddKl.m]Z] ddLl.m^Z^ ddMl.m_Z_ ddNl.m`Z` ddOl.maZa ddPl.mbZb ddQl.mcZc ddRl.mdZd ddSl.meZe ddTl.mfZf ddUl/mgZg ddVl2mhZh ddWl2miZi ddXl2mjZj ddYl2mkZk ddZl2mlZl dd[l2mmZm dd\l2mnZn dd]l2moZo dd^l2mpZp dd_l3mqZq dd`l3mrZr ddal3msZs ddbl3mtZt ddcl3muZu dddl3mvZv ddel3mwZw ddfl3mxZx ddgl3myZy ddhlzm{Z{ ddilzm|Z| ddjlzm}Z} ddklzm~Z~ ddllAmZ d5dml€m�Z� d5dnl‚mƒZƒ d5dol‚m„Z„ d5dpl‚m…Z… d5dql‚m†Z† d5drl‚m‡Z‡ d5dsl‚mˆZˆ d5dtl‚m‰Z‰ d5dul‚mŠZŠ d5dvl‚m‹Z‹ edweŒf         Z�h dx£ZŽ ej�        dyej�        ¦  «        Z‘ ej�        dzej�        ¦  «        Z’d{„  e“dd|¦  «        D ¦   «          ”                    d}g¦  «        Z• ej�        d~ej�        ¦  «        Z– ej�        d~ej�        ¦  «        Z— ej�        dej�        ¦  «        Z˜ ej�        d€ej�        ¦  «        Z™e.jš        j›        Zœ ej�        d�ej�        ¦  «        Zžd‚ZŸeŸdƒd„d…d†d‡dˆœZ i e0j¡        d‰“e0j¢        dŠ“e0j£        d‹“e0j¤        dŒ“e0j¥        d�“e0j¦        dŽ“e0j§        d�“e0j¨        d�“e0j©        d‘“e0jª        d’“e0j«        d““e0j¬        d”“e0j­        d•“e0j®        d–“e0j¯        d—“e0j°        d˜“e0j±        d™“i e0j²        dš“e0j³        d›“e0j´        dœ“e0jµ        d�“e0j¶        dž“e0j·        dŸ“e0j¸        d “e0j¹        d¡“e0jº        d¢“e0j»        d£“e0j¼        d¤“e0j½        d¥“e0j¾        d¦“e0j¿        d§“e0jÀ        d¨“e0jÁ        d©“e0jÂ        dª“¥e0jÃ        d«e0jÄ        d¬e0jÅ        d­e0jÆ        d®e0jÇ        d¯e0jÈ        d°e0jÉ        d±i¥ZÊe/jË        d²e/jÌ        d³e/jÍ        d´e/jÎ        dµe/jÏ        d¶e/jÐ        d·e/jÑ        d¸e/jÒ        d¹e/jÓ        dºe/jÔ        d»e/jÕ        d¼e/jÖ        d½e/j×        d¾e/jØ        d¿iZÙdÀeÚdÁ<   dÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑœZÛe3jÜ        jÝ        dÒe3jÜ        jÞ        dÓe3jÜ        jß        dÔe3jÜ        jà        dÕe3jÜ        já        dÖe3jÜ        jâ        d×iZã G dØ„ dÙe¦  «        Zä G dÚ„ dÛe"¦  «        ZådZædÜeÚdÝ<   dZçdÞeÚdß<   d5ZèdàeÚdá<   dâZédãeÚdä<    G då„ dæe(¦  «        Zê G dç„ dèeêdé¬ê¦  «        Zë G dë„ dìe¦  «        Zì G dí„ dîe¦  «        Zí G dï„ dðe¦  «        Zî G dñ„ dòeD¦  «        Zï G dó„ dôe	¦  «        Zð G dõ„ döe	¦  «        Zñ G d÷„ døe	¦  «        Zò eóeò¦  «        \  ZôZõZöZ÷ G dù„ dú ejø        dúdûdüg¦  «        ¦  «        Zù G dý„ dþ¦  «        Zú G dÿ„ �d e5jû        ¦  «        Zü G �d„ �de1jý        e         e.jþ        ¦  «        Zÿ G �d„ �de1jý        e         e.jþ        ¦  «        �Z  G �d„ �de1jý        e         e.jþ        ¦  «        �Z G �d„ �deú¦  «        �Z G �d	„ �d
�e¦  «        �Z G �d„ �deú¦  «        �Z G �d„ �deü¦  «        �Z G �d„ �d�e¦  «        �Z G �d„ �de"¦  «        �Z G �d„ �de"¦  «        �Z G �d„ �d¦  «        �Z	dS (  a]  Base SQL and DDL compiler implementations.

Classes provided include:

:class:`.compiler.SQLCompiler` - renders SQL
strings

:class:`.compiler.DDLCompiler` - renders DDL
(data definition language) strings

:class:`.compiler.GenericTypeCompiler` - renders
type specification strings.

To generate user-defined SQL strings, see
:doc:`/ext/compiler`.

é    )ÚannotationsN)ÚIntEnum)Úperf_counter)ÚAny)ÚCallable)Úcast)ÚClassVar)ÚDict)ÚFinal)Ú	FrozenSet)ÚIterable)ÚIterator)ÚList)ÚLiteral)ÚMapping)ÚMutableMapping)Ú
NamedTuple)ÚNoReturn)ÚOptional)ÚPattern)ÚProtocol)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)Ú	TypedDict)ÚUnioné   )Úbase)Ú	coercions)Úcrud)Úelements)Ú	functions)Ú	operators)Úroles)Úschema)Ú
selectable)Úsqltypes)Úutil©Úis_column_element)Úis_dml)Ú	_de_clone)Ú_from_objects)Ú
_NONE_NAME)Ú _SentinelDefaultCharacterization)ÚNO_ARG)Úquoted_name)Ú	TupleType)Úprefix_anon_mapé   )Úexc)ÚFastIntFlag)ÚSelf)ÚTupleAny)ÚUnpack)Ú_AnnotationDict)Ú_AmbiguousTableNameMap)ÚCompileState)Ú
Executable)ÚExecutableStatement)ÚCacheKey)Ú_TableViaSelect)ÚCreateTableAs)Ú
CreateView)ÚExecutableDDLElement)ÚDelete)ÚInsert)ÚUpdate)Ú
UpdateBase)ÚUpdateDMLState)Ú
ValuesBase)Ú_truncated_label)ÚBinaryExpression)ÚBindParameter)ÚClauseElement)ÚColumnClause)ÚColumnElement)ÚFalse_)ÚLabel)ÚNull)ÚTrue_)ÚFunction)ÚCheckConstraint)ÚColumn)Ú
Constraint)ÚForeignKeyConstraint)ÚIdentityOptions)ÚIndex)ÚPrimaryKeyConstraint)ÚTable)ÚUniqueConstraint)Ú_ColumnsClauseElement)ÚAliasedReturnsRows)ÚCompoundSelectState)ÚCTE)Ú
FromClause)ÚNamedFromClause)ÚReturnsRows)ÚSelect)ÚSelectState)Ú_BindProcessorType)ÚTypeDecorator)Ú
TypeEngine)ÚUserDefinedType)Ú	Visitable)ÚCursorResultMetaData)Ú_CoreSingleExecuteParams)Ú_DBAPIAnyExecuteParams)Ú_DBAPIMultiExecuteParams)Ú_DBAPISingleExecuteParams)Ú_ExecuteOptions)Ú_GenericSetInputSizesType)Ú_MutableCoreSingleExecuteParams)ÚDialect)ÚSchemaTranslateMapTyperd   >^   ÚasÚdoÚinÚisÚonÚorÚtoÚallÚandÚanyÚascÚendÚforÚnewÚnotÚoffÚoldÚsetÚbothÚcaser   ÚdescÚelseÚfromÚfullÚintoÚjoinÚleftÚlikeÚnullÚonlyÚsomeÚthenÚtrueÚuserÚwhenÚarrayÚcheckÚcrossÚfalseÚgrantÚgroupÚilikeÚinnerÚlimitÚorderÚouterÚrightÚtableÚunionÚusingÚwhereÚbinaryÚcolumnÚcreateÚexceptÚfreezeÚhavingÚisnullÚoffsetÚselectÚuniqueÚanalyseÚanalyzeÚbetweenÚcollateÚdefaultÚforeignÚleadingÚnaturalÚnotnullÚplacingÚprimaryÚsimilarÚverboseÚdistinctÚoverlapsÚtrailingÚ	initiallyÚ	intersectÚ	localtimeÚ	symmetricÚ
asymmetricÚ
constraintÚ
deferrableÚ
referencesÚcurrent_dateÚcurrent_roleÚcurrent_timeÚcurrent_userÚsession_userÚauthorizationÚlocaltimestampÚcurrent_timestampz^[A-Z0-9_$]+$z^[A-Z0-9_ $]+$c                ó,   — h | ]}t          |¦  «        ’ŒS © )Ústr)Ú.0Úxs     ú|/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/sqlalchemy/sql/compiler.pyú	<setcomp>rÛ     s   € Ð;Ð;Ð;¨�c !™fœfÐ;Ð;Ð;ó    é
   ú$z5^(?:RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT)$z^(?:DEFERRED|IMMEDIATE)$z&^(?:CURRENT ROW|GROUP|TIES|NO OTHERS)$z\x5c(:\w*)(?![:\w])z%%(%(name)s)sú?z%%sz:[_POSITION]z$[_POSITION]z	:%(name)s)ÚpyformatÚqmarkÚformatÚnumericÚnumeric_dollarÚnamedú AND z OR z + z * z - ú % ú-z < z <= z != z > z >= z = z IS DISTINCT FROM z IS NOT DISTINCT FROM z || z MATCH z NOT MATCH z IN z NOT IN ú, ú FROM ú AS ú IS z IS NOT ú	 COLLATE zEXISTS ú	DISTINCT zNOT zANY zALL z DESCz ASCz NULLS FIRSTz NULLS LASTz ^ z | z & ú~z << z >> ÚcoalesceÚCURRENT_DATEÚCURRENT_TIMEÚCURRENT_TIMESTAMPÚCURRENT_USERÚ	LOCALTIMEÚLOCALTIMESTAMPÚrandomÚsysdateÚSESSION_USERÚUSERÚCUBEÚROLLUPzGROUPING SETSzDict[Type[Function[Any]], str]Ú	FUNCTIONSÚmonthÚdayÚyearÚsecondÚhourÚdoyÚminuteÚquarterÚdowÚweekÚepochÚmillisecondsÚmicrosecondsÚtimezone_hourÚtimezone_minute)rþ   rÿ   r   r  r  r  r  r  r  r  r  r	  r
  r  r  ÚUNIONz	UNION ALLÚEXCEPTz
EXCEPT ALLÚ	INTERSECTzINTERSECT ALLc                  óB   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded<   d	S )
ÚResultColumnsEntrya  Tracks a column expression that is expected to be represented
    in the result rows for this statement.

    This normally refers to the columns clause of a SELECT statement
    but may also refer to a RETURNING clause, as well as for dialect-specific
    emulations.

    r×   ÚkeynameÚnameúTuple[Any, ...]ÚobjectsúTypeEngine[Any]ÚtypeN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rÖ   rÜ   rÚ   r  r  y  sY   € € € € € € ðð ð €L€L�LØ;à€I€I�IØ%àÐÐÑðð ÐÐÑðð rÜ   r  c                  ó   — e Zd Zdd
„ZdS )Ú_ResultMapAppenderr  r×   r  r  úSequence[Any]Útype_r  ÚreturnÚNonec                ó   — d S ©NrÖ   ©Úselfr  r  r  r!  s        rÚ   Ú__call__z_ResultMapAppender.__call__™  s	   € ð ˆsrÜ   N)
r  r×   r  r×   r  r   r!  r  r"  r#  ©r  r  r  r(  rÖ   rÜ   rÚ   r  r  ˜  s(   € € € € € ðð ð ð ð ð rÜ   r  z
Literal[0]ÚRM_RENDERED_NAMEz
Literal[1]ÚRM_NAMEz
Literal[2]Ú
RM_OBJECTSé   z
Literal[3]ÚRM_TYPEc                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_BaseCompilerStackEntryzSet[FromClause]Úasfrom_fromsÚcorrelate_fromsrf   r(   N©r  r  r  r  rÖ   rÜ   rÚ   r0  r0  ª  s6   € € € € € € Ø!Ð!Ð!Ñ!Ø$Ð$Ð$Ñ$ØÐÐÑÐÐrÜ   r0  c                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
S )Ú_CompilerStackEntryr>   Úcompile_stateÚboolÚneed_result_map_for_nestedÚneed_result_map_for_compoundrf   Úselect_0úSelect[Unpack[TupleAny]]Úinsert_from_selectNr3  rÖ   rÜ   rÚ   r5  r5  °  sN   € € € € € € ØÐÐÑØ$Ð$Ð$Ñ$Ø&Ð&Ð&Ñ&ØÐÐÑØ0Ð0Ð0Ñ0Ð0Ð0rÜ   r5  F)Útotalc                  ó€   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
ed<   	 edd„¦   «         Zedd„¦   «         ZdS )ÚExpandedStatea¹  represents state to use when producing "expanded" and
    "post compile" bound parameters for a statement.

    "expanded" parameters are parameters that are generated at
    statement execution time to suit a number of parameters passed, the most
    prominent example being the individual elements inside of an IN expression.

    "post compile" parameters are parameters where the SQL literal value
    will be rendered into the SQL statement at execution time, rather than
    being passed as separate parameters to the driver.

    To create an :class:`.ExpandedState` instance, use the
    :meth:`.SQLCompiler.construct_expanded_state` method on any
    :class:`.SQLCompiler` instance.

    r×   Ú	statementro   Ú
parametersú%Mapping[str, _BindProcessorType[Any]]Ú
processorsúOptional[Sequence[str]]ÚpositiontupzMapping[str, List[str]]Úparameter_expansionr"  r  c                óz   ‡ — ‰ j         €t          j        d¦  «        ‚t          ˆ fd„‰ j         D ¦   «         ¦  «        S )zrTuple of positional parameters, for statements that were compiled
        using a positional paramstyle.

        Nz.statement does not use a positional paramstylec              3  ó2   •K  — | ]}‰j         |         V — Œd S r%  ©rA  )rØ   Úkeyr'  s     €rÚ   ú	<genexpr>z6ExpandedState.positional_parameters.<locals>.<genexpr>í  s*   øè è € ÐFÐF¨c�T”_ SÔ)ÐFÐFÐFÐFÐFÐFrÜ   )rE  r7   ÚInvalidRequestErrorÚtuple©r'  s   `rÚ   Úpositional_parametersz#ExpandedState.positional_parametersã  sN   ø€ ð ÔÐ#ÝÔ)Ø@ñô ð õ ÐFÐFÐFÐF°TÔ5EÐFÑFÔFÑFÔFÐFrÜ   c                ó   — | j         S )z.synonym for :attr:`.ExpandedState.parameters`.rI  rN  s    rÚ   Úadditional_parametersz#ExpandedState.additional_parametersï  s   € ð ŒÐrÜ   N)r"  r  )r"  ro   )r  r  r  r  r  ÚpropertyrO  rQ  rÖ   rÜ   rÚ   r?  r?  ¸  s¸   € € € € € € ðð ð" €N€N�NØ=à(Ð(Ð(Ñ(ðð 6Ð5Ð5Ñ5Ø+à(Ð(Ð(Ñ(ðð 1Ð0Ð0Ñ0ðð ð	Gð 	Gð 	Gñ „Xð	Gð ðð ð ñ „Xðð ð rÜ   r?  c                  óÂ   — e Zd ZU dZded<   	 ded<   	 ded<   	 ded	<   	 d
Zded<   	 d
Zded<   	 dZded<   	 dZded<   	 dZ	ded<   	 d
Z
ded<   	 d
Zded<   	 d
Zded<   dS )Ú_InsertManyValuesa  represents state to use for executing an "insertmanyvalues" statement.

    The primary consumers of this object are the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods.

    .. versionadded:: 2.0

    r7  Úis_default_exprr×   Úsingle_values_exprzList[crud._CrudParamElementStr]Úinsert_crud_paramsÚintÚnum_positional_params_countedFÚsort_by_parameter_orderÚincludes_upsert_behaviorsNúOptional[Sequence[Column[Any]]]Úsentinel_columnsr   Únum_sentinel_columnsrD  Úsentinel_param_keysÚimplicit_sentinelÚhas_upsert_bound_parametersÚembed_values_counter)r  r  r  r  r  rZ  r[  r]  r^  r_  r`  ra  rb  rÖ   rÜ   rÚ   rT  rT  õ  s+  € € € € € € ðð ð ÐÐÑðð
 ÐÐÑðð 8Ð7Ð7Ñ7ØMà&Ð&Ð&Ñ&ð
ð %*ÐÐ)Ð)Ð)Ñ)ðð ',ÐÐ+Ð+Ð+Ñ+ðð 9=ÐÐ<Ð<Ð<Ñ<ðð !"ÐÐ!Ð!Ð!Ñ!ðð 48ÐÐ7Ð7Ð7Ñ7ðð  $ÐÐ#Ð#Ð#Ñ#ð	ð ).ÐÐ-Ð-Ð-Ñ-ð
ð "'ÐÐ&Ð&Ð&Ñ&ð	ð 	rÜ   rT  c                  óx   — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ded<   ded<   ded<   ded<   ded<   dS )Ú_InsertManyValuesBatchas  represents an individual batch SQL statement for insertmanyvalues.

    This is passed through the
    :meth:`.SQLCompiler._deliver_insertmanyvalues_batches` and
    :meth:`.DefaultDialect._deliver_insertmanyvalues_batches` methods out
    to the :class:`.Connection` within the
    :meth:`.Connection._exec_insertmany_context` method.

    .. versionadded:: 2.0.10

    r×   Úreplaced_statementrp   Úreplaced_parametersú#Optional[_GenericSetInputSizesType]Úprocessed_setinputsizesz#Sequence[_DBAPISingleExecuteParams]ÚbatchzSequence[Tuple[Any, ...]]Úsentinel_valuesrX  Úcurrent_batch_sizeÚbatchnumÚtotal_batchesr7  Úrows_sortedÚis_downgradedNr  rÖ   rÜ   rÚ   rd  rd  y  s“   € € € € € € ð
ð 
ð ÐÐÑØ/Ð/Ð/Ñ/Ø@Ð@Ð@Ñ@Ø.Ð.Ð.Ñ.Ø.Ð.Ð.Ñ.ØÐÐÑØ€M€M�MØÐÐÑØÐÐÑØÐÐÑÐÐrÜ   rd  c                  óN   — e Zd ZdZdZdZdZdZdZeez  ez  ez  Z	ee	z  Z
dZdZd	S )
ÚInsertmanyvaluesSentinelOptszcbitflag enum indicating styles of PK defaults
    which can work as implicit sentinel columns

    r   r6   é   é   é   é    é@   N)r  r  r  r  ÚNOT_SUPPORTEDÚAUTOINCREMENTÚIDENTITYÚSEQUENCEÚMONOTONIC_FUNCTIONÚANY_AUTOINCREMENTÚ_SUPPORTED_OR_NOTÚUSE_INSERT_FROM_SELECTÚRENDER_SELECT_COL_CASTSrÖ   rÜ   rÚ   rq  rq  ’  sj   € € € € € ðð ð
 €MØ€MØ€HØ€HØÐð 	˜Ñ  8Ñ+Ð.@Ñ@ð ð &Ð(9Ñ9ÐàÐØ ÐÐÐrÜ   rq  c                  ó"   — e Zd ZdZdZ	 dZ	 dZdS )ÚAggregateOrderByStyleztDescribes backend database's capabilities with ORDER BY for aggregate
    functions

    .. versionadded:: 2.1

    r   r   r6   N)r  r  r  r  ÚNONEÚINLINEÚWITHIN_GROUPrÖ   rÜ   rÚ   r�  r�  §  s9   € € € € € ðð ð €DØ:à€Fðð €Lð1ð 1rÜ   r�  c                  ó   — e Zd ZdZ	 dZ	 dZdS )ÚCompilerStater   r   r6   N)r  r  r  Ú	COMPILINGÚSTRING_APPLIEDÚNO_STATEMENTrÖ   rÜ   rÚ   r†  r†  »  s-   € € € € € Ø€IØ=à€Nðð €Lðð rÜ   r†  c                  ó.   — e Zd ZdZdZ	 dZ	 dZ	 eez  ZdS )ÚLintingzžrepresent preferences for the 'SQL linting' feature.

    this feature currently includes support for flagging cartesian products
    in SQL statements.

    r   r   r6   N)r  r  r  r  Ú
NO_LINTINGÚCOLLECT_CARTESIAN_PRODUCTSÚWARN_LINTINGÚFROM_LINTINGrÖ   rÜ   rÚ   r‹  r‹  Ë  sG   € € € € € ðð ð €JØà!"Ððð €LØ2à-°Ñ<€Lðð rÜ   r‹  c                  ó"   — e Zd ZdZdd„Zdd„ZdS )Ú
FromLinterzKrepresents current state for the "cartesian product" detection
    feature.Nc                óà  ‡— | j         }|sdS t          | j        ¦  «        }t          |¦  «        }|�|}|                     |¦  «         n|                     ¦   «         }t          j        |g¦  «        }|rs|rq|                     ¦   «         Š|                     ‰¦  «         ˆfd„|D ¦   «         }| 	                    ˆfd„|D ¦   «         ¦  «         | 
                    |¦  «         |r|°q|r||fS dS )N©NNc                ó   •— h | ]}‰|v ¯|’Œ	S rÖ   rÖ   ©rØ   ÚedgeÚnodes     €rÚ   rÛ   z"FromLinter.lint.<locals>.<setcomp>  s   ø€ Ð@Ð@Ð@ $°4¸4°<°<˜°<°<°<rÜ   c              3  óP   •K  — | ] }||                      ‰¦  «                  V — Œ!d S r%  )Úindexr•  s     €rÚ   rK  z"FromLinter.lint.<locals>.<genexpr>  s7   øè è € ÐNÐN¸D˜T d§j¢j°Ñ&6Ô&6Ð"6Ô7ÐNÐNÐNÐNÐNÐNrÜ   )Úfromsr‰   ÚedgesÚremoveÚpopÚcollectionsÚdequeÚpopleftÚdiscardÚ
extendleftÚdifference_update)	r'  Ústartrš  r›  Úthe_restÚ
start_withÚstackÚ	to_remover—  s	           @rÚ   ÚlintzFromLinter.lintë  s$  ø€ Ø”
ˆØð 	Ø�:å�D”J‘”ˆÝ�u‘:”:ˆàÐØˆJØ�OŠO˜JÑ'Ô'Ð'Ð'à!Ÿš™œˆJåÔ! : ,Ñ/Ô/ˆàð 	/˜ð 	/Ø—=’=‘?”?ˆDØ×Ò˜TÑ"Ô"Ð"ð AÐ@Ð@Ð@¨%Ð@Ñ@Ô@ˆIð ×ÒÐNÐNÐNÐNÀIÐNÑNÔNÑNÔNÐNØ×#Ò# IÑ.Ô.Ð.ð ð 	/˜ð 	/ð  ð 	Ø˜ZÐ'Ð'à�:rÜ   ÚSELECTc                óþ   ‡ — ‰                       ¦   «         \  }}|r`|}|r^d}d                     ˆ fd„|D ¦   «         ¦  «        }|                     ||‰ j        |         ¬¦  «        }t	          j        |¦  «         d S d S d S )Nz£{stmt_type} statement has a cartesian product between FROM element(s) {froms} and FROM element "{start}".  Apply join condition(s) between each element to resolve.ré   c              3  ó:   •K  — | ]}d ‰j         |         › d �V — ŒdS )ú"N)rš  )rØ   Úfrom_r'  s     €rÚ   rK  z"FromLinter.warn.<locals>.<genexpr>  sG   øè è € ð &ð &Ø16Ð,˜œ
 5Ô)Ð,Ð,Ð,ð&ð &ð &ð &ð &ð &rÜ   )Ú	stmt_typerš  r¤  )r©  r‘   râ   rš  r*   Úwarn)r'  r¯  r¥  r¦  rš  ÚtemplateÚ	froms_strÚmessages   `       rÚ   r°  zFromLinter.warn  sÇ   ø€ Ø#Ÿyšy™{œ{Ñˆ�*ð ð 	#ØˆEØð #ð7ð ð !ŸIšIð &ð &ð &ð &Ø:?ð&ñ &ô &ñ ô �	ð #Ÿ/š/Ø'Ø#Øœ* ZÔ0ð *ñ ô �õ ”	˜'Ñ"Ô"Ð"Ð"Ð"ð%	#ð 	#ð#ð #rÜ   r%  )rª  )r  r  r  r  r©  r°  rÖ   rÜ   rÚ   r‘  r‘  ç  sG   € € € € € ðð ð#ð #ð #ð #ðJ#ð #ð #ð #ð #ð #rÜ   r‘  rš  r›  c                  ó�  ‡ — e Zd ZU dZdZded<   	 dZded<   	 ded	<   	 d
Zd
ZdZ	ded<   dZ
ded<   dZded<   ej        Zded<   	 ded<   ej        Zded<   dZded<   	 dZded<   	 dZded<   	 ded<   	 dd
 ej        ¦   «         fd;d$„Zd<ˆ fd'„Zed(„ ¦   «         Zd)„ Zed=d+„¦   «         Zd>d0„Zd?d1„Z	 	 	 d@dAd9„Zed:„ ¦   «         Zˆ xZS )BÚCompileda  Represent a compiled SQL or DDL expression.

    The ``__str__`` method of the ``Compiled`` object should produce
    the actual text of the statement.  ``Compiled`` objects are
    specific to their underlying database dialect, and also may
    or may not be specific to the columns referenced within a
    particular set of bind parameters.  In no case should the
    ``Compiled`` object be dependent on the actual values of those
    bind parameters, even though it may reference those values as
    defaults.
    NúOptional[ClauseElement]r@  Ú r×   Ústringr†  ÚstateFzOptional[CursorResultMetaData]Ú_cached_metadataz"Optional[List[ResultColumnsEntry]]Ú_result_columnsú Optional[SchemaTranslateMapType]Úschema_translate_maprs   Úexecution_optionsÚIdentifierPreparerÚpreparerr<   Ú_annotationszOptional[CompileState]r6  Údml_compile_stateúOptional[CacheKey]Ú	cache_keyÚfloatÚ	_gen_timeÚdialectrv   Úrender_schema_translater7  Úcompile_kwargsúMapping[str, Any]c                ó>  — || _         | j         j        | _        |r&|| _        | j                             |¦  «        | _        |�¶t
          j        | _        || _        |j	        | _
        |j        | _        | j
        r*t          rt          |t          ¦  «        sJ ‚|j        | _         | j        | j        fi |¤Ž| _        |r)|€J ‚| j                             | j        |¦  «        | _        t
          j        | _        nt
          j        | _        t-          ¦   «         | _        dS )aû  Construct a new :class:`.Compiled` object.

        :param dialect: :class:`.Dialect` to compile against.

        :param statement: :class:`_expression.ClauseElement` to be compiled.

        :param schema_translate_map: dictionary of schema names to be
         translated when forming the resultant SQL

         .. seealso::

            :ref:`schema_translating`

        :param compile_kwargs: additional kwargs that will be
         passed to the initial call to :meth:`.Compiled.process`.


        N)rÇ  Úidentifier_preparerrÀ  r½  Ú_with_schema_translater†  r‡  r¹  r@  Úsupports_executionÚcan_executerÁ  r   Ú
isinstancer?   Ú_execution_optionsr¾  Úprocessr¸  Ú_render_schema_translatesrˆ  r‰  r   rÆ  ©r'  rÇ  r@  r½  rÈ  rÉ  s         rÚ   Ú__init__zCompiled.__init__}  s   € ð4 ˆŒØœÔ8ˆŒØð 	Ø(<ˆDÔ%Ø œM×@Ò@Ø$ñô ˆDŒMð Ð Ý&Ô0ˆDŒJØ&ˆDŒNØ(Ô;ˆDÔØ )Ô 6ˆDÔØÔð FÝ ð =Ý% iµÑ<Ô<Ð<Ð<Ð<Ø)2Ô)E�Ô&Ø&˜$œ, t¤~ÐHÐH¸ÐHÐHˆDŒKà&ð Ø+Ð7Ð7Ð7Ø"œm×EÒEØ”KÐ!5ñô �”õ 'Ô5ˆDŒJˆJå&Ô3ˆDŒJå%™œˆŒˆˆrÜ   r"  r#  c                ól   •— |                       ¦   «          t          ¦   «                              ¦   «         S r%  )Ú_init_compiler_clsÚsuperÚ__init_subclass__)ÚclsÚ	__class__s    €rÚ   rÙ  zCompiled.__init_subclass__¶  s+   ø€ Ø×ÒÑ Ô Ð Ý‰wŒw×(Ò(Ñ*Ô*Ð*rÜ   c                ó   — d S r%  rÖ   ©rÚ  s    rÚ   r×  zCompiled._init_compiler_clsº  s   € àˆrÜ   c                óH   — t          j        | t          |¦  «        ¦  «        |‚r%  ©r7   ÚUnsupportedCompilationErrorr  ©r'  ÚelementÚerrÚkws       rÚ   Úvisit_unsupported_compilationz&Compiled.visit_unsupported_compilation¾  s   € ÝÔ-¨dµD¸±M´MÑBÔBÈÐKrÜ   ÚSQLCompilerc                ó   — t          ¦   «         ‚)z�Return a Compiled that is capable of processing SQL expressions.

        If this compiler is one, it would likely just return 'self'.

        ©ÚNotImplementedErrorrN  s    rÚ   Úsql_compilerzCompiled.sql_compilerÁ  s   € õ "Ñ#Ô#Ð#rÜ   Úobjrm   Úkwargsr   c                ó   —  |j         | fi |¤ŽS r%  ©Ú_compiler_dispatch)r'  rë  rì  s      rÚ   rÒ  zCompiled.processË  s   € Ø%ˆsÔ% dÐ5Ð5¨fÐ5Ð5Ð5rÜ   c                ó:   — | j         t          j        u r| j        S dS )z3Return the string text of the generated SQL or DDL.r·  )r¹  r†  rˆ  r¸  rN  s    rÚ   Ú__str__zCompiled.__str__Î  s!   € ð Œ:�Ô5Ð5Ð5Ø”;Ðà�2rÜ   TÚparamsú"Optional[_CoreSingleExecuteParams]Úextracted_parametersú&Optional[Sequence[BindParameter[Any]]]Úescape_namesú)Optional[_MutableCoreSingleExecuteParams]c                ó   — t          ¦   «         ‚)zâReturn the bind params for this compiled object.

        :param params: a dict of string/object pairs whose values will
                       override bind values compiled in to the
                       statement.
        rè  ©r'  rò  rô  rö  s       rÚ   Úconstruct_paramszCompiled.construct_paramsÖ  s   € õ "Ñ#Ô#Ð#rÜ   c                ó*   — |                       ¦   «         S )z0Return the bind params for this compiled object.©rú  rN  s    rÚ   rò  zCompiled.paramså  s   € ð ×$Ò$Ñ&Ô&Ð&rÜ   )
rÇ  rv   r@  r¶  r½  r¼  rÈ  r7  rÉ  rÊ  )r"  r#  ©r"  ræ  )rë  rm   rì  r   r"  r×   ©r"  r×   ©NNT©rò  ró  rô  rõ  rö  r7  r"  r÷  ) r  r  r  r  r@  r  r¸  Úis_sqlÚis_ddlrº  r»  r½  r*   Ú
EMPTY_DICTr¾  rÁ  r6  rÂ  rÄ  ÚimmutabledictrÕ  rÙ  Úclassmethodr×  rå  rR  rê  rÒ  rñ  rú  rò  Ú__classcell__©rÛ  s   @rÚ   rµ  rµ  )  s;  ø€ € € € € € ð
ð 
ð *.€IÐ-Ð-Ð-Ñ-ØØ€FÐÐÐÑØ4àÐÐÑØ-à€FØ€Fà7;ÐÐ;Ð;Ð;Ñ;à:>€OÐ>Ð>Ð>Ñ>à=AÐÐAÐAÐAÑAà)-¬ÐÐ8Ð8Ð8Ñ8ðð
 !Ð Ð Ñ à$(¤O€LÐ3Ð3Ð3Ñ3à,0€MÐ0Ð0Ð0Ñ0ðð 15ÐÐ4Ð4Ð4Ñ4ð	ð %)€IÐ(Ð(Ð(Ñ(ð	ð ÐÐÑðð BFØ(-Ø,>¨DÔ,>Ñ,@Ô,@ð7(ð 7(ð 7(ð 7(ð 7(ðr+ð +ð +ð +ð +ð +ð ðð ñ „[ððLð Lð Lð ð$ð $ð $ñ „Xð$ð6ð 6ð 6ð 6ðð ð ð ð 6:ØGKØ!ð	$ð $ð $ð $ð $ð ð'ð 'ñ „Xð'ð 'ð 'ð 'ð 'rÜ   rµ  c                  ó.   — e Zd ZdZdZdd„Zdd„Zdd„ZdS )ÚTypeCompilerz2Produces DDL specification for TypeEngine objects.z	visit_\w+rÇ  rv   c                ó   — || _         d S r%  )rÇ  )r'  rÇ  s     rÚ   rÕ  zTypeCompiler.__init__ð  s   € ØˆŒˆˆrÜ   r!  r  rä  r   r"  r×   c                ó€   — |j         r*| j        j        |j         v r|j         | j        j                 } |j        | fi |¤ŽS r%  )Ú_variant_mappingrÇ  r  rï  ©r'  r!  rä  s      rÚ   rÒ  zTypeCompiler.processó  sM   € àÔ"ð	>à”Ô! UÔ%;Ð;Ð;àÔ*¨4¬<Ô+<Ô=ˆEØ'ˆuÔ'¨Ð3Ð3°Ð3Ð3Ð3rÜ   râ  rã  Ú	Exceptionr   c                ó.   — t          j        | |¦  «        |‚r%  )r7   rà  rá  s       rÚ   rå  z*TypeCompiler.visit_unsupported_compilationû  s   € õ Ô-¨d°GÑ<Ô<À#ÐErÜ   N)rÇ  rv   )r!  r  rä  r   r"  r×   )râ  r   rã  r  rä  r   r"  r   )r  r  r  r  Úensure_kwargrÕ  rÒ  rå  rÖ   rÜ   rÚ   r	  r	  ë  sa   € € € € € Ø<Ð<à€Lðð ð ð ð4ð 4ð 4ð 4ðFð Fð Fð Fð Fð FrÜ   r	  c                  óT   — e Zd ZdZdZdZd
d„Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d	S )Ú_CompileLabelz;lightweight label object which acts as an expression.Label.Úlabel©râ  r  Ú
_alt_namesrÖ   c                ó8   — || _         || _        |f|z   | _        d S r%  r  )r'  Úcolr  Ú	alt_namess       rÚ   rÕ  z_CompileLabel.__init__  s"   € ØˆŒØˆŒ	Ø˜& 9Ñ,ˆŒˆˆrÜ   c                ó   — | j         j        S r%  ©râ  Ú	proxy_setrN  s    rÚ   r  z_CompileLabel.proxy_set  ó   € àŒ|Ô%Ð%rÜ   c                ó   — | j         j        S r%  ©râ  r  rN  s    rÚ   r  z_CompileLabel.type  ó   € àŒ|Ô Ð rÜ   c                ó   — | S r%  rÖ   ©r'  rä  s     rÚ   Ú
self_groupz_CompileLabel.self_group  ó   € ØˆrÜ   N)rÖ   )r  r  r  r  Ú__visit_name__Ú	__slots__rÕ  rR  r  r  r"  rÖ   rÜ   rÚ   r  r    s€   € € € € € ð FÐEà€NØ/€Ið-ð -ð -ð -ð
 ð&ð &ñ „Xð&ð ð!ð !ñ „Xð!ðð ð ð ð rÜ   r  c                  ó^   — e Zd ZdZd ZdZd„ Zd„ Zed„ ¦   «         Z	ed„ ¦   «         Z
d„ Zd„ Zd	S )
Úaggregate_orderby_inlinez2produce ORDER BY inside of function argument lists©râ  Úaggregate_order_byc                ó"   — || _         || _        d S r%  r(  )r'  râ  Úorderbys      rÚ   rÕ  z!aggregate_orderby_inline.__init__$  s   € ØˆŒØ")ˆÔÐÐrÜ   c                ó*   — t          | j        ¦  «        S r%  )Úiterrâ  rN  s    rÚ   Ú__iter__z!aggregate_orderby_inline.__iter__(  s   € Ý�D”LÑ!Ô!Ð!rÜ   c                ó   — | j         j        S r%  r  rN  s    rÚ   r  z"aggregate_orderby_inline.proxy_set+  r  rÜ   c                ó   — | j         j        S r%  r  rN  s    rÚ   r  zaggregate_orderby_inline.type/  r  rÜ   c                ó   — | S r%  rÖ   r!  s     rÚ   r"  z#aggregate_orderby_inline.self_group3  r#  rÜ   c                ó\   — t          | j                             |¦  «        | j        ¦  «        S r%  )r'  râ  Ú_with_binary_element_typer)  ©r'  r!  s     rÚ   r3  z2aggregate_orderby_inline._with_binary_element_type6  s-   € Ý'ØŒL×2Ò2°5Ñ9Ô9ØÔ#ñ
ô 
ð 	
rÜ   N)r  r  r  r  r$  r%  rÕ  r.  rR  r  r  r"  r3  rÖ   rÜ   rÚ   r'  r'    s˜   € € € € € ð =Ð<à/€NØ/€Ið*ð *ð *ð"ð "ð "ð ð&ð &ñ „Xð&ð ð!ð !ñ „Xð!ðð ð ð
ð 
ð 
ð 
ð 
rÜ   r'  c                  óX   — e Zd ZdZdZdZd„ Zed„ ¦   «         Zed„ ¦   «         Z	d„ Z
d„ Zd	S )
Úilike_case_insensitivea  produce a wrapping element for a case-insensitive portion of
    an ILIKE construct.

    The construct usually renders the ``lower()`` function, but on
    PostgreSQL will pass silently with the assumption that "ILIKE"
    is being used.

    .. versionadded:: 2.0

    Úilike_case_insensitive_operand©râ  Ú
comparatorc                ó,   — || _         |j        | _        d S r%  r8  )r'  râ  s     rÚ   rÕ  zilike_case_insensitive.__init__N  s   € ØˆŒØ!Ô,ˆŒˆˆrÜ   c                ó   — | j         j        S r%  r  rN  s    rÚ   r  z ilike_case_insensitive.proxy_setR  r  rÜ   c                ó   — | j         j        S r%  r  rN  s    rÚ   r  zilike_case_insensitive.typeV  r  rÜ   c                ó   — | S r%  rÖ   r!  s     rÚ   r"  z!ilike_case_insensitive.self_groupZ  r#  rÜ   c                óP   — t          | j                             |¦  «        ¦  «        S r%  )r6  râ  r3  r4  s     rÚ   r3  z0ilike_case_insensitive._with_binary_element_type]  s'   € Ý%ØŒL×2Ò2°5Ñ9Ô9ñ
ô 
ð 	
rÜ   N)r  r  r  r  r$  r%  rÕ  rR  r  r  r"  r3  rÖ   rÜ   rÚ   r6  r6  =  s�   € € € € € ð	ð 	ð 6€NØ'€Ið-ð -ð -ð ð&ð &ñ „Xð&ð ð!ð !ñ „Xð!ðð ð ð
ð 
ð 
ð 
ð 
rÜ   r6  c                  óp  — e Zd ZU dZeZ ej        dddddddddœ¦  «        Zde	d	<   	 d
e	d<   de	d<   dZ
eZdZde	d<   dZde	d<   dZde	d<   	 de	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   	 dZde	d<   de	d<   	 de	d <   	 d!e	d"<   	 dZde	d#<   	 dZde	d$<   	 dZde	d%<   	 d&e	d'<   	 d&e	d(<   	 d&e	d)<   	 d*e	d+<   	 dZde	d,<   	 dZde	d-<   	 dZde	d.<   	 dZde	d/<   	 dZde	d0<   	 dZde	d1<   	 dZd2e	d3<   	 dZd4e	d5<   	 dZd6e	d7<   dZ d8e	d9<   dZ!d:e	d;<    e"¦   «         Z#d<e	d=<   	  e"¦   «         Z$d<e	d><   	 ej%        Z&d?e	d@<   dAe	dB<   	 dZ'	 dZ(	 dZ)dCe	dD<   	 dZ*d6e	dE<   	 dZ+d6e	dF<   dZ,d6e	dG<   dZ-de	dH<   dIe	dJ<   dKe	dL<   dMe	dN<   de	dO<    e.j/        dP¦  «        Z0 e.j/        dQ¦  «        Z1 e.j/        e1j2        › dRe0j2        › �¦  «        Z3 e.j/        dSe1j2        › �¦  «        Z4 e.j/        dSe3j2        › �¦  «        Z5dTe	dU<   dVe	dW<   e6dX„ ¦   «         Z7e6dY„ ¦   «         Z8ddde9df�d�di„Z:e;�dŽdk„¦   «         Z<ej=        �d�dl„¦   «         Z>e;dm„ ¦   «         Z?e;dn„ ¦   «         Z@e;do„ ¦   «         ZAejB        �d�dq„¦   «         ZC�d‘du„ZDejE        �d’dw„¦   «         ZFeGjH        dx„ ¦   «         ZIdy„ ZJdz„ ZKejB        �d“d|„¦   «         ZLd}„ ZMe;�d”d„¦   «         ZN	 	 �d•�d–d„„ZO	 	 	 	 	 	 	 �d—�d˜d�„ZPejE        dŽ„ ¦   «         ZQe;d�„ ¦   «         ZR	 �d™�dšd’„ZS ejT        d“¦  «        d”„ ¦   «         ZUd•e	d–<   ejB        �d›d˜„¦   «         ZVejB         ejT        d™¦  «        dš„ ¦   «         ¦   «         ZWejB         ejT        d™¦  «        d›„ ¦   «         ¦   «         ZX�dœdœ„ZY	 	 �d�d�„ZZ�d™dž„Z[dŸ„ Z\	 �d™d „Z]	 �d™d¡„Z^	 	 	 	 	 	 �džd¢„Z_d£„ Z`d¤„ Za	 	 	 	 �dŸ�d d®„Zbd¯„ Zcd°„ Zdd±„ Zed²„ Zfd³„ Zgd´„ Zh�d¡dµ„Zid¶„ Zj�d¡d·„Zk	 �d¢d¸„Zl�d£d¼„Zm�d¤d¾„Zn�d¥dÀ„ZodÁ„ ZpdÂ„ ZqdÃ„ ZrdÄ„ ZsdÅ„ ZtdÆ„ ZudÇ„ ZvdÈ„ ZwdÉ„ ZxdÊ„ ZydË„ ZzdÌ„ Z{dÍ„ Z|dÎ„ Z}dÏ„ Z~dÐ„ ZddÑœdÒ„Z€dÓ„ Z�dÔ„ Z‚	 �d¡�d¦d×„ZƒdØ„ Z„dÙ„ Z…�d§dÚ„Z†	 �d¨dÛ„Z‡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é„ Z•	 	 	 	 �d©dê„Z–dë„ Z—dì„ Z˜dí„ Z™dî„ Zšdï„ Z›	 �d™�dªdô„Zœdõ„ Z�dö„ ZžejB        d÷„ ¦   «         ZŸdø„ Z dù„ Z¡dú„ Z¢dû„ Z£dü„ Z¤dý„ Z¥dþ„ Z¦dÿ„ Z§�d „ Z¨�d„ Z©�d„ Zª�d„ Z«�d„ Z¬�d„ Z­�d„ Z®�d„ Z¯�d„ Z°�d	„ Z±�d
„ Z²�d«�d„Z³�d«�d„Z´�d«�d„Zµd�dœ�d„Z¶	 	 	 	 	 	 �d¬�d„Z·�d„ Z¸e¹df�d„Zº�d­�d„Z»�d„ Z¼�d®�d„Z½�d¯�d„Z¾�d°�d„Z¿	 	 	 	 	 	 �d±�d²�d'„ZÀ�d(„ ZÁddddd eÂjÃ        d¦  «        f�d³�d5„ZÄ�d6„ ZÅ�d7„ ZÆ	 	 	 	 	 	 	 	 	 �d´�d8„ZÇ�d9„ ZÈ�d:„ ZÉ�d™�d;„ZÊ�d<„ ZË	 �dµ�d=„ZÌ�d>„ ZÍ�d?„ ZÎ�d¶�dC„ZÏ	 �d¡�dD„ZÐ	 	 	 	 	 	 	 �d·�dE„ZÑ�dF„ ZÒ�dG„ ZÓ�d¸�dK„ZÔ�dL„ ZÕ�dM„ ZÖ�dNe	�dO<   e×jØ        s( ej        �dP e"¦   «         f�dQ e"¦   «         fg¦  «        ZÙ	 �d™�dR„ZÚdZÛdhe	�dS<   	 	 	 	 	 	 	 	 �d¹�dT„ZÜ�dº�dX„ZÝ�dY„ ZÞ�dZ„ Zß�d[„ Zà	 	 �d¢�d\„Zá�d]„ Zâ�d»�d_„Zã�d`„ Zä�da„ Zå�db„ Zæ�d¼�dh„Zç�di„ Zè	 	 	 �d½�dj„Zé	 	 	 	 	 	 	 	 	 �d¾�dk„Zê�d¨�dl„Zë�dm„ Zì ej        eíjî        eïjð        eíjñ        eïjð        eíjò        eïjð        eíjó        eïjó        eíjô        eïjô        eíjõ        eïjõ        i¦  «        Zöeö ÷                    eíjò        eïjø        i¦  «        Zù�d¿�dp„Zú�dÀ�d|„Zû	 �dÁ�d}„Zü�d~„ Zý�d„ Zþ�dÂ�d‚„Zÿ�dÃ�d…„�Z 	 �d¡�dÄ�d†„�Z�d‡„ �Z�dˆ„ �Z�d¡�d‰„�Z�dŠ„ �Z�d‹„ �Z�dŒ„ �ZdS (Å  ræ  z~Default implementation of :class:`.Compiled`.

    Compiles :class:`_expression.ClauseElement` objects into SQL strings.

    ÚPÚAÚZÚCÚ_)ú%ú(ú)ú:ú.ú[ú]ú zClassVar[Mapping[str, str]]Úbindname_escape_characterszClassVar[Pattern[str]]Ú_bind_translate_reÚ_bind_translate_charsTFr7  ÚisdeleteÚisinsertÚisupdatezOptional[List[Column[Any]]]Ú	postfetchrÖ   zSequence[Column[Any]]Úinsert_prefetchÚupdate_prefetchNú&Optional[Sequence[ColumnElement[Any]]]Úimplicit_returningÚisplaintextzDict[str, BindParameter[Any]]ÚbindszDict[BindParameter[Any], str]Ú
bind_nameszList[_CompilerStackEntry]r§  Úreturning_precedes_valuesÚ'render_table_with_column_in_update_fromÚansi_bind_rulesr×   ÚbindtemplateÚcompilation_bindtemplateÚ_numeric_binds_identifier_charzList[ResultColumnsEntry]r»  Ú_textual_ordered_columnsÚ_ad_hoc_textualÚ_ordered_columnsÚ_loose_column_name_matchingÚ_numeric_bindsÚ_render_postcompilezOptional[ExpandedState]Ú_post_compile_expanded_stateúOptional[str]Ú_pre_expanded_stringúOptional[List[str]]Ú_pre_expanded_positiontupzOptional[_InsertManyValues]Ú_insertmanyvaluesz!Optional[crud._CrudParamSequence]Ú_insert_crud_paramszFrozenSet[BindParameter[Any]]Úliteral_execute_paramsÚpost_compile_paramszutil.immutabledict[str, str]Úescaped_bind_nameszSet[str]Ú_escaped_bind_names_usedzbOptional[Tuple[Dict[BindParameter[Any], List[BindParameter[Any]]], Dict[str, BindParameter[Any]]]]Ú_cache_key_bind_matchrE  Ú_values_bindparamÚ_visited_bindparamÚinlinez"Optional[MutableMapping[CTE, str]]ÚcteszDict[Tuple[int, str], CTE]Úctes_by_level_namez/Dict[CTE, Tuple[int, str, selectable._CTEOpts]]Úlevel_name_by_cteÚctes_recursivez"__\[POSTCOMPILE_(\S+?)(~~.+?~~)?\]z%\(([^)]+?)\)sú|z%%|zFinal[bool]Ú_collect_paramszutil.immutabledict[str, Any]Ú_collected_paramsc                ó.   — |                       ¦   «          d S r%  )Ú_init_bind_translaterÝ  s    rÚ   r×  zSQLCompiler._init_compiler_clsŸ  s   € à× Ò Ñ"Ô"Ð"Ð"Ð"rÜ   c                ó°   — t          j        d                     | j        ¦  «        ¦  «        }t          j        d|› d�¦  «        | _        | j        | _        d S )Nr·  rJ  rK  )ÚreÚescaper‘   rM  ÚcompilerN  rO  )rÚ  Úregs     rÚ   r~  z SQLCompiler._init_bind_translate£  sK   € åŒi˜Ÿš Ô >Ñ?Ô?Ñ@Ô@ˆÝ!#¤¨J°¨J¨J¨JÑ!7Ô!7ˆÔØ$'Ô$BˆÔ!Ð!Ð!rÜ   rÇ  rv   r@  r¶  rÄ  rÃ  Úcolumn_keysrD  Úfor_executemanyÚlintingr‹  Ú_supporting_againstúOptional[SQLCompiler]rì  r   c                óŽ  — || _         || _        |r-d„ |d         D ¦   «         }	d„ |d         D ¦   «         }
|
|	f| _        || _        || _        i | _        t          j        ¦   «         | _        g | _	        g | _
        |j        | _        | j        rD|j                             d¦  «        x| _        }|r|j        dk    rdnd| _        t           | _        nt$          |j                 | _        d| _        |j        p|j        | _        t-          ¦   «         | _        i | _        i | _        |sd	| _        t          j        | _        nd
| _        t;          j        | ||fi |¤Ž | j        s| j         s| j!        r�tD          rtG          |tH          ¦  «        sJ ‚| j        s| j         rUtD          rtG          |tJ          ¦  «        sJ ‚|j&        rd	| _'        n(| j        r!| j        r| j(        j)        r|j*        rd	| _'        t$          |j                 | _+        |r;| j,         -                    d„ |j,         .                    ¦   «         D ¦   «         ¦  «         | j/        t`          j1        u rn| j        r0| j        r|  2                    ¦   «          n|  3                    ¦   «          | j4        r2|  5                    d
d	¬¦  «        }|  6                    |d	¬¦  «         dS dS dS )a‚  Construct a new :class:`.SQLCompiler` object.

        :param dialect: :class:`.Dialect` to be used

        :param statement: :class:`_expression.ClauseElement` to be compiled

        :param column_keys:  a list of column names to be compiled into an
         INSERT or UPDATE statement.

        :param for_executemany: whether INSERT / UPDATE statements should
         expect that they are to be invoked in an "executemany" style,
         which may impact how the statement will be expected to return the
         values of defaults and autoincrement / sequences and similar.
         Depending on the backend and driver in use, support for retrieving
         these values may be disabled which means SQL expressions may
         be rendered inline, RETURNING may not be rendered, etc.

        :param kwargs: additional keyword arguments to be consumed by the
         superclass.

        c                ó   — i | ]
}|j         |“ŒS rÖ   ©rJ  ©rØ   Úbs     rÚ   ú
<dictcomp>z(SQLCompiler.__init__.<locals>.<dictcomp>Î  s   € Ð3Ð3Ð3 �A”E˜1Ð3Ð3Ð3rÜ   r   c                ó   — i | ]}||g“ŒS rÖ   rÖ   rŒ  s     rÚ   rŽ  z(SQLCompiler.__init__.<locals>.<dictcomp>Ï  s   € Ð1Ð1Ð1˜q�A˜�sÐ1Ð1Ð1rÜ   rã   rä   rÞ   rH  NTFc                ó"   — i | ]\  }}|d v¯	||“ŒS )>   r¹  rÇ  rÀ  Ú
positionalr^  re  r_  rÖ   ©rØ   ÚkÚvs      rÚ   rŽ  z(SQLCompiler.__init__.<locals>.<dictcomp>  s@   € ð ð ð á˜˜1Øðð	ð 	ð �qð	ð 	ð 	rÜ   ©rö  Ú_no_postcompile)Ú_populate_self)7r„  rÄ  rr  r…  r†  rY  r*   Úcolumn_dictrZ  r§  r»  r‘  Ú
paramstyleÚ
startswithre  r`  Ú_pyformat_templater_  ÚBIND_TEMPLATESrv  Úlabel_lengthÚmax_identifier_lengthr5   Úanon_mapÚtruncated_namesÚ_truncated_countersr{  r  r|  rµ  rÕ  rQ  rR  rP  r   rÐ  rI   rK   Ú_inlineru  rÇ  Úinsert_executemany_returningÚ_return_defaultsr^  Ú__dict__ÚupdateÚitemsr¹  r†  rˆ  Ú_process_numericÚ_process_positionalrf  rú  Ú#_process_parameters_for_postcompile)r'  rÇ  r@  rÄ  r„  r…  r†  r‡  rì  ÚcksmÚckbmÚnbrA  s                rÚ   rÕ  zSQLCompiler.__init__©  s[  € ð@ 'ˆÔà"ˆŒàð 	6Ø3Ð3 i°¤lÐ3Ñ3Ô3ˆDØ1Ð1 I¨a¤LÐ1Ñ1Ô1ˆDØ*.°¨ˆDÔ&ð
  /ˆÔàˆŒð ˆŒ
õ Ô*Ñ,Ô,ˆŒð ˆŒ
à!ˆÔð "Ô,ˆŒØŒ?ð 		OØ'.Ô'9×'DÒ'DÀYÑ'OÔ'OÐOˆDÔ "Øð à"Ô-Ð1AÒAÐA�C�CÀsð Ô3õ -?ˆDÔ)Ð)å,:¸7Ô;MÔ,NˆDÔ)àˆŒ	ð Ô ÐA GÔ$Að 	Ôõ (Ñ)Ô)ˆŒð <>ˆÔØ35ˆÔ Øð 	)Ø#'ˆDÔ Ý%)¤_ˆDÔ"Ð"à#(ˆDÔ åÔ˜$ ¨Ð=Ð=°fÐ=Ð=Ð=àŒ=ð 	'˜DœMð 	'¨T¬]ð 	'Ýð 9Ý! )­ZÑ8Ô8Ð8Ð8Ð8àŒ}ð ' ¤ð 'Ý ð =Ý% iµÑ<Ô<Ð<Ð<Ð<ØÔ$ð 	'Ø"&�D”K�KØÔ)ð 'Øœð'ð œÔAð'ð &Ô6ð	'ð #'�D”Kå*¨7Ô+=Ô>ˆÔàð 	ØŒM× Ò ðð à 3Ô <× BÒ BÑ DÔ Dðñ ô ñô ð ð" Œ:�Ô5Ð5Ð5ØŒð /ØÔ&ð /Ø×)Ò)Ñ+Ô+Ð+Ð+à×,Ò,Ñ.Ô.Ð.àÔ'ð Ø!×2Ò2Ø!&Ø$(ð 3ñ ô �
ð
 ×8Ò8Ø¨tð 9ñ ô ð ð ð ð 6Ð5ðð rÜ   r"  c                ó,   — | j         €dS | j         j        S )a×  When an INSERT is compiled with a single set of parameters inside
        a VALUES expression, the string is assigned here, where it can be
        used for insert batching schemes to rewrite the VALUES expression.

        .. versionchanged:: 2.0 This collection is no longer used by
           SQLAlchemy's built-in dialects, in favor of the currently
           internal ``_insertmanyvalues`` collection that is used only by
           :class:`.SQLCompiler`.

        N)rl  rV  rN  s    rÚ   Úinsert_single_values_exprz%SQLCompiler.insert_single_values_expr@  s   € ð Ô!Ð)Ø�4àÔ)Ô<Ð<rÜ   c                ó„   — | j         r| j         S | j        �*t          | j        ¦  «        rd„ | j        j        D ¦   «         S dS )aâ  The effective "returning" columns for INSERT, UPDATE or DELETE.

        This is either the so-called "implicit returning" columns which are
        calculated by the compiler on the fly, or those present based on what's
        present in ``self.statement._returning`` (expanded into individual
        columns using the ``._all_selected_columns`` attribute) i.e. those set
        explicitly using the :meth:`.UpdateBase.returning` method.

        .. versionadded:: 2.0

        Nc                ó0   — g | ]}t          |¦  «        ¯|‘ŒS rÖ   r+   ©rØ   Úcs     rÚ   ú
<listcomp>z3SQLCompiler.effective_returning.<locals>.<listcomp>a  s6   € ð ð ð àÝ$ QÑ'Ô'ðØðð ð rÜ   )rW  r@  r-   Ú_all_selected_columnsrN  s    rÚ   Úeffective_returningzSQLCompiler.effective_returningQ  s\   € ð Ô"ð 
	ØÔ*Ð*ØŒ^Ð'­F°4´>Ñ,BÔ,BÐ'ðð àœÔ=ðñ ô ð ð �4rÜ   c                ó   — | j         S )zVbackwards compatibility; returns the
        effective_returning collection.

        )r¶  rN  s    rÚ   Ú	returningzSQLCompiler.returningj  s   € ð Ô'Ð'rÜ   c                ón   — 	 | j         d         d         S # t          $ r}t          d¦  «        |‚d}~ww xY w)aÿ  Return the current 'executable' that is being compiled.

        This is currently the :class:`_sql.Select`, :class:`_sql.Insert`,
        :class:`_sql.Update`, :class:`_sql.Delete`,
        :class:`_sql.CompoundSelect` object that is being compiled.
        Specifically it's assigned to the ``self.stack`` list of elements.

        When a statement like the above is being compiled, it normally
        is also assigned to the ``.statement`` attribute of the
        :class:`_sql.Compiler` object.   However, all SQL constructs are
        ultimately nestable, and this attribute should never be consulted
        by a ``visit_`` method, as it is not guaranteed to be assigned
        nor guaranteed to correspond to the current statement being compiled.

        éÿÿÿÿr(   z$Compiler does not have a stack entryN)r§  Ú
IndexError)r'  Úies     rÚ   Úcurrent_executablezSQLCompiler.current_executabler  sM   € ð"	MØ”:˜b”> ,Ô/Ð/øÝð 	Mð 	Mð 	MÝÐCÑDÔDÈ"ÐLøøøøð	Møøøs   ‚ •
4Ÿ/¯4c                óT   — t          | j        ¦  «        t          | j        ¦  «        z   S r%  )ÚlistrT  rU  rN  s    rÚ   ÚprefetchzSQLCompiler.prefetchˆ  s#   € å�DÔ(Ñ)Ô)­D°Ô1EÑ,FÔ,FÑFÐFrÜ   úDict[Any, Any]c                ó   — i S r%  rÖ   rN  s    rÚ   Ú_global_attributeszSQLCompiler._global_attributesŒ  s   € àˆ	rÜ   Úitemr@   r#  c                ó@   — |j         r|j         | j        z  | _        d S d S r%  )Ú_paramsr|  )r'  rÄ  s     rÚ   Ú_add_to_paramszSQLCompiler._add_to_params�  s3   € ð Œ<ð 	KØ%)¤\°DÔ4JÑ%JˆDÔ"Ð"Ð"ð	Kð 	KrÜ   úMutableMapping[CTE, str]c                ód   — t          j        ¦   «         }|| _        i | _        i | _        d| _        |S )z’Initialize collections related to CTEs only if
        a CTE is located, to save on the overhead of
        these collections otherwise.

        F)r*   ÚOrderedDictrv  rw  rx  ry  )r'  rv  s     rÚ   Ú_init_cte_statezSQLCompiler._init_cte_state—  s:   € õ *.Ô)9Ñ);Ô);ˆØˆŒ	ð #%ˆÔð "$ˆÔà#ˆÔàˆrÜ   c              #  ó@  K  — | j         | j        }}g dc| _         | _        	 | j        r| j        d         }d|d<   nd}| j         | j        fV — |r|                     d¦  «         ||c| _         | _        dS # |r|                     d¦  «         ||c| _         | _        w xY w)z;special API to support the use case of 'nested result sets'Frº  Tr8  N)r»  rc  r§  r�  )r'  Úresult_columnsÚordered_columnsÚentrys       rÚ   Ú_nested_resultzSQLCompiler._nested_result¯  sð   è è € ð Ô ØÔ!ð (ˆð 79¸%Ð3ˆÔ˜dÔ3ð	ØŒzð Øœ
 2œ�Ø6:�Ð2Ñ3Ð3à�ØÔ&¨Ô(=Ð=Ð=Ð=Ð=àð 8Ø—	’	Ð6Ñ7Ô7Ð7àØð 8ˆDÔ  $Ô"7Ð"7Ð"7øð ð 8Ø—	’	Ð6Ñ7Ô7Ð7àØð 8ˆDÔ  $Ô"7ð ð ð ð s   ¡,A5 Á5(Bc                óô  ‡‡‡‡‡‡— | j         rJ ‚| j        t          j        u sJ ‚| j        rJ ‚| j        j        dk    rdŠn| j        j        dk    sJ ‚dŠg Š| j        Š| j        rKd„ | j         	                    ¦   «         D ¦   «         Št          | j        ¦  «        t          ‰¦  «        k    sJ ‚ni Š| j        j        r| j        Šn| j        Šdˆˆˆˆfd
„Št          j        ‰‰| j        ¦  «        | _        ‰rˆfd„‰D ¦   «         | _         n‰| _         | j        r^g Št          j        ‰‰| j        j        ¦  «        }ˆˆfd„| j        j        D ¦   «         }| j                             ||¬¦  «        | _        d S d S )Nrâ   ú%srá   rß   c                ó   — i | ]\  }}||“Œ	S rÖ   rÖ   r’  s      rÚ   rŽ  z3SQLCompiler._process_positional.<locals>.<dictcomp>Ö  s   € ÐOÐOÐO¡t q¨!˜a ÐOÐOÐOrÜ   Úmúre.Match[str]r"  r×   c                óˆ  •— |                       d¦  «        }|rD‰                     ||¦  «        ‰vr|                       d¦  «        S ‰                     |¦  «         ‰S |                       d¦  «        r=‰                     |                       d¦  «        ¦  «         |                       d¦  «        S |                       d¦  «        S )Nr   r   r6   )r    ÚgetÚappend)rÔ  Únormal_bindrY  ÚplaceholderÚ	positionsÚreverse_escapes     €€€€rÚ   Úfind_positionz6SQLCompiler._process_positional.<locals>.find_positionà  s±   ø€ ØŸ'š' !™*œ*ˆKØð "Ø!×%Ò% k°;Ñ?Ô?ÀuÐLÐLàŸ7š7 1™:œ:Ð%Ø× Ò  Ñ-Ô-Ð-Ø"Ð"Ø—’˜‘”ð "à× Ò  §¢¨¡¤Ñ,Ô,Ð,Ø—w’w˜q‘z”zÐ!ð —w’w˜q‘z”zÐ!rÜ   c                ó<   •— g | ]}‰                      ||¦  «        ‘ŒS rÖ   ©r×  )rØ   r  rÜ  s     €rÚ   r´  z3SQLCompiler._process_positional.<locals>.<listcomp>ó  s6   ø€ ð  ð  ð  Ø37�×"Ò" 4¨Ñ.Ô.ð ð  ð  rÜ   c           
     ót   •— g | ]4}|d          |d         t          j        ‰‰|d         ¦  «        |d         f‘Œ5S )r   r   r6   r-  )r€  Úsub)rØ   r”  rÝ  Úpositional_patterns     €€rÚ   r´  z3SQLCompiler._process_positional.<locals>.<listcomp>  sX   ø€ ð "ð "ð "ð ð �a”DØ�a”DÝ”FÐ-¨}¸aÀ¼dÑCÔCØ�a”Dð	ð"ð "ð "rÜ   ©rV  rW  )rÔ  rÕ  r"  r×   )rE  r¹  r†  rˆ  re  rÇ  r™  rY  rp  r§  ÚlenrÀ  Ú_double_percentsÚ_pct_escaped_positional_patternÚ_positional_patternr€  rá  r¸  rl  rV  rW  Ú_replace)	r'  rV  rW  rY  rÝ  rÚ  râ  rÛ  rÜ  s	      @@@@@@rÚ   r©  zSQLCompiler._process_positionalÇ  s  øøøøøø€ ØÔ#Ð#Ð#Ð#ØŒz�]Ô9Ð9Ð9Ð9Ð9ØÔ&Ð&Ð&Ð&àŒ<Ô" hÒ.Ð.ØˆKˆKà”<Ô*¨gÒ5Ð5Ð5Ð5ØˆKàˆ	Ø”
ˆàÔ"ð 	 ØOÐO¨tÔ/F×/LÒ/LÑ/NÔ/NÐOÑOÔOˆNÝ�tÔ.Ñ/Ô/µ3°~Ñ3FÔ3FÒFÐFÐFÐFÐFàˆNàŒ=Ô)ð 	:Ø!%Ô!EÐÐà!%Ô!9Ðð	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"õ  ”fÐ/°ÀÄÑLÔLˆŒàð 	)ð ð  ð  ð  Ø;Dð ñ  ô  ˆDÔÐð  )ˆDÔàÔ!ð 	ØˆIå!#¤Ø"ØØÔ&Ô9ñ"ô "Ðð
"ð "ð "ð "ð "ð Ô/ÔBð"ñ "ô "Ðð &*Ô%;×%DÒ%DØ#5Ø#5ð &Eñ &ô &ˆDÔ"Ð"Ð"ð%	ð 	rÜ   c                óª  ‡ ‡
— ‰ j         sJ ‚‰ j        t          j        u sJ ‚d}i Š
‰ j        rW‰ j        �Pt          j        ˆ fd„‰ j         	                    ¦   «         D ¦   «         ‰ j         	                    ¦   «         ¦  «        }n‰ j         	                    ¦   «         }|D ]A}|‰
v rŒ‰ j
        |         }|‰ j        v s	|‰ j        v rd ‰
|<   Œ,‰ j        › |› �}|dz  }|‰
|<   ŒB|‰ _        t          ‰
¦  «        ‰ _        ‰ j        rDt%          ‰
¦  «        }ˆ fd„‰
                     ¦   «         D ¦   «         Š
t%          ‰
¦  «        |k    sJ ‚‰ j        j        r‰ j        }n‰ j        }|                     ˆ
fd„‰ j        ¦  «        ‰ _        ‰ j        rH‰ j        j        ‰
z  }d„ ‰ j        j        D ¦   «         }	‰ j                             ||	¬¦  «        ‰ _        d S d S )Nr   c              3  ó.   •K  — | ]}|‰j         v¯|V — Œd S r%  )rs  )rØ   r  r'  s     €rÚ   rK  z/SQLCompiler._process_numeric.<locals>.<genexpr>  s=   øè è € ð ð àØ 4Ô#9Ð9Ð9ð à9Ð9Ð9Ð9ðð rÜ   c                óN   •— i | ]!\  }}‰j                              ||¦  «        |“Œ"S rÖ   )rp  r×  )rØ   r  Úposr'  s      €rÚ   rŽ  z0SQLCompiler._process_numeric.<locals>.<dictcomp>;  sB   ø€ ð ð ð á�D˜#ð Ô'×+Ò+¨D°$Ñ7Ô7¸ðð ð rÜ   c                ó|   •— ‰                      |                      d¦  «        |                      d¦  «        ¦  «        S ©Nr   r   ©r×  r    ©rÔ  Ú	param_poss    €rÚ   ú<lambda>z.SQLCompiler._process_numeric.<locals>.<lambda>I  s)   ø€ �i—m’m A§G¢G¨A¡J¤J°·²¸±
´
Ñ;Ô;€ rÜ   c                ó>   — g | ]}|d          |d         d|d         f‘ŒS )r   r   rÒ  r-  rÖ   )rØ   r”  s     rÚ   r´  z0SQLCompiler._process_numeric.<locals>.<listcomp>S  s=   € ð "ð "ð "àð �1”�q˜”t˜T 1 Q¤4Ð(ð"ð "ð "rÜ   rã  )re  r¹  r†  rˆ  rl  rs  Ú	itertoolsÚchainrZ  ÚvaluesrY  ro  rn  r`  Únext_numeric_posr¿  rE  rp  rä  r§  rÀ  rå  Ú_pct_escaped_pyformat_patternÚ_pyformat_patternrá  r¸  rV  rW  rè  )r'  Únumr¤   Ú	bind_nameÚbindÚphÚ
len_beforeÚpyformat_patternrV  rW  rñ  s   `         @rÚ   r¨  zSQLCompiler._process_numeric  sy  øø€ ØÔ"Ð"Ð"Ð"ØŒz�]Ô9Ð9Ð9Ð9Ð9àˆØ$&ˆ	àÔ!ð 	- dÔ&<Ð&Hõ ”Oðð ð ð à $¤× 6Ò 6Ñ 8Ô 8ðñ ô ð
 ”×&Ò&Ñ(Ô(ñô ˆEˆEð ”O×*Ò*Ñ,Ô,ˆEàð 	*ð 	*ˆIØ˜IÐ%Ð%ØØ”:˜iÔ(ˆDà˜Ô0Ð0Ð0Ø˜4Ô6Ð6Ð6ð (,�	˜)Ñ$Ð$àÔ;ÐB¸SÐBÐB�Ø�q‘�Ø')�	˜)Ñ$Ð$à #ˆÔå 	™?œ?ˆÔØÔ"ð 	0Ý˜Y™œˆJðð ð ð à!*§¢Ñ!2Ô!2ðñ ô ˆIõ �y‘>”> ZÒ/Ð/Ð/Ð/àŒ=Ô)ð 	6Ø#ÔAÐÐà#Ô5Ðð '×*Ò*Ø;Ð;Ð;Ð;¸T¼[ñ
ô 
ˆŒð Ô!ð 	ð Ô&Ô9Øñð ð"ð "àÔ/ÔBð"ñ "ô "Ðð
 &*Ô%;×%DÒ%Dà#5à#5ð	 &Eñ &ô &ˆDÔ"Ð"Ð"ð	ð 	rÜ   úVMutableMapping[str, Union[_BindProcessorType[Any], Sequence[_BindProcessorType[Any]]]]c                ó>   ‡ — d„ ˆ fd„‰ j         D ¦   «         D ¦   «         S )Nc                ó   — i | ]
\  }}|®||“ŒS r%  rÖ   )rØ   rJ  Úvalues      rÚ   rŽ  z0SQLCompiler._bind_processors.<locals>.<dictcomp>g  s2   € ð 
ð 
ð 
á��Uð. Ð ð1 �ð0 !Ð Ð rÜ   c           	   3  ó
  •K  — | ]}}|‰j         v¯‰j        |         |j        j        s|j                             ‰j        ¦  «        n7t          ˆfd „t          t          |j        ¦  «        j	        D ¦   «         ¦  «        fV — Œ~dS )c              3  óL   •K  — | ]}|                      ‰j        ¦  «        V — Œd S r%  )Ú_cached_bind_processorrÇ  )rØ   Ú	elem_typer'  s     €rÚ   rK  z9SQLCompiler._bind_processors.<locals>.<genexpr>.<genexpr>o  sG   øè è € ð #ð #à )ð &×<Ò<¸T¼\ÑJÔJð#ð #ð #ð #ð #ð #rÜ   N)
rn  rZ  r  Ú_is_tuple_typer  rÇ  rM  r   r4   Útypes)rØ   Ú	bindparamr'  s     €rÚ   rK  z/SQLCompiler._bind_processors.<locals>.<genexpr>i  s½   øè è € ð ð ð ð  DÔ$?Ð?Ð?ð' ”O IÔ.ð  )œ~Ô<ð˜	œ×=Ò=¸d¼lÑKÔKÐKå"ð #ð #ð #ð #å-1Ý )¨9¬>ñ.ô .ä#ð	#ñ #ô #ñ ô ðð( @Ð?Ð?Ð?ð+ð rÜ   )rZ  rN  s   `rÚ   Ú_bind_processorszSQLCompiler._bind_processors_  sK   ø€ ð
ð 
ðð ð ð ð "&¤ðñ ô ð
ñ 
ô 
ð 	
rÜ   c                ó2   — t          | j        ¦  «        dk    S ©Nr   )rä  r§  rN  s    rÚ   Úis_subqueryzSQLCompiler.is_subqueryƒ  s   € Ý�4”:‰Œ Ò"Ð"rÜ   r9   c                ó   — | S r%  rÖ   rN  s    rÚ   rê  zSQLCompiler.sql_compiler†  s   € àˆrÜ   rò  ró  rö  r?  c                ó\   — |                       ||d¬¦  «        }|                      |¦  «        S )aR  Return a new :class:`.ExpandedState` for a given parameter set.

        For queries that use "expanding" or other late-rendered parameters,
        this method will provide for both the finalized SQL string as well
        as the parameters that would be used for a particular parameter set.

        .. versionadded:: 2.0.0rc1

        Tr•  )rú  rª  )r'  rò  rö  rA  s       rÚ   Úconstruct_expanded_statez$SQLCompiler.construct_expanded_stateŠ  sD   € ð ×*Ò*ØØ%Ø ð +ñ 
ô 
ˆ
ð
 ×7Ò7Øñ
ô 
ð 	
rÜ   rô  rõ  Ú_group_numberúOptional[int]Ú_checkr–  ú_CoreSingleExecuteParams | Noneru   c                ó  ‡— |�
| j         rJ ‚n| j         r| j        }|r|s|}ni |¥|¥}| j        r:|s8| j        €J ‚|st	          | j        j        ¦  «        S t          j        d¦  «        ‚|ot          | j	        ¦  «        }|rU| j
        €t          j        d¦  «        ‚| j
        d         }	| j        }
|
€J ‚|
\  Š}ˆfd„t          |	|¦  «        D ¦   «         }nd}|rìi }| j                             ¦   «         D ]Î\  }}|r| j	                             ||¦  «        n|}|j        |v r||j                 ||<   Œ>||v r||         ||<   ŒN|rG|j        r@|r t          j        d|j        |fz  d¬¦  «        ‚t          j        d	|j        z  d¬¦  «        ‚|r|                     ||¦  «        }n|}|j        r|j        ||<   ŒÄ|j        ||<   ŒÏ|S i }| j                             ¦   «         D ]¤\  }}|r| j	                             ||¦  «        n|}|rG|j        r@|r t          j        d|j        |fz  d¬¦  «        ‚t          j        d	|j        z  d¬¦  «        ‚|r|                     ||¦  «        }n|}|j        r|j        ||<   Œš|j        ||<   Œ¥|S )
z5return a dictionary of bind parameter keys and valuesNzÂcan't construct new parameters when render_postcompile is used; the statement is hard-linked to the original parameters.  Use construct_expanded_state to generate a new statement and parameters.zcThis compiled object has no original cache key; can't pass extracted_parameters to construct_paramsr   c                ó2   •— i | ]\  }}‰|         D ]}||“ŒŒS rÖ   rÖ   )rØ   r�  Ú	extractedrü  r¬  s       €rÚ   rŽ  z0SQLCompiler.construct_params.<locals>.<dictcomp>×  sJ   ø€ ð "ð "ð "á �A�yØ  œGð"ð "ð ð �ið"ð "ð "ð "rÜ   z@A value is required for bind parameter %r, in parameter group %dÚcd3x)Úcodez)A value is required for bind parameter %r)r{  r|  rf  rg  ÚdictrA  r7   rL  r7  rp  rÄ  ÚCompileErrorrr  ÚziprZ  r§  r×  rJ  ÚrequiredÚcallableÚeffective_valuer  )r'  rò  rô  rö  r  r  r–  r|  Úhas_escaped_namesÚorig_extractedÚ
ckbm_tuplerD  Úresolved_extractedÚpdr
  r  Úescaped_nameÚvalue_paramr¬  s                     @rÚ   rú  zSQLCompiler.construct_params¡  së  ø€ ð Ð(ØÔ+Ð+Ð+Ð+Ð+ØÔ!ð 	7Ø $Ô 6Ðàð 	9Øð 9Ø*��à8Ð-Ð8°Ð8�àÔ#ð 
	¨Oð 
	ØÔ4Ð@Ð@Ð@Øð Ý˜DÔ=ÔHÑIÔIÐIåÔ-ð4ñô ð ð )ÐJ­T°$Ô2IÑ-JÔ-JÐàð 	&ð Œ~Ð%ÝÔ&ðJñô ð ð
 "&¤°Ô!2�àÔ3ˆJØÐ)Ð)Ð)Ø ‰GˆD�!ð"ð "ð "ð "å$'¨Ð8LÑ$MÔ$Mð"ñ "ô "ÐÐð "&Ðàð K	ØˆBØ#'¤?×#8Ò#8Ñ#:Ô#:ð %=ð %=‘�	˜4ð )ð�DÔ+×/Ò/°°dÑ;Ô;Ð;àð ð ”= FÐ*Ð*Ø'-¨i¬mÔ'<�B�|Ñ$Ð$Ø˜V�^�^Ø'-¨d¤|�B�|Ñ$Ð$àð = 	Ô 2ð =Ø$ð Ý!Ô5ð4à(œ}¨mÐ<ñ=ð "(ð	ñ ô ð õ "Ô5ØGØ'œmñ,à!'ðñ ô ð ð *ð 0Ø&8×&<Ò&<Ø% yñ'ô '˜˜ð '0˜à Ô)ð =Ø+6Ô+F˜˜<Ñ(Ð(à+6Ô+<˜˜<Ñ(Ð(ØˆIàˆBØ#'¤?×#8Ò#8Ñ#:Ô#:ð 9ð 9‘�	˜4ð )ð�DÔ+×/Ò/°°dÑ;Ô;Ð;àð ð ð ˜iÔ0ð Ø$ð Ý!Ô5ð4à(œ}¨mÐ<ñ=ð "(ð	ñ ô ð õ "Ô5ØGØ'œmñ,à!'ðñ ô ð ð &ð ,Ø"4×"8Ò"8¸ÀIÑ"NÔ"N�K�Kà"+�KàÔ%ð 9Ø'2Ô'B�B�|Ñ$Ð$à'2Ô'8�B�|Ñ$Ð$àˆIrÜ   c                ó$  ‡‡‡‡‡— | j         Š‰j        Š‰j        Š‰j        Šˆˆˆˆfd„Ši }| j        }| j        D ]U}||v rŒ|j        j        r/ˆfd„t          t          |j        ¦  «        j
        D ¦   «         ||<   ŒB ‰|j        ¦  «        ||<   ŒV|S )Nc                óx   •— |                       ‰¦  «                             ‰¦  «        }|�‰�|‰vr‰�|‰v r|S d S r%  )Ú_unwrapped_dialect_implÚget_dbapi_type)ÚtypÚdbtypeÚdbapirÇ  Úexclude_typesÚinclude_typess     €€€€rÚ   Úlookup_typez<SQLCompiler._get_set_input_sizes_lookup.<locals>.lookup_type5  sV   ø€ Ø×0Ò0°Ñ9Ô9×HÒHÈÑOÔOˆFð Ð"Ø"Ð*¨f¸MÐ.IÐ.IØ"Ð*¨f¸Ð.EÐ.Eà�à�trÜ   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rÖ   rÖ   )rØ   r,  r1  s     €rÚ   r´  z;SQLCompiler._get_set_input_sizes_lookup.<locals>.<listcomp>J  s3   ø€ ð )ð )ð )àð  �K Ñ$Ô$ð)ð )ð )rÜ   )rÇ  Úinclude_set_input_sizesÚexclude_set_input_sizesr.  rn  rZ  r  r  r   r4   r	  )	r'  Ú
inputsizesrn  r
  r.  rÇ  r/  r0  r1  s	       @@@@@rÚ   Ú_get_set_input_sizes_lookupz'SQLCompiler._get_set_input_sizes_lookup,  sí   øøøøø€ à”,ˆàÔ7ˆØÔ7ˆà”ˆð
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð ˆ
à!%Ô!<Ðàœð 
	Dð 
	DˆIØÐ2Ð2Ð2ØàŒ~Ô,ð Dð)ð )ð )ð )å#¥I¨y¬~Ñ>Ô>ÔDð)ñ )ô )�
˜9Ñ%Ð%ð
 )4¨°I´NÑ(CÔ(C�
˜9Ñ%Ð%àÐrÜ   c                ó.   — |                       d¬¦  «        S )zýReturn the bind param dictionary embedded into this
        compiled object, for those values that are present.

        .. seealso::

            :ref:`faq_sql_expression_string` - includes a usage example for
            debugging use cases.

        F)r  rü  rN  s    rÚ   rò  zSQLCompiler.paramsS  s   € ð ×$Ò$¨EÐ$Ñ2Ô2Ð2rÜ   rA  r—  c                ó\  ‡ ‡‡‡‡‡— i }‰ j         }|€‰ j        }‰ j        rg }‰ j        }|€‰ j        }ndx}}‰ j        }t          d|¦  «        Št          d|¦  «        Ši }i Ši }	d}
‰ j        r|�|}‰ j        rg }
n‰ j         	                    ¦   «         }‰ j
        }|D �]£Š|r|                     ‰‰¦  «        n‰}‰ j        ‰         }|‰ j        v r2|‰vr-‰                      ||                     |¦  «        ¬¦  «        ‰|<   Œe|‰ j        v �r|‰v r|	|         }d}n;|                     ‰¦  «        }‰                      |||¦  «        }|\  }}||	|<   |‰|<   |j        sÊ|                     |¦  «         |j        j        r5|€J ‚|                     ˆˆfd„t-          |d¦  «        D ¦   «         ¦  «         n"|                     ˆˆfd„|D ¦   «         ¦  «         |
� |
                     d„ |D ¦   «         ¦  «         n!|�|                     d	„ |D ¦   «         ¦  «         d
„ |D ¦   «         |‰<   �ŒŒ|�|                     ‰¦  «         �Œ¥ˆfd„}t3          j        ‰ j        ||¦  «        }|
�n|€J ‚ˆ fd„t-          |
‰ j        ¦  «        D ¦   «         Š‰ j        j        r‰ j        }n‰ j         }|                     ˆfd„|¦  «        }|                     |
¦  «         tC          |||||¦  «        }|rE|‰ _         |‰ _        |j"        ‰ _        ‰ j        rtG          |j        pd¦  «        nd‰ _        |‰ _$        |S )až  handle special post compile parameters.

        These include:

        * "expanding" parameters -typically IN tuples that are rendered
          on a per-parameter basis for an otherwise fixed SQL statement string.

        * literal_binds compiled with the literal_execute flag.  Used for
          things like SQL Server "TOP N" where the driver does not accommodate
          N as a bound parameter.

        NrB  z/Mapping[str, Sequence[_BindProcessorType[Any]]]©Úrender_literal_valuec              3  óª   •K  — | ]M\  }}t          |d ¦  «        D ]7\  }}‰‰v r.‰‰         |d z
           ®‰›d|›d|›�‰‰         |d z
           fV — Œ8ŒNdS )r   NrD  ©Ú	enumerate)rØ   ÚiÚtuple_elementÚjrD  r  Útuple_processorss        €€rÚ   rK  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>Í  s¢   øè è € ð 	.ð 	.ñ
 !1  =Ý(1°-ÀÑ(CÔ(Cð	.ð 	.ñ !%  1Ø#Ð'7Ð7Ð7Ø 0°Ô 6°q¸1±uÔ =Ð Ið /3¨d¨d°A°A°A°q°qÐ 9Ø 0°Ô 6°q¸1±uÔ =ðð !JÐ IÐ IÐ IÐ Ið	.ð 	.rÜ   r   c              3  ó:   •K  — | ]\  }}‰‰v ¯	|‰‰         fV — Œd S r%  rÖ   )rØ   rJ  rD  r  Úsingle_processorss      €€rÚ   rK  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>Ø  sJ   øè è € ð .ð .á &  QØ#Ð'8Ð8Ð8ð !Ð"3°DÔ"9Ð:à8Ð8Ð8Ð8ð.ð .rÜ   c              3  ó    K  — | ]	\  }}|V — Œ
d S r%  rÖ   ©rØ   r  rD  s      rÚ   rK  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>Þ  s7   è è € ð 3ð 3Ù%, T¨1˜Dð3ð 3ð 3ð 3ð 3ð 3rÜ   c              3  ó    K  — | ]	\  }}|V — Œ
d S r%  rÖ   rE  s      rÚ   rK  zBSQLCompiler._process_parameters_for_postcompile.<locals>.<genexpr>å  s&   è è € Ð.MÐ.M¹¸¸a¨tÐ.MÐ.MÐ.MÐ.MÐ.MÐ.MrÜ   c                ó   — g | ]\  }}|‘ŒS rÖ   rÖ   )rØ   Ú
expand_keyrD  s      rÚ   r´  zCSQLCompiler._process_parameters_for_postcompile.<locals>.<listcomp>æ  s)   € ð 1ð 1ð 1Ù'4 z°1˜
ð1ð 1ð 1rÜ   c                óL  •‡‡— |                       d¦  «        }‰|         }|                       d¦  «        rn|                       d¦  «                             d¦  «        }|d         |d         cŠŠd                     ˆˆfd„|                     d¦  «        D ¦   «         ¦  «        }|S )Nr   r6   ú~~r-  ré   c              3  ó(   •K  — | ]}‰›|›‰›�V — Œd S r%  rÖ   )rØ   ÚexpÚbe_leftÚbe_rights     €€rÚ   rK  z]SQLCompiler._process_parameters_for_postcompile.<locals>.process_expanding.<locals>.<genexpr>õ  sD   øè è € ð !ð !àð !( ¨¨¨h¨hÐ7ð!ð !ð !ð !ð !ð !rÜ   )r    Úsplitr‘   )rÔ  rJ  ÚexprÚtokrM  rN  Úreplacement_expressionss       @@€rÚ   Úprocess_expandingzJSQLCompiler._process_parameters_for_postcompile.<locals>.process_expandingì  s´   øøø€ Ø—'’'˜!‘*”*ˆCØ*¨3Ô/ˆDð �wŠw�q‰zŒzð Ø—g’g˜a‘j”j×&Ò& tÑ,Ô,�Ø$'¨¤F¨C°¬FÐ!�˜Ø—y’yð !ð !ð !ð !ð !à#Ÿzšz¨$Ñ/Ô/ð!ñ !ô !ñ ô �ð ˆKrÜ   c                ó.   •— i | ]\  }}|‰j         › |› �“ŒS rÖ   ©r`  )rØ   rú  rJ  r'  s      €rÚ   rŽ  zCSQLCompiler._process_parameters_for_postcompile.<locals>.<dictcomp>	  s=   ø€ ð ð ð á�C˜ð ˜Ô;ÐB¸SÐBÐBðð ð rÜ   c                ó|   •— ‰                      |                      d¦  «        |                      d¦  «        ¦  «        S rî  rï  rð  s    €rÚ   rò  zASQLCompiler._process_parameters_for_postcompile.<locals>.<lambda>	  s)   ø€ ˜)Ÿ-š-¨¯ª°©
¬
°A·G²G¸A±J´JÑ?Ô?€ rÜ   rÖ   )%ri  r¸  r‘  rk  rE  r  r   re  rZ  rö  rp  r×  rY  rn  Úrender_literal_bindparamr�  ro  Ú$_literal_execute_expanding_parameterÚliteral_executer¦  r  r  r=  ÚextendrØ  r€  rá  Ú_post_compile_patternr÷  rÀ  rå  rø  rù  r?  r@  r¿  rg  )r'  rA  r—  Úexpanded_parametersÚpre_expanded_stringÚnew_positiontupÚpre_expanded_positiontuprC  Únew_processorsÚto_update_setsÚnumeric_positiontupÚnamesÚebnr&  Ú	parameterÚ	to_updaterö  Úleep_resÚreplacement_exprrS  r@  rÿ  Úexpanded_stater  rñ  rR  rC  rA  s   `                      @@@@@rÚ   rª  z/SQLCompiler._process_parameters_for_postcompile`  sß  øøøøøø€ ð$ !Ðð #Ô7ÐØÐ&Ø"&¤+ÐàŒ?ð 	>Ø ˆOà'+Ô'EÐ$Ø'Ð/Ø+/Ô+;Ð(øð :>Ð=ˆOÐ6àÔ*ˆ
Ý Ø3°Zñ
ô 
Ðõ  Ø=¸zñ
ô 
Ðð >@ˆà24ÐØ)+ˆð 48ÐàŒ?ð 	-Ð7ÐCØ#;ˆEØÔ"ð )Ø&(Ð#øà”O×*Ò*Ñ,Ô,ˆEàÔ%ˆØð I	-ñ I	-ˆDØ25Ð?˜3Ÿ7š7 4¨Ñ.Ô.Ð.¸4ˆLØœ
 4Ô(ˆIà˜DÔ7Ð7Ð7ØÐ'>Ð>Ð>à×5Ò5Ø%Ø1;·²ÀÑ1MÔ1Mð 6ñ ô ð ,¨LÑ9ð à˜DÔ4Ð4Ñ4ØÐ#:Ð:Ð:Ø .¨|Ô <�IØ!�F�Fð (Ÿ^š^¨DÑ1Ô1�Fà#×HÒHØ$ i°ñ ô  �Hð 3;Ñ/�IÐ/à3<�N <Ñ0Ø<LÐ+¨LÑ9à Ô0ð Ø×%Ò% iÑ0Ô0Ð0Ø ”~Ô4ð Ø%Ð1Ð1Ð1Ø&×-Ò-ð 	.ð 	.ð 	.ð 	.ð 	.õ
 5>¸fÀaÑ4HÔ4Hð	.ñ 	.ô 	.ñ 	ô 	ð 	ð 	ð '×-Ò-ð .ð .ð .ð .ð .à*3ð.ñ .ô .ñ ô ð ð
 +Ð6Ø+×2Ò2ð 3ð 3Ø09ð3ñ 3ô 3ñ ô ð ð ð )Ð4ð (×.Ò.Ð.MÐ.MÀ9Ð.MÑ.MÔ.MÑMÔMÐMð1ð 1Ø8Að1ñ 1ô 1Ð'¨Ñ-ùð !Ð,Ø×&Ò& tÑ,Ô,Ð,ùð	ð 	ð 	ð 	ð 	õ ”FØÔ&Ð(9Ð;Nñ
ô 
ˆ	ð Ð*Ø"Ð.Ð.Ð.ðð ð ð å )Ø'¨Ô)>ñ!ô !ðñ ô ˆIð Œ}Ô-ð :Ø#'Ô#EÐ Ð à#'Ô#9Ð ð
 )×,Ò,Ø?Ð?Ð?Ð?Àñô ˆIð ×"Ò"Ð#6Ñ7Ô7Ð7å&ØØØØØñ
ô 
ˆð ð 	?ð )<ˆDÔ%Ø-EˆDÔ*Ø(Ô2ˆDŒKð ”?ð•�^Ô/Ð5°2Ñ6Ô6Ð6àð Ôð
 1?ˆDÔ-àÐrÜ   zsqlalchemy.engine.cursorc                ób   — t           j        j        }|j                             | j        ¦  «        S )z(utility method used for unit tests only.)r*   Ú	preloadedÚengine_cursorrn   Ú_create_description_match_mapr»  )r'  Úcursors     rÚ   Ú_create_result_mapzSQLCompiler._create_result_map,	  s/   € õ ”Ô-ˆØÔ*×HÒHØÔ ñ
ô 
ð 	
rÜ   Ú_BindNameForColProtocolÚ_get_bind_name_for_colúCallable[[Any], str]c                ó   — | j         }|S r%  )rq  )r'  Úgetters     rÚ   Ú_within_exec_param_key_getterz)SQLCompiler._within_exec_param_key_getter7	  s   € àÔ,ˆØˆrÜ   zsqlalchemy.engine.resultc                óÊ  ‡‡‡‡	‡
‡‡— t           j        j        }| j        Š| j        €J ‚| j        j        }t          rt          |t          ¦  «        sJ ‚|j	        }ˆfd„|j
        D ¦   «         Š	d Š|j        Š‰�<‰j                             | j        d ¦  «        Š
 ‰‰¦  «        Š‰| j        v rˆfd„}|Šnd Š
|                     d„ |j
        D ¦   «         ¦  «        Šˆˆˆ	ˆ
ˆfd„}|S )Nc                óR   •— g | ]#}t          j        d  ‰|¦  «        d¦  «        |f‘Œ$S )r×  N)ÚoperatorÚmethodcaller)rØ   r  Úparam_key_getters     €rÚ   r´  zKSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.<listcomp>K	  sI   ø€ ð 
ð 
ð 
àõ Ô" 5Ð*:Ð*:¸3Ñ*?Ô*?ÀÑFÔFÈÐLð
ð 
ð 
rÜ   c                ó<   •— |                      ‰| ¦  «        }|�|S | S r%  rß  )Ú	lastrowidrA  Úparam_valueÚautoinc_keys      €rÚ   Ú_autoinc_getterzPSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>._autoinc_getter`	  s,   ø€ Ø",§.¢.°¸iÑ"HÔ"H�KØ"Ð.ð
  +Ð*ð  )Ð(rÜ   c                ó   — g | ]	}|j         ‘Œ
S rÖ   r‹  ©rØ   r  s     rÚ   r´  zKSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.<listcomp>r	  ó   € Ð%KÐ%KÐ%K°# c¤gÐ%KÐ%KÐ%KrÜ   c                óˆ   •‡ ‡— ‰� ‰‰ ¦  «        Š ‰ € ‰ˆfd„‰D ¦   «         ¦  «        S  ‰ˆˆˆ ˆfd„‰D ¦   «         ¦  «        S )a  given cursor.lastrowid value and the parameters used for INSERT,
            return a "row" that represents the primary key, either by
            using the "lastrowid" or by extracting values from the parameters
            that were sent along with the INSERT.

            Nc              3  ó4   •K  — | ]\  }} |‰¦  «        V — Œd S r%  rÖ   )rØ   rt  r  rA  s      €rÚ   rK  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>	  s1   øè è € ÐLÐL±[°V¸S˜f˜f ZÑ0Ô0ÐLÐLÐLÐLÐLÐLrÜ   c              3  ó\   •K  — | ]&\  }}|‰u r‰� ‰‰‰¦  «        n‰n
 |‰¦  «        V — Œ'd S r%  rÖ   )rØ   rt  r  Úautoinc_colÚautoinc_getterr|  rA  s      €€€€rÚ   rK  zWSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.get.<locals>.<genexpr>�	  su   øè è € ð ð ñ $˜ ð  +Ð-Ð-ð  .Ð9ð +˜N¨9°jÑAÔAÐAà!* ð $˜V JÑ/Ô/ðð ð ð ð ð rÜ   rÖ   )r|  rA  r†  r‡  ÚgettersÚlastrowid_processorÚrow_fns   ``€€€€€rÚ   r×  zDSQLCompiler._inserted_primary_key_from_lastrowid_getter.<locals>.gett	  s“   øøø€ ð #Ð.Ø/Ð/°	Ñ:Ô:�	àÐ Ø�vÐLÐLÐLÐLÀGÐLÑLÔLÑLÔLÐLà�vð ð ð ð ð ð ð ð (/ðñ ô ñ ô ð rÜ   )r*   rk  Úengine_resultru  r6  r@  r   rÐ  rG   r§   Úprimary_keyÚ_autoincrement_columnr  Ú_cached_result_processorrÇ  rY  Úresult_tuple)r'  Úresultr@  r§   r  r×  r†  r‡  r~  rˆ  r‰  rz  rŠ  s         @@@@@@@rÚ   Ú+_inserted_primary_key_from_lastrowid_getterz7SQLCompiler._inserted_primary_key_from_lastrowid_getter<	  s`  øøøøøøø€ õ ”Ô-ˆàÔ=ÐàÔ!Ð-Ð-Ð-ØÔ&Ô0ˆ	åð 	1Ý˜i­Ñ0Ô0Ð0Ð0Ð0à”ˆð
ð 
ð 
ð 
àÔ(ð
ñ 
ô 
ˆð
 ˆØÔ1ˆØÐ"à"-Ô"2×"KÒ"KØ”˜dñ#ô #Ðð +Ð*¨;Ñ7Ô7ˆKð ˜dœjÐ(Ð(ð
)ð 
)ð 
)ð 
)ð 
)ð "1�øð #'Ðà×$Ò$Ð%KÐ%K¸Ô9JÐ%KÑ%KÔ%KÑLÔLˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð4 ˆ
rÜ   c                ó’  ‡‡‡‡	— t           j        j        }| j        €J ‚| j        j        }t
          rt          |t          ¦  «        sJ ‚| j        Š|j	        }| j
        }|€J ‚d„ t          |¦  «        D ¦   «         Št          dˆˆfd„|j        D ¦   «         ¦  «        Š|                     d„ |j        D ¦   «         ¦  «        Š	ˆˆ	fd„}|S )Nc                ó   — i | ]\  }}||“Œ	S rÖ   rÖ   )rØ   Úidxr  s      rÚ   rŽ  zKSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.<dictcomp> 	  s   € Ð=Ð=Ð=™H˜C ˆs�CÐ=Ð=Ð=rÜ   z'List[Tuple[Callable[[Any], Any], bool]]c                ó’   •— g | ]C}|‰v rt          j        ‰|         ¦  «        d fn t          j        d ‰|¦  «        d¦  «        df‘ŒDS )Tr×  NF)rx  Ú
itemgetterry  )rØ   r  rz  Úrets     €€rÚ   r´  zKSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.<listcomp>¤	  s|   ø€ ð ð ð ð ð ˜c�z�zõ Ô(¨¨S¬Ñ2Ô2°DÐ9Ð9õ !Ô-Ø!Ð#3Ð#3°CÑ#8Ô#8¸$ñô ð ð	ð	ð ð rÜ   c                ó   — g | ]	}|j         ‘Œ
S rÖ   r‹  r�  s     rÚ   r´  zKSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.<listcomp>³	  r‚  rÜ   c                ó8   •‡ ‡—  ‰ˆˆ fd„‰D ¦   «         ¦  «        S )Nc              3  óN   •K  — | ]\  }}|r |‰¦  «        n
 |‰¦  «        V — Œ d S r%  rÖ   )rØ   rt  Úuse_rowrA  Úrows      €€rÚ   rK  zWSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.get.<locals>.<genexpr>¶	  sV   øè è € ð ð á#�F˜Gð  'Ð>���s‘”�¨F¨F°:Ñ,>Ô,>ðð ð ð ð ð rÜ   rÖ   )rœ  rA  rˆ  rŠ  s   ``€€rÚ   r×  zDSQLCompiler._inserted_primary_key_from_returning_getter.<locals>.getµ	  sD   øøø€ Ø�6ð ð ð ð ð à'.ðñ ô ñ ô ð rÜ   )r*   rk  r‹  r6  r@  r   rÐ  rG   ru  r§   rW  r=  r   rŒ  r�  )
r'  r�  r@  r§   r¸  r×  rˆ  rz  r—  rŠ  s
         @@@@rÚ   Ú+_inserted_primary_key_from_returning_getterz7SQLCompiler._inserted_primary_key_from_returning_getter�	  s  øøøø€ õ ”Ô-ˆàÔ!Ð-Ð-Ð-ØÔ&Ô0ˆ	åð 	1Ý˜i­Ñ0Ô0Ð0Ð0Ð0àÔ=ÐØ”ˆàÔ+ˆ	ØÐ$Ð$Ð$Ø=Ð=­	°)Ñ(<Ô(<Ð=Ñ=Ô=ˆåØ5ðð ð ð ð ð !Ô,ðñ ô ñ
ô 
ˆð" ×$Ò$Ð%KÐ%K¸Ô9JÐ%KÑ%KÔ%KÑLÔLˆð	ð 	ð 	ð 	ð 	ð 	ð ˆ
rÜ   c                ó   — dS )zÅCalled when a SELECT statement has no froms, and no FROM clause is
        to be appended.

        Gives Oracle Database a chance to tack on a ``FROM DUAL`` to the string
        output.

        r·  rÖ   rN  s    rÚ   Údefault_fromzSQLCompiler.default_from½	  s	   € ð ˆrrÜ   c                ól  — |�||fz  }||d<   ||d<    |j         j        | fi |¤Ž}|j        D �]}|| j        vrŒ| j        |         }|                     |j        |j                 dd¬¦  «        }| j        |         }	|x| j        |<   | j        |	<   |	| j        |<   | j                             |d¦  «         || j        v r| xj        |hz  c_        || j	        v r| xj	        |hz  c_	        | j
        }
|
r@|
\  }}|j        D ]3}|j        |v r(||j                 }||                              |¦  «         Œ4�Œ|S )a’  SQL compile the nested element of an _OverrideBinds with
        bindparams swapped out.

        The _OverrideBinds is not normally expected to be compiled; it
        is meant to be used when an already cached statement is to be used,
        the compilation was already performed, and only the bound params should
        be swapped in at execution time.

        However, there are test cases that exericise this object, and
        additionally the ORM subquery loader is known to feed in expressions
        which include this construct into new queries (discovered in #11173),
        so it has to do the right thing at compile time as well.

        NÚadd_to_result_mapÚresult_map_targetsTF)Úmaintain_keyr  )râ  rï  Ú	translaterY  Ú_with_valuerJ  rZ  r�  ro  rn  rr  Ú_cloned_setrØ  )r'  Úoverride_bindsr¡  r¢  rä  Úsqltextr“  ÚbpÚnew_bpr  r#  r¬  r«  Úcbs                 rÚ   Úvisit_override_bindsz SQLCompiler.visit_override_bindsÇ	  s™  € ð, Ð(ð  >Ð"3Ñ3ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$ð <�.Ô(Ô;¸DÐGÐGÀBÐGÐGˆð  Ô)ð "	0ñ "	0ˆAØ˜œ
Ð"Ð"ØØ”˜A”ˆBð —^’^ØÔ(¨¬Ô0Ø!Øð $ñ ô ˆFð ”? 2Ô&ˆDØ/5Ð5ˆDŒJ�q‰M˜DœJ tÑ,Ø&*ˆDŒO˜FÑ#ØŒO×Ò  DÑ)Ô)Ð)à�TÔ-Ð-Ð-ØÐ(Ô(¨V¨HÑ4Ð(Ô(Ø�TÔ0Ð0Ð0ØÐ+Ô+°¨xÑ7Ð+Ô+àÔ3ˆJØð 0Ø'‘
��dØœ.ð 0ð 0�BØ”v �~�~Ø! "¤&œ\˜Ø˜RœŸš¨Ñ/Ô/Ð/øùàˆrÜ   c                ó4   — d |j         j        | fi |¤Žz   dz   S ©NrF  rG  ©râ  rï  )r'  ÚgroupingÚasfromrì  s       rÚ   Úvisit_groupingzSQLCompiler.visit_grouping
  ó+   € ØÐ8�XÔ%Ô8¸ÐHÐHÀÐHÐHÑHÈ3ÑNÐNrÜ   c                ó4   — d |j         j        | fi |¤Žz   dz   S r®  r¯  )r'  r°  rì  s      rÚ   Úvisit_select_statement_groupingz+SQLCompiler.visit_select_statement_grouping
  r³  rÜ   c                ó–  — | j         r®| j        j        r¢	 t          d| j         d         d         ¦  «        }n'# t          $ r}t          j        d¦  «        |‚d }~ww xY w|j        \  }}}|r|}	n|}	|j        j	        }
|
�8|
j
        |	v r/|
                     |	|
j
                 ¦  «        r|j        j	        |d<    | j        |j        fd|i|¤ŽS )Nú'Union[SelectState, CompoundSelectState]rº  r6  úECan't resolve label reference for ORDER BY / GROUP BY / DISTINCT etc.Úrender_label_as_labelÚwithin_columns_clause)r§  rÇ  Úsupports_simple_order_by_labelr   ÚKeyErrorr7   r  Ú_label_resolve_dictrâ  Ú_order_by_label_elementr  Úshares_lineagerÒ  )r'  râ  rº  rì  r6  ÚkeÚ	with_colsÚ
only_fromsÚ	only_colsÚresolve_dictÚorder_by_elems              rÚ   Úvisit_label_referencez!SQLCompiler.visit_label_reference
  s9  € ð Œ:ð %	˜$œ,ÔEð %	ð	Ý $Ø=Ø”J˜r”N ?Ô3ñ!ô !��øõ ð ð ð ÝÔ&ð/ñô ð ðøøøøðøøøð Ô1ñ	ØØØà$ð )Ø)��à(�ð $œOÔCˆMð Ð)Ø!Ô&¨,Ð6Ð6Ø!×0Ò0Ø  Ô!3Ô4ñô ð 7ð ”OÔ;ð Ð.Ñ/ð ˆtŒ|ØŒOð
ð 
à"7ð
ð ð
ð 
ð 	
s   •!7 ·
AÁAÁAc                ó   — | j         s|                      |j        ¦  «        S 	 t          d| j         d         d         ¦  «        }n># t          $ r1}t          j        |j        dt          j	        |¬¦  «         Y d }~nd }~ww xY w|j
        \  }}}	 |r||j                 }	n||j                 }	|	|d<    | j        |	fd|i|¤ŽS # t          $ r2}
t          j        |j        dt          j	        |
¬¦  «         Y d }
~
d S d }
~
ww xY w)Nr·  rº  r6  r¸  )ÚextraÚexc_clsrã  r¹  rº  )r§  rÒ  Ú_text_clauser   r¼  r!   Ú_no_text_coercionrâ  r7   r  r½  )r'  râ  rº  rì  r6  rÀ  rÁ  rÂ  rÃ  r  rã  s              rÚ   Úvisit_textual_label_referencez)SQLCompiler.visit_textual_label_referenceL
  s”  € ð Œzð 	6à—<’< Ô 4Ñ5Ô5Ð5ð	Ý Ø9Ø”
˜2”˜Ô/ñô ˆMˆMøõ ð 		ð 		ð 		ÝÔ'Ø”ð/õ Ô(Øðñ ô ð ð ð ð ð ð øøøøð		øøøð ,9Ô+LÑ(ˆ	�:˜yð	Ø$ð 1Ø  ¤Ô1��à ¤Ô0�ð /2ˆFÐ*Ñ+Ø�4”<Øðð Ø+@ðØDJðð ð øõ ð 		ð 		ð 		ÝÔ'Ø”ð/õ Ô(Øðñ ô ð ð ð ð ð ð ð øøøøð		øøøs/   £!A Á
B Á'A;Á;B ÂC Ã
C=Ã'C8Ã8C=c                ó  — |rt          j        d¦  «        ‚|o| }	||u }
|
s|	rBt          |j        t          j        ¦  «        r|                      d|j        ¦  «        }n|j        }|	rq|�% |||j        ||f|j        z   |z   |j        ¦  «          |j	        j
        | fdddœ|¤Žt          t          j                 z   | j                             ||¦  «        z   S |
r| j                             ||¦  «        S  |j	        j
        | fddi|¤ŽS )Nz¥Using label() directly inside tstring is not supported as it is ambiguous how the label expression should be rendered without knowledge of how it's being used in SQLÚcolidentT)rº  Úwithin_label_clauserº  F)r7   r  rÐ  r  r#   rL   Ú_truncated_identifierr  r  râ  rï  Ú	OPERATORSr%   Úas_rÀ  Úformat_label)r'  r  r¡  rÏ  rº  r¹  r¢  Úwithin_tstringrä  Úrender_label_with_asÚrender_label_onlyÚ	labelnames               rÚ   Úvisit_labelzSQLCompiler.visit_labely
  sŒ  € ð ð 	ÝÔ"ðKñô ð ð "Ð=Ð*=Ð&=ð 	ð 2°UÐ:Ðàð 	'Ð 4ð 	'Ý˜%œ*¥hÔ&?Ñ@Ô@ð 'Ø ×6Ò6°zÀ5Ä:ÑNÔN�	�	à!œJ�	àð 	Ø Ð,Ø!Ð!ØØ”JØ˜IÐ&¨Ô)9Ñ9Ð<NÑNØ”Jñ	ô ð ð 1�”Ô0Øðà*.Ø(,ðð ð ð	ð õ �IœMÔ*ñ+ð ”-×,Ò,¨U°IÑ>Ô>ñ?ð	ð ð 	Ø”=×-Ò-¨e°YÑ?Ô?Ð?à3�5”=Ô3Øðð Ø,1ðØ57ðð ð rÜ   c                ó*   — t          j        d¦  «        ‚)Nz:Cannot compile Column object until its 'name' is assigned.©r7   r  ©r'  r¬   s     rÚ   Ú_fallback_column_namez!SQLCompiler._fallback_column_name±
  s   € ÝÔØHñ
ô 
ð 	
rÜ   c                ó,   — |j         } | j        |fi |¤ŽS r%  )Ú	_resolvedrÒ  )r'  râ  rä  Úsql_elements       rÚ   Úvisit_lambda_elementz SQLCompiler.visit_lambda_element¶
  s$   € ØÔ'ˆØˆtŒ|˜KÐ.Ð.¨2Ð.Ð.Ð.rÜ   r¬   úColumnClause[Any]r¡  úOptional[_ResultMapAppender]Úinclude_tabler¢  r  Úambiguous_table_name_mapú Optional[_AmbiguousTableNameMap]c                ó0  — |j         x}}|€|                      |¦  «        }|j        }	|	s0t          |t          j        ¦  «        r|                      d|¦  «        }|�2|||j        f|z   }
|j        r|
|j        fz  }
 ||||
|j	        ¦  «         |	r|  
                    |¦  «        }n| j                             |¦  «        }|j        }|�	|r|j        s|S | j                             |¦  «        }|r| j                             |¦  «        dz   }nd}t"          rt          |t$          ¦  «        sJ ‚|j         }|s|r||v r||         }t          |t          j        ¦  «        r|                      d|¦  «        }|| j                             |¦  «        z   dz   |z   S )NrÎ  rI  r·  Úalias)r  rÜ  Ú
is_literalrÐ  r#   rL   rÐ  rJ  Ú	_tq_labelr  Úescape_literal_columnrÀ  Úquoter§   Únamed_with_columnÚschema_for_objectÚquote_schemar   re   )r'  r¬   r¡  rã  r¢  rä  rì  r  Ú	orig_namerè  Útargetsr§   Úeffective_schemaÚschema_prefixÚ	tablenames                  rÚ   Úvisit_columnzSQLCompiler.visit_columnº
  sç  € ð "œ;Ð&ˆˆyØˆ<Ø×-Ò-¨fÑ5Ô5ˆDàÔ&ˆ
Øð 	@�j¨­xÔ/HÑIÔIð 	@Ø×-Ò-¨j¸$Ñ?Ô?ˆDàÐ(Ø˜t V¤ZÐ0Ð3EÑEˆGØÔð /Ø˜FÔ,Ð.Ñ.�àÐ˜d I¨w¸¼ÑDÔDÐDàð 	-ð ×-Ò-¨dÑ3Ô3ˆDˆDà”=×&Ò& tÑ,Ô,ˆDØ”ˆØˆ= ˆ=°UÔ5Lˆ=ØˆKà#œ}×>Ò>¸uÑEÔEÐàð #à”M×.Ò.Ð/?Ñ@Ô@À3ÑFð �ð !#�åð :Ý! %­Ñ9Ô9Ð9Ð9Ð9Øœ
ˆIð %ð@à,ð@ð Ð!9Ð9Ð9à4°YÔ?�	å˜)¥XÔ%>Ñ?Ô?ð KØ ×6Ò6°wÀ	ÑJÔJ�	à  4¤=×#6Ò#6°yÑ#AÔ#AÑAÀCÑGÈ$ÑNÐNrÜ   c                óL   — | j                              |j        |j        ¦  «        S r%  )rÀ  Úformat_collationÚ	collationÚcollation_schema©r'  râ  rä  s      rÚ   Úvisit_collationzSQLCompiler.visit_collationõ
  s'   € ØŒ}×-Ò-ØÔ˜wÔ7ñ
ô 
ð 	
rÜ   c                ó   — |j         S r%  ©r  )r'  Ú
fromclauserì  s      rÚ   Úvisit_fromclausezSQLCompiler.visit_fromclauseú
  s
   € ØŒÐrÜ   c                ó   — |j         S r%  rü  )r'  r™  rì  s      rÚ   Úvisit_indexzSQLCompiler.visit_indexý
  s
   € ØŒzÐrÜ   c                óZ   — ||d<   | j         |d<    | j        j        j        |j        fi |¤ŽS )NÚtype_expressionrÌ  )rÀ  rÇ  Útype_compiler_instancerÒ  r  )r'  Ú
typeclauserä  s      rÚ   Úvisit_typeclausezSQLCompiler.visit_typeclause   sH   € Ø *ˆÐÑØ$(¤MˆÐ Ñ!Ø:ˆtŒ|Ô2Ô:ØŒOð
ð 
Ø!ð
ð 
ð 	
rÜ   c                óJ   — | j         j        r|                     dd¦  «        }|S ©NrE  ú%%©rÀ  rå  Úreplace©r'  Útexts     rÚ   Úpost_process_textzSQLCompiler.post_process_text  ó'   € ØŒ=Ô)ð 	+Ø—<’<  TÑ*Ô*ˆDØˆrÜ   c                óJ   — | j         j        r|                     dd¦  «        }|S r  r	  r  s     rÚ   rê  z!SQLCompiler.escape_literal_column  r  rÜ   c           	     ó:  ‡ ‡‡— ‰ j         r‰                      ‰¦  «         ˆˆ ˆfd„}‰ j        sd‰ _        |r |d d ‰ft          j        ¦  «         t                               d„ t                               |‰  	                    ‰j
        ¦  «        ¦  «        ¦  «        S )Nc                óŽ   •— |                       d¦  «        }|‰j        v r ‰j        ‰j        |         fi ‰¤ŽS  ‰j        |fi ‰¤ŽS r  )r    Ú_bindparamsrÒ  Úbindparam_string)rÔ  r  rä  r'  Ú
textclauses     €€€rÚ   Údo_bindparamz2SQLCompiler.visit_textclause.<locals>.do_bindparam  s]   ø€ Ø—7’7˜1‘:”:ˆDØ�zÔ-Ð-Ð-Ø#�t”| JÔ$:¸4Ô$@ÐGÐGÀBÐGÐGÐGà,�tÔ,¨TÐ8Ð8°RÐ8Ð8Ð8rÜ   Tc                ó,   — |                       d¦  «        S r  )r    )rÔ  s    rÚ   rò  z.SQLCompiler.visit_textclause.<locals>.<lambda>'  s   € �a—g’g˜a‘j”j€ rÜ   )r{  rÇ  r§  rX  r)   ÚNULLTYPEÚBIND_PARAMS_ESCrá  ÚBIND_PARAMSr  r  )r'  r  r¡  rä  r  s   `` ` rÚ   Úvisit_textclausezSQLCompiler.visit_textclause  sÈ   øøø€ ØÔð 	,Ø×Ò 
Ñ+Ô+Ð+ð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð Œzð 	$Ø#ˆDÔàð 	Lð Ð˜d D¨:¨-½Ô9JÑKÔKÐKõ ×"Ò"Ø Ð Ý�OŠOØ˜d×4Ò4°Z´_ÑEÔEñô ñ
ô 
ð 	
rÜ   c                ó6   — |                       |j        ¦  «        S r%  )r  r  rù  s      rÚ   Úvisit_tstring_textzSQLCompiler.visit_tstring_text-  s   € Ø×%Ò% g¤lÑ3Ô3Ð3rÜ   c                óè   ‡ ‡— ‰ j         r‰                      |¦  «         ‰ j        sd‰ _        |r |d d |ft          j        ¦  «         d‰d<   d                     ˆˆ fd„|j        D ¦   «         ¦  «        S )NTrÔ  r·  c              3  ó4   •K  — | ]} ‰j         |fi ‰¤ŽV — Œd S r%  ©rÒ  )rØ   Úparträ  r'  s     €€rÚ   rK  z,SQLCompiler.visit_tstring.<locals>.<genexpr>?  s7   øè è € ÐJÐJ°D�|�t”| DÐ/Ð/¨BÐ/Ð/ÐJÐJÐJÐJÐJÐJrÜ   )r{  rÇ  r§  rX  r)   r  r‘   Úparts)r'  Útstringr¡  rä  s   `  `rÚ   Úvisit_tstringzSQLCompiler.visit_tstring0  s•   øø€ ØÔð 	)Ø×Ò Ñ(Ô(Ð(àŒzð 	$Ø#ˆDÔàð 	Ið Ð˜d D¨7¨*µhÔ6GÑHÔHÐHð  $ˆÐÑØ�wŠwÐJÐJÐJÐJÐJ¸G¼MÐJÑJÔJÑJÔJÐJrÜ   c                ó  — | j         r|                      |¦  «         | j         }|r| j        n| j        d         }t	          ¦   «         t	          ¦   «         |dœ}| j                             |¦  «         |j        r|                      ||¦  «         |p1|dk    o|                     dd¦  «        p|                     dd¦  «        }|r[|j	        x| _
        | _        |j	         ot          |j        ¦  «        | _        |j        D ]}	|                      |	d| j        ¬¦  «         Œ  | j        |j        fi |¤Ž}
| j        r1|st'          | j        ¦  «        nd }|                      |¬	¦  «        |
z   }
| j                             d¦  «         |
S )
Nrº  ©r2  r1  r(   r   r9  Fr8  T)rº  r¡  ©Únesting_level)r{  rÇ  r§  Ú_default_stack_entryr‰   rØ  Ú_independent_ctesÚ_dispatch_independent_ctesr×  r‘  rc  ra  r7  Úcolumn_argsrd  rÒ  Ú_add_to_result_maprâ  rv  rä  Ú_render_cte_clauser�  )r'  ÚtafÚcompound_indexr±  rä  ÚtoplevelrÏ  Ú	new_entryÚpopulate_result_mapr³  r  r'  s               rÚ   Úvisit_textual_selectz SQLCompiler.visit_textual_selectA  sÚ  € ð Ôð 	%Ø×Ò Ñ$Ô$Ð$Ø”z�>ˆØ-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆõ  #™uœuÝ™EœEØð*
ð *
ˆ	ð
 	Œ
×Ò˜)Ñ$Ô$Ð$àÔ ð 	5Ø×+Ò+¨C°Ñ4Ô4Ð4ð ð >à !Ò#ð EØ—I’IÐ<¸eÑDÔDð>ð
 �yŠyÐ5°uÑ=Ô=ð 	ð ð 	à”ðˆDÔ! DÔ$Að 47´>Ð/Að 0ÅdØ”ñGô GˆDÔ,ð ”_ð ð �Ø—’ØØ*.Ø&*Ô&=ð ñ ô ð ð ð ˆtŒ|˜CœKÐ.Ð.¨2Ð.Ð.ˆØŒ9ð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàŒ
�Š�rÑÔÐàˆrÜ   rP  rT   rä  c                ó   — dS ©NÚNULLrÖ   ©r'  rP  rä  s      rÚ   Ú
visit_nullzSQLCompiler.visit_nullw  ó   € ØˆvrÜ   rU   c                ó"   — | j         j        rdS dS )Nr˜   Ú1©rÇ  Úsupports_native_booleanr7  s      rÚ   Ú
visit_truezSQLCompiler.visit_truez  s   € ØŒ<Ô/ð 	Ø�6à�3rÜ   rR   c                ó"   — | j         j        rdS dS )Nrž   Ú0r<  r7  s      rÚ   Úvisit_falsezSQLCompiler.visit_false€  s   € ØŒ<Ô/ð 	Ø�7à�3rÜ   c                ó^   ‡ ‡— |                      d„ ˆˆ fd„|D ¦   «         D ¦   «         ¦  «        S )Nc              3  ó   K  — | ]}|¯|V — Œ	d S r%  rÖ   ©rØ   Úss     rÚ   rK  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>‡  s<   è è € ð 
ð 
àØð
Øð
ð 
ð 
ð 
ð 
ð 
rÜ   c              3  ó4   •K  — | ]} |j         ‰fi ‰¤ŽV — Œd S r%  rî  ©rØ   r³  rä  r'  s     €€rÚ   rK  z7SQLCompiler._generate_delimited_list.<locals>.<genexpr>‰  s9   øè è € ÐIÐI¸1Ð*�aÔ*¨4Ð6Ð6°2Ð6Ð6ÐIÐIÐIÐIÐIÐIrÜ   ©r‘   )r'  r#   Ú	separatorrä  s   `  `rÚ   Ú_generate_delimited_listz$SQLCompiler._generate_delimited_list†  sM   øø€ Ø�~Š~ð 
ð 
àIÐIÐIÐIÐIÀÐIÑIÔIð
ñ 
ô 
ñ 
ô 
ð 	
rÜ   c                óZ  ‡ ‡— t           j                             t          j        t           j        j        t           j        j        |¦  «        \  }}|dk    r |d         j        ‰ fi ‰¤ŽS t          t          j                 }| 
                    d„ ˆˆ fd„|D ¦   «         D ¦   «         ¦  «        S )Nr   r   c              3  ó   K  — | ]}|¯|V — Œ	d S r%  rÖ   rD  s     rÚ   rK  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>˜  s<   è è € ð "ð "àØð"Øð"ð "ð "ð "ð "ð "rÜ   c              3  ó4   •K  — | ]} |j         ‰fi ‰¤ŽV — Œd S r%  rî  rG  s     €€rÚ   rK  z;SQLCompiler._generate_delimited_and_list.<locals>.<genexpr>š  s9   øè è € ÐLÐL¸qÐ.˜!Ô.¨tÐ:Ð:°rÐ:Ð:ÐLÐLÐLÐLÐLÐLrÜ   )r#   ÚBooleanClauseListÚ_process_clauses_for_booleanr%   Úand_rU   Ú
_singletonrR   rï  rÑ  r‘   )r'  Úclausesrä  ÚlccrI  s   ` `  rÚ   Ú_generate_delimited_and_listz(SQLCompiler._generate_delimited_and_list�  s·   øø€ ÝÔ1×NÒNÝŒNÝŒNÔ%ÝŒOÔ&Øñ	
ô 
‰ˆˆWð �!Š8ˆ8Ø0�7˜1”:Ô0°Ð<Ð<¸Ð<Ð<Ð<å!¥)¤.Ô1ˆIØ—>’>ð "ð "àLÐLÐLÐLÐLÀGÐLÑLÔLð"ñ "ô "ñ ô ð rÜ   c                ó$   — d | j         |fi |¤Žz  S ©Nú(%s))Úvisit_clauselist)r'  Ú
clauselisträ  s      rÚ   Úvisit_tuplezSQLCompiler.visit_tuplež  s#   € ØÐ-˜Ô-¨jÐ?Ð?¸BÐ?Ð?Ñ?Ð?rÜ   c                ó*   —  | j         |j        dfi |¤ŽS ©NrL  ©rJ  rR  rù  s      rÚ   Úvisit_element_listzSQLCompiler.visit_element_list¡  s!   € Ø,ˆtÔ,¨W¬_¸cÐHÐHÀRÐHÐHÐHrÜ   c                ó*   —  | j         |j        dfi |¤ŽS )Nré   r]  rù  s      rÚ   Úvisit_order_by_listzSQLCompiler.visit_order_by_list¤  s!   € Ø,ˆtÔ,¨W¬_¸dÐIÐIÀbÐIÐIÐIrÜ   c                óf   — |j         }|€d}nt          |j                  } | j        |j        |fi |¤ŽS r\  )rx  rÑ  rJ  rR  )r'  rY  rä  Úseps       rÚ   rX  zSQLCompiler.visit_clauselist§  sC   € ØÔ!ˆØˆ;ØˆCˆCå˜JÔ/Ô0ˆCà,ˆtÔ,¨ZÔ-?ÀÐKÐKÈÐKÐKÐKrÜ   c                óô   — |j         }|                      |dd ¦  «        }|r
 |||fi |¤ŽS 	 t          |         }d|d<    | j        |j        |fi |¤ŽS # t
          $ r}t          j        | |¦  «        |‚d }~ww xY w)NÚexpression_clauselistTÚ_in_operator_expression)rx  Ú_get_operator_dispatchrÑ  rJ  rR  r¼  r7   rà  )r'  rY  rä  Ú	operator_ÚdispÚopstringrã  s          rÚ   Úvisit_expression_clauselistz'SQLCompiler.visit_expression_clauselist°  sÍ   € ØÔ'ˆ	à×*Ò*ØÐ.°ñ
ô 
ˆð ð 	5Ø�4˜
 IÐ4Ð4°Ð4Ð4Ð4ð	Ý  Ô+ˆHð -1ˆBÐ(Ñ)Ø0�4Ô0ØÔ" Hðð Ø02ðð ð øõ	 ð 	Lð 	Lð 	LÝÔ1°$¸	ÑBÔBÈÐKøøøøð	Løøøs   ¬A Á
A7ÁA2Á2A7c                ó  — d}|j         �| |j         j        | fi |¤Ždz   z  }|j        D ].\  }}|d |j        | fi |¤Žz   dz    |j        | fi |¤Žz   dz   z  }Œ/|j        �|d |j        j        | fi |¤Žz   dz   z  }|dz  }|S )NzCASE rL  zWHEN z THEN zELSE ÚEND)r  rï  ÚwhensÚelse_)r'  Úclauserì  rÙ   Úcondr�  s         rÚ   Ú
visit_casezSQLCompiler.visit_caseÃ  sñ   € ØˆØŒ<Ð#ØÐ0�”Ô0°Ð@Ð@¸Ð@Ð@À3ÑFÑFˆAØ"œLð 	ð 	‰LˆD�&ØØØ)�$Ô)¨$Ð9Ð9°&Ð9Ð9ñ:àñð ,�&Ô+¨DÐ;Ð;°FÐ;Ð;ñ<ð ñ	ñˆAˆAð Œ<Ð#ØØÐ9˜&œ,Ô9¸$ÐIÐIÀ&ÐIÐIÑIÈCÑOñˆAð 	
ˆU‰
ˆØˆrÜ   c                ó(   —  |j         j        | fi |¤ŽS r%  )Útyped_expressionrï  )r'  Útype_coercerä  s      rÚ   Úvisit_type_coercezSQLCompiler.visit_type_coerceÖ  s    € Ø>ˆ{Ô+Ô>¸tÐJÐJÀrÐJÐJÐJrÜ   c                óæ   —  |j         j        | fi |¤Ž}t          j        d|¦  «        }d |j        j        | fi |¤Ž›d|r|                     d¦  «        n|›d|r|                     d¦  «        nd›�S )Nz(.*)( COLLATE .*)zCAST(rë   r   rG  r6   r·  )r  rï  r€  Úmatchro  r    )r'  r   rì  Útype_clauserw  s        rÚ   Ú
visit_castzSQLCompiler.visit_castÙ  s‘   € Ø8�d”oÔ8¸ÐHÐHÀÐHÐHˆÝ”Ð,¨kÑ:Ô:ˆˆà*ˆDŒKÔ*¨4Ð:Ð:°6Ð:Ð:Ð:Ð:Ø#Ð4ˆE�KŠK˜‰NŒNˆN¨Ð4Ð4Ø#Ð+ˆE�KŠK˜‰NŒNˆN¨Ð+ð
ð 	
rÜ   c                óÀ  — |j         t          j        j        u rd}nQ|j         t          j        j        u rd}n6 | j        |j        fi |¤Ž}|j         t          j        j        u r|› d�}n|› d�}|j        t          j        j        u rd}nQ|j        t          j        j        u rd}n6 | j        |j	        fi |¤Ž}|j        t          j        j        u r|› d�}n|› d�}|› d|› �S )NzUNBOUNDED PRECEDINGzCURRENT ROWz
 PRECEDINGz
 FOLLOWINGzUNBOUNDED FOLLOWINGræ   )
Ú
lower_typer#   ÚFrameClauseTypeÚ	UNBOUNDEDÚCURRENTrÒ  Ú
lower_bindÚ	PRECEDINGÚ
upper_typeÚ
upper_bind)r'  Úframeclauserä  r’   Úvalr¦   s         rÚ   Úvisit_frame_clausezSQLCompiler.visit_frame_clauseâ  s  € àÔ!¥XÔ%=Ô%GÐGÐGØ(ˆDˆDØÔ#¥xÔ'?Ô'GÐGÐGØ ˆDˆDà�$”,˜{Ô5Ð<Ð<¸Ð<Ð<ˆCØÔ%­Ô)AÔ)KÐKÐKØÐ)Ð)Ð)��àÐ)Ð)Ð)�àÔ!¥XÔ%=Ô%GÐGÐGØ)ˆEˆEØÔ#¥xÔ'?Ô'GÐGÐGØ!ˆEˆEà�$”,˜{Ô5Ð<Ð<¸Ð<Ð<ˆCØÔ%­Ô)AÔ)KÐKÐKØÐ*Ð*Ð*��àÐ*Ð*Ð*�àÐ$Ð$˜UÐ$Ð$Ð$rÜ   c                óÌ  ‡ ‡—  |j         j        ‰ fi ‰¤Ž}|j        �d ‰ j        |j        fi ‰¤Ž› �}n>|j        �d ‰ j        |j        fi ‰¤Ž› �}n |j        �d ‰ j        |j        fi ‰¤Ž› �}nd }|�2|j        �+|d‰ j                             |j        t          ¦  «        z   z  }|›dd 
                    ˆˆ fd„d|j        fd	|j        ffD ¦   «         |r|gng z   ¦  «        ›d
�S )NzRANGE BETWEEN zROWS BETWEEN zGROUPS BETWEEN z	 EXCLUDE z OVER (rL  c           	     ó^   •— g | ])\  }}|®t          |¦  «        ¯|›d |j        ‰fi ‰¤Ž›�‘Œ*S )Nz BY )rä  rï  )rØ   Úwordro  rì  r'  s      €€rÚ   r´  z*SQLCompiler.visit_over.<locals>.<listcomp>  sc   ø€ ð ð ð ñ %˜˜fð Ð)­c°&©k¬kÐ)ð �t�tÐ6˜VÔ6°tÐFÐF¸vÐFÐFÐFðHð *Ð)Ð)rÜ   Ú	PARTITIONÚORDERrG  )râ  rï  Úrange_rÒ  ÚrowsÚgroupsÚexcluderÀ  Úvalidate_sql_phraseÚ_WINDOW_EXCLUDE_REr‘   Úpartition_byÚorder_by)r'  Úoverrì  r  r‹  s   ` `  rÚ   Ú
visit_overzSQLCompiler.visit_overü  sm  øø€ Ø.ˆtŒ|Ô.¨tÐ>Ð>°vÐ>Ð>ˆØŒ;Ð"ØK l d¤l°4´;Ð&IÐ&IÀ&Ð&IÐ&IÐKÐKˆFˆFØŒYÐ"ØH \ T¤\°$´)Ð%FÐ%F¸vÐ%FÐ%FÐHÐHˆFˆFØŒ[Ð$ØL | t¤|°D´KÐ'JÐ'JÀ6Ð'JÐ'JÐLÐLˆFˆFàˆFàÐ $¤,Ð":Ø�k D¤M×$EÒ$EØ”Õ0ñ%ô %ñ ñ ˆFð
 ˆDˆDØ�HŠHðð ð ð ð ð % dÔ&7Ð8Ø  $¤-Ð0ð)ðñ ô ð  &Ð-�F�8�8¨2ñ	/ñô ð ð ð
ð 	
rÜ   c                óV   —  |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz WITHIN GROUP (ORDER BY rG  )râ  rï  r’  )r'  Úwithingrouprì  s      rÚ   Úvisit_withingroupzSQLCompiler.visit_withingroup  sN   € à2ˆKÔÔ2°4ÐBÐB¸6ÐBÐBÐBÐBØ3ˆKÔ Ô3°DÐCÐC¸FÐCÐCÐCÐCð
ð 	
rÜ   c                óV   —  |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz FILTER (WHERE rG  )Úfuncrï  Ú	criterion)r'  Ú
funcfilterrì  s      rÚ   Úvisit_funcfilterzSQLCompiler.visit_funcfilter"  sM   € à.ˆJŒOÔ.¨tÐ>Ð>°vÐ>Ð>Ð>Ð>Ø3ˆJÔ Ô3°DÐCÐC¸FÐCÐCÐCÐCð
ð 	
rÜ   c                ó`  — | j         j        t          j        u rt	          j        d¦  «        ‚| j         j        t          j        u r]|j                             ¦   «         }t          j
        t          |j        j        |j        ¦  «        ¦  «        |_         |j        | fi |¤ŽS  | j        |fi |¤ŽS )NzCthis dialect does not support ORDER BY within an aggregate function)rÇ  Úaggregate_order_by_styler�  r‚  r7   r  rƒ  râ  Ú_cloner#   ÚGroupingr'  Úclause_exprr’  rï  r—  )r'  Úaggregateorderbyrì  Únew_fns       rÚ   Úvisit_aggregateorderbyz"SQLCompiler.visit_aggregateorderby(  sÊ   € ØŒ<Ô0Õ4IÔ4NÐNÐNÝÔ"ð8ñô ð ð
 ŒLÔ1Ý$Ô+ð,ð ,ð &Ô-×4Ò4Ñ6Ô6ˆFÝ!)Ô!2Ý(ØÔ&Ô.Ð0@Ô0Iñô ñ"ô "ˆFÔð -�6Ô,¨TÐ<Ð<°VÐ<Ð<Ð<à)�4Ô)Ð*:ÐEÐE¸fÐEÐEÐErÜ   c                óT   —  | j         |j        fi |¤Ž›d | j         |j        fi |¤Ž›�S )Nú
 ORDER BY )rÒ  râ  r)  rù  s      rÚ   Úvisit_aggregate_orderby_inlinez*SQLCompiler.visit_aggregate_orderby_inline=  sH   € àˆDŒL˜œÐ/Ð/¨BÐ/Ð/Ð/Ð/ØˆDŒL˜Ô3Ð:Ð:°rÐ:Ð:Ð:ð
ð 	
rÜ   )Úuse_function_namec               ó¼  — t          |j        dd ¦  «        }|€!t          j        d| j        j        z  ¦  «        ‚t          |¦  «        }d|d<   t          |j        ¦  «        }|dd…         \  }}|�J| j        j        t          j
        u r2|› d |j        | fi |¤Ž› d |j        | fi |¤Ž› d	 |j        | fi |¤Ž› d
�S |› d |j        | fi |¤Ž› d |j        | fi |¤Ž› d
�S )Nr)  z:%s dialect does not support the aggregate_strings functionTrY  r   r6   rF  ré   r¦  rG  )ÚgetattrrR  r7   r  rÇ  r  r  r¿  rž  r�  rƒ  rï  )	r'  Úfnr¨  rä  r’  Úliteral_execÚclrP  Ú	delimiters	            rÚ   Úvisit_aggregate_strings_funcz(SQLCompiler.visit_aggregate_strings_funcC  s‡  € õ ˜2œ:Ð';¸TÑBÔBˆàÐ$ÝÔ"ØLØ”,Ô#ñ$ñô ð õ
 ˜B‘x”xˆØ*.ˆÐ&Ñ'õ �"”*ÑÔˆØ˜Q˜q˜Sœ'‰ˆˆiàÐ Ø”Ô5Ý$Ô+ð,ð ,ð %ð Gð GÐ'> tÔ'>¸tÐ'JÐ'JÀrÐ'JÐ'Jð Gð GØ/�9Ô/°ÐEÐE¸ÐEÐEðGð Gà7˜HÔ7¸ÐCÐCÀÐCÐCðGð Gð Gðð %ð Ið IÐ'> tÔ'>¸tÐ'JÐ'JÀrÐ'JÐ'Jð Ið IØ/�9Ô/°ÐEÐE¸ÐEÐEðIð Ið IðrÜ   c                ó€   — | j                              |j        |j        ¦  «        }d|›d |j        j        | fi |¤Ž›d�S )NzEXTRACT(rê   rG  )Úextract_mapr×  ÚfieldrP  rï  )r'  Úextractrì  r²  s       rÚ   Úvisit_extractzSQLCompiler.visit_extracth  sQ   € ØÔ ×$Ò$ W¤]°G´MÑBÔBˆˆàˆEˆEØ+ˆGŒLÔ+¨DÐ;Ð;°FÐ;Ð;Ð;Ð;ð
ð 	
rÜ   c                óT   —  | j         |j        fi |¤Ž} | j        |fi |¤Ž}d|›d|›�S )NrF  z).)Úvisit_functionr«  rô  )r'  râ  rä  Úcompiled_fnÚcompiled_cols        rÚ   Úvisit_scalar_function_columnz(SQLCompiler.visit_scalar_function_columno  sK   € Ø)�dÔ)¨'¬*Ð;Ð;¸Ð;Ð;ˆØ(�tÔ(¨Ð7Ð7°BÐ7Ð7ˆˆØ'˜K˜K¨¨Ð6Ð6rÜ   r™  úFunction[Any]c                óÎ  ‡ ‡— ‰ j         r‰                      |¦  «         |�# ||j        |j        |j        f|j        ¦  «         t	          ‰ d|j                             ¦   «         z  d ¦  «        }d|d<   |r
 ||fi |¤Ž}nÙt                               |                     ¦   «         j	        d ¦  «        Š‰r|j
        r‰dz  Šn\|j        Š‰ j                             ‰¦  «        st          ‰t          j        ¦  «        r‰ j                             ‰¦  «        n‰Š‰dz   Šd                     ˆˆ fd„|j        D ¦   «         ‰gz   ¦  «        d ‰ j        |fi |¤Žiz  }|j        r|dz  }|S )	Nzvisit_%s_funcTÚwithin_aggregate_functionz%(expr)srI  c                ó°   •— g | ]R}‰j                              |¦  «        st          ‰t          j        ¦  «        r‰j                              |¦  «        n|‘ŒSS rÖ   )rÀ  Ú_requires_quotes_illegal_charsrÐ  r#   r3   rë  )rØ   rQ  r  r'  s     €€rÚ   r´  z.SQLCompiler.visit_function.<locals>.<listcomp>–  so   ø€ ð ð ð ð ð	  œ=×GÒGÈÑLÔLð!å% d­HÔ,@ÑAÔAð!˜œ×+Ò+¨CÑ0Ô0Ð0ð !ðð ð rÜ   rP  z WITH ORDINALITY)r{  rÇ  r  r  rª  Úlowerrý   r×  Ú_deannotaterÛ  Ú	_has_argsrÀ  r¾  rÐ  r#   r3   rë  r‘   ÚpackagenamesÚfunction_argspecÚ_with_ordinality)r'  r™  r¡  rì  rh  r  r  s   `     @rÚ   r¶  zSQLCompiler.visit_functiont  sÏ  øø€ ð Ôð 	&Ø×Ò Ñ%Ô%Ð%ØÐ(ØÐ˜dœi¨¬°T´Y°LÀ$Ä)ÑLÔLÐLå�t˜_¨t¬y¯ªÑ/@Ô/@Ñ@À$ÑGÔGˆð /3ˆÐ*Ñ+àð 	@Ø�4˜Ð'Ð' Ð'Ð'ˆDˆDå—=’= ×!1Ò!1Ñ!3Ô!3Ô!=¸tÑDÔDˆDØð )Ø”>ð 'Ø˜JÑ&�Døà”y�ð ”}×CÒCÀDÑIÔIðå! $­Ô(<Ñ=Ô=ð�D”M×'Ò'¨Ñ-Ô-Ð-ð ð	 ð ˜jÑ(�Ø—8’8ðð ð ð ð ð  $Ô0ðñ ô ð �&ñ	ñô ð Ð.˜Ô.¨tÐ>Ð>°vÐ>Ð>Ð?ñ@ˆDð Ô ð 	'ØÐ&Ñ&ˆDØˆrÜ   c                ó6   — |                       |j        ¦  «        S r%  )Úvisit_sequenceÚsequence)r'  Ú
next_valuerä  s      rÚ   Úvisit_next_value_funcz!SQLCompiler.visit_next_value_func¦  s   € Ø×"Ò" :Ô#6Ñ7Ô7Ð7rÜ   c                ó:   — t          d| j        j        z  ¦  «        ‚)Nz2Dialect '%s' does not support sequence increments.©ré  rÇ  r  ©r'  rÇ  rä  s      rÚ   rÆ  zSQLCompiler.visit_sequence©  s$   € Ý!Ø@ØŒlÔñ ñ
ô 
ð 	
rÜ   c                ó(   —  |j         j        | fi |¤ŽS r%  )r¡  rï  )r'  r™  rì  s      rÚ   rÃ  zSQLCompiler.function_argspec¯  s    € Ø2ˆtÔÔ2°4ÐBÐB¸6ÐBÐBÐBrÜ   c           
     ó€  ‡ ‡‡— ‰ j         r‰                      |¦  «         ‰ j         } |j        |‰ fi ‰¤Ž}|r‰ j        s|‰ _        |j        }|r‰ j        n‰ j        d         }|p| o|                     dd¦  «        }	|dk    r||d<   ‰ j                             |d         |d         |||	dœ¦  «         |j	        r‰  
                    |‰¦  «         ‰ j        |j                 }
d	|
z   d	z                        ˆˆˆ fd
„t          |j        ¦  «        D ¦   «         ¦  «        }d‰d<   | ‰ j        |fi t#          dd‰i‰¤Ž¤Žz  }| ‰ j        |fi ‰¤Žz  }|j        r| ‰ j        |fi ‰¤Žz  }‰ j        r2|st-          ‰ j        ¦  «        nd }‰                      |d¬¦  «        |z   }‰ j                             d¦  «         |S )Nrº  r9  Fr   r:  r2  r1  )r2  r1  r(   r6  r9  rL  c              3  ó@   •K  — | ]\  }} |j         ‰f‰|d œ‰¤ŽV — ŒdS ))r±  r/  Nrî  )rØ   r>  r³  r±  rì  r'  s      €€€rÚ   rK  z4SQLCompiler.visit_compound_select.<locals>.<genexpr>Ú  sf   øè è € ð ð ñ �A�qð %�Ô$ØðØ!'¸ðð Ø=Cðð ðð ð ð ð ð rÜ   rã  r±  T©r'  Úinclude_following_stackrÖ   )r{  rÇ  r§  Ú_compile_state_factoryr6  r@  r(  r×  rØ  r)  r*  Úcompound_keywordsÚkeywordr‘   r=  ÚselectsÚgroup_by_clauser  Úorder_by_clauseÚ_has_row_limiting_clauseÚ_row_limit_clauserv  rä  r-  r�  )r'  Úcsr±  r/  rì  r0  r6  Úcompound_stmtrÏ  Úneed_result_maprÔ  r  r'  s   ` ` `        rÚ   Úvisit_compound_selectz!SQLCompiler.visit_compound_select²  s„  øøø€ ð Ôð 	$Ø×Ò Ñ#Ô#Ð#Ø”z�>ˆà1˜Ô1°"°dÐEÐE¸fÐEÐEˆàð 	/˜DÔ.ð 	/Ø!.ˆDÔà%Ô/ˆà-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆØ"ð 
ØÐð AØ—	’	Ð8¸%Ñ@Ô@ð 	ð ˜QÒÐØ "ˆE�*ÑàŒ
×Òà#(Ð):Ô#;Ø % nÔ 5Ø Ø!.Ø0?ðð ñ	
ô 	
ð 	
ð Ô*ð 	CØ×+Ò+¨M¸6ÑBÔBÐBàÔ(¨¬Ô4ˆà�g‘ Ñ#×)Ò)ðð ð ð ð ð õ & b¤jÑ1Ô1ð	ñ ô ñ
ô 
ˆð #(ˆˆÑØÐ$�Ô$ RÐIÐI­4Ð+HÐ+H°vÐ+HÀÐ+HÐ+HÐIÐIÑIˆØÐ$�Ô$ RÐ2Ð2¨6Ð2Ð2Ñ2ˆØÔ&ð 	9ØÐ*�DÔ*¨2Ð8Ð8°Ð8Ð8Ñ8ˆDàŒ9ð 	Ø3;ÐE�C ¤
™OœO˜OÀˆMà×'Ò'Ø"/Ø,0ð (ñ ô ð ñ	ð ð 	Œ
�Š�rÑÔÐØˆrÜ   c                óH   — |j         � | j        |fi |¤ŽS  | j        |fi |¤ŽS r%  )Ú_fetch_clauseÚfetch_clauseÚlimit_clause)r'  rÚ  rì  s      rÚ   rÙ  zSQLCompiler._row_limit_clauseõ  sA   € ØÔÐ'Ø$�4Ô$ RÐ2Ð2¨6Ð2Ð2Ð2à$�4Ô$ RÐ2Ð2¨6Ð2Ð2Ð2rÜ   c                óP   — d|j         ›d|›|rd|z   nd›�}t          | |d ¦  «        S )NÚvisit_rD  r·  )r  rª  )r'  rg  Ú
qualifier1Ú
qualifier2Úattrnames        rÚ   rf  z"SQLCompiler._get_operator_dispatchû  sE   € € àÔÐÐØˆJØ *Ð2ˆC�*ÑÐ°Ð2ð
ˆõ
 �t˜X tÑ,Ô,Ð,rÜ   c                ó>   — d|j         ›d|›�}t          | |d ¦  «        S )Nrã  Ú_op_)Ú
visit_namerª  )r'  rg  rä  ræ  s       rÚ   Ú_get_custom_operator_dispatchz)SQLCompiler._get_custom_operator_dispatch  s+   € € Ø'0Ô';Ð';Ð';¸Z¸ZÐHˆÝ�t˜X tÑ,Ô,Ð,rÜ   c                óJ  — |�||fz  }||d<   ||d<   |j         t          j        u r*|                     dd¦  «        st	          j        d¦  «         |j         rg|j        rt          j        d¦  «        ‚|  	                    |j         dd¦  «        }|r |||j         fi |¤ŽS  | j
        |t          |j                  fi |¤ŽS |j        rL|  	                    |j        dd	¦  «        }|r |||j        fi |¤ŽS  | j        |t          |j                 fi |¤ŽS t          j        d
¦  «        ‚)Nr¡  r¢  r¼  FzœColumn-expression-level unary distinct() should not be used outside of an aggregate function. For general 'SELECT DISTINCT' support use select().distinct().zFUnary expression does not support operator and modifier simultaneouslyÚunaryrx  Úmodifierz,Unary expression has no operator or modifier)rx  r%   Údistinct_opr×  r*   r°  rí  r7   r  rf  Ú _generate_generic_unary_operatorrÑ  Ú _generate_generic_unary_modifier)r'  rì  r¡  r¢  rä  rh  s         rÚ   Úvisit_unaryzSQLCompiler.visit_unary  s°  € ð Ð(Ø 5 (Ñ*ÐØ&7ˆBÐ"Ñ#Ø'9ˆBÐ#Ñ$àŒ>�YÔ2Ð2Ð2¸2¿6º6Ø'¨ñ<
ô <
Ð2õ ŒIð+ñô ð ð Œ>ð 	ØŒ~ð ÝÔ&ð2ñô ð ð ×.Ò.Ø” ¨ñô ˆDð ð Ø�t˜E 5¤>Ð8Ð8°RÐ8Ð8Ð8à<�tÔ<Ø�9 U¤^Ô4ðð Ø8:ðð ð ð Œ^ð 	Ø×.Ò.Ø” ¨ñô ˆDð ð Ø�t˜E 5¤>Ð8Ð8°RÐ8Ð8Ð8à<�tÔ<Ø�9 U¤^Ô4ðð Ø8:ðð ð õ Ô"Ø>ñô ð rÜ   c           	     ót  — | j         j        rƒ | j        |j        fi |¤Ždz    | j        t	          j        |j        |j        j        j        t          j
        t          j        fv r|j        j        nt          j
        ¦   «         ¦  «        fi |¤Žz   S  | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S )Nú / )rÇ  Údiv_is_floordivrÒ  r’   r#   ÚCastr¦   r  Ú_type_affinityr)   ÚNumericÚFloat©r'  r«   rx  rä  s       rÚ   Úvisit_truediv_binaryz SQLCompiler.visit_truediv_binary7  s÷   € ØŒ<Ô'ð 	à�”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñð �$”,Ý”MØœð  &œ|Ô0Ô?Ý (Ô 0µ(´.ÐAð Bð  Bð #œLÔ-Ð-õ "*Ô!1Ñ!3Ô!3ñô ðð ð ðð ñ	ðð( �”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðrÜ   c                ó<  — | j         j        rd|j        j        j        t
          j        u rG|j        j        j        t
          j        u r* | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S d | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   z  S )Nró  z	FLOOR(%s))	rÇ  rô  r¦   r  rö  r)   ÚIntegerr’   rÒ  rù  s       rÚ   Úvisit_floordiv_binaryz!SQLCompiler.visit_floordiv_binaryR  sÏ   € àŒLÔ(ð	à”Ô!Ô0µHÔ4DÐDÐDØ”Ô Ô/µ8Ô3CÐCÐCð �”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðð Ø�”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ñð rÜ   c                óz   — |j         s| j        j        r | j        |j        fi |¤ŽS d | j        |j        fi |¤Žz  S )Nz%s = 1©Ú_is_implicitly_booleanrÇ  r=  rÒ  râ  ©r'  râ  rx  rä  s       rÚ   Úvisit_is_true_unary_operatorz(SQLCompiler.visit_is_true_unary_operatord  s[   € àÔ*ð	BàŒ|Ô3ð	Bð  �4”< ¤Ð6Ð6°2Ð6Ð6Ð6à˜l˜dœl¨7¬?ÐAÐA¸bÐAÐAÑAÐArÜ   c                ó€   — |j         s| j        j        rd | j        |j        fi |¤Žz  S d | j        |j        fi |¤Žz  S )NúNOT %sz%s = 0rÿ  r  s       rÚ   Úvisit_is_false_unary_operatorz)SQLCompiler.visit_is_false_unary_operatorm  s`   € àÔ*ð	BàŒ|Ô3ð	Bð ˜l˜dœl¨7¬?ÐAÐA¸bÐAÐAÑAÐAà˜l˜dœl¨7¬?ÐAÐA¸bÐAÐAÑAÐArÜ   c                óJ   — d|                       |t          j        ¬¦  «        z  S )Nr  )Úoverride_operator)Úvisit_binaryr%   Úmatch_oprù  s       rÚ   Úvisit_not_match_op_binaryz%SQLCompiler.visit_not_match_op_binaryv  s.   € Ø˜$×+Ò+Ø¥iÔ&8ð ,ñ 
ô 
ñ 
ð 	
rÜ   c                ó<   — d | j         |t          |         fi |¤Žz  S rV  )Ú_generate_generic_binaryrÑ  rù  s       rÚ   Úvisit_not_in_op_binaryz"SQLCompiler.visit_not_in_op_binary{  s:   € ð Ð5˜Ô5Ø•I˜hÔ'ð
ð 
Ø+-ð
ð 
ñ 
ð 	
rÜ   c                ó@  — |t           j        u r7t          |¦  «        dk    r"dd                     d„ |D ¦   «         ¦  «        z  S dS |t           j        u r7t          |¦  «        dk    r"dd                     d„ |D ¦   «         ¦  «        z  S dS |                      |¦  «        S )	Nr   z(%s)) OR (1 = 1ré   c              3  ó   K  — | ]}d V — ŒdS ©r6  NrÖ   ©rØ   râ  s     rÚ   rK  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>‡  ó"   è è € Ð:Ð:¨˜fÐ:Ð:Ð:Ð:Ð:Ð:rÜ   zNULL) OR (1 = 1z(%s)) AND (1 != 1c              3  ó   K  — | ]}d V — ŒdS r  rÖ   r  s     rÚ   rK  z6SQLCompiler.visit_empty_set_op_expr.<locals>.<genexpr>Ž  r  rÜ   zNULL) AND (1 != 1)r%   Ú	not_in_oprä  r‘   Úin_opÚvisit_empty_set_expr)r'  r!  Ú	expand_oprä  s       rÚ   Úvisit_empty_set_op_exprz#SQLCompiler.visit_empty_set_op_exprƒ  sµ   € Ø�	Ô+Ð+Ð+Ý�5‰zŒz˜AŠ~ˆ~Ø(Ø—I’IÐ:Ð:°EÐ:Ñ:Ô:Ñ:Ô:ñð ð )Ð(Ø�)œ/Ð)Ð)Ý�5‰zŒz˜AŠ~ˆ~Ø*Ø—I’IÐ:Ð:°EÐ:Ñ:Ô:Ñ:Ô:ñð ð +Ð*à×,Ò,¨UÑ3Ô3Ð3rÜ   c                ó:   — t          d| j        j        z  ¦  «        ‚)Nz3Dialect '%s' does not support empty set expression.rË  ©r'  Úelement_typesrä  s      rÚ   r  z SQLCompiler.visit_empty_set_expr•  s$   € Ý!ØAØŒlÔñ ñ
ô 
ð 	
rÜ   c                óä  ‡ ‡‡	‡
— ‰j                              ‰ j        ¦  «        }|sb|j        r8‰ j        j        rdnd‰                      ‰j         j        ‰j        ¦  «        z   }�n‰‰                      ‰j         g‰j        ¦  «        }�nf|j        sI|j        r™t          |d         t          j        ¦  «        ryt          |d         t          t          f¦  «        sW|j        rt          d¦  «        ‚‰ j        j        rdndd                     ˆˆ fd„t#          |¦  «        D ¦   «         ¦  «        z   }n¿|r›‰ j        }|                     |¦  «        }|r|                     d¦  «        s
J d¦   «         ‚|                     d¦  «                             d	¦  «        }|d
         |d         cŠ	Š
d                     ˆ	ˆ
ˆˆ fd„|D ¦   «         ¦  «        }n"d                     ˆˆ fd„|D ¦   «         ¦  «        }d|fS )NúVALUES r·  r   z?bind_expression() on TupleType not supported with literal_bindsré   c           	   3  ó–   •K  — | ]C\  }}d d                      ˆfd„t          |‰j        j        ¦  «        D ¦   «         ¦  «        z  V — ŒDdS )rW  ré   c              3  óJ   •K  — | ]\  }}‰                      ||¦  «        V — Œd S r%  r9  )rØ   r  Ú
param_typer'  s      €rÚ   rK  z[SQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>.<genexpr>Á  sK   øè è € ð ð á-˜E :ð ×1Ò1°%¸ÑDÔDðð ð ð ð ð rÜ   N)r‘   r  r  r	  )rØ   r>  r?  re  r'  s      €€rÚ   rK  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>¾  s�   øè è € ð ð ñ %�A�}ð à—I’Ið ð ð ð å14Ø)¨9¬>Ô+?ñ2ô 2ðñ ô ñ ô ñðð ð ð ð ð rÜ   r6   ú)unexpected format for expanding parameterrJ  r   r-  c              3  óZ   •K  — | ]%}‰›‰                      |‰j        ¦  «        ›‰›�V — Œ&d S r%  ©r:  r  )rØ   r  rM  rN  re  r'  s     €€€€rÚ   rK  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>Ô  s]   øè è € ð 3ð 3ð ð	  ˜Ø×1Ò1°%¸¼ÑHÔHÐHØ ˜ð	ð3ð 3ð 3ð 3ð 3ð 3rÜ   c              3  óN   •K  — | ]}‰                      |‰j        ¦  «        V — Œ d S r%  r#  )rØ   r  re  r'  s     €€rÚ   rK  zQSQLCompiler._literal_execute_expanding_parameter_literal_binds.<locals>.<genexpr>Þ  sI   øè è € ð 3ð 3àð ×-Ò-¨e°Y´^ÑDÔDð3ð 3ð 3ð 3ð 3ð 3rÜ   rÖ   )r  r*  rÇ  r  Útuple_in_valuesr  r	  r  Ú_isnullrÐ  Úcollections_abcr   r×   ÚbytesÚ_has_bind_expressionré  r‘   r=  r[  Úsearchr    rO  )r'  re  rö  Úbind_expression_templateÚtyp_dialect_implÚreplacement_expressionÚpost_compile_patternrÔ  rQ  rM  rN  s   ``       @@rÚ   Ú2_literal_execute_expanding_parameter_literal_bindsz>SQLCompiler._literal_execute_expanding_parameter_literal_binds›  s�  øøøø€ ð %œ>×AÒAÀ$Ä,ÑOÔOÐàð A	ð
  Ô.ð 
à!%¤Ô!=ÐE�I�IÀ2Ø×0Ò0Ø”NÔ(¨)Ô*=ñô ñ*Ð&Ñ&ð *.×)EÒ)EØ”^Ð$ iÔ&9ñ*ô *Ð&Ñ&ð Ô,ð 0	ØÔ$ð0	å˜6 !œ9¥oÔ&>Ñ?Ô?ð0	õ ˜v aœy­3µ¨,Ñ7Ô7ð0	ð
  Ô4ð Ý)ð$ñô ð ð "œ\Ô9ÐA�	�	¸rØ—	’	ð ð ð ð ð õ )2°&Ñ(9Ô(9ðñ ô ñ ô ñ&Ð"Ð"ð (ð Ø'+Ô'AÐ$Ø(×/Ò/Ð0HÑIÔI�Øð ?˜QŸWšWØñô ð ?ð ?à>ñ?ô ?ð ?ð —g’g˜a‘j”j×&Ò& tÑ,Ô,�Ø$'¨¤F¨C°¬FÐ!�˜Ø)-¯ªð 3ð 3ð 3ð 3ð 3ð 3ð 3ð "(ð3ñ 3ô 3ñ *ô *Ð&Ð&ð *.¯ªð 3ð 3ð 3ð 3ð 3à!'ð3ñ 3ô 3ñ *ô *Ð&ð
 Ð)Ð)Ð)rÜ   c                ó†  ‡ ‡‡‡‡‡‡	— ‰j         r‰                      ‰|¦  «        S ‰ j        }‰j                             |¦  «        Š	‰ j        r‰ j        Šn‰ j        Š‰ j        j        r‰	j	        r	ˆˆˆ ˆ	fd„Šnˆfd„Š|sRg Š‰	j
        r'‰                      ‰j        j        ‰j        ¦  «        }�n‰                      ‰j        g‰j        ¦  «        }nî‰	j
        sI‰	j        r£t          |d         t           j        ¦  «        rƒt          |d         t$          t&          f¦  «        sa‰	j        rJ ‚ˆfd„t+          |d¦  «        D ¦   «         Š|j        rdndd                     ˆˆfd	„t+          |¦  «        D ¦   «         ¦  «        z   }n=ˆfd
„t+          |d¦  «        D ¦   «         Šd                     ˆfd„‰D ¦   «         ¦  «        }‰|fS )Nc                óF   •— ‰                      ‰j        ‰‰d| iz  ¦  «        S ©Nr  )Úrender_bind_castr  )r  Úbind_templatere  r'  r,  s    €€€€rÚ   Ú_render_bindtemplatezNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplateø  s/   ø€ Ø×,Ò,Ø”NØ$Ø! V¨T NÑ2ñô ð rÜ   c                ó   •— ‰d| iz  S r2  rÖ   )r  r4  s    €rÚ   r5  zNSQLCompiler._literal_execute_expanding_parameter.<locals>._render_bindtemplate  s   ø€ Ø$¨° ~Ñ5Ð5rÜ   r   c                óZ   •— g | ]'\  }}t          |d ¦  «        D ]\  }}‰›d|›d|›�|f‘ŒŒ(S )r   rD  r<  )rØ   r>  r?  r@  r  r  s        €rÚ   r´  zDSQLCompiler._literal_execute_expanding_parameter.<locals>.<listcomp>  sh   ø€ ð ð ð á$�A�}Ý )¨-¸Ñ ;Ô ;ðð ñ �A�uð  $˜t˜t Q Q Q¨¨Ð*¨EÐ2ðð ð ð rÜ   r   r  r·  ré   c              3  óŠ   •‡‡K  — | ];\  ŠŠd d                      ˆˆˆˆfd„t          ‰¦  «        D ¦   «         ¦  «        z  V — Œ<dS )rW  ré   c              3  ór   •K  — | ]1\  }} ‰‰‰t          ‰¦  «        z  |z            d          ¦  «        V — Œ2dS )r   N)rä  )rØ   r@  r  r5  r>  rf  r?  s      €€€€rÚ   rK  zMSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.<genexpr>   si   øè è € ð ð ñ %˜A˜uð -Ð,Ø% a­#¨mÑ*<Ô*<Ñ&<¸qÑ&@ÔAÀ!ÔDñô ðð ð ð ð ð rÜ   N)r‘   r=  )rØ   r>  r?  r5  rf  s    @@€€rÚ   rK  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>  s”   øøøè è € ð ð ñ %�A�}ð à—I’Ið ð ð ð ð ð ð õ )2°-Ñ(@Ô(@ð	ñ ô ñ ô ñðð ð ð ð ð rÜ   c                ó(   •— g | ]\  }}‰›d |›�|f‘ŒS )rD  rÖ   )rØ   r>  r  r  s      €rÚ   r´  zDSQLCompiler._literal_execute_expanding_parameter.<locals>.<listcomp>*  s=   ø€ ð ð ð á�A�uð !˜D˜D ! !Ð$ eÐ,ðð ð rÜ   c              3  ó4   •K  — | ]\  }} ‰|¦  «        V — Œd S r%  rÖ   )rØ   rJ  r  r5  s      €rÚ   rK  zCSQLCompiler._literal_execute_expanding_parameter.<locals>.<genexpr>.  sD   øè è € ð /ð /Ù.8¨c°5Ð$Ð$ SÑ)Ô)ð/ð /ð /ð /ð /ð /rÜ   )rY  r/  rÇ  r  r*  re  r_  r^  Ú_bind_typing_render_castsr3  r  r  r	  r  r&  rÐ  r'  r   r×   r(  Ú	_is_arrayr=  r%  r‘   )
r'  r  re  rö  rÇ  r-  r5  r4  rf  r,  s
   ```   @@@@rÚ   rX  z0SQLCompiler._literal_execute_expanding_parameterå  s£  øøøøøøø€ ØÔ$ð 	Ø×JÒJØ˜6ñô ð ð ”,ˆØ$œ>×AÒAÀ'ÑJÔJÐàÔð 	.Ø Ô9ˆMˆMà Ô-ˆMð ŒLÔ2ð	6à Ô1ð	6ð
ð ð ð ð ð ð ð ð ð6ð 6ð 6ð 6ð 6ð ð ,	ØˆIØÔ.ð Ø)-×)EÒ)EØ”NÔ(¨)Ô*=ñ*ô *Ð&Ñ&ð *.×)EÒ)EØ”^Ð$ iÔ&9ñ*ô *Ð&Ð&ð Ô,ð !	ØÔ$ð!	å˜6 !œ9¥oÔ&>Ñ?Ô?ð!	õ ˜v aœy­3µ¨,Ñ7Ô7ð!	ð
 (Ô1Ð1Ð1Ð1ðð ð ð å(1°&¸!Ñ(<Ô(<ðñ ô ˆIð %Ô4Ð<�	�	¸"Ø—	’	ð ð ð ð ð õ )2°&Ñ(9Ô(9ðñ ô ñ ô ñ&Ð"Ð"ðð ð ð å )¨&°!Ñ 4Ô 4ðñ ô ˆIð &*§Y¢Yð /ð /ð /ð /Ø<Eð/ñ /ô /ñ &ô &Ð"ð Ð0Ð0Ð0rÜ   c           	     óF  — |rât          j        |j        ¦  «        rÉ|�l|d         }|j                             t          j        t          |j        j	        |gz   ¦  «        t          |j
        j	        |gz   ¦  «        ¦  «        ¦  «         n[|j                             t          j        t          |j        j	        ¦  «        t          |j
        j	        ¦  «        ¦  «        ¦  «         | j        rCt          |j        t          j        ¦  «        r$t          |j
        t          j        ¦  «        rd|d<   |p|j        }|                      |dd ¦  «        }	|	r
 |	||fi |¤ŽS 	 t           |         }
 | j        ||
f||dœ|¤ŽS # t$          $ r}t'          j        | |¦  «        |‚d }~ww xY w)NÚenclosing_lateralTrY  r«   )Úfrom_linterÚlateral_from_linter)r%   Úis_comparisonrx  r›  r¦  rô  Úproductr.   r’   r/   r¦   r]  rÐ  r#   rN   rf  rÑ  r  r¼  r7   rà  )r'  r«   r  Úeager_groupingr@  rA  rä  r?  rg  rh  ri  rã  s               rÚ   r  zSQLCompiler.visit_binary4  s   € ð ð 	�9Ô2°6´?ÑCÔCð 	Ø"Ð.Ø$&Ð':Ô$;Ð!Ø#Ô)×0Ò0ÝÔ%Ý!Ø"œKÔ5Ð9JÐ8KÑKñô õ "Ø"œLÔ6Ð:KÐ9LÑLñô ñ	ô ñ	ô 	ð 	ð 	ð Ô!×(Ò(ÝÔ%Ý! &¤+Ô";Ñ<Ô<Ý! &¤,Ô"<Ñ=Ô=ñô ñô ð ð Ô ð	)å˜6œ;­Ô(>Ñ?Ô?ð	)õ ˜6œ<­Ô)?Ñ@Ô@ð	)ð
 %)ˆBÐ Ñ!à%Ð8¨¬ˆ	Ø×*Ò*¨9°hÀÑEÔEˆØð 	Ø�4˜ 	Ð0Ð0¨RÐ0Ð0Ð0ðÝ$ YÔ/�ð 5�tÔ4ØØðð !,Ø(;ð	ð ð
 ðð ð øõ ð Pð Pð PÝÔ5°d¸IÑFÔFÈCÐOøøøøðPøøøs   ÅE; Å;
F ÆFÆF c                ó(   —  | j         |j        fi |¤ŽS r%  )rÒ  Úsql_functionr  s       rÚ   Ú&visit_function_as_comparison_op_binaryz2SQLCompiler.visit_function_as_comparison_op_binaryl  s   € ØˆtŒ|˜GÔ0Ð7Ð7°BÐ7Ð7Ð7rÜ   c                óÂ   — | j         j        r* | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S  | j        |j        fi |¤Ždz    | j        |j        fi |¤Žz   S )Nz %% rç   )rÀ  rå  rÒ  r’   r¦   rù  s       rÚ   Úvisit_mod_binaryzSQLCompiler.visit_mod_binaryo  s™   € ØŒ=Ô)ð 	à�”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðð �”˜Vœ[Ð/Ð/¨BÐ/Ð/Øñà�$”,˜vœ|Ð2Ð2¨rÐ2Ð2ñ3ðrÜ   c                óÂ   — |j         r"|                      |d¦  «        }|r
 |||fi |¤ŽS |j        |d<    | j        |d|                      |j        ¦  «        z   dz   fi |¤ŽS )Nr«   rD  rL  )ré  rê  rD  r  rê  ri  ©r'  râ  rx  rä  rh  s        rÚ   Úvisit_custom_op_binaryz"SQLCompiler.visit_custom_op_binary}  s™   € ØÔð 	5Ø×5Ò5°hÀÑIÔIˆDØð 5Ø�t˜G XÐ4Ð4°Ð4Ð4Ð4à'Ô6ˆÐÑØ,ˆtÔ,ØØ�$×,Ò,¨XÔ->Ñ?Ô?Ñ?À#ÑEð
ð 
ð ð
ð 
ð 	
rÜ   c                ó¨   — |j         r"|                      |d¦  «        }|r
 |||fi |¤ŽS  | j        ||                      |j        ¦  «        dz   fi |¤ŽS ©Nrì  rL  )ré  rê  rï  rê  ri  rK  s        rÚ   Úvisit_custom_op_unary_operatorz*SQLCompiler.visit_custom_op_unary_operatorŠ  sƒ   € ØÔð 	5Ø×5Ò5°hÀÑHÔHˆDØð 5Ø�t˜G XÐ4Ð4°Ð4Ð4Ð4à4ˆtÔ4Ø�T×/Ò/°Ô0AÑBÔBÀSÑHð
ð 
ØLNð
ð 
ð 	
rÜ   c                ó¨   — |j         r"|                      |d¦  «        }|r
 |||fi |¤ŽS  | j        |d|                      |j        ¦  «        z   fi |¤ŽS rN  )ré  rê  rð  rê  ri  rK  s        rÚ   Úvisit_custom_op_unary_modifierz*SQLCompiler.visit_custom_op_unary_modifier”  sƒ   € ØÔð 	5Ø×5Ò5°hÀÑHÔHˆDØð 5Ø�t˜G XÐ4Ð4°Ð4Ð4Ð4à4ˆtÔ4Ø�S˜4×5Ò5°hÔ6GÑHÔHÑHð
ð 
ØLNð
ð 
ð 	
rÜ   r«   úBinaryExpression[Any]ri  rD  c                ó¾   — |                      dd¦  «        }d|d<   |j        |d<    |j        j        | fd|i|¤Ž|z    |j        j        | fd|i|¤Žz   }|r|rd|z  }|S )Nre  FTÚ
_binary_oprD  rW  )r×  rx  r’   rï  r¦   )r'  r«   ri  rD  rä  re  r  s          rÚ   r  z$SQLCompiler._generate_generic_binaryž  s½   € ð #%§&¢&Ð)BÀEÑ"JÔ"JÐà(,ˆÐ$Ñ%Ø!œ?ˆˆ<Ñà*ˆFŒKÔ*Øðð Ø%3ðØ79ðð ð ñð .ˆfŒlÔ-Øðð Ø%3ðØ79ðð ñ	ð 	ð #ð 	! ~ð 	!Ø˜D‘=ˆDØˆrÜ   c                ó.   — | |j         j        | fi |¤Žz   S r%  r¯  ©r'  rì  ri  rä  s       rÚ   rï  z,SQLCompiler._generate_generic_unary_operator·  s%   € ØÐ:˜%œ-Ô:¸4ÐFÐFÀ2ÐFÐFÑFÐFrÜ   c                ó.   —  |j         j        | fi |¤Ž|z   S r%  r¯  rV  s       rÚ   rð  z,SQLCompiler._generate_generic_unary_modifierº  s$   € Ø/ˆuŒ}Ô/°Ð;Ð;¸Ð;Ð;¸hÑFÐFrÜ   c                óB   — t          j        dt          j        ¬¦  «        S )Nz'%')r!  )r#   Úliteral_columnr)   Ú
STRINGTYPErN  s    rÚ   Ú_like_percent_literalz!SQLCompiler._like_percent_literal½  s   € åÔ& uµHÔ4GÐHÑHÔHÐHrÜ   c                ó0   — d |j         j        | fi |¤Ž› d�S )Nzlower(rG  r¯  rù  s      rÚ   Ú$visit_ilike_case_insensitive_operandz0SQLCompiler.visit_ilike_case_insensitive_operandÁ  s+   € ØIÐ:˜œÔ:¸4ÐFÐFÀ2ÐFÐFÐIÐIÐIÐIrÜ   c                óº   — |                      ¦   «         }| j        }|                     |j        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r%  ©rŸ  r[  Úconcatr¦   Úvisit_like_op_binary©r'  r«   rx  rä  Úpercents        rÚ   Úvisit_contains_op_binaryz$SQLCompiler.visit_contains_op_binaryÄ  sW   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3×:Ò:¸7ÑCÔCˆŒØ(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÜ   c                óº   — |                      ¦   «         }| j        }|                     |j        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r%  ©rŸ  r[  r`  r¦   Úvisit_not_like_op_binaryrb  s        rÚ   Úvisit_not_contains_op_binaryz(SQLCompiler.visit_not_contains_op_binaryÊ  sW   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3×:Ò:¸7ÑCÔCˆŒØ,ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÜ   c                ó  — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r%  ©rŸ  r[  r6  r’   r`  r¦   Úvisit_ilike_op_binaryrb  s        rÚ   Úvisit_icontains_op_binaryz%SQLCompiler.visit_icontains_op_binaryÐ  sw   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Ý" 6¤<Ñ0Ô0ñ
ô 
ç
Š&�‰/Œ/ð 	Œð *ˆtÔ)¨&°(ÐAÐA¸bÐAÐAÐArÜ   c                ó  — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «                             |¦  «        |_         | j        ||fi |¤ŽS r%  ©rŸ  r[  r6  r’   r`  r¦   Úvisit_not_ilike_op_binaryrb  s        rÚ   Úvisit_not_icontains_op_binaryz)SQLCompiler.visit_not_icontains_op_binaryÙ  sw   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Ý" 6¤<Ñ0Ô0ñ
ô 
ç
Š&�‰/Œ/ð 	Œð .ˆtÔ-¨f°hÐEÐEÀ"ÐEÐEÐErÜ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r%  )rŸ  r[  Ú_rconcatr¦   ra  rb  s        rÚ   Úvisit_startswith_op_binaryz&SQLCompiler.visit_startswith_op_binaryâ  sK   € Ø—’‘”ˆØÔ,ˆØ×'Ò'¨¬Ñ5Ô5ˆŒØ(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÜ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r%  )rŸ  r[  rr  r¦   rg  rb  s        rÚ   Úvisit_not_startswith_op_binaryz*SQLCompiler.visit_not_startswith_op_binaryè  sK   € Ø—’‘”ˆØÔ,ˆØ×'Ò'¨¬Ñ5Ô5ˆŒØ,ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÜ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r%  )rŸ  r[  r6  r’   rr  r¦   rk  rb  s        rÚ   Úvisit_istartswith_op_binaryz'SQLCompiler.visit_istartswith_op_binaryî  se   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ×'Ò'Õ(>¸v¼|Ñ(LÔ(LÑMÔMˆŒØ)ˆtÔ)¨&°(ÐAÐA¸bÐAÐAÐArÜ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r%  )rŸ  r[  r6  r’   rr  r¦   ro  rb  s        rÚ   Úvisit_not_istartswith_op_binaryz+SQLCompiler.visit_not_istartswith_op_binaryõ  se   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ×'Ò'Õ(>¸v¼|Ñ(LÔ(LÑMÔMˆŒØ-ˆtÔ-¨f°hÐEÐEÀ"ÐEÐEÐErÜ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r%  r_  rb  s        rÚ   Úvisit_endswith_op_binaryz$SQLCompiler.visit_endswith_op_binaryü  sI   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3ˆŒØ(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÜ   c                ó”   — |                      ¦   «         }| j        }|                     |j        ¦  «        |_         | j        ||fi |¤ŽS r%  rf  rb  s        rÚ   Úvisit_not_endswith_op_binaryz(SQLCompiler.visit_not_endswith_op_binary  sI   € Ø—’‘”ˆØÔ,ˆØ—~’~ f¤lÑ3Ô3ˆŒØ,ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÜ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r%  rj  rb  s        rÚ   Úvisit_iendswith_op_binaryz%SQLCompiler.visit_iendswith_op_binary  sc   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Õ&<¸V¼\Ñ&JÔ&JÑKÔKˆŒØ)ˆtÔ)¨&°(ÐAÐA¸bÐAÐAÐArÜ   c                óà   — |                      ¦   «         }| j        }t          |j        ¦  «        |_        |                     t          |j        ¦  «        ¦  «        |_         | j        ||fi |¤ŽS r%  rn  rb  s        rÚ   Úvisit_not_iendswith_op_binaryz)SQLCompiler.visit_not_iendswith_op_binary  sc   € Ø—’‘”ˆØÔ,ˆÝ,¨V¬[Ñ9Ô9ˆŒØ—~’~Õ&<¸V¼\Ñ&JÔ&JÑKÔKˆŒØ-ˆtÔ-¨f°hÐEÐEÀ"ÐEÐEÐErÜ   c                óÚ   — |j                              dd ¦  «        } |j        j        | fi |¤Ž›d |j        j        | fi |¤Ž›�|�#d|                      |t          j        ¦  «        z   ndz   S )Nr�  z LIKE ú ESCAPE r·  ©Ú	modifiersr×  r’   rï  r¦   r:  r)   rZ  ©r'  r«   rx  rä  r�  s        rÚ   ra  z SQLCompiler.visit_like_op_binary  s“   € ØÔ!×%Ò% h°Ñ5Ô5ˆð +ˆFŒKÔ*¨4Ð6Ð6°2Ð6Ð6Ð6Ð6Ø+ˆFŒLÔ+¨DÐ7Ð7°BÐ7Ð7Ð7ð
ð
 Ð!ð ˜×2Ò2°6½8Ô;NÑOÔOÑOÐOàñ
ð 	
rÜ   c                óÚ   — |j                              dd ¦  «        } |j        j        | fi |¤Ž›d |j        j        | fi |¤Ž›�|�#d|                      |t          j        ¦  «        z   ndz   S )Nr�  z
 NOT LIKE rƒ  r·  r„  r†  s        rÚ   rg  z$SQLCompiler.visit_not_like_op_binary"  s‘   € ØÔ!×%Ò% h°Ñ5Ô5ˆà*ˆFŒKÔ*¨4Ð6Ð6°2Ð6Ð6Ð6Ð6Ø+ˆFŒLÔ+¨DÐ7Ð7°BÐ7Ð7Ð7ð
ð
 Ð!ð ˜×2Ò2°6½8Ô;NÑOÔOÑOÐOàñ
ð 	
rÜ   c                óÈ   — |t           j        u rF|                     ¦   «         }t          |j        ¦  «        |_        t          |j        ¦  «        |_         | j        ||fi |¤ŽS r%  )r%   Úilike_oprŸ  r6  r’   r¦   ra  rù  s       rÚ   rk  z!SQLCompiler.visit_ilike_op_binary-  s^   € Ø•yÔ)Ð)Ð)Ø—]’]‘_”_ˆFÝ0°´Ñ=Ô=ˆFŒKÝ1°&´,Ñ?Ô?ˆFŒLð )ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÜ   c                óÈ   — |t           j        u rF|                     ¦   «         }t          |j        ¦  «        |_        t          |j        ¦  «        |_         | j        ||fi |¤ŽS r%  )r%   Únot_ilike_oprŸ  r6  r’   r¦   rg  rù  s       rÚ   ro  z%SQLCompiler.visit_not_ilike_op_binary6  s^   € Ø•yÔ-Ð-Ð-Ø—]’]‘_”_ˆFÝ0°´Ñ=Ô=ˆFŒKÝ1°&´,Ñ?Ô?ˆFŒLð -ˆtÔ,¨V°XÐDÐDÀÐDÐDÐDrÜ   c                ó^   — |j                              dd¦  «        } | j        ||rdndfi |¤ŽS )NrÈ   Fz BETWEEN SYMMETRIC z	 BETWEEN ©r…  r×  r  ©r'  r«   rx  rä  rÈ   s        rÚ   Úvisit_between_op_binaryz#SQLCompiler.visit_between_op_binary?  sN   € ØÔ$×(Ò(¨°eÑ<Ô<ˆ	Ø,ˆtÔ,Ø¨YÐGÐ)Ð)¸Kð
ð 
ØKMð
ð 
ð 	
rÜ   c                ó^   — |j                              dd¦  «        } | j        ||rdndfi |¤ŽS )NrÈ   Fz NOT BETWEEN SYMMETRIC z NOT BETWEEN r�  rŽ  s        rÚ   Úvisit_not_between_op_binaryz'SQLCompiler.visit_not_between_op_binaryE  sQ   € ØÔ$×(Ò(¨°eÑ<Ô<ˆ	Ø,ˆtÔ,ØØ)2ÐGÐ%Ð%¸ð
ð 
ð ð
ð 
ð 	
rÜ   rx  c                óD   — t          j        d| j        j        z  ¦  «        ‚©Nz/%s dialect does not support regular expressions©r7   r  rÇ  r  rù  s       rÚ   Úvisit_regexp_match_op_binaryz(SQLCompiler.visit_regexp_match_op_binaryM  ó)   € õ ÔØ=ØŒlÔñ ñ
ô 
ð 	
rÜ   c                óD   — t          j        d| j        j        z  ¦  «        ‚r“  r”  rù  s       rÚ   Ú visit_not_regexp_match_op_binaryz,SQLCompiler.visit_not_regexp_match_op_binaryU  r–  rÜ   c                óD   — t          j        d| j        j        z  ¦  «        ‚)Nz;%s dialect does not support regular expression replacementsr”  rù  s       rÚ   Úvisit_regexp_replace_op_binaryz*SQLCompiler.visit_regexp_replace_op_binary]  s)   € õ ÔØIØŒlÔñ ñ
ô 
ð 	
rÜ   )Úbindmarkersc               ól   — |€t          j        d¦  «        ‚|||j        j        <   d|j        j        › d�S )NzMDML target objects may only be used with compiled INSERT or UPDATE statementsz__BINDMARKER_~~rJ  )r7   r  r¬   rJ  )r'  râ  r›  rä  s       rÚ   Úvisit_dmltargetcopyzSQLCompiler.visit_dmltargetcopye  sI   € ØÐÝÔ"ð7ñô ð ð
 +2ˆ�G”NÔ&Ñ'Ø7 ¤Ô!3Ð7Ð7Ð7Ð7rÜ   c           	     óh  — |r5|j         €.|j        €'| j        � | j                             d¬¦  «        | _        |sß|j                             | j        ¦  «        }	|	j        r¹|	                     |¦  «        }
 | j	        |
fd||o|j
         ||dœ|¤Ž}|j
        rt          j        d|¦  «        }|s
J d¦   «         ‚d|                     d¦  «        ›d|                     d	¦  «        ›d
|                     d¦  «        ›d�}|r | j        |fd|dœ|¤Ž}d|› d�S |S |s|p|j        p|o| j        }|p|j
        }nd}|r | j        |fddi|¤Ž}|j
        rd|› d�}|S |                      |¦  «        }|| j        v rñ| j        |         }||urà|j        s|j        rU|j                             |j        ¦  «        s6|j                             |j        ¦  «        st/          j        d|z  ¦  «        ‚|j
        |j
        k    rt/          j        d|›d�¦  «        ‚|j        s|j        rG|j        r|j        rt/          j        d¦  «        ‚t/          j        d|j        › d|j        › d�¦  «        ‚|x| j        |j        <   | j        |<   | j        }|r@|\  }}|j        D ]3}|j        |v r(||j                 }||                              |¦  «         Œ4|j        rd| _        |r.|rd| _        |r| xj         |hz  c_         n| xj!        |hz  c_!         | j"        |f||j
        |j        dœ|¤Ž}|j
        rd|› d�}|S )NT)ra  )Úskip_bind_expressionrº  Úliteral_bindsrY  Úrender_postcompilez&^(.*)\(__\[POSTCOMPILE_(\S+?)\]\)(.*)$r!  z(__[POSTCOMPILE_r6   rJ  r   z~~REPL~~r-  z~~]))rº  r+  rF  rG  Frº  zIBind parameter '%s' conflicts with unique bind parameter of the same namez"Can't reuse bound parameter name 'zê' in both 'expanding' (e.g. within an IN expression) and non-expanding contexts.  If this parameter is to receive a list/array value, set 'expanding=True' on it for expressions that aren't IN, otherwise use a different parameter name.a)  Encountered unsupported case when compiling an INSERT or UPDATE statement.  If this is a multi-table UPDATE statement, please provide string-named arguments to the values() method with distinct names; support for multi-table UPDATE statements that target multiple tables for UPDATE is very limitedzbindparam() name 'zÌ' is reserved for automatic usage in the VALUES or SET clause of this insert/update statement.   Please use a name other than column name when using bindparam() with insert() or update() (for example, 'b_z').)Úpost_compileÚ	expandingÚbindparam_type)#r  r  rl  rè  r  Údialect_implrÇ  r)  Úbind_expressionrÒ  r£  r€  rw  r    rW  rY  r]  Ú_truncate_bindparamrY  r´   r  Úintersectionr¦  r7   r  Ú_is_crudrJ  rr  rØ  Ú
isoutparamÚhas_out_parametersrf  rn  ro  r  )r'  r
  rº  r   rŸ  rY  r¡  Úis_upsert_setrì  Úimplr¦  ÚwrappedrÔ  r—  r¢  r  Úexistingr#  r¬  r«  r©  r«  s                         rÚ   Úvisit_bindparamzSQLCompiler.visit_bindparamo  sÕ  € ð ð	à”Ð'ØÔ"Ð*ØÔ&Ð2à%)Ô%;×%DÒ%DØ,0ð &Eñ &ô &ˆDÔ"ð $ð $	Ø”>×.Ò.¨t¬|Ñ<Ô<ˆDØÔ(ð "Ø"&×"6Ò"6°yÑ"AÔ"A�Ø&˜$œ,Ø#ðà)-Ø*?Ø"/Ð"K¸	Ô8KÐ4KØ$3Ø'9ðð ð ðð �ð Ô&ð *õ œØAÀ7ñô �Að ÐIÐIÐIÑIÔIÐIÐIàŸš ™
œ
˜
˜
ØŸš ™
œ
˜
˜
ØŸš ™
œ
˜
˜
ð�Gð %ð *Ø;˜dÔ;Ø%ðà26Ø5<ðð ð %ð	ð ˜ð  * 3˜z˜z˜zÐ)à�àð 	!àð DØÔ,ðDà)ÐB¨dÔ.Bð ð
 +ÐA¨iÔ.AˆLˆLà ˆLàð 	Ø/�$Ô/Øðð Ø15ðØ9?ðð ˆCð Ô"ð !Ø ˜#�j�j�j�ØˆJà×'Ò'¨	Ñ2Ô2ˆà�4”:ÐÐØ”z $Ô'ˆHØ˜yÐ(Ð(à”_ð/Ø(1Ô(8ð/à$Ô.×;Ò;Ø!Ô+ñô ð/ð
 %Ô0×=Ò=Ø!Ô-ñô ð/õ Ô*ðAØCGñHñô ð ð Ô'¨9Ô+>Ò>Ð>ÝÔ*Ð*ð :>¸¸ð@ñô ð ð Ô&ð ¨)Ô*<ð ØÔ(ð ¨YÔ-?ð õ "Ô.ð&ñ
ô 
ð 
õ "Ô.ð5°´ð 5ð 5ð #,¤-ð5ð 5ð 5ñ	ô 	ð 	ð 8AÐ@ˆŒ
�9”=Ñ! D¤J¨tÑ$4ð Ô/ˆ
àð 	/Ø#‰JˆD�$ØÔ+ð /ð /�Ø”6˜T�>�>Ø˜bœfœ�BØ˜”H—O’O IÑ.Ô.Ð.øàÔð 	+Ø&*ˆDÔ#àð 	8Ø!ð 0Ø+/�Ô(àð 8ØÐ+Ô+°	¨{Ñ:Ð+Ô+Ð+àÐ(Ô(¨Y¨KÑ7Ð(Ô(à#ˆdÔ#Øð
à%ØÔ)Ø$œ>ð	
ð 
ð
 ð
ð 
ˆð Ôð 	Ø�c�*�*�*ˆCàˆ
rÜ   c                ó   — t          ¦   «         ‚r%  rè  )r'  r!  Ú
dbapi_typer¨  s       rÚ   r3  zSQLCompiler.render_bind_cast  s   € Ý!Ñ#Ô#Ð#rÜ   c                óÖ  — |t           ur|}n¢| j        r!|j        | j        v r| j        |j                 }nz|j        €l|j        €e|                     dd ¦  «        }|r5|t          j        t          j	        fvrt          j        d|j        f¦  «          | j        t          j        fi |¤ŽS |j        }|j        r| j        } ||||¬¦  «        \  }}	|	S |                      ||j        ¦  «        S )NrT  z‰Bound parameter '%s' rendering literal NULL in a SQL expression; comparisons to NULL should not use operators outside of 'is' or 'is not')r+  )r2   r{  rJ  r|  r  r  r×  r%   Úis_Úis_notr*   Úwarn_limitedrÒ  r)   r  r   r£  r/  r:  r  )
r'  r
  r:  r+  rä  r  ÚopÚleeprf  rh  s
             rÚ   rW  z$SQLCompiler.render_literal_bindparam"  s'  € ð  ¥vÐ-Ð-Ø(ˆEˆEØÔ!ð 	. i¤m°tÔ7MÐ&MÐ&Mð Ô*¨9¬=Ô9ˆEˆEàŒÐ&¨9Ô+=Ð+EØ—V’V˜L¨$Ñ/Ô/�Øð ˜"¥Y¤]µIÔ4DÐ$EÐEÐEÝÔ%ð@ð #œÐ(ñ	ô ð ð $�t”|¥HÔ$5Ð<Ð<¸Ð<Ð<Ð<ØÔ-ˆEàÔð 		DØÔJˆDØ*.¨$ØØØ)Að+ñ +ô +Ñ'ˆIÐ'ð
 $Ð#à×,Ò,¨U°I´NÑCÔCÐCrÜ   r  r!  úsqltypes.TypeEngine[Any]c                óž  — |€8|j         s1|                      t          j                             ¦   «         ¦  «        S |                     | j        ¦  «        }|rL	  ||¦  «        S # t          $ r3}t          j	        dt          j        |¦  «        › d|› d�¦  «        |‚d}~ww xY wt          j	        dt          j        |¦  «        › d|› �¦  «        ‚)a  Render the value of a bind parameter as a quoted literal.

        This is used for statement sections that do not accept bind parameters
        on the target driver/database.

        This should be implemented by subclasses using the quoting services
        of the DBAPI.

        Nz Could not render literal value "z" with datatype z); see parent stack trace for more detail.z:No literal value renderer is available for literal value ")Úshould_evaluate_nonerÒ  r#   rT   Ú	_instanceÚ_cached_literal_processorrÇ  r  r7   r  Úsql_utilÚ_repr_single_value)r'  r  r!  Ú	processorÚes        rÚ   r:  z SQLCompiler.render_literal_valueG  s  € ð ˆ= Ô!;ˆ=ð —<’<¥¤× 7Ò 7Ñ 9Ô 9Ñ:Ô:Ð:à×3Ò3°D´LÑAÔAˆ	Øð 	ð	Ø �y Ñ'Ô'Ð'øÝð ð ð ÝÔ&ð#Ý Ô3°EÑ:Ô:ð#ð #ð ð#ð #ð #ñô ð ðøøøøðøøøõ Ô"ð)ÝÔ/°Ñ6Ô6ð)ð )à!&ð)ð )ñô ð s   Á
A# Á#
B Á-.BÂB c                ó´   — || j         v r| j         |         S |j        }t          |t          j        ¦  «        r|                      d|¦  «        }|| j         |<   |S )Nr
  )rZ  rJ  rÐ  r#   rL   rÐ  )r'  r
  rû  s      rÚ   r§  zSQLCompiler._truncate_bindparamn  sb   € Ø˜œÐ'Ð'Ø”? 9Ô-Ð-à”Mˆ	Ý�i¥Ô!:Ñ;Ô;ð 	KØ×2Ò2°;À	ÑJÔJˆIð &/ˆŒ˜	Ñ"àÐrÜ   Úident_classr  rL   c                óˆ  — ||f| j         v r| j         ||f         S |                     | j        ¦  «        }t          |¦  «        | j        dz
  k    rd| j                             |d¦  «        }|dt          | j        dz
  d¦  «        …         dz   t          |¦  «        dd …         z   }|dz   | j        |<   n|}|| j         ||f<   |S )Né   r   r   rD  r6   )	r   Ú	apply_maprŸ  rä  r�  r¡  r×  ÚmaxÚhex)r'  rÃ  r  ÚanonnameÚcounterÚ	truncnames         rÚ   rÐ  z!SQLCompiler._truncated_identifier{  sä   € ð ˜Ð $Ô"6Ð6Ð6ØÔ'¨°dÐ(;Ô<Ð<à—>’> $¤-Ñ0Ô0ˆåˆx‰=Œ=˜4Ô,¨qÑ0Ò0Ð0ØÔ.×2Ò2°;ÀÑBÔBˆGà˜�S Ô!2°QÑ!6¸Ñ:Ô:Ð:Ô;Øñå�g‘,”,˜q˜r˜rÔ"ñ#ð ð
 5<¸a±KˆDÔ$ [Ñ1Ð1à ˆIØ4=ˆÔ˜k¨4Ð0Ñ1ØÐrÜ   c                ó   — || j         z  S r%  ©rŸ  ©r'  r  s     rÚ   Ú
_anonymizezSQLCompiler._anonymize�  s   € Ø�d”mÑ#Ð#rÜ   Úescaped_fromc                óp  — 	 | j         |         S # t          $ r Y nw xY w| j         r| j        }nt          ¦   «         x| _        }||v s||k    r3|| j        v r*|}d}||v s	|| j        v r|dz  }d||fz  }||v °|| j        v °|                     |¦  «         | j                              ||i¦  «        | _         |S )aœ  Record the escaped form of a bind name, uniquifying it against
        the names already in use.

        Distinct bind names can escape to the same string, e.g. parameters
        named ``"a.b"`` and ``"a_b"`` both escape to ``a_b``.  As the escaped
        name is what keys the parameter dictionary handed to the driver, the
        second parameter would otherwise overwrite the first and its value be
        silently discarded.  A counter is appended so that the two remain
        distinct.  The ``.key`` of each :class:`.BindParameter` is untouched,
        so parameter dictionaries passed by the caller are unaffected.

        See :ticket:`13534`.

        r   r   z%s__%d)rp  r¼  rq  r‰   rY  Úaddr¨   )r'  rÐ  r  Úusedr    rÊ  s         rÚ   Ú_escaped_bind_namezSQLCompiler._escaped_bind_name“  s  € ð	ØÔ*¨<Ô8Ð8øÝð 	ð 	ð 	ØˆDð	øøøð Ô"ð 	9ØÔ0ˆDˆDå36±5´5Ð8ˆDÔ)¨Dà�4ˆ<ˆ<˜D LÒ0Ð0°T¸T¼ZÐ5GÐ5GØˆDØˆGØ˜$�,�, $¨$¬*Ð"4Ð"4Ø˜1‘�Ø 4¨ /Ñ1�ð ˜$�,�, $¨$¬*Ð"4Ð"4ð 	�Š�‰ŒˆØ"&Ô"9×"?Ò"?Ø˜4Ð ñ#
ô #
ˆÔð ˆs   ‚ �
›r¢  r£  r¤  úOptional[TypeEngine[Any]]Úaccumulate_bind_namesúOptional[Set[str]]Úvisited_bindparamc                ó¨  ‡ — |�|                      |¦  «         |�|                     |¦  «         |sO‰ j                             |¦  «        r#‰ j                             ˆ fd„|¦  «        }	|}|	}n‰ j        r|‰ j        v r|}|r‰                      ||¦  «        }|rEd|z  }
|r|
S |�8|                     ‰ j	        ¦  «        }|j
        r‰                      |||
¦  «        }
|
S ‰ j        t          j        u r‰ j        d|iz  }
n‰ j        d|iz  }
|�D‰ j	        j        r8|                     ‰ j	        ¦  «        }|j        r‰                      |||
¦  «        }
|
S )Nc                óD   •— ‰j         |                      d¦  «                 S )Nr   )rO  r    )rÔ  r'  s    €rÚ   rò  z.SQLCompiler.bindparam_string.<locals>.<lambda>Ó  s   ø€ ˜dÔ8¸¿ºÀ¹¼ÔD€ rÜ   z__[POSTCOMPILE_%s]r  )rÒ  rØ  rN  r*  rá  rp  rq  rÔ  r*  rÇ  Úrender_literal_castr3  r¹  r†  r‡  r_  r^  r<  )r'  r  r¢  r£  rÐ  r¤  rÖ  rØ  rä  Únew_namer—  Ú	type_impls   `           rÚ   r  zSQLCompiler.bindparam_string¹  sÃ  ø€ ð !Ð,Ø!×%Ò% dÑ+Ô+Ð+ØÐ(Ø×$Ò$ TÑ*Ô*Ð*àð 	$ØÔ&×-Ò-¨dÑ3Ô3ð $ð  Ô2×6Ò6ØDÐDÐDÐDØñô �ð  $�Ø��àÔ'ð$à˜DÔ9Ð9Ð9ð  $�àð 	?Ø×*Ò*¨<¸Ñ>Ô>ˆDØð 	5Ø&¨Ñ-ˆCØð ð �
ð Ð)Ø*×BÒBØ”Lñô �	ð Ô0ð PØ×/Ò/°À	È3ÑOÔO�CØˆJØŒZ�=Ô2Ð2Ð2ØÔ/°6¸4°.Ñ@ˆCˆCàÔ# v¨t nÑ4ˆCð Ð&Ø”Ô6ð 'ð '×>Ò>¸t¼|ÑLÔLˆIØÔ)ð LØ×+Ò+¨N¸IÀsÑKÔK�àˆ
rÜ   c                óº   — |                      ¦   «         }|                     dd ¦  «         t          |j        |j        ¦  «        D ]\  }} |j        | fd|i|¤Ž Œd S )NÚcte_opts)Úcopyr�  r  r)  Ú_independent_ctes_optsrï  )r'  Ústmträ  Úlocal_kwÚcteÚopts         rÚ   r*  z&SQLCompiler._dispatch_independent_ctes  s~   € Ø—7’7‘9”9ˆØ�Š�Z Ñ&Ô&Ð&ÝØÔ" DÔ$?ñ
ô 
ð 	Cð 	C‰HˆC�ð #ˆCÔ" 4ÐBÐB°#ÐB¸ÐBÐBÐBÐBð	Cð 	CrÜ   rä  rc   r±  ÚashintÚ	fromhintsúOptional[_FromHintsType]Úvisiting_cteúOptional[CTE]r@  úOptional[FromLinter]rß  úselectable._CTEOptsc                óÐ  ‡ — ‰                       ¦   «         }	|	‰ j        u sJ ‚||d<   |j        }
t          |
t          j        ¦  «        r‰                      d|
¦  «        }
d}d}|                     ¦   «         }|j        p|j        }|‰ j	        v r�‰ j	        |         \  }}}||
k    sJ ‚||
f}‰ j
        |         }|j        r]|j        rt          j        d¦  «        ‚||
f}|rt          ‰ j        ¦  «        nd}||
fx}}‰ j
        |= |‰ j
        |<   ||fz   ‰ j	        |<   n5|rt          ‰ j        ¦  «        nd}||
f}|‰ j
        v r‰ j
        |         }nd }|�¦||u }||j        u s||u rd}n’||j        u r,|	|= |                     ¦   «         }||u sJ ‚||u sJ ‚‰ j	        |= n]t!          |¦  «        t!          |¦  «        k    s#|j        €|j        �|                     |¦  «        rd}nt          j        d|
z  ¦  «        ‚|s|sd S |j        �D|j        }|j        j        }t          |t          j        ¦  «        r‰                      d|¦  «        }n|}d }|�rQ|‰ j
        |<   ||fz   ‰ j	        |<   |‰ j        vr ‰ j        |fi |¤Ž |�s||	v�r|j        rd‰ _        ‰ j                             ||
¦  «        }|j        s|j        j        rM|j        }d„ |                     d¦  «        D ¦   «         }|d	d
                     ˆ fd„|D ¦   «         ¦  «        z  z  }|                     dd¦  «        du sJ ‚‰ j        s |j        j        ‰ fd|i|¤ŽS  ‰ j        ||j         fi |¤Ž} |j        j        ‰ fddi|¤Ž}|d|›d|›d�z  }|j!        r|d ‰ j        ||j!        fi |¤Žz   z  }||	|<   |rÃ|r|
|j"        | #                    ¦   «         <   |s|r‰ j                             ||
¦  «        S |ri‰ j                             ||¦  «        }‰ j         $                    |
¦  «        r‰ j         %                    |
¦  «        }
|‰  &                    |
¦  «        z  }|S ‰ j                             ||
¦  «        S d S )Nré  rç  TFz6CTE is stated as 'nest_here' in more than one locationr   z5Multiple, unrelated CTEs found with the same name: %rc                ó&   — g | ]\  }}}}}|°
|p|‘ŒS rÖ   rÖ   )rØ   rD  Ú
proxy_nameÚfallback_label_namer³  Úrepeateds         rÚ   r´  z)SQLCompiler.visit_cte.<locals>.<listcomp>œ  sF   € ð "ð "ð "ñØØ&Ø/ØØ$à'ð"ð
 ,Ð9¨zð"ð "ð "rÜ   rW  ré   c              3  óZ   •K  — | ]%}‰j                              |‰j        ¬ ¦  «        V — Œ&dS )rÍ  N)rÀ  Úformat_label_namerŸ  )rØ   Úidentr'  s     €rÚ   rK  z(SQLCompiler.visit_cte.<locals>.<genexpr>­  sW   øè è € ð "ð "ð !&ð !œM×;Ò;Ø %°´ð <ñ ô ð"ð "ð "ð "ð "ð "rÜ   Úsubqueryr±  rë   z
(rG  rL  )'rË  rv  r  rÐ  r#   rL   rÐ  Ú_get_reference_cteÚnestingrx  rw  r7   r  rä  r§  Ú	_restatesÚhashÚ_is_clone_ofÚcompareÚ
_cte_aliasÚ	visit_cteÚ	recursivery  rÀ  Úformat_aliasrâ  Úname_cte_columnsÚ_generate_columns_plus_namesr‘   r×  rï  Ú_generate_prefixesÚ	_prefixesÚ	_suffixesrš  r.   Ú_requires_quotesrë  Úget_render_as_alias_suffix)r'  rä  r±  ræ  rç  ré  r@  rß  rì  Ú	self_ctesÚcte_nameÚ
is_new_cteÚembedded_in_current_named_cteÚ_reference_cter÷  Ú	cte_levelrD  Úexisting_cte_optsÚcte_level_nameÚexisting_cteÚold_level_nameÚnew_level_nameÚexisting_cte_reference_cteÚpre_alias_cteÚcte_pre_alias_namer  Ú
col_sourceÚ
recur_colsÚprefixesr¢   s   `                             rÚ   rý  zSQLCompiler.visit_cte	  sK  ø€ ð ×(Ò(Ñ*Ô*ˆ	Ø˜DœIÐ%Ð%Ð%Ð%à!$ˆˆ~Ñà”8ˆå�h¥Ô 9Ñ:Ô:ð 	EØ×1Ò1°'¸8ÑDÔDˆHàˆ
Ø(-Ð%à×/Ò/Ñ1Ô1ˆà”+Ð1 Ô!1ˆð ˜TÔ3Ð3Ð3Ø.2Ô.DØô/Ñ+ˆI�qÐ+ð ˜’=�=�=�=à'¨Ð2ˆNØÔ2°>ÔBˆLð
 Ôð Ø$Ô,ð ÝÔ*ð1ñô ð ð
 #,¨XÐ!6�Ø/6Ð=�C ¤
™OœO˜O¸A�	Ø3<¸hÐ2GÐG� àÔ+¨NÐ;Ø:F�Ô'¨Ñ7Ø9GØðKñ :�Ô& ~Ñ6øð
 ,3Ð9�˜DœJ™œ˜¸ˆIØ'¨Ð2ˆNà Ô!8Ð8Ð8Ø#Ô6°~ÔF��à#�àÐ#Ø,8¸LÐ,HÐ)ð �lÔ,Ð,Ð,°°|Ð0CÐ0CØ"�
�
Ø ¤Ð.Ð.ð ˜lÐ+à-9×-LÒ-LÑ-NÔ-NÐ*à1°^ÐCÐCÐCÐCØ1°\ÐAÐAÐAÐAàÔ*Ð+EÐFÐFõ
 ˜#‘Y”Y¥$ |Ñ"4Ô"4Ò4Ð4ð  Ô,Ð8Ø+Ô8ÐDð  ŸKšK¨Ñ5Ô5ð  Eð "'�J�Jõ
 Ô*ð,Ø.6ñ7ñô ð ð
 ð 	˜jð 	Ø�4àŒ>Ð%ØœNˆMØ!$¤Ô!4ÐÝÐ,­hÔ.GÑHÔHð Ø%)×%?Ò%?ØÐ/ñ&ô &Ð"øð  ˆMØ!%Ðàñ D	&Ø69ˆDÔ# NÑ3Ø5CØðGñ 6ˆDÔ" >Ñ2ð  D¤IÐ-Ð-Ø�”˜}Ð7Ð7°Ð7Ð7Ð7à%ñ ;&¨#°YÐ*>Ñ*>Ø”=ð /Ø*.�DÔ'Ø”}×1Ò1°#°xÑ@Ô@�Ø”=ð  C¤KÔ$@ð Ø!$¤�Jð
"ð "ð )×EÒEÀdÑKÔKð"ñ "ô "�Jð  ˜FØŸ	š	ð "ð "ð "ð "ð *4ð	"ñ "ô "ñ ô ññ �Dð —z’z *¨eÑ4Ô4¸Ð=Ð=Ð=Ð=à”zð ?ð :˜3œ;Ô9Øðð Ø%+ðØ/5ðð ð ð  7˜tÔ6Ø˜Sœ]ð ð  Ø.4ð ð  �Hð ;˜CœKÔ:Øðð Ø%)ðØ-3ðð �Eð �D¨h¨h¨h¸¸¸Ð>Ñ>�Dà”=ð Ø˜CÐ"9 $Ô"9Ø˜Sœ]ð#ð #Ø.4ð#ð #ñ ñ �Dð "&�	˜#‘àð 	AØð >Ø5=�Ô! #§-¢-¡/¤/Ñ2àð AÐ"?ð AØ”}×1Ò1°#°xÑ@Ô@Ð@à!ð AØ”}×1Ò1°#Ð7IÑJÔJ�Ø”=×1Ò1°(Ñ;Ô;ð =Ø#œ}×2Ò2°8Ñ<Ô<�HØ˜×7Ò7¸ÑAÔAÑA�Ø�à”}×1Ò1°#°xÑ@Ô@Ð@àˆtrÜ   c                ó`   — |j         rd |d<   |j        r | j        |fi |¤ŽS  | j        |fi |¤ŽS )Nr@  )Újoins_implicitlyÚ_is_lateralÚvisit_lateralÚvisit_aliasrù  s      rÚ   Úvisit_table_valued_aliasz$SQLCompiler.visit_table_valued_aliasá  sX   € ØÔ#ð 	%Ø $ˆBˆ}ÑØÔð 	3Ø%�4Ô% gÐ4Ð4°Ð4Ð4Ð4à#�4Ô# GÐ2Ð2¨rÐ2Ð2Ð2rÜ   c                ó   —  | j         |fi |¤ŽS r%  )rô  rù  s      rÚ   Úvisit_table_valued_columnz%SQLCompiler.visit_table_valued_columné  s   € Ø ˆtÔ  Ð/Ð/¨BÐ/Ð/Ð/rÜ   c           
     óX  ‡ ‡‡— |r!d‰vr‰j         sJ ‚‰‰d<   |	rd‰vr	d‰v r|	‰d<   |�1|j        ‰u r( ‰j        j        ‰ f|||||‰dœ‰¤Ž}|r
|s|rd|›d�}|S ‰‰d<   |s|s|
rBt          ‰j        t
          j        ¦  «        r‰                      d‰j        ¦  «        }n‰j        }|r‰ j         	                    ‰|¦  «        S |s|
rÏ|	r||	j
        ‰                     ¦   «         <    ‰j        j        ‰ fd|d	œ‰¤Ž}|rd|›d�}|‰                      ‰ j         	                    ‰|¦  «        ¦  «        z   }‰j        r5‰j        r.|d
d                     ˆˆˆ fd„‰j        D ¦   «         ¦  «        z  z  }|r"‰|v r‰                      |‰|‰         |¦  «        }|S  ‰j        j        ‰ fd|i‰¤ŽS )Nr?  rA  )r±  ræ  Úiscrudrç  ÚlateralÚenclosing_aliasrF  rG  r#  rç  T)r±  r"  rW  ré   c              3  ó¬   •K  — | ]N}‰j                              |j        ¦  «        ›‰j        r d  ‰j        j        j        |j        fi ‰¤Žz  nd›�V — ŒOdS )ú %sr·  N)rÀ  rë  r  Ú_render_derived_w_typesrÇ  r  rÒ  r  )rØ   r  rç  rì  r'  s     €€€rÚ   rK  z*SQLCompiler.visit_alias.<locals>.<genexpr>4  sŸ   øè è € ð ð ð  ð !œM×/Ò/°´Ñ9Ô9Ð9ð $)Ô#@ð	!( Ø"M $¤,Ô"EÔ"MØ$'¤Hð#"ð #"Ø06ð#"ð #"ñ!"ð !"ð
 &(ð!(ð	ðð ð ð ð ð rÜ   r"  )r  râ  rï  rÐ  r  r#   rL   rÐ  rÀ  rÿ  rš  r.   r  Ú_supports_derived_columnsÚ_render_derivedr‘   r³  Úformat_from_hint_text)r'  rç  r±  ræ  r!  rç  rõ  r"  r#  r@  rÔ  rì  r¢   Ú
alias_namer—  s   ``         `   rÚ   r  zSQLCompiler.visit_aliasì  sÞ  øøø€ ð ð 	<Ø"¨&Ð0Ð0ð Ô(Ð(Ð(Ð(Ø.3�Ð*Ñ+ð
 ð<à)°Ð7Ð7Ø'¨6Ð1Ð1à0;�Ð,Ñ-àÐ&¨?Ô+BÀeÐ+KÐ+KØ4�E”MÔ4Øð	àØØØ#ØØ %ð	ð 	ð ð	ð 	ˆEð ð *˜Vð * wð *øØ"' % %Ð)�ØˆLà(-ˆFÐ$Ñ%àð 	(�Vð 	(˜~ð 	(Ý˜%œ*¥hÔ&?Ñ@Ô@ð (Ø!×7Ò7¸ÀÄÑLÔL�
�
à"œZ�
àð -	Ø”=×-Ò-¨e°ZÑ@Ô@Ð@Øð +	�~ð +	Øð BØ7A�Ô! %§/¢/Ñ"3Ô"3Ñ4à4�E”MÔ4ØðØ!¨7ðð Ø6<ðð ˆEð ð *ð *Ø"' % %Ð)�à˜$×9Ò9Ø”×*Ò*¨5°*Ñ=Ô=ñô ñ ˆCð Ô.ð °5Ô3Hð Ø�vØ—I’Ið ð ð ð ð ð ð $)¤7ðñ ô ñ ô ññ �ð$ ð ˜U iÐ/Ð/Ø×0Ò0Ø˜ 	¨%Ô 0°&ñô �ð ˆJð 4�5”=Ô3Øðð Ø%ðØ)/ðð ð rÜ   c                ó(   — d|d<    | j         |fi |¤ŽS )NTrõ  ©r  )r'  rõ  rä  s      rÚ   Úvisit_subqueryzSQLCompiler.visit_subqueryQ  s&   € Øˆˆ:‰ØˆtÔ Ð/Ð/¨BÐ/Ð/Ð/rÜ   c                ó.   — d|d<   d | j         |fi |¤Žz  S )NTr"  z
LATERAL %sr,  )r'  Úlateral_rä  s      rÚ   r  zSQLCompiler.visit_lateralU  s,   € Øˆˆ9‰ØÐ.˜dÔ.¨xÐ>Ð>¸2Ð>Ð>Ñ>Ð>rÜ   c                ó¬   —  | j         |fddi|¤Ž›d |                     ¦   «         j        | fi |¤Ž›�}|j        �|d |j        j        | fi |¤Žz  z  }|S )Nr±  Tz TABLESAMPLE z REPEATABLE (%s))r  Ú_get_methodrï  Úseed)r'  Útablesampler±  rä  r  s        rÚ   Úvisit_tablesamplezSQLCompiler.visit_tablesampleY  s’   € àˆDÔ˜[Ð<Ð<°Ð<¸Ð<Ð<Ð<Ð<Ø8ˆK×#Ò#Ñ%Ô%Ô8¸ÐDÐDÀÐDÐDÐDð
ˆð
 ÔÐ'ØÐ&Ø3�Ô Ô3°DÐ?Ð?¸BÐ?Ð?ññ ˆDð ˆrÜ   c                ó˜   ‡ ‡‡— ‰                      d‰j        ¦  «         d                     ˆˆˆ fd„‰j        D ¦   «         ¦  «        }d|› �S )Nr   ré   c           	   3  óŠ   •K  — | ]=}|D ]8} ‰j         t          j        |d ‰j        iŽ                     ¦   «         fi ‰¤ŽV — Œ9Œ>dS )r	  N)rÒ  r#   r   Ú_column_typesr"  )rØ   ÚchunkÚelemrâ  rä  r'  s      €€€rÚ   rK  z-SQLCompiler._render_values.<locals>.<genexpr>h  s“   øè è € ð 	
ð 	
ð Øð	
ð 	
ð ð ˆDŒLÝ”Ø26ðØ!Ô/ðð ç’*‘,”,ðð ð ð	ð ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
rÜ   r  )Ú
setdefaultr   r‘   Ú_data)r'  râ  rä  Útupless   ``` rÚ   Ú_render_valueszSQLCompiler._render_valuesf  ss   øøø€ Ø
�Š�o wÔ'<Ñ=Ô=Ð=Ø—’ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð !œð	
ñ 	
ô 	
ñ 	
ô 	
ˆð "˜Ð!Ð!Ð!rÜ   c           
     ó‚  ‡ ‡— |j         r‰                      |‰¦  «          ‰ j        |fi ‰¤Ž}|j        rd }nBt	          |j        t          j        ¦  «        r‰                      d|j        ¦  «        }n|j        }|j	        rd}nd}|r·|r |�|nd|j
        |                     ¦   «         <   |�%|j        |u r|j	        rt          j        d¦  «        ‚nn|rdd‰d<   |›d|›d	‰                      ‰ j                             |¦  «        ¦  «        ›d
d                     ˆˆ fd„|j        D ¦   «         ¦  «        ›d	�}n|›d|›d	�}|S )Nrö  zLATERAL r·  z(unnamed VALUES element)z5Can't use a LATERAL VALUES expression inside of a CTEFrã  rF  rG  ú (ré   c              3  ó4   •K  — | ]} |j         ‰fi ‰¤ŽV — Œd S r%  rî  rG  s     €€rÚ   rK  z+SQLCompiler.visit_values.<locals>.<genexpr>›  sL   øè è € ð "ð "à !ð 1˜AÔ0°Ð<Ð<¸Ð<Ð<ð"ð "ð "ð "ð "ð "rÜ   )r)  r*  r=  Ú_unnamedrÐ  r  r#   rL   rÐ  r  rš  r.   râ  r7   r  r  rÀ  rë  r‘   Úcolumns)	r'  râ  r±  r@  ré  rä  r”  r  r"  s	   `    `   rÚ   Úvisit_valueszSQLCompiler.visit_valuest  sÇ  øø€ ð Ô$ð 	9Ø×+Ò+¨G°RÑ8Ô8Ð8àˆDÔ Ð.Ð.¨2Ð.Ð.ˆàÔð 	 ØˆDˆDÝ˜œ¥hÔ&?Ñ@Ô@ð 	 Ø×-Ò-¨h¸¼ÑEÔEˆDˆDà”<ˆDàÔð 	Ø ˆGˆGàˆGàð 	,Øð à Ð,�D�DÐ2Lð Ô! '×"3Ò"3Ñ"5Ô"5Ñ6ð Ð'¨LÔ,@ÀGÐ,KÐ,KØÔ&ð ÝÔ*ØOñô ð ðð ð ,Ø&+��?Ñ#à�G�GØ�A�AØ×3Ò3°D´M×4GÒ4GÈÑ4MÔ4MÑNÔNÐNÐNàŸ	š	ð "ð "ð "ð "ð "à%,¤_ð"ñ "ô "ñ ô ð ð ð
��ð !(  ¨¨¨Ð+�ØˆrÜ   c                ó&   — d | j         |fi |¤Ž› d�S r®  )r=  rù  s      rÚ   Úvisit_scalar_valueszSQLCompiler.visit_scalar_values¥  s)   € Ø8Ð&�4Ô& wÐ5Ð5°"Ð5Ð5Ð8Ð8Ð8Ð8rÜ   c                ó   — d|z   S )Nrë   rÖ   )r'  Úalias_name_texts     rÚ   r  z&SQLCompiler.get_render_as_alias_suffix¨  s   € Ø˜Ñ'Ð'rÜ   r  r  r  c                óÄ   — |sJ ‚|�|dk    rd| _         d| _        |j        rt          j        d¦  «        ‚| j                             t          ||||¦  «        ¦  «         d S )NÚ*FTzxMost backends don't support SELECTing from a tuple() object.  If this is an ORM query, consider using the Bundle object.)rc  rb  r  r7   r  r»  rØ  r  r&  s        rÚ   r,  zSQLCompiler._add_to_result_map«  s‡   € ð ˆˆˆàˆ?˜g¨šn˜nØ$)ˆDÔ!Ø#'ˆDÔ ØÔð 	ÝÔ"ð4ñô ð ð
 	Ô×#Ò#Ý˜w¨¨g°uÑ=Ô=ñ	
ô 	
ð 	
ð 	
ð 	
rÜ   c                ó.   —  | j         d||d|€i n|fi |¤ŽS )aL  Render a column with necessary labels inside of a RETURNING clause.

        This method is provided for individual dialects in place of calling
        the _label_select_column method directly, so that the two use cases
        of RETURNING vs. SELECT can be disambiguated going forward.

        .. versionadded:: 1.4.21

        NF©Ú_label_select_column)r'  râ  r¬   r2  Úcolumn_clause_argsrä  s         rÚ   Ú_label_returning_columnz#SQLCompiler._label_returning_columnÄ  sC   € ð )ˆtÔ(ØØØØØ$Ð,ˆBˆBÐ2Dð
ð 
ð ð
ð 
ð 	
rÜ   c                ó\  ‡‡— ‰j                              | j        ¦  «        }|j        r|s|r|                     ‰¦  «        }n‰}|r| j        }|
r|Šˆfd„}n|‰ur|Šˆˆfd„}nd}|	s
J d¦   «         ‚t          ‰t          j        ¦  «        r'|‰urt          |‰j
        ‰j        f¬¦  «        }�nW|}�nS|r'|€
J d¦   «         ‚t          |||‰j        f¬¦  «        }�n*|‰urd}nÎt          ‰t          j        ¦  «        r|o‰j         o‰j        du}n t          ‰t          j        ¦  «        rd}nƒt          ‰t          j        ¦  «        rC‰j        t&          j        t&          j        fv o| j        j         p‰                     ¦   «         p|}n&t          ‰t          j        ¦  «        s
‰j        €d}nd}|rQ|s|
rJ ‚‰j        }t          |t          j        ¦  «        st          j        |¦  «        n|}t          |||f¬¦  «        }n|}|                     |	||d¬	¦  «          |j        | fi |¤ŽS )
z.produce labeled columns present in a select().c                ó&   •—  ‰| || f|¦  «         d S r%  rÖ   )r  r  r  r!  r,  s       €rÚ   r¡  z;SQLCompiler._label_select_column.<locals>.add_to_result_mapÿ  s"   ø€ Ø&Ð& w°°w°jÀ%ÑHÔHÐHÐHÐHrÜ   c                ó,   •—  ‰| |‰f|z   |¦  «         d S r%  rÖ   )r  r  r  r!  r,  r¬   s       €€rÚ   r¡  z;SQLCompiler._label_select_column.<locals>.add_to_result_map  s2   ø€ Ø&Ð&Ø ¨ y°7Ñ':¸Eñô ð ð ð rÜ   NzX_label_select_column is only relevant within the columns clause of a SELECT or RETURNING)r  z*proxy_name is required if 'name' is passedTF)rº  r¡  rã  rÔ  )r  r¥  rÇ  Ú_has_column_expressionÚcolumn_expressionr,  rÐ  r#   rS   r  r  râ  ré  rP   rè  r§   Ú
TextClauseÚUnaryExpressionrx  r%   Úis_falseÚis_truer=  Ú_wraps_unnamed_columnÚNamedColumnÚ_non_anon_labelÚ_anon_name_labelrL   r¦  rï  )r'  r³   r¬   r2  r±  rM  r  rï  rð  rº  Úcolumn_is_repeatedÚneed_column_expressionsrã  r­  Úcol_exprr¡  Úresult_exprÚrender_with_labelr,  s     `               @rÚ   rL  z SQLCompiler._label_select_columnÙ  sz  øø€ ð  Œ{×'Ò'¨¬Ñ5Ô5ˆàÔ&ð 	Ø#ð	Ø':ð	ð ×-Ò-¨fÑ5Ô5ˆHˆHàˆHàð 	%ð
 !%Ô 7Ðð
 "ð Ø%6Ð"ðIð Ið Ið Ið Ið Ið
  Ð'Ð'Ø%6Ð"ðð ð ð ð ð øð !%Ðð %ð 	
ð 	
ð:ñ	
ô 	
ð 	
õ �f�hœnÑ-Ô-ð I	'Ø˜vÐ%Ð%Ý+Ø˜fœk°f´nÐ5Fðñ ô �‘ð '�‘àð A	'ð Ð&Ð&Ø;ñ 'Ô&Ð&õ (ØØàð Ô$ððñ ô ˆK‰Kð& ˜vÐ%Ð%ð %)Ð!Ð!Ý˜F¥HÔ$9Ñ:Ô:ð I*ð ð 1Ø"Ô-Ð-ð1àœ¨DÐ0ð "Ð!õ
 ˜F¥HÔ$7Ñ8Ô8ð A*Ø$)Ð!Ð!Ý˜F¥HÔ$<Ñ=Ô=ð ?*ðP œÝ%Ô.µ	Ô0AÐBðCð Eà $¤Ô DÐDð
ð ×3Ò3Ñ5Ô5ð
ð ð "Ð!õ" ˜v¥xÔ';Ñ<Ô<ð	*ð Ô*Ð2à$(Ð!Ð!à$)Ð!à ð 'Ø*ð Bð
  2Ð1Ð1Ð1Ø*0Ô*AÐ'õ &Ø+­XÔ-Fñô ð-•HÔ-Ð.AÑBÔBÐBð -ð $õ ,ØÐ1¸j¸]ðñ ô ��ð '�à×!Ò!Ø"7Ø/Ø'Ø ð	 	"ñ 	
ô 	
ð 	
ð .ˆ{Ô-¨dÐIÐIÐ6HÐIÐIÐIrÜ   c                óF   — |                       ||¦  «        }|r|d|z   z  }|S r\  )Úget_from_hint_text)r'  r¨  r§   Úhintr!  Úhinttexts         rÚ   r)  z!SQLCompiler.format_from_hint_text­  s2   € Ø×*Ò*¨5°$Ñ7Ô7ˆØð 	&Ø�s˜X‘~Ñ%ˆGØˆrÜ   c                ó   — d S r%  rÖ   )r'  Úbyfromss     rÚ   Úget_select_hint_textz SQLCompiler.get_select_hint_text³  ó   € ØˆtrÜ   r§   rd   r  c                ó   — d S r%  rÖ   ©r'  r§   r  s      rÚ   rb  zSQLCompiler.get_from_hint_text¶  s	   € ð ˆtrÜ   c                ó   — d S r%  rÖ   rj  s      rÚ   Úget_crud_hint_textzSQLCompiler.get_crud_hint_text»  rh  rÜ   c                ó,   — d                      |¦  «        S r\  rH  )r'  Ú
hint_textss     rÚ   Úget_statement_hint_textz#SQLCompiler.get_statement_hint_text¾  s   € Ø�xŠx˜
Ñ#Ô#Ð#rÜ   r5  r(  r2  r1  c                ó  — | j          }|r| j        n| j         d         }|                     || ¦  «        }|d         }|d         }	|r-|s+|                     |                     |	¦  «        d¬¦  «        }
n|                     ||	¬¦  «        }
|
S )Nrº  r2  r1  rÖ   ©Úexplicit_correlate_fromsÚimplicit_correlate_froms)r§  r(  rÒ  Ú_get_display_fromsÚ
difference)r'  Úselect_stmtr±  r"  rä  r0  rÏ  r6  r2  r1  rš  s              rÚ   Ú_display_froms_for_selectz%SQLCompiler._display_froms_for_selectÈ  s¾   € ð ”z�>ˆØ-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆà#×:Ò:¸;ÈÑMÔMˆàÐ 1Ô2ˆØ˜^Ô,ˆàð 	˜'ð 	Ø!×4Ò4Ø)8×)CÒ)CØ ñ*ô *ð *,ð	 5ñ ô ˆEˆEð "×4Ò4Ø)8Ø)5ð 5ñ ô ˆEð ˆrÜ   Útranslate_select_structurec	           
     óÜ  ‡ ‡‡‡‡‡‡— |�
J d¦   «         ‚‰ j         r‰                      ‰¦  «         d|	d<    ‰j        ‰‰ fi |	¤Ž}
|
j        |	d<   |
j        Š‰ j         }|r‰ j        s|
‰ _        |d up|}‰ j        r0 ‰ j        ‰fd‰i|	¤Ž}|‰ur|
}‰}|Š ‰j        ‰‰ fi |	¤Ž}
|
j        Š|r‰ j        n‰ j        d         }|p+| 	                    dd¦  «        p| 	                    dd¦  «        xŠŠ|rdŠ‰sd	|	v r|	d	= ‰  
                    ‰|
|‰||¦  «        }|	                     ¦   «         Š‰                     ddd
œ¦  «         d}‰j        � ‰ j        ‰j        fi |	¤Ž}|�||dz   z  }‰j        r#‰                      ‰¦  «        \  }}|r||dz   z  }nd }‰j        r‰                      ‰|	¦  «         ‰j        r| ‰ j        ‰‰j        fi |	¤Žz  }| ‰ j        ‰fi |	¤Žz  }‰j        � ‰ j        ‰j        fi |	¤Ž}|�||dz   z  }d„ ˆˆˆˆˆˆ fd„|
j        D ¦   «         D ¦   «         }‰rU|�St1          t3          d„ |
j        D ¦   «         d„ |j        D ¦   «         ¦  «        ¦  «        Šˆfd„‰ j        D ¦   «         ‰ _        ‰                      |‰|
|||||	¦  «        }‰j        � ‰ j        ‰j        fi |	¤Ž}|r|d|z   z  }‰j        r0ˆ fd„‰j        D ¦   «         }|r|d‰                      |¦  «        z   z  }‰ j        r5|r|r1|stA          ‰ j        ¦  «        nd }‰  !                    |¬¦  «        |z   }‰j"        r|d ‰ j        ‰‰j"        fi |	¤Žz   z  }‰ j         #                    d¦  «         |S )NzpSQLAlchemy 1.4 requires use of the translate_select_structure hook for structural translations of SELECT objectsFrº  rä  r±  rº  r9  r8  r¡  )rÏ  rº  zSELECT rL  c                ó   — g | ]}|®|‘ŒS r%  rÖ   r²  s     rÚ   r´  z,SQLCompiler.visit_select.<locals>.<listcomp>f  s)   € ð 
ð 
ð 
àð* ˆ}ð- ð, ˆ}ˆ}rÜ   c                óZ   •— g | ]'\  }}}}}‰                      ‰
|‰	‰‰||||‰¬ ¦
  «
        ‘Œ(S ))r  rï  rð  r\  r]  rK  )rØ   r  rï  rð  r¬   rñ  r±  rM  r]  r2  rv  r'  s         €€€€€€rÚ   r´  z,SQLCompiler.visit_select.<locals>.<listcomp>h  sm   ø€ ð ð ð ñØØØ'ØØð# ×)Ò)ØØØ'ØØ&ØØ)Ø(;Ø'/Ø,Cð *ñ ô ðð ð rÜ   c                ó   — g | ]
\  }}}}}|‘ŒS rÖ   rÖ   ©rØ   rJ  rï  rð  r  rñ  s         rÚ   r´  z,SQLCompiler.visit_select.<locals>.<listcomp>†  ó9   € ð 	ð 	ð 	ñØØ&Ø/Ø Ø$ð ð	ð 	ð 	rÜ   c                ó   — g | ]
\  }}}}}|‘ŒS rÖ   rÖ   r}  s         rÚ   r´  z,SQLCompiler.visit_select.<locals>.<listcomp>�  r~  rÜ   c           
     óp   •— g | ]2\  }}}}t          ||t          ˆfd „|D ¦   «         ¦  «        |¦  «        ‘Œ3S )c              3  óD   •K  — | ]}‰                      ||¦  «        V — Œd S r%  rß  )rØ   Úor¤  s     €rÚ   rK  z6SQLCompiler.visit_select.<locals>.<listcomp>.<genexpr>Ÿ  s1   øè è € Ð$FÐ$F¸Q Y§]¢]°1°aÑ%8Ô%8Ð$FÐ$FÐ$FÐ$FÐ$FÐ$FrÜ   )r  rM  )rØ   rJ  r  rë  r!  r¤  s        €rÚ   r´  z,SQLCompiler.visit_select.<locals>.<listcomp>�  sc   ø€ ð $ð $ð $ñ *�C˜˜s Eõ #Ø˜�uÐ$FÐ$FÐ$FÐ$FÀ#Ð$FÑ$FÔ$FÑFÔFÈñô ð$ð $ð $rÜ   c                ó:   •— g | ]\  }}|d ‰j         j        fv ¯|‘ŒS ©rI  ©rÇ  r  )rØ   Údialect_nameÚhtr'  s      €rÚ   r´  z,SQLCompiler.visit_select.<locals>.<listcomp>µ  s<   ø€ ð ð ð á&�\ 2Ø C¨¬Ô):Ð#;Ð;Ð;ð à;Ð;Ð;rÜ   r&  )$r{  rÇ  rÒ  Ú_ambiguous_table_name_mapr@  r§  r6  rx  r(  r×  Ú_setup_select_stackrà  r¦  Ú_post_select_clauserÒ  Ú_hintsÚ_setup_select_hintsr)  r*  r  r  Úget_select_precolumnsÚ_pre_columns_clauseÚcolumns_plus_namesr  r  r»  Ú_compose_select_bodyÚ_post_body_clauseÚ_statement_hintsro  rv  rä  r-  r  r�  )r'  rv  r±  Úinsert_intorç  r/  Úselect_wraps_forr"  r@  rì  r6  r0  Úis_embedded_selectÚnew_select_stmtÚcompile_state_wraps_forrÏ  rš  r  ÚpscÚ	hint_textÚbyfromÚpccÚinner_columnsÚpbcÚper_dialectr'  rM  r]  r2  r¤  s   ```                       @@@@rÚ   Úvisit_selectzSQLCompiler.visit_selectì  sÕ  øøøøøøø€ ð  Ð'Ð'ð-ñ (Ô'Ð'ð
 Ôð 	-Ø×Ò Ñ,Ô,Ð,ð +0ˆÐ&Ñ'à:˜Ô:Ø˜ð
ð 
Ø!'ð
ð 
ˆð Ô3ð 	Ð)Ñ*ð $Ô-ˆà”z�>ˆàð 	/˜DÔ.ð 	/Ø!.ˆDÔà+°4Ð7ÐF¸;Ðð
 Ô*ð 	6Ø=˜dÔ=Øðð Ø$*ðØ.4ðð ˆOð  kÐ1Ð1Ø*7Ð'Ø#.Ð Ø-�à B Ô BØ ð!ð !Ø)/ð!ð !�ð ,Ô5�à-5ÐI�Ô)Ð)¸4¼:Àb¼>ˆð ð >Ø�yŠyÐ7¸Ñ?Ô?ð>à�yŠyÐ5°uÑ=Ô=ð	
ÐÐ5ð ð 	(Ø"'Ðð
 #ð 	,Ð':¸fÐ'DÐ'DØÐ*Ð+à×(Ò(Ø˜¨¨v°wÀñ
ô 
ˆð $Ÿ[š[™]œ]ÐØ×!Ò!Ø$)ÀEÐJÐJñ	
ô 	
ð 	
ð ˆàÔ*Ð6Ø�$”,˜{Ô>ÐIÐIÀ&ÐIÐIˆCØˆØ˜˜c™	Ñ!�àÔð 	Ø $× 8Ò 8¸Ñ EÔ EÑˆI�vØð (Ø˜	 C™Ñ'�øàˆFàÔ(ð 	AØ×+Ò+¨K¸Ñ@Ô@Ð@àÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø6<ðð ñ ˆDð 	Ð*�Ô*¨;ÐAÐA¸&ÐAÐAÑAˆàÔ*Ð6Ø�$”,˜{Ô>ÐIÐIÀ&ÐIÐIˆCØˆØ˜˜c™	Ñ!�ð
ð 
ðð ð ð ð ð ð ð ð ð& #Ô5ð'ñ ô ð
ñ 
ô 
ˆð4 ð "	Ð#3Ð#?õ Ýð	ð 	ð +Ô=ð	ñ 	ô 	ð	ð 	ð 5ÔGð	ñ 	ô 	ñô ñô ˆIð2$ð $ð $ð $ð .2Ô-Að	$ñ $ô $ˆDÔ ð ×(Ò(ØØØØØØØØñ	
ô 	
ˆð Ô(Ð4Ø�$”,˜{Ô<ÐGÐGÀÐGÐGˆCØð "Ø˜˜c™	Ñ!�àÔ'ð 	Hðð ð ð à*5Ô*Fðñ ô ˆKð
 ð HØ˜˜d×:Ò:¸;ÑGÔGÑGÑG�ð Œ9ð 	OÐ0ð 	O°Hð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàÔ ð 	Ø�CÐ1˜$Ô1Ø˜[Ô2ðð Ø6<ðð ñ ñ ˆDð 	Œ
�Š�rÑÔÐàˆrÜ   r³   r;  úTuple[str, _FromHintsType]c                ó€   ‡ — ˆ fd„|j                              ¦   «         D ¦   «         }‰                      |¦  «        }||fS )Nc           	     óv   •— i | ]5\  \  }}}|d ‰j         j        fv ¯||d|                     ‰d¬¦  «        iz  “Œ6S )rI  r  T)ræ  ©rÇ  r  rï  )rØ   r®  rÇ  rd  r'  s       €rÚ   rŽ  z3SQLCompiler._setup_select_hints.<locals>.<dictcomp>Î  sh   ø€ ð 
ð 
ð 
ñ +Ñ �˜ (Ø˜3 ¤Ô 1Ð2Ð2Ð2ð �8Ø�u×/Ò/°¸TÐ/ÑBÔBÐCñDð 3Ð2Ð2rÜ   )r‹  r§  rg  )r'  r³   rš  r™  s   `   rÚ   rŒ  zSQLCompiler._setup_select_hintsË  s[   ø€ ð
ð 
ð 
ð 
ð /5¬m×.AÒ.AÑ.CÔ.Cð
ñ 
ô 
ˆð ×-Ò-¨fÑ5Ô5ˆ	Ø˜&Ð Ð rÜ   c           	     ó.  — |d         }|d         }|dk    r||d<   nf|rd|d         }	t          |	j        ¦  «        }
t          |j        ¦  «        |
k    r0t          j        dd|
|dz   t          |j        ¦  «        fz  ¦  «        ‚|r-|s+|                     |                     |¦  «        d¬¦  «        }n|                     ||¬¦  «        }t          t          |Ž ¦  «        }| 	                    |¦  «        }||||d	œ}| j
                             |¦  «         |S )
Nr2  r1  r   r:  z}All selectables passed to CompoundSelect must have identical numbers of columns; select #%d has %d columns, select #%d has %dr   rÖ   rq  )r1  r2  r(   r6  )rä  rµ  r�  r7   r  rt  ru  r‰   r/   r¨   r§  rØ  )r'  r³   r6  rÏ  r±  r"  r/  r2  r1  r:  Únumcolsrš  Únew_correlate_fromsÚall_correlate_fromsr1  s                  rÚ   r‰  zSQLCompiler._setup_select_stack×  su  € ð  Ð 1Ô2ˆØ˜^Ô,ˆà˜QÒÐØ &ˆE�*ÑÐØð 	Ø˜ZÔ(ˆHÝ˜(Ô8Ñ9Ô9ˆGå�=Ô3Ñ4Ô4¸Ò?Ð?ÝÔ&ð!ð
 ØØ&¨Ñ*Ý˜FÔ8Ñ9Ô9ð	ñ		ñô ð ð ð 	˜'ð 	Ø!×4Ò4Ø)8×)CÒ)CØ ñ*ô *ð *,ð	 5ñ ô ˆEˆEð "×4Ò4Ø)8Ø)5ð 5ñ ô ˆEõ
 "¥-°Ð"7Ñ8Ô8ÐØ1×7Ò7¸ÑHÔHÐð 0Ø2Ø Ø*ð	*
ð *
ˆ	ð 	Œ
×Ò˜)Ñ$Ô$Ð$àˆrÜ   c	                ó²  ‡ ‡‡‡— |d                      |¦  «        z  }‰ j        t          z  r5t          i t	          ¦   «         ¦  «        Š‰ j        t
          z  }	|r‰‰ _        nd Šd}	|s|                     ¦   «         }|r[|dz  }|j        r(|d                      ˆˆˆˆ fd„|D ¦   «         ¦  «        z  }n>|d                      ˆˆˆ fd„|D ¦   «         ¦  «        z  }n|‰  	                    ¦   «         z  }|j
        r ‰ j        |j
        fd‰i‰¤Ž}
|
r|d|
z   z  }|	r‰€J ‚‰                     ¦   «          |j        r| ‰ j        |fi ‰¤Žz  }|j        r ‰ j        |j        fi ‰¤Ž}
|
r|d|
z   z  }|j        � ‰ j        |j        fi ‰¤Ž}|�|d	|z   z  }|j        r| ‰ j        |fi ‰¤Žz  }|j        r| ‰ j        |fi ‰¤Žz  }|j        �| ‰ j        |fi ‰¤Žz  }|S )
Nré   Fz 
FROM c           	     ó4   •— g | ]} |j         ‰fd ‰‰dœ‰¤Ž‘ŒS )T)r±  rç  r@  rî  )rØ   Úfrš  r@  rì  r'  s     €€€€rÚ   r´  z4SQLCompiler._compose_select_body.<locals>.<listcomp>0  sZ   ø€ ð 	ð 	ð 	ð ð -˜Ô,Ø ðà#'Ø&,Ø(3ð	ð ð
 %ðð ð	ð 	ð 	rÜ   c                ó2   •— g | ]} |j         ‰fd ‰dœ‰¤Ž‘ŒS )T©r±  r@  rî  )rØ   rª  r@  rì  r'  s     €€€rÚ   r´  z4SQLCompiler._compose_select_body.<locals>.<listcomp>=  sW   ø€ ð ð ð ð ð -˜Ô,Ø ðà#'Ø(3ðð ð %ð	ð ðð ð rÜ   r@  z 
WHERE z	 
HAVING z 
)r‘   r†  r�  r‘  r‰   rŽ  r@  Úrstripr‹  rŸ  Ú_where_criteriarT  r°  Ú_group_by_clausesrÖ  Ú_having_criteriaÚ_post_criteria_clauserÒ  Ú_order_by_clausesr×  rØ  rÙ  Ú_for_update_argÚfor_update_clause)r'  r  r³   r6  rœ  rš  rš  r0  rì  Úwarn_lintingÚtr›  r@  s   `     ` `   @rÚ   r�  z SQLCompiler._compose_select_body  s   øøøø€ ð 	�—	’	˜-Ñ(Ô(Ñ(ˆàŒ<Õ4Ñ4ð 	!Ý$ R­©¬Ñ/Ô/ˆKØœ<­,Ñ6ˆLØð /Ø#.�Ô øàˆKØ ˆLð ð 	!Ø—;’;‘=”=ˆDàð 	(Ø�JÑˆDàŒ}ð Ø˜Ÿ	š	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð "'ð	ñ 	ô 	ñô ñ ��ð ˜Ÿ	š	ðð ð ð ð ð ð "'ðñ ô ñ
ô 
ñ 
��ð �D×%Ò%Ñ'Ô'Ñ'ˆDàÔ!ð 	(Ø1�Ô1ØÔ&ðð Ø4?ðØCIðð ˆAð ð (Ø˜ a™Ñ'�àð 	ØÐ*Ð*Ð*Ø×ÒÑÔÐàÔ#ð 	;ØÐ(�DÔ(¨Ð:Ð:°6Ð:Ð:Ñ:ˆDàÔ"ð 	)Ø1�Ô1ØÔ'ðð Ø+1ðð ˆAð ð )Ø˜ qÑ(Ñ(�àÔ'Ð3Ø�$”,˜vÔ;ÐFÐF¸vÐFÐFˆCØˆØ˜ ™Ñ#�àÔ#ð 	;ØÐ(�DÔ(¨Ð:Ð:°6Ð:Ð:Ñ:ˆDàÔ*ð 	=ØÐ*�DÔ*¨6Ð<Ð<°VÐ<Ð<Ñ<ˆDàÔ!Ð-ØÐ*�DÔ*¨6Ð<Ð<°VÐ<Ð<Ñ<ˆDàˆrÜ   c                ó\   ‡ ‡— d                      ˆˆ fd„|D ¦   «         ¦  «        }|r|dz  }|S )NrL  c              3  ób   •K  — | ])\  }}|d v s|‰j         j        k    ¯ |j        ‰fi ‰¤ŽV — Œ*dS ))NrI  Nr£  )rØ   Úprefixr†  rä  r'  s      €€rÚ   rK  z1SQLCompiler._generate_prefixes.<locals>.<genexpr>p  sb   øè è € ð 
ð 
á$�˜Ø˜{Ð*Ð*¨l¸d¼lÔ>OÒ.OÐ.Oð &ˆFÔ% dÐ1Ð1¨bÐ1Ð1à.OÐ.OÐ.OÐ.Oð
ð 
rÜ   rH  )r'  râ  r  rä  ro  s   `  ` rÚ   r  zSQLCompiler._generate_prefixeso  sZ   øø€ Ø—’ð 
ð 
ð 
ð 
ð 
à(0ð
ñ 
ô 
ñ 
ô 
ˆð
 ð 	Ø�c‰MˆFØˆrÜ   c                ó0  — | j         sdS |rš|dk    r”t          j        ¦   «         }t          | j                              ¦   «         ¦  «        D ]Y}| j        |                     ¦   «                  \  }}}|j        p|j        }||k    p
|o||dz   k    }	|r|	sŒI| j         |         ||<   ŒZn| j         }|sdS t          d„ |D ¦   «         ¦  «        }
|  	                    |
¦  «        dz   }|d 
                    d„ |                     ¦   «         D ¦   «         ¦  «        z  }|dz  }|ry|dk    rst          |                     ¦   «         ¦  «        D ]Q}| j        |                     ¦   «                  \  }}}| j         |= | j        ||f= | j        |                     ¦   «         = ŒR|S )zå
        include_following_stack
            Also render the nesting CTEs on the next stack. Useful for
            SQL structures like UNION or INSERT that can wrap SELECT
            statements containing nesting CTEs.
        r·  r   c                ó   — g | ]	}|j         ‘Œ
S rÖ   )rþ  )rØ   rä  s     rÚ   r´  z2SQLCompiler._render_cte_clause.<locals>.<listcomp>�  s   € Ð<Ð<Ð<°˜cœmÐ<Ð<Ð<rÜ   rL  ú, 
c                ó   — g | ]}|‘ŒS rÖ   rÖ   )rØ   Útxts     rÚ   r´  z2SQLCompiler._render_cte_clause.<locals>.<listcomp>   s   € Ð >Ð >Ð >¨ Ð >Ð >Ð >rÜ   z
 )rv  r*   rÊ  r¿  Úkeysrx  rö  r÷  r�   Úget_cte_preambler‘   rö  rw  )r'  r'  rÑ  rv  rä  r  r  rß  r÷  Úis_rendered_levelry  Úcte_texts               rÚ   r-  zSQLCompiler._render_cte_clausey  sí  € ð Œyð 	Ø�2ð ð 	˜]¨QÒ.Ð.ÝÔ#Ñ%Ô%ˆDÝ˜DœIŸNšNÑ,Ô,Ñ-Ô-ð +ð +�Ø04Ô0FØ×*Ò*Ñ,Ô,ô1Ñ-�	˜8 Xð œ+Ð9¨Ô)9�Ø$-°Ò$>ð %Ø+ÐN°	¸]ÈQÑ=NÒ0Nð "ð  ð Ð$5ð Øà œI cœN��S‘	�	ð+ð ”9ˆDàð 	Ø�2ÝÐ<Ð<°tÐ<Ñ<Ô<Ñ=Ô=ˆà×(Ò(¨Ñ8Ô8¸3Ñ>ˆØ�F—K’KÐ >Ð >°·²±´Ð >Ñ >Ô >Ñ?Ô?Ñ?ˆØ�EÑˆàð 	E˜]¨QÒ.Ð.Ý˜DŸIšI™KœKÑ(Ô(ð Eð E�Ø04Ô0FØ×*Ò*Ñ,Ô,ô1Ñ-�	˜8 Xð ”I˜c�NØÔ+¨Y¸Ð,AÐBØÔ*¨3×+AÒ+AÑ+CÔ+CÐDÐDàˆrÜ   c                ó   — |rdS dS )NzWITH RECURSIVEÚWITHrÖ   )r'  rþ  s     rÚ   rÀ  zSQLCompiler.get_cte_preamble®  s   € Øð 	Ø#Ð#à�6rÜ   úSelect[Any]c                óR   — |j         rt          j        dd¬¦  «         |j        rdndS )zcCalled when building a ``SELECT`` statement, position is just
        before column list.

        a  DISTINCT ON is currently supported only by the PostgreSQL dialect.  Use of DISTINCT ON for other backends is currently silently ignored, however this usage is deprecated, and will raise CompileError in a future release for all backends that do not support this syntax.z1.4)Úversionrî   r·  )Ú_distinct_onr*   Úwarn_deprecatedÚ	_distinct©r'  r³   rä  s      rÚ   r�  z!SQLCompiler.get_select_precolumns´  sG   € ð
 Ôð 	ÝÔ ð3ð
 ðñ ô ð ð %Ô.Ð6ˆ{ˆ{°BÐ6rÜ   c                óf   —  | j         |j        t          t          j                 fi |¤Ž}|rd|z   S dS )z5allow dialects to customize how GROUP BY is rendered.z
 GROUP BY r·  )rJ  r¯  rÑ  r%   Úcomma_op)r'  r³   rä  Úgroup_bys       rÚ   rÖ  zSQLCompiler.group_by_clauseÄ  sO   € ð 1�4Ô0ØÔ$¥iµ	Ô0BÔ&Cð
ð 
ØGIð
ð 
ˆð ð 	Ø (Ñ*Ð*à�2rÜ   c                óf   —  | j         |j        t          t          j                 fi |¤Ž}|rd|z   S dS )z5allow dialects to customize how ORDER BY is rendered.r¦  r·  )rJ  r²  rÑ  r%   rÍ  )r'  r³   rä  r’  s       rÚ   r×  zSQLCompiler.order_by_clauseÏ  sO   € ð 1�4Ô0ØÔ$¥iµ	Ô0BÔ&Cð
ð 
ØGIð
ð 
ˆð ð 	Ø (Ñ*Ð*à�2rÜ   c                ó   — dS )Nz FOR UPDATErÖ   rË  s      rÚ   r´  zSQLCompiler.for_update_clauseÛ  s   € Øˆ}rÜ   râ  rI   Úreturning_colsúSequence[_ColumnsClauseElement]r2  c               óª   ‡ ‡‡‡— ˆˆˆ ˆfd„‰                      dt          j        |¦  «        ¬¦  «        D ¦   «         }dd                     |¦  «        z   S )Nc           
     óF   •— g | ]\  }}}}} ‰j         ‰	|‰f||||d œ‰¤Ž‘ŒS ))rð  r\  r  rï  )rN  )
rØ   r  rï  rð  r¬   rñ  rä  r2  r'  râ  s
         €€€€rÚ   r´  z0SQLCompiler.returning_clause.<locals>.<listcomp>æ  st   ø€ ð 
ð 
ð 
ñØØØ#ØØð )ˆDÔ(ØØØ#ð	ð %8Ø#+ØØ%ð	ð 	ð ð	ð 	ð
ð 
ð 
rÜ   T)Úcolsú
RETURNING ré   )r  r    Ú_select_iterablesr‘   ©r'  râ  rÑ  r2  rä  rB  s   `` `` rÚ   Úreturning_clausezSQLCompiler.returning_clauseÞ  s}   øøøø€ ð
ð 
ð 
ð 
ð 
ð 
ð 
ð" ×2Ò2Ø�4Ô1°.ÑAÔAð 3ñ ô ð#
ñ 
ô 
ˆð, ˜dŸiši¨Ñ0Ô0Ñ0Ð0rÜ   c                ó¢   — d}|j         �|d | j        |j         fi |¤Žz   z  }|j        �%|j         €|dz  }|d | j        |j        fi |¤Žz   z  }|S )Nr·  z
 LIMIT z

 LIMIT -1z OFFSET )Ú_limit_clauserÒ  Ú_offset_clause)r'  r³   rä  r  s       rÚ   rá  zSQLCompiler.limit_clauseþ  s}   € ØˆØÔÐ+Ø�K , $¤,¨vÔ/CÐ"JÐ"JÀrÐ"JÐ"JÑJÑJˆDØÔ Ð,ØÔ#Ð+Ø˜Ñ%�Ø�J  ¤¨fÔ.CÐ!JÐ!JÀrÐ!JÐ!JÑJÑJˆDØˆrÜ   c                ó˜  — |€|j         }|j        }ndddœ}d}|j        �I|j        }|r)|                     |¦  «        r|                     ¦   «         } | j        |fi |¤Ž}	|d|	z  z  }n|r|dz  }|�X|r)|                     |¦  «        r|                     ¦   «         }|d | j        |fi |¤Ž›|d         rdnd›d	|d
         rdnd›�z  }|S )NF)rc  Ú	with_tiesr·  z
 OFFSET %s ROWSz
 OFFSET 0 ROWSz
 FETCH FIRST rc  z PERCENTz ROWS rÞ  z	WITH TIESÚONLY)rß  Ú_fetch_clause_optionsrÜ  Ú_simple_int_clauseÚrender_literal_executerÒ  )
r'  r³   rà  Úrequire_offsetÚ"use_literal_execute_for_simple_inträ  Úfetch_clause_optionsr  Úoffset_clauseÚ
offset_strs
             rÚ   rà  zSQLCompiler.fetch_clause  sI  € ð ÐØ!Ô/ˆLØ#)Ô#?Ð Ð à/4À5Ð#IÐ#IÐ àˆàÔ Ð,Ø"Ô1ˆMà2ðGà×-Ò-¨mÑ<Ô<ðGð !.× DÒ DÑ FÔ F�Ø%˜œ mÐ:Ð:°rÐ:Ð:ˆJØÐ'¨*Ñ4Ñ4ˆDˆDØð 	'ØÐ&Ñ&ˆDàÐ#à2ðEà×-Ò-¨lÑ;Ô;ðEð  ,×BÒBÑDÔD�ØˆDØ�”˜\Ð0Ð0¨RÐ0Ð0Ð0Ø2°9Ô=ÐE�
�
À2ÐEÐEØ3°KÔ@ÐL��ÀfÐLðñ ˆDð
 ˆrÜ   c                óL  — |r|j         |j        |<   |s|s|
�r| j                             |¦  «        }|r@|r>| j                             |¦  «        dz   | j                             |j        ¦  «        z   }n‰| j                             |j        ¦  «        }|	�	|	j        |ur_|s]|r[|j        |v rR|                      d||j                 ¦  «        }||  	                    | j         
                    d |¦  «        ¦  «        z   }|r"||v r|                      ||||         |¦  «        }|S dS )NrI  rç  r·  )Úfullnamerš  rÀ  rí  rî  rë  r  râ  rÐ  r  rÿ  r)  )r'  r§   r±  r!  ræ  rç  Ú
use_schemar@  rä  r#  rÔ  rì  rñ  r—  Ú	anon_names                  rÚ   Úvisit_tablezSQLCompiler.visit_table1  s  € ð ð 	6Ø',¤~ˆKÔ˜eÑ$àð #	�Vð #	˜~ñ #	Ø#œ}×>Ò>¸uÑEÔEÐàð Ð.ð à”M×.Ò.Ð/?Ñ@Ô@Øñà”m×)Ò)¨%¬*Ñ5Ô5ñ6ð �ð ”m×)Ò)¨%¬*Ñ5Ô5�ð (Ð/Ø*Ô2¸%Ð?Ð?à,ð @ð 1ð @ð œ
Ð&>Ð>Ð>à $× :Ò :ØÐ!9¸%¼*Ô!Eñ!ô !�Ið  × ?Ò ?Øœ×2Ò2°4¸ÑCÔCñ!ô !ñ �Cð ð ˜U iÐ/Ð/Ø×0Ò0Ø˜ 	¨%Ô 0°&ñô �ð ˆJà�2rÜ   c                óz  — |r[|j                              t          j        t	          |j        j        ¦  «        t	          |j        j        ¦  «        ¦  «        ¦  «         |j        rd}n|j	        rd}nd} |j        j
        | fd|dœ|¤Ž|z    |j        j
        | fd|dœ|¤Žz   dz    |j        j
        | fd|i|¤Žz   S )Nz FULL OUTER JOIN z LEFT OUTER JOIN z JOIN Tr¬  ú ON r@  )r›  r¦  rô  rC  r.   r’   r/   r¦   r�   Úisouterrï  Úonclause)r'  r‘   r±  r@  rì  Ú	join_types         rÚ   Ú
visit_joinzSQLCompiler.visit_joing  s-  € Øð 	ØÔ×$Ò$ÝÔ!Ý˜dœiÔ5Ñ6Ô6Ý˜dœjÔ6Ñ7Ô7ñô ñô ð ð Œ9ð 	!Ø+ˆIˆIØŒ\ð 	!Ø+ˆIˆIà ˆIà(ˆDŒIÔ(ØðØ!¨{ðð Ø>Dðð ð ñð ,ˆdŒjÔ+ØðØ!¨{ðð Ø>Dðð ñ	ð ñð /ˆdŒmÔ.Øðð Ø"-ðØ17ðð ñð	
rÜ   c                ó¸   ‡ — ˆ fd„|j                              ¦   «         D ¦   «         }|j        |v r(‰                      ||j        ||j                 d¦  «        }||fS )Nc                óB   •— i | ]\  \  }}}|d ‰j         j        fv ¯||“ŒS r„  r…  )rØ   r§   rÇ  r™  r'  s       €rÚ   rŽ  z1SQLCompiler._setup_crud_hints.<locals>.<dictcomp>†  sC   ø€ ð 
ð 
ð 
á+Ñ �˜ )Ø˜3 ¤Ô 1Ð2Ð2Ð2ð �9à2Ð2Ð2rÜ   T)r‹  r§  r§   r)  )r'  râ  Ú
table_textÚdialect_hintss   `   rÚ   Ú_setup_crud_hintszSQLCompiler._setup_crud_hints…  s|   ø€ ð
ð 
ð 
ð 
à/3¬{×/@Ò/@Ñ/BÔ/Bð
ñ 
ô 
ˆð
 Œ:˜Ð&Ð&Ø×3Ò3Ø˜DœJ¨°d´jÔ(AÀ4ñô ˆJð ˜jÐ(Ð(rÜ   r^   r\  c                óD  — | j         j        }|j        }|j        }|€dS |j        r!| j                             |j        d¦  «        }n | j                             |j        d¦  «        }||z  r|S |j	        r+t          j        d|d         › d| j         j        › d�¦  «        ‚dS )a)  given a :class:`.Table`, return a usable sentinel column or
        columns for this dialect if any.

        Return None if no sentinel columns could be identified, or raise an
        error if a column was marked as a sentinel explicitly but isn't
        compatible with this dialect.

        Nr   zColumn z@ can't be explicitly marked as a sentinel column when using the a�   dialect, as the particular type of default generation on this column is not currently compatible with this dialect's specific INSERT..RETURNING syntax which can receive the server-generated value in a deterministic way.  To remove this error, remove insert_sentinel=True from primary key autoincrement columns; these columns are automatically used as sentinels for supported dialects in any case.)rÇ  Ú"insertmanyvalues_implicit_sentinelÚ _sentinel_column_characteristicsrB  Ú
is_autoincÚ_sentinel_col_autoinc_lookupr×  Údefault_characterizationÚ _sentinel_col_non_autoinc_lookupÚis_explicitr7   rL  r  )r'  r§   Úsentinel_optsÚsentinel_characteristicsÚ	sent_colsÚbitmasks         rÚ   Ú_get_sentinel_column_for_tablez*SQLCompiler._get_sentinel_column_for_table´  sé   € ð œÔGˆØ#(Ô#IÐ à,Ô4ˆ	àÐØ�4à#Ô.ð 	ØÔ7×;Ò;Ø(ÔAÀ1ñô ˆGˆGð Ô;×?Ò?Ø(ÔAÀ1ñô ˆGð ˜7Ñ"ð 	ØÐà#Ô/ð 	õ Ô)ð
@˜) Aœ,ð 
@ð 
@à”<Ô$ð
@ð 
@ð 
@ñô ð ð ˆtrÜ   rq   Úcompiled_parametersú%List[_MutableCoreSingleExecuteParams]Úgeneric_setinputsizesrg  Ú
batch_sizerX  rZ  r½  r¼  ú Iterator[_InsertManyValuesBatch]c              #  óØ  ‡ ‡‡‡1‡2‡3‡4‡5‡6‡7‡8‡9‡:K  — ‰ j         }|€J ‚|j        sd Š1nt          j        |j        Ž Š1t	          ‰¦  «        }	|j        r‰ j        j        sd}
d}nM‰ j        j        r|r!‰ j	        r|j
        �|j        r|j        sd}
d}n|j        r|j        s‰ j	        rd}
d}nd}
d}|
r`t          t          dt!          ‰|¦  «        ¦  «        d¦  «        D ]1\  }\  Š9}t#          |‰9‰‰9g‰1r ‰1|¦  «        gng d||	||¦
  «
        V — Œ2d S |r!t%          j        ‰ j        j        |¬¦  «        Š:nd Š:|j        }‰:r ‰:|¦  «        }d|› d�}|                     |d¦  «        }‰ j        j        }|rCt	          ‰ j        ¦  «        }t	          |j        ¦  «        }||z
  }t7          |||z
  |z  ¦  «        }t          d	t9          ‰¦  «        ¦  «        }t          d	t9          |¦  «        ¦  «        }d }d}|	|z  |	|z  rdnd
z   }|j        }|€J ‚‰:rˆ:fd„|D ¦   «         }d
xŠ6Š7‰ j        s¤‰ j        r‰ j        Š4ni Š4t?          ‰d
         ¦  «        }ˆ4ˆ fd„Š3|j        rd}nd}dd                      ˆ3fd„|D ¦   «         ¦  «        › |› d�}| !                    ˆ4fd„|D ¦   «         ¦  «        }ˆfd„| "                    |¦  «        D ¦   «         }dŠ5nód}t?          ¦   «         }i }|j        rd|› d�Š5nd|› d�Š5t?          ¦   «         Š2|j        D ]}‰2 #                    |d         ¦  «         Œ‰2r_‰ j$        }|€J ‚ˆ2fd„t          |¦  «        D ¦   «         } t7          | ¦  «        Š6tK          | ¦  «        dz   Š7t	          | ¦  «        ‰7‰6z
  k    sJ ‚‰ j&        r2tO          j(        ‰ j)        ¦  «        }!tO          j*        |!› d�d‰5¦  «        Š5|�r©|d
|…         }"|d
|…         }#g |d
|…<   g |d
|…<   |r|}$nt	          |"¦  «        }$‰r%d„ ˆfd„tW          |$¦  «        D ¦   «         D ¦   «         }‰ j        �r8|j,        }%|%t	          |"d
         ¦  «        k    rdx}&}'|"}(n/|"d
         d ‰6…         }&|"d
         ‰7d …         }'ˆ6ˆ7fd„|"D ¦   «         }(|j        r7d                      ˆ5fd„t          |"¦  «        D ¦   «         ¦  «        d d…         })n‰5|$z  d d…         })‰ j&        rE|%d
k    r?|'rJ ‚‰6dz   }*|%|$z  |*z   }+t[          ˆ fd„tW          |*|+¦  «        D ¦   «         ¦  «        },|)|,z  })|                     d|)¦  «        }-t[          t\          j/         0                    |(¦  «        ¦  «        }.|&|.z   |'z   }.nØg }/| 1                    ¦   «         }.t          |"¦  «        D ]‰\  Š8Š9|                     d te          ‰8¦  «        ¦  «        }0|j        r#|0                     d!te          ‰8¦  «        ¦  «        }0|/ 3                    |0¦  «         |. #                    ˆ8ˆ9fd"„|D ¦   «         ¦  «         ŒŠ|                     dd                      |/¦  «        ¦  «        }-t#          |-|.||"‰1rˆ1fd#„|#D ¦   «         ng |$|||d¦
  «
        V — |dz  }|�°§d S d S )$NTFzKSequence[Tuple[_DBAPISingleExecuteParams, _MutableCoreSingleExecuteParams]]r   ©r½  rF  rG  Ú__EXECMANY_TOKEN__zList[Sequence[Any]]r   c                ó8   •— g | ]\  }}}}|| ‰|¦  «        |f‘ŒS rÖ   rÖ   )rØ   r  rJ  rP  ÚstÚrsts        €rÚ   r´  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<listcomp>…  sB   ø€ ð "ð "ð "á&�C˜˜d Bð �c˜3˜3˜t™9œ9 bÐ)ð"ð "ð "rÜ   c                ó˜   •— | D ]E}‰                      ||¦  «        }|                     ‰j        d|iz  ‰j        d|› d�iz  ¦  «        }ŒF|S )Nr  Ú__EXECMANY_INDEX__)r×  r
  r^  )r¿  Ú	formattedrJ  rp  r'  s      €€rÚ   Úapply_placeholderszISQLCompiler._deliver_insertmanyvalues_batches.<locals>.apply_placeholders•  sq   ø€ Øð ð �CØ,×0Ò0°°cÑ:Ô:�CØ )× 1Ò 1ØÔ)¨V°S¨MÑ9ØÔ)Ø! cÐ#=Ð#=Ð#=Ð>ñ?ñ!ô !�I�Ið
 !Ð rÜ   z, _IMV_VALUES_COUNTERr·  ré   c              3  ó:   •K  — | ]\  }}}} ‰||¦  «        V — Œd S r%  rÖ   )rØ   rD  r  Ú	bind_keysr  s       €rÚ   rK  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>£  sL   øè è € ð 6ð 6á.�A�q˜) Yð #Ð" 9¨iÑ8Ô8ð6ð 6ð 6ð 6ð 6ð 6rÜ   c              3  óX   •K  — | ]$\  }}}}|D ]}‰                      ||¦  «        V — ŒŒ%d S r%  rß  )rØ   rD  r  rJ  rp  s       €rÚ   rK  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>¨  sf   øè è € ð 4ð 4á&�A�q˜!˜YØ$ð4ð 4ð ð #×&Ò& s¨CÑ0Ô0ð4ð 4ð 4ð 4ð 4ð 4ð 4rÜ   c                ó.   •— i | ]}|‰d          |         “ŒS ©r   rÖ   )rØ   rJ  rA  s     €rÚ   rŽ  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<dictcomp>­  s4   ø€ ð ð ð àð �Z ”] 3Ô'ðð ð rÜ   z, _IMV_VALUES_COUNTER), z), r-  c                ó"   •— h | ]\  }}|‰v ¯	|’ŒS rÖ   rÖ   )rØ   r”  r  Úall_names_we_will_expands      €rÚ   rÛ   z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<setcomp>Ë  s3   ø€ ð (ð (ð (á!˜˜TØÐ7Ð7Ð7ð à7Ð7Ð7rÜ   z\d+rÒ  c                ó    — g | ]\  }}}|||f‘ŒS rÖ   rÖ   )rØ   Únew_keyÚlen_r,  s       rÚ   r´  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<listcomp>í  s5   € ð +ð +ð +á*˜  sð ˜d CÐ(ð+ð +ð +rÜ   c              3  ó>   •K  — | ]}‰D ]\  }}}|› d |› �||fV — ŒŒdS )rD  NrÖ   )rØ   r™  rJ  r  r,  r  s        €rÚ   rK  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>ï  si   øè è € ð /ð /à!Ø.Cð/ð /ñ +˜C  sð  Ð)Ð) %Ð)Ð)¨4°Ð5ð/ð /ð /ð /ð /ð /ð /rÜ   rÖ   c              3  ó,   •K  — | ]}|‰‰…         V — Œd S r%  rÖ   )rØ   r�  Úexpand_pos_lower_indexÚexpand_pos_upper_indexs     €€rÚ   rK  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>  sC   øè è € ð &ð &àð Ð0Ð1GÐGÔHð&ð &ð &ð &ð &ð &rÜ   c              3  ód   •K  — | ]*\  }}‰                      d t          |¦  «        ¦  «        V — Œ+dS )Ú_IMV_VALUES_COUNTERN)r
  r×   )rØ   r>  rD  Úexecutemany_values_w_commas      €rÚ   rK  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>  sX   øè è € ð  ð  ñ !%  1ð 7×>Ò>Ø 5µs¸1±v´vñô ð ð  ð  ð  ð  ð  rÜ   éþÿÿÿc              3  ó.   •K  — | ]}‰j         › |› �V — Œd S r%  rU  ©rØ   r>  r'  s     €rÚ   rK  z@SQLCompiler._deliver_insertmanyvalues_batches.<locals>.<genexpr>(  sE   øè è € ð &ð &àð  Ô>ÐCÀÐCÐCð&ð &ð &ð &ð &ð &rÜ   ÚEXECMANY_INDEX__r#  c                ó,   •— i | ]}|› d ‰› �‰|         “ŒS )Ú__rÖ   )rØ   rJ  r>  Úparams     €€rÚ   rŽ  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<dictcomp>I  s)   ø€ ÐNÐNÐN°s˜C˜˜ 1˜˜¨¨c¬
ÐNÐNÐNrÜ   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rÖ   rÖ   )rØ   r«  Ú_sentinel_from_paramss     €rÚ   r´  zASQLCompiler._deliver_insertmanyvalues_batches.<locals>.<listcomp>W  s%   ø€ ÐHÐHÐH°2Ð*Ð*¨2Ñ.Ô.ÐHÐHÐHrÜ   )4rl  r_  rx  r–  rä  rU  rÇ  Úsupports_default_metavalueÚsupports_multivalues_insertr»  r]  r[  rb  ra  r=  r   r  rd  Ú	functoolsÚpartialrÀ  rÓ  rV  r
  Úinsertmanyvalues_max_parametersrZ  rW  Úminr¿  r‘  rp  r‰   r‘   r¨  ru  r¦  rE  rÇ  re  r€  r�  r`  rá  ÚrangerY  rM  rô  rõ  Úfrom_iterablerà  r×   rØ  );r'  r@  rA  r  r  r  rZ  r½  ÚimvÚ	lenparamsÚuse_row_at_a_timeÚ
downgradedrl  Úcompiled_paramÚimv_single_values_exprÚexecutemany_valuesÚ
max_paramsÚtotal_num_of_paramsÚnum_params_per_batchÚnum_params_outside_of_batchÚbatchesÚcompiled_batchesrh  rm  rW  Úall_keysÚimv_values_counterÚformatted_values_clauseÚkeys_to_replaceÚbase_parametersr9  rE  Úall_expand_positionsÚescapedri  Úcompiled_batchrk  Únum_ins_paramsÚextra_params_leftÚextra_params_rightÚbatch_iteratorÚexpanded_values_stringr¤  rƒ   rÛ  re  rf  Úreplaced_values_clausesÚfmvr-  r  r  rp  r$  r   r!  r>  r+  r  s;   ` ` `                                            @@@@@@@@@@rÚ   Ú!_deliver_insertmanyvalues_batchesz-SQLCompiler._deliver_insertmanyvalues_batchesò  sO
  øøøøøøøøøøøøøè è € ð Ô$ˆØˆˆˆàÔ&ð 	Ø$(Ð!Ð!å$,Ô$7ØÔ(ð%Ð!õ ˜
‘O”Oˆ	ØÔð 0	 t¤|Ô'Nð 0	ð !%ÐØˆJˆJØ”Ô9ð !	Ø#ð!	àÔ$ð!	ð Ô$Ð,àÔ1ð -ð  Ô4ð -ð !%ÐØˆJˆJàÔ+ð	àÔ,ð	ð Ô$ð	ð !%ÐØˆJˆJà %ÐØˆJàð 	Ý5>ÝØaÝ˜
Ð$7Ñ8Ô8ñô ð ñ6ô 6ð ð Ñ1�Ñ1˜5 .õ -ØØØ)Ø�Gð 1ð Ð.Ð.¨~Ñ>Ô>Ð?Ð?ààØØØ+Øñô ð ð ð ð ð  ˆFàð 	ÝÔ#Ø”Ô7Ø%9ðñ ô ˆCˆCð
 ˆCà!$Ô!7ÐØð 	AØ%( SÐ)?Ñ%@Ô%@Ð"à:Ð!7Ð:Ð:Ð:ÐØ×%Ò%Ð&8Ð:NÑOÔOˆ	ð ”\ÔAˆ
Øð 	Ý"% d¤oÑ"6Ô"6ÐÝ#& sÔ'=Ñ#>Ô#>Ð à#Ð&:Ñ:ð (õ ØàÐ"=Ñ=Ø+ñ,ñô ˆJõ Ð,­d°:Ñ.>Ô.>Ñ?Ô?ˆÝØ!¥4Ð(;Ñ#<Ô#<ñ
ô 
Ðð HLÐØˆØ! ZÑ/Ø˜ZÑ'Ð.ˆAˆA¨Qñ
ˆð !Ô3ÐØ!Ð-Ð-Ð-àð 	ð"ð "ð "ð "à*<ð"ñ "ô "Ðð ;<Ð;ÐÐ!7àŒð N	ØÔ&ð (Ø%)Ô%<Ð"Ð"à%'Ð"å˜: aœ=Ñ)Ô)ˆHð!ð !ð !ð !ð !ð !ð Ô'ð (Ø%<Ð"Ð"à%'Ð"ð''¨D¯IªIð 6ð 6ð 6ð 6à2Dð6ñ 6ô 6ñ -ô -ð ''ð "ð''ð ''ð ''Ð#ð
 '×3Ò3ð 4ð 4ð 4ð 4à*<ð4ñ 4ô 4ñ ô ˆOð
ð ð ð à#×.Ò.¨Ñ?Ô?ðñ ô ˆOð
 *,Ð&Ð&à&(Ð#Ý!™eœeˆOØ ˆOàÔ'ð MàHÐ.ÐHÐHÐHð +Ð*ð .MÐ1GÐ-LÐ-LÐ-LÐ*å14±´Ð$ØÔ.ð 9ð 9�Ø(×/Ò/°°Q´Ñ8Ô8Ð8Ð8ð (ð Ø"Ô.�Ø"Ð.Ð.Ð.ð(ð (ð (ð (å%.¨{Ñ%;Ô%;ð(ñ (ô (Ð$õ
 *-Ð-AÑ)BÔ)BÐ&Ý),Ð-AÑ)BÔ)BÀQÑ)FÐ&åÐ,Ñ-Ô-Ø-Ð0FÑFòGð Gð Gð Gð Ô"ð Ýœ) DÔ$GÑHÔH�Ý-/¬VØÐ$Ð$Ð$ dÐ,Fñ.ô .Ð*ð ñ D	Ø˜A˜j˜LÔ)ˆEØ-¨a°
¨lÔ;ˆNà$&ˆG�A�j�LÑ!Ø-/Ð˜Q˜z˜\Ñ*àð 0Ø%/Ð"Ð"å%(¨¡Z¤ZÐ"à$ð ð+ð +ð/ð /ð /ð /å%*Ð+=Ñ%>Ô%>ð/ñ /ô /ð+ñ +ô +Ð'ð Œñ XØ!$Ô!B�ð "¥S¨¨q¬¡]¤]Ò2Ð2Ø=?Ð?Ð%Ð(:Ø%*�N�Nà(-¨a¬Ð1HÐ2HÐ1HÔ(IÐ%Ø).¨q¬Ð2HÐ2IÐ2IÔ)JÐ&ð&ð &ð &ð &ð &à!&ð&ñ &ô &�Nð
 Ô+ð àŸšð  ð  ð  ð  õ )2°%Ñ(8Ô(8ð	 ñ  ô  ñ ô ð �r�cô.Ð*Ð*ð 4Ð6HÑHØ�r�cô.Ð*ð Ô&ð P¨>¸AÒ+=Ð+=ð  2Ð1Ð1Ð1à2°QÑ6�EØ(Ð,>Ñ?À%ÑG�Cõ !&ð &ð &ð &ð &å!& u¨cÑ!2Ô!2ð&ñ &ô &ñ !ô !�Ið .DÀiÑ-OÐ*à%.×%6Ò%6Ø(Ð*@ñ&ô &Ð"õ ',Ý”O×1Ò1°.ÑAÔAñ'ô 'Ð#ð
 &Ø)ñ*à(ñ)ð $Ð#ð +-Ð'Ø&5×&:Ò&:Ñ&<Ô&<Ð#å )¨%Ñ 0Ô 0ð 
ð 
‘H�A�uØ1×9Ò9Ø*­C°©F¬Fñô �Cð Ô/ð IØ!ŸkškÐ*?ÅÀQÁÄÑHÔH˜à+×2Ò2°3Ñ7Ô7Ð7Ø'×.Ò.ØNÐNÐNÐNÐN¸oÐNÑNÔNñô ð ð ð &/×%6Ò%6Ø(Ø—I’IÐ5Ñ6Ô6ñ&ô &Ð"õ
 )Ø"Ø#Ø'Øð -ðÐHÐHÐHÐH¸ÐHÑHÔHÐHàà"ØØØ'Øñô ð ð ð ð  ˜‰MˆHðI ñ D	ð D	ð D	ð D	ð D	rÜ   c                ó.  ‡ ‡!—  |j         |‰ fi |¤Ž}|j        }|�||d<   d}n‰ j         }|r#d‰ _        ‰ j        s|‰ _        ‰ j        s|‰ _        ‰ j                             t          ¦   «         t          ¦   «         |dœ¦  «         d}d }‰ j        r|€g }t          j
        ‰ |||fd|i|¤Ž}‰ j        r7|�5t          |¦  «        }‰ j        r‰ j        �‰ xj        |z  c_        n|‰ _        |j        }	|	sE‰ j        j        s9‰ j        j        s-‰ j        j        s!t'          j        d‰ j        j        z  ¦  «        ‚|j        r^‰ j        j        s!t'          j        d‰ j        j        z  ¦  «        ‚‰ j        s|j        r|j        rt'          j        d	¦  «        ‚|j        }	n|j        }	‰ j        }
‰ j        j        }d
}|j        r| ‰ j        ||j        fi |¤Žz  }|dz  }|
                     |j        ¦  «        }|j         r‰  !                    ||¦  «        \  }}|j"        r‰  #                    ||¦  «         ||z  }|	s|s%|dd $                    d„ |	D ¦   «         ¦  «        z  z  }|j%        }d }d }d}‰ j        p|j        }|rÜ|j&        }|�«|sJ ‚d„ |	D ¦   «         }g }|D ]B}||vrd } n9‰  '                    |¦  «        }|||         vrd } n|                     |¦  «         ŒC|€3‰ j        j(        tR          j*        z  rd}n|d         j+        r
J d¦   «         ‚tY          |¦  «        tY          |¦  «        z   }‰  -                    |||¬¦  «        }‰ j.        r|d|z   z  }nd }|j/        �w ‰ j0        ‰ j        d         d         fddi|¤Ž}‰ j1        rE‰ j        j2        r9|st          ‰ j        ¦  «        nd }|d‰  3                    |d¬¦  «        ›|›�z  }�n1|d|z  z  }�n'|	sO|rM|dz  }|rDti          d‰ j        j5        |	||j        |j6        d u||rt          |¦  «        nd|¬¦	  «	        ‰ _7        �nÖ|j        r,|dd $                    d„ |j8        D ¦   «         ¦  «        ›�z  }�n£|�rx|�r‰ j        j(        tR          j9        z  ró|j:        sìd}‰ j        j(        tR          j;        z  }|pdŠ!d $                    ˆ!fd„|	D ¦   «         ¦  «        }d $                    ˆ!fd„ty          |	¦  «        D ¦   «         ¦  «        }|r0d $                    ˆ!ˆ fd„ty          |	¦  «        D ¦   «         ¦  «        }n.d $                    ˆ!fd „ty          |	¦  «        D ¦   «         ¦  «        }ˆ!fd!„|	D ¦   «         }|d"|› d#|› d$|› d%�z  }n,d}|	}d $                    d&„ |	D ¦   «         ¦  «        }|d'|› d(�z  }ti          d||||j        |j6        d u||rt          |¦  «        nd|||¬)¦  «        ‰ _7        n(d $                    d*„ |	D ¦   «         ¦  «        }|d'|› d(�z  }|j6        � ‰ j0        |j6        fi |¤Ž} | r|d| z   z  }|r‰ j.        s|d|z   z  }‰ j1        r>‰ j        j2        s2|st          ‰ j        ¦  «        nd }‰  3                    |d¬¦  «        |z   }‰ j         =                    d¦  «         |S )+Nré  FTr%  r   rØ  zWThe '%s' dialect with current database version settings does not support empty inserts.zcThe '%s' dialect with current database version settings does not support in-place multirow inserts.zdRETURNING cannot be deterministically sorted when using an INSERT which includes multi-row values().zINSERT zINTO ú (%s)ré   c                ó   — g | ]	\  }}}}|‘Œ
S rÖ   rÖ   )rØ   rD  rP  s      rÚ   r´  z,SQLCompiler.visit_insert.<locals>.<listcomp>Ú  s    € Ð>Ð>Ð>™-˜!˜T 1 a�Ð>Ð>Ð>rÜ   c                ó   — i | ]
\  }}}}||“ŒS rÖ   rÖ   )rØ   r  rD  Úparam_namess       rÚ   rŽ  z,SQLCompiler.visit_insert.<locals>.<dictcomp>ò  s2   € ð "ð "ð "á.˜˜Q  ;ð ˜ð"ð "ð "rÜ   zTsentinel selection rules should have prevented us from getting here for this dialect©r2  rL  rº  r<  r“  rÐ  r%  z DEFAULT VALUES)rZ  r[  r]  r^  r`  z VALUES c              3  óZ   K  — | ]&}d d                      d„ |D ¦   «         ¦  «        z  V — Œ'dS )rW  ré   c              3  ó$   K  — | ]\  }}}}|V — Œd S r%  rÖ   ©rØ   rD  r  s      rÚ   rK  z5SQLCompiler.visit_insert.<locals>.<genexpr>.<genexpr>Y  s*   è è € Ð LÐ L©>¨1¨a°¸ Ð LÐ LÐ LÐ LÐ LÐ LrÜ   NrH  )rØ   Úcrud_param_sets     rÚ   rK  z+SQLCompiler.visit_insert.<locals>.<genexpr>W  s\   è è € ð ð ð 'ð Ø—y’yÐ LÐ L¸^Ð LÑ LÔ LÑLÔLñNðð ð ð ð ð rÜ   rÖ   c                ó&   •— g | ]\  }}}}|‰v¯|‘ŒS rÖ   rÖ   )rØ   r  rD  r  Úadd_sentinel_sets       €rÚ   r´  z,SQLCompiler.visit_insert.<locals>.<listcomp>v  s7   ø€ ð ð ð á,˜C  E¨1ØÐ&6Ð6Ð6ð à6Ð6Ð6rÜ   c              3  ó<   •K  — | ]\  }}|d          ‰v¯d|› �V — ŒdS )r   ÚpNrÖ   )rØ   r>  Úcpr^  s      €rÚ   rK  z+SQLCompiler.visit_insert.<locals>.<genexpr>}  sI   øè è € ð %ð %á˜˜2Ø˜!”uÐ$4Ð4Ð4ð ˜�G�Gà4Ð4Ð4Ð4ð%ð %rÜ   c              3  ó¬   •K  — | ]N\  }\  }}}}|‰vr<‰                      |j        |j                             ‰j        ¦  «        d |› �¦  «        n|V — ŒOdS ©r`  N)r3  r  r*  rÇ  )rØ   r>  r  rD  rP  r^  r'  s        €€rÚ   rK  z+SQLCompiler.visit_insert.<locals>.<genexpr>‹  s‘   øè è € ð 0ð 0ñ 1˜AÑ0  Q¨¨að  #Ð*:Ð:Ð:ð !×1Ò1Ø #¤Ø #¤× @Ò @ÀÄÑ NÔ NØ ' A  ñô ð ð "&ð0ð 0ð 0ð 0ð 0ð 0rÜ   c              3  ó>   •K  — | ]\  }\  }}}}|‰vrd |› �n|V — ŒdS rc  rÖ   )rØ   r>  r  rD  rP  r^  s        €rÚ   rK  z+SQLCompiler.visit_insert.<locals>.<genexpr>š  sY   øè è € ð 0ð 0á0˜AÑ0  Q¨¨að %(Ð/?Ð$?Ð$?˜˜Q˜˜˜ÀTð0ð 0ð 0ð 0ð 0ð 0rÜ   c                ó(   •— g | ]}|d          ‰v¯|‘ŒS r  rÖ   )rØ   r9  r^  s     €rÚ   r´  z,SQLCompiler.visit_insert.<locals>.<listcomp>¡  s3   ø€ ð &ð &ð &àØ˜A”wÐ&6Ð6Ð6ð à6Ð6Ð6rÜ   z SELECT z FROM (VALUES (z)) AS imp_sen(z#, sen_counter) ORDER BY sen_counterc                ó   — g | ]	\  }}}}|‘Œ
S rÖ   rÖ   r[  s      rÚ   r´  z,SQLCompiler.visit_insert.<locals>.<listcomp>´  s    € ÐDÐDÐD™~˜q ! U¨A�UÐDÐDÐDrÜ   z	 VALUES (rG  )rU  rV  rW  rY  rZ  r[  r]  r^  r_  r`  rb  c                ó   — g | ]	\  }}}}|‘Œ
S rÖ   rÖ   r[  s      rÚ   r´  z,SQLCompiler.visit_insert.<locals>.<listcomp>Í  s    € Ð@Ð@Ð@™>˜1˜a ¨�Ð@Ð@Ð@rÜ   )>rÒ  r@  r§  rQ  rÂ  r6  rØ  r‰   r‘  r"   Ú_get_crud_paramsrä  re  rs  Úsingle_paramsrÇ  Úsupports_default_valuesr.  Úsupports_empty_insertr7   r  r  Ú_has_multi_parametersr/  rW  Ú
_returningÚ_sort_by_parameter_orderrÀ  r  r  Úformat_tabler§   r‹  r÷  r)  r*  r‘   Úuse_insertmanyvaluesÚuse_sentinel_columnsru  rù  rq  r|  Ú_insert_sentinelr¿  rÙ  r[  r³   rÒ  rv  Úcte_follows_insertr-  rT  Údefault_metavalue_tokenÚ_post_values_clauserl  Úall_multi_paramsr~  Úis_default_metavalue_onlyr  r=  r�  )"r'  Úinsert_stmtrØ  ré  rä  r6  r0  Úcounted_bindparamÚcrud_params_structÚcrud_params_singlerÀ  rj  r  rõ  rD  rp  Únamed_sentinel_paramsÚadd_sentinel_colsr`  rÑ  Ú_params_by_colÚ_add_sentinel_colÚ
param_namerÙ  Úselect_textr'  Úembed_sentinel_valueÚrender_bind_castsr¯  ÚcolnamesÚcolnames_w_castrW  Úpost_values_clauser^  s"   `                                @rÚ   Úvisit_insertzSQLCompiler.visit_insertc  sz
  øø€ ð ;˜Ô:Ø˜ð
ð 
Ø!#ð
ð 
ˆð $Ô-ˆàÐ#Ø!-ˆBˆ~ÑØˆHˆHàœ:�~ˆHàð 	3Ø ˆDŒMØÔ)ð 7Ø)6�Ô&ØÔ%ð 3Ø%2�Ô"àŒ
×Òå#&¡5¤5Ý #¡¤Ø)ðð ñ	
ô 	
ð 	
ð Ðð !Ðð Œ?ð 	#˜|Ð3ð
 !#Ðå!Ô2ØØØØð	
ð 
ð
 0ð
ð ð
ð 
Ðð Œ?ð 	?Ð0Ð<Ý #Ð$5Ñ 6Ô 6ÐØÔ"ð ?ØÔ)Ð5ØÐ*Ô*Ð.?Ñ?Ð*Ô*Ð*à->�DÔ*à/Ô=Ðð #ð
	à”LÔ8ð
	ð ”LÔ;ð
	ð ”LÔ6ð	
	õ Ô"ðà!œ\Ô.ñ/ñô ð ð Ô.ð 	BØ”<Ô;ð ÝÔ&ð1à37´<Ô3DñEñô ð ð Ô'ðØ+6Ô+AðàÔ6ðõ Ô&ðIñô ð ð "4Ô!AÐÐà!3Ô!AÐà”=ˆØ"&¤,Ô"FÐàˆàÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø68ðð ñ ˆDð 	�‰ˆØ×*Ò*¨;Ô+<Ñ=Ô=ˆ
àÔð 	LØ ×2Ò2°;À
ÑKÔK‰MˆAˆzàÔ(ð 	=Ø×+Ò+¨K¸Ñ<Ô<Ð<à�
Ñˆàð 	Ð%<ð 	Ø�G˜dŸišiØ>Ð>Ð+=Ð>Ñ>Ô>ñô ñ ñ ˆDð  2ÔFÐØ9=ÐØ ÐØ!ÐàÔ0ÐJ°KÔ4JˆØð H	$Ø 2Ô GÐØ Ð,Ø+Ð+Ð+Ð+ð"ð "à2Dð"ñ "ô "�ð )+Ð%Ø):ð 
=ð 
=Ð%Ø(°Ð>Ð>Ø04Ð-Ø˜Ø!%×!CÒ!CØ)ñ"ô "�Jð "¨Ð8IÔ)JÐJÐJØ04Ð-Ø˜Ø)×0Ò0°Ñ<Ô<Ð<Ð<à(Ð0ð œÔGÝ6ÔHñIðð -1Ð)Ð)ð $5°QÔ#7Ô#Hð ð ðDñô ð õ "& nÑ!5Ô!5½Ð=NÑ8OÔ8OÑ!O�à#×4Ò4ØØØ$,ð  5ñ  ô  Ðð Ô-ð /Ø˜Ð.Ñ.Ñ.�øð  $ÐàÔÐ)à&˜$œ,Ø”
˜2”Ð3Ô4ðð ØBFðØJLðð ˆKð Œyð 
,˜Tœ\Ô<ð 
,Ø7?Ð I¥ D¤J¡¤ ÀT�Ø�Ø×+Ò+Ø&3Ø04ð ,ñ ô ð ð  �Kðñ �‘ð ˜ Ñ+Ñ+�‘Ø#ð O	=Ð(?ð O	=ØÐ%Ñ%ˆDØ#ð Ý):ØØ”LÔ8Ø&Ø%à#Ô<ð $Ô7¸tÐCà%6à2CÐJ�Ð-Ñ.Ô.Ð.Èà&7ð*ñ *ô *�Ô&ùð" Ô0ð {	=ØˆDØ—	’	ð ð ð +=Ô*Mðñ ô ñ ô ð ðñ ˆD‰Dð "ñ s	=à!ñYAð ”LÔCÝ2ÔIñJðYAð ,ÔEðYAð (,Ð$ð ”LÔCÝ2ÔJñKð "ð
 $5Ð#:¸Ð à,0¯IªIðð ð ð à0Bðñ ô ñ-ô -Ð)ð  Ÿ9š9ð %ð %ð %ð %å!*Ð+=Ñ!>Ô!>ð%ñ %ô %ñ ô �ð %ð ð '+§i¢ið 0ð 0ð 0ð 0ð 0õ 5>Ø.ñ5ô 5ð0ñ 0ô 0ñ 'ô '�O�Oð '+§i¢ið 0ð 0ð 0ð 0å4=Ø.ñ5ô 5ð0ñ 0ô 0ñ 'ô '�Oð&ð &ð &ð &à 2ð&ñ &ô &Ð"ð ð+˜ð +ð +Ø 9ð+ð +à"*ð+ð +ð +ñ��ð (-Ð$Ø%7Ð"Ø,0¯IªIØDÐDÐ1CÐDÑDÔDñ-ô -Ð)ð Ð@Ð$=Ð@Ð@Ð@Ñ@�å%6Ø %Ø#<Ø#5Ø.?Ø)4Ô)MàÔ3¸4Ð?à!2à.?ÐF•CÐ)Ñ*Ô*Ð*ÀQà$9Ø"3Ø%9ð&ñ &ô &ˆDÔ"Ð"ð& )-¯	ª	Ø@Ð@Ð-?Ð@Ñ@Ô@ñ)ô )Ð%ð Ð<Ð 9Ð<Ð<Ð<Ñ<ˆDàÔ*Ð6Ø!- ¤ØÔ/ð"ð "Ø35ð"ð "Ðð "ð 1Ø˜Ð0Ñ0Ñ0�àð 	+ DÔ$Bð 	+Ø�CÐ*Ñ*Ñ*ˆDàŒ9ð 	˜Tœ\Ô<ð 	Ø3;ÐE�C ¤
™OœO˜OÀˆMà×'Ò'Ø"/Ø,0ð (ñ ô ð ñ	ð ð 	Œ
�Š�rÑÔÐàˆrÜ   c                ó,   — d|d<    |j         | fddi|¤ŽS )z|Provide a hook to override the initial table clause
        in an UPDATE statement.

        MySQL overrides this.

        Tr±  r!  rî  )r'  Úupdate_stmtÚ
from_tableÚextra_fromsrä  s        rÚ   Úupdate_tables_clausez SQLCompiler.update_tables_clauseê  s-   € ð ˆˆ8‰Ø,ˆzÔ,¨TÐEÐE¸$ÐEÀ"ÐEÐEÐErÜ   c                ó    — t          d¦  «        ‚)z|Provide a hook to override the generation of an
        UPDATE..FROM clause.
        MySQL and MSSQL override this.
        zCThis backend does not support multiple-table criteria within UPDATErè  ©r'  r‰  rŠ  r‹  Ú
from_hintsrä  s         rÚ   Úupdate_from_clausezSQLCompiler.update_from_clauseô  s   € õ "ð%ñ
ô 
ð 	
rÜ   r‰  rH   c                ó:   — |j         � | j        |j         fi |¤ŽS dS )z†provide a hook to override generation after the WHERE criteria
        in an UPDATE statement

        .. versionadded:: 2.1

        N©r±  rÒ  )r'  r‰  rä  s      rÚ   Úupdate_post_criteria_clausez'SQLCompiler.update_post_criteria_clause   ó=   € ð Ô,Ð8Ø�4”<ØÔ1ðð àðð ð ð
 �4rÜ   Údelete_stmtrF   c                ó:   — |j         � | j        |j         fi |¤ŽS dS )z…provide a hook to override generation after the WHERE criteria
        in a DELETE statement

        .. versionadded:: 2.1

        Nr’  )r'  r•  rä  s      rÚ   Údelete_post_criteria_clausez'SQLCompiler.delete_post_criteria_clause  r”  rÜ   c                ó²  ‡—  |j         || fi |¤Ž}t          rt          |t          ¦  «        sJ ‚|j        }|�||d<   d}n| j         }|r#d| _        | j        s|| _        | j        s|| _        | j	        t          z  r5t          i t          ¦   «         ¦  «        }| j	        t          z  }|r|| _        nd }d}|j        }t!          |¦  «        }	|	rEt          t#          |j        ¦  «        ¦  «        Šˆfd„|D ¦   «         }
‰                     |¦  «        }n
g }
|j        h}| j                             |||dœ¦  «         d}|j        r| | j        ||j        fi |¤Žz  } | j        ||j        |
fd|i|¤Ž}t1          j        | |||fi |¤Ž}|j        }|j        r|                      ||¦  «        \  }}nd }|j        r|                      ||¦  «         ||z  }|dz  }|d	                     d
„ tA          d|¦  «        D ¦   «         ¦  «        z  }| j!        s|j"        r1| j#        r*|d|  $                    || j!        p|j"        |¬¦  «        z   z  }|r" | j%        ||j        |
|fd|i|¤Ž}|r|d|z   z  }|j&        r | j'        |j&        fd|i|¤Ž}|r|d|z   z  } | j(        |fd|i|¤Ž}|r|d|z   z  }| j!        s|j"        r1| j#        s*|d|  $                    || j!        p|j"        |¬¦  «        z   z  }| j)        r1|stU          | j        ¦  «        nd }|  +                    |¬¦  «        |z   }|r|€J ‚| ,                    d¬¦  «         | j         -                    d¦  «         |S )Nré  FTc                ó   •— g | ]}|‰v¯|‘Œ	S rÖ   rÖ   )rØ   rª  Ú
main_fromss     €rÚ   r´  z,SQLCompiler.visit_update.<locals>.<listcomp>K  s*   ø€ ð "ð "ð "Ø¨!°:Ð*=Ð*=�Ð*=Ð*=Ð*=rÜ   r%  zUPDATE r@  z SET ré   c              3  ó0   K  — | ]\  }}}}|d z   |z   V — ŒdS )ú=NrÖ   )rØ   rD  rP  r  s       rÚ   rK  z+SQLCompiler.visit_update.<locals>.<genexpr>{  sG   è è € ð 
ð 
á!��4˜ ð �3‰J˜Ñð
ð 
ð 
ð 
ð 
ð 
rÜ   zList[Tuple[Any, str, str, Any]]rL  rX  ú WHERE r&  ÚUPDATE©r¯  rº  ).rÒ  r   rÐ  rJ   r@  r§  rR  rÂ  r6  r†  r�  r‘  r‰   rŽ  r@  Ú_extra_fromsr7  r/   r§   r¨   rØ  r  r  rŒ  r"   rh  ri  r‹  r÷  r)  r*  r‘   r   rW  rm  r[  rÙ  r�  r®  rT  r“  rv  rä  r-  r°  r�  )r'  r‰  ré  rä  r6  r0  r@  rµ  r‹  Úis_multitableÚrender_extra_fromsr2  r  rõ  rz  Úcrud_paramsrö  Úextra_from_textr¶  Úulcr'  rš  s                        @rÚ   Úvisit_updatezSQLCompiler.visit_update"  s:  ø€ ð ;˜Ô:Ø˜ð
ð 
Ø!#ð
ð 
ˆõ ð 	=Ý˜m­^Ñ<Ô<Ð<Ð<Ð<Ø#Ô-ˆàÐ#Ø!-ˆBˆ~ÑØˆHˆHàœ:�~ˆHàð 	3Ø ˆDŒMØÔ)ð 7Ø)6�Ô&ØÔ%ð 3Ø%2�Ô"àŒ<Õ4Ñ4ð 	!Ý$ R­©¬Ñ/Ô/ˆKØœ<­,Ñ6ˆLØð /Ø#.�Ô øàˆKØ ˆLà#Ô0ˆÝ˜[Ñ)Ô)ˆàð 		2å�]¨;Ô+<Ñ=Ô=Ñ>Ô>ˆJð"ð "ð "ð "Ø&ð"ñ "ô "Ðð )×.Ò.¨{Ñ;Ô;ˆOˆOà!#ÐØ*Ô0Ð1ˆOàŒ
×Òà#2Ø /Ø)ðð ñ	
ô 	
ð 	
ð ˆàÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø68ðð ñ ˆDð /�TÔ.ØØÔØð
ð 
ð $ð	
ð
 ð
ð 
ˆ
õ "Ô2Ø�+˜}¨hð
ð 
Ø:<ð
ð 
Ðð )Ô6ˆàÔð 	!Ø(,×(>Ò(>Ø˜Zñ)ô )Ñ%ˆM˜:˜:ð !ˆMàÔ(ð 	=Ø×+Ò+¨K¸Ñ<Ô<Ð<à�
Ñˆà�‰ˆØ�—	’	ð 
ð 
å%)Ø1°;ñ&ô &ð
ñ 
ô 
ñ 
ô 
ñ 	
ˆð Ô"ð 	 kÔ&<ð 	ØÔ-ð Ø˜˜d×3Ò3ØØÔ+ÐE¨{Ô/EØ(0ð 4ñ ô ñ ñ �ð ð 
	.Ø5˜dÔ5ØØÔ!Ø"Øð	ð ð
 (ðð ðð ˆOð ð .Ø˜˜oÑ-Ñ-�àÔ&ð 	&Ø1�Ô1ØÔ+ðð Ø9DðØHJðð ˆAð ð &Ø˜	 A™Ñ%�à.ˆdÔ.Øð
ð 
Ø%0ð
Ø46ð
ð 
ˆð ð 	Ø�C˜#‘IÑˆDð Ô#ð	Ø'2Ô'=ð	àÔ0ð	ð �C˜$×/Ò/ØØÔ'ÐA¨;Ô+AØ$,ð 0ñ ô ñ ñ ˆDð Œ9ð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàð 	1ØÐ*Ð*Ð*Ø×Ò xÐÑ0Ô0Ð0àŒ
�Š�rÑÔÐàˆrÜ   c                ó    — t          d¦  «        ‚)zÀProvide a hook to override the generation of an
        DELETE..FROM clause.

        This can be used to implement DELETE..USING for example.

        MySQL and MSSQL override this.

        zCThis backend does not support multiple-table criteria within DELETErè  ©r'  r•  rŠ  r‹  r�  rä  s         rÚ   Údelete_extra_from_clausez$SQLCompiler.delete_extra_from_clause¸  s   € õ "ð%ñ
ô 
ð 	
rÜ   c                ó$   —  |j         | fdddœ|¤ŽS )NT)r±  r!  rî  )r'  r•  rŠ  r‹  rä  s        rÚ   Údelete_table_clausezSQLCompiler.delete_table_clauseÈ  s3   € Ø,ˆzÔ,Øð
Ø dð
ð 
Ø.0ð
ð 
ð 	
rÜ   c                ó"  —  |j         || fi |¤Ž}|j        }|�||d<   d}n| j         }|r#d| _        | j        s|| _        | j        s|| _        | j        t          z  r5t          i t          ¦   «         ¦  «        }| j        t          z  }|r|| _        nd }d}|j        }|j        h                     |¦  «        }	| j                             |	|	|dœ¦  «         d}
|j        r|
 | j        ||j        fi |¤Žz  }
|
dz  }
	 |                      ||j        ||¬¦  «        }nJ# t&          $ r= |                      ||j        |¦  «        }|r|                      |j        |¬¦  «        }Y nw xY wt+          j        | |||fi |¤Ž |j        r|                      ||¦  «        \  }}nd }|j        r|                      ||¦  «         |
|z  }
| j        s|j        r1| j        r*|
d|                      || j        p|j        |¬	¦  «        z   z  }
|r" | j        ||j        ||fd
|i|¤Ž}|r|
d|z   z  }
|j         r | j!        |j         fd
|i|¤Ž}|r|
d|z   z  }
 | j"        |fd
|i|¤Ž}|r|
d|z   z  }
| j        s|j        r1| j        s*|
d|                      || j        p|j        |¬	¦  «        z   z  }
| j#        r1|stI          | j        ¦  «        nd }|  %                    |¬¦  «        |
z   }
|r|€J ‚| &                    d¬¦  «         | j         '                    d¦  «         |
S )Nré  FTr%  zDELETE úFROM )r@  rL  rX  r@  r�  r&  ÚDELETErŸ  rº  )(rÒ  r@  r§  rP  rÂ  r6  r†  r�  r‘  r‰   rŽ  r@  r   r§   r¨   rØ  r  r  r«  Ú	TypeErrorrÒ  r"   rh  r‹  r÷  r)  r*  rW  rm  r[  rÙ  r©  r®  rT  r—  rv  rä  r-  r°  r�  )r'  r•  ré  rä  r6  r0  r@  rµ  r‹  r2  r  rõ  rD  rö  r¤  r¶  Údlcr'  s                     rÚ   Úvisit_deletezSQLCompiler.visit_deleteÍ  s½  € Ø:˜Ô:Ø˜ð
ð 
Ø!#ð
ð 
ˆð $Ô-ˆàÐ#Ø!-ˆBˆ~ÑØˆHˆHàœ:�~ˆHàð 	3Ø ˆDŒMØÔ)ð 7Ø)6�Ô&ØÔ%ð 3Ø%2�Ô"àŒ<Õ4Ñ4ð 	!Ý$ R­©¬Ñ/Ô/ˆKØœ<­,Ñ6ˆLØð /Ø#.�Ô øàˆKØ ˆLà#Ô0ˆà&Ô,Ð-×3Ò3°KÑ@Ô@ˆØŒ
×Òà#2Ø /Ø)ðð ñ	
ô 	
ð 	
ð ˆàÔ ð 	ØÐ+�DÔ+Ø˜[Ô2ðð Ø68ðð ñ ˆDð 	�‰ˆð	MØ×1Ò1ØØÔ!ØØ'ð	 2ñ ô ˆJˆJøõ ð 	Mð 	Mð 	Mð ×1Ò1Ø˜[Ô.°ñô ˆJð ð MØ—L’L Ô!2À�LÑLÔL�øøð	Møøøõ 	Ô˜d K°ÀÐOÐOÈBÐOÐOÐOàÔð 	!Ø(,×(>Ò(>Ø˜Zñ)ô )Ñ%ˆM˜:˜:ð !ˆMàÔ(ð 	=Ø×+Ò+¨K¸Ñ<Ô<Ð<à�
Ñˆð Ô#ð	Ø'2Ô'=ð	àÔ,ð	ð �C˜$×/Ò/ØØÔ'ÐA¨;Ô+AØ$,ð 0ñ ô ñ ñ ˆDð ð 
	.Ø;˜dÔ;ØØÔ!ØØð	ð ð
 (ðð ðð ˆOð ð .Ø˜˜oÑ-Ñ-�àÔ&ð 	&Ø1�Ô1ØÔ+ðð Ø9DðØHJðð ˆAð ð &Ø˜	 A™Ñ%�à.ˆdÔ.Øð
ð 
Ø%0ð
Ø46ð
ð 
ˆð ð 	Ø�C˜#‘IÑˆDð Ô#ð	Ø'2Ô'=ð	àÔ0ð	ð �C˜$×/Ò/ØØÔ'ÐA¨;Ô+AØ$,ð 0ñ ô ñ ñ ˆDð Œ9ð 	OØ3;ÐE�C ¤
™OœO˜OÀˆMØ×*Ò*¸Ð*ÑGÔGÈ$ÑNˆDàð 	1ØÐ*Ð*Ð*Ø×Ò xÐÑ0Ô0Ð0àŒ
�Š�rÑÔÐàˆs   Ã<D ÄAE"Å!E"c                ó<   — d| j                              |¦  «        z  S )NzSAVEPOINT %s©rÀ  Úformat_savepoint©r'  Úsavepoint_stmträ  s      rÚ   Úvisit_savepointzSQLCompiler.visit_savepointR  s   € Ø ¤× >Ò >¸~Ñ NÔ NÑNÐNrÜ   c                ó<   — d| j                              |¦  «        z  S )NzROLLBACK TO SAVEPOINT %sr³  rµ  s      rÚ   Úvisit_rollback_to_savepointz'SQLCompiler.visit_rollback_to_savepointU  s&   € Ø)¨D¬M×,JÒ,JØñ-
ô -
ñ 
ð 	
rÜ   c                ó<   — d| j                              |¦  «        z  S )NzRELEASE SAVEPOINT %sr³  rµ  s      rÚ   Úvisit_release_savepointz#SQLCompiler.visit_release_savepointZ  s&   € Ø%¨¬×(FÒ(FØñ)
ô )
ñ 
ð 	
rÜ   )rÇ  rv   r@  r¶  rÄ  rÃ  r„  rD  r…  r7  r†  r‹  r‡  rˆ  rì  r   )r"  rh  )r"  rV  )r"  rÁ  )rÄ  r@   r"  r#  )r"  rÈ  )r"  r   )r"  r9   )NT)rò  ró  rö  r7  r"  r?  )NNTNTFN)rò  ró  rô  rõ  rö  r7  r  r  r  r7  r–  r7  r|  r  r"  ru   ©F)rA  ru   r—  r7  r"  r?  )r"  rr  rþ  ©NrÖ   )NFFNrÖ   F)NTrÖ   N)r¬   rá  r¡  râ  rã  r7  r¢  r  rä  rå  rì  r   r"  r×   r%  )NF)rP  rT   rä  r   r"  r×   )rP  rU   rä  r   r"  r×   )rP  rR   rä  r   r"  r×   )r™  rº  r¡  râ  rì  r   r"  r×   )r™  rº  rì  r   r"  r×   )FN)NFNN)
r«   rR  ri  r×   rD  r7  rä  r   r"  r×   )r«   rR  rx  r   rä  r   r"  r×   )FFFFFF)r  r   r!  r¹  r"  r×   )rÃ  r×   r  rL   r"  r×   )r  r×   r"  r×   )rÐ  r×   r  r×   r"  r×   )FFNNNN)r  r×   r¢  r7  r£  r7  rÐ  rh  r¤  rÕ  rÖ  r×  rØ  rj  rä  r   r"  r×   )rä  rc   r±  r7  ræ  r7  rç  rè  ré  rê  r@  rë  rß  rì  rì  r   r"  rh  )	FFFNFFNNF)FNN)
r  r×   r  r×   r  r  r!  r  r"  r#  )NNNTFFT)r§   rd   r  rh  r"  rh  )FFNNNFN)r³   r;  r"  r   ©r³   rÅ  rä  r   r"  r×   ©
râ  rI   rÑ  rÒ  r2  r7  rä  r   r"  r×   )NFF)	FFFNTNNNF)r§   r^   r"  r\  )r@  r×   rA  rq   r  r  r  rg  r  rX  rZ  r7  r½  r¼  r"  r	  r“  )r‰  rH   rä  r   r"  rh  )r•  rF   rä  r   r"  rh  )r‰  rH   ré  rê  rä  r   r"  r×   (  r  r  r  r  ÚEXTRACT_MAPr±  r*   r  rM  r  r  ÚCOMPOUND_KEYWORDSrÓ  rP  rQ  rR  rT  rU  rW  rX  r[  r\  r]  ra  rb  rc  rd  re  rf  rg  ri  rk  rl  rm  Ú	frozensetrn  ro  r  rp  r«  Úpostfetch_lastrowidrr  rE  rs  rt  ru  r€  r‚  r[  rù  Úpatternrç  rø  ræ  r  r×  r~  rŒ  rÕ  rR  r¯  Úro_memoized_propertyr¶  r¸  r½  rÀ  Úmemoized_propertyrÃ  rÇ  Úmemoized_instancemethodrË  Ú
contextlibÚcontextmanagerrÐ  r©  r¨  r  r  rê  r  rú  r6  rò  rª  Úpreload_modulero  ru  r‘  r�  rŸ  r¬  r²  rµ  rÆ  rÌ  rØ  rÜ  rà  rô  rú  rþ  r   r  r  rê  r  r  r#  r3  r8  r>  rA  rJ  rT  rZ  r^  r`  rX  rj  rq  ru  ry  r…  r”  r—  rœ  r¤  r§  r¯  r´  r¹  r¶  rÉ  rÆ  rÃ  rÝ  rÙ  rf  rê  rñ  rú  rý  r  r  r
  r  r  r  r/  rX  r  rG  rI  rL  rO  rQ  r  rï  rð  r[  r]  rd  rh  rl  rp  rs  ru  rw  ry  r{  r}  r  r�  ra  rg  rk  ro  r�  r‘  r•  r˜  rš  r�  r°  r3  r2   rW  r:  r§  rÐ  rÏ  rÔ  r  r*  r(   Ú_CTEOptsrý  r  r  r  r-  r  r4  r=  rC  rE  r  r,  rN  rL  r)  rg  rb  rl  ro  Útypingr   r(  rw  rx  rŸ  rŒ  r‰  r�  r  r-  rÀ  r�  rÖ  r×  r´  rÙ  rá  rà  rì  rò  r÷  r1   Ú
CLIENTSIDErq  r}  ÚSENTINEL_DEFAULTr‚  ry  rz  r{  rþ  r¨   rx  rü  r  rR  r‡  rŒ  r�  r“  r—  r¦  r©  r«  r±  r·  r¹  r»  rÖ   rÜ   rÚ   ræ  ræ  c  sì  € € € € € € ðð ð €Kð 	ˆÔàØØØØØØØð	ð 	ñ	
ô 	
ð ð ð ð ñ ðð: /Ð.Ð.Ñ.Ø6Ð6Ð6Ñ6à€Fà)Ðà€HÐÐÐÑØ€HÐÐÐÑØ€HÐÐÐÑðð
 +Ð*Ð*Ñ*ð%ð .0€OÐ/Ð/Ð/Ñ/ðð .0€OÐ/Ð/Ð/Ñ/ð$ð BFÐÐEÐEÐEÑEðð €KÐÐÐÑà(Ð(Ð(Ñ(ØIà-Ð-Ð-Ñ-ð6ð %Ð$Ð$Ñ$ð4ð ',ÐÐ+Ð+Ð+Ñ+ðð 5:Ð+Ð9Ð9Ð9Ñ9ðð
 "€OÐ!Ð!Ð!Ñ!ðð ÐÐÑØBà!Ð!Ð!Ñ!ðð (Ð'Ð'Ñ'ðð
 .Ð-Ð-Ñ-ðð
 &+ÐÐ*Ð*Ð*Ñ*ðð "€OÐ!Ð!Ð!Ñ!ðð "ÐÐ!Ð!Ð!Ñ!ðð ).ÐÐ-Ð-Ð-Ñ-ðð !€NÐ Ð Ð Ñ ðð !&ÐÐ%Ð%Ð%Ñ%ðð =AÐ Ð@Ð@Ð@Ñ@ðð +/ÐÐ.Ð.Ð.Ñ.ðð
 6:ÐÐ9Ð9Ð9Ñ9à59ÐÐ9Ð9Ð9Ñ9à=AÐÐAÐAÐAÑAà<E¸I¹K¼KÐÐGÐGÐGÑGðð
 :C¸¹¼ÐÐDÐDÐDÑDðð
 8<´ÐÐFÐFÐFÑFð 'Ð&Ð&Ñ&ðð
 Ððð  Ðð%ð 	ð ð ð ð ñ ðð (,€KÐ+Ð+Ð+Ñ+ðð .2ÐÐ1Ð1Ð1Ñ1à.2ÐÐ2Ð2Ð2Ñ2à€FÐÐÐÑà,Ð,Ð,Ñ,ð 3Ð2Ð2Ñ2ð GÐFÐFÑFàÐÐÑà&˜BœJÐ'LÑMÔMÐØ"˜œ
Ð#4Ñ5Ô5ÐØ$˜"œ*ØÔ$ÐFÐFÐ'<Ô'DÐFÐFñô Ðð %/ B¤JØ)ÐÔ'Ð)Ð)ñ%ô %Ð!ð '1 b¤jØ+Ð!Ô)Ð+Ð+ñ'ô 'Ð#ð !Ð Ð Ñ Ø3Ð3Ð3Ñ3àð#ð #ñ „[ð#ð ðCð Cñ „[ðCð )-Ø/3Ø %Ø%Ø59ðUñ Uð Uð Uð Uðn ñ=ð =ð =ñ „Xð=ð  
Ôñð ð ñ Ôðð0 ð(ð (ñ „Xð(ð ðMð Mñ „XðMð* ðGð Gñ „XðGð 
Ôñð ð ñ ÔðñKð Kð Kð Kð 
Ô!ñð ð ñ "Ô!ðð. Ôðð ñ Ôðð.Gð Gð GðRMð Mð Mð^ 
Ôñ!
ð !
ð !
ñ Ôð!
ðF#ð #ð #ð ñð ð ñ „Xðð
 6:Ø!ñ
ñ 
ð 
ð 
ð 
ð2 6:ØGKØ!Ø'+ØØ %Ø=AñIñ Ið Ið Ið IðV 
Ô!ð$ð $ñ "Ô!ð$ðL ð
3ð 
3ñ „Xð
3ð  %ñJñ Jð Jð Jð JðX €TÔÐ3Ñ4Ô4ð
ð 
ñ 5Ô4ð
ð 4Ð3Ð3Ñ3à	Ôñð ð ñ Ôðð 
ÔØ€TÔÐ3Ñ4Ô4ðPð Pñ 5Ô4ñ ÔðPðd 
ÔØ€TÔÐ3Ñ4Ô4ð)ð )ñ 5Ô4ñ Ôð)ñVð ð ð ð Øñ	Nð Nð Nð Nñ`Oð Oð Oð OðOð Oð Oð .3ñ-
ð -
ð -
ð -
ð` .3ñ+ð +ð +ð +ð` Ø!Ø#Ø"ØØñ6ð 6ð 6ð 6ðp
ð 
ð 
ð
/ð /ð /ð ;?Ø"Ø.0ØEIñ9Oñ 9Oð 9Oð 9Oð 9Oðv
ð 
ð 
ð
ð ð ðð ð ð
ð 
ð 
ðð ð ð
ð ð ñ

ð 
ð 
ð 
ð84ð 4ð 4ñKð Kð Kð Kð$ 05ñ4ð 4ð 4ð 4ñlð ð ð ñð ð ð ñð ð ð ð
ð 
ð 
ðð ð ð"@ð @ð @ðIð Ið IðJð Jð JðLð Lð Lðð ð ð&ð ð ð&Kð Kð Kð
ð 
ð 
ð%ð %ð %ð4
ð 
ð 
ð@
ð 
ð 
ð
ð 
ð 
ðFð Fð Fð*
ð 
ð 
ð (,ð#ð #ð #ð #ð #ðJ
ð 
ð 
ð7ð 7ð 7ð ;?ñ0ñ 0ð 0ð 0ð 0ðd8ð 8ð 8ð
ð 
ð 
ñCð Cð Cð Cð 04ñAð Að Að AðF3ð 3ð 3ð-ð -ð -ð-ð -ð -ð
 ACñ.ð .ð .ð .ð`ð ð ð6ð ð ð$Bð Bð BðBð Bð Bð
ð 
ð 
ð

ð 
ð 
ð4ð 4ð 4ð$
ð 
ð 
ð ;?ñH*ð H*ð H*ð H*ðTM1ð M1ð M1ðd ØØØ ñ6ð 6ð 6ð 6ðp8ð 8ð 8ðð ð ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð  %ñ	ñ ð ð ð ð2Gð Gð GðGð Gð Gð 
ÔðIð Iñ ÔðIðJð Jð JðAð Að AðEð Eð EðBð Bð BðFð Fð FðAð Að AðEð Eð EðBð Bð BñFð Fð FñAð Að AñEð Eð EñBð Bð BñFð Fð Fñ

ð 

ð 

ñ	
ð 	
ð 	
ñAð Að AñEð Eð Eñ
ð 
ð 
ñ
ð 
ð 
ñ
ñ 
ð 
ð 
ñ
ñ 
ð 
ð 
ñ
ñ 
ð 
ð 
ð ;?ñ 8ð 8ñ 8ð 8ð 8ð $ØØ"ØØ Øñnñ nð nð nñ`$ð $ð $ð $Ø!%ð	#Dñ #Dð #Dð #DñJ%ñ %ð %ð %ñNð ð ññ ð ð ñ*$ñ $ð $ð $ñ$ñ $ð $ð $ðR #ØØ&*Ø48Ø48Ø15ñFñ Fñ Fð Fð FñPCð Cð Cð ØØ.2Ø&*Ø,0Ø(;¨
Ô(;¸EÑ(BÔ(BðVñ Vñ Vð Vð Vñp3ð 3ð 3ñ0ð 0ð 0ð ØØØØØØØØñcñ cð cð cñJ0ð 0ð 0ñ?ð ?ð ?ññ ð ð ñ"ð "ð "ð EIñ/ñ /ð /ð /ñb9ð 9ð 9ñ(ð (ð (ñ
ñ 
ð 
ð 
ð4 EIñ
ñ 
ð 
ð 
ð8 ØØ Ø"Ø Ø %ØñRJñ RJð RJð RJñhð ð ñð ð ññ ð ð ñ
ð ð ñ$ð $ð $ñ .Ð-Ñ-Ñ-àÔð 
Ø1˜tÔ1Ù  ¡¤Ð-±À	À	ÁÄÐ/LÐMñ 
ô  
Ðð
 ,1ññ ð ð ð: '+ÐÐ*Ð*Ñ*Ñ*ðð ØØØØØØñ]ñ ]ð ]ð ]ñ~
!ñ 
!ð 
!ð 
!ñ2ð 2ð 2ñhbð bð bñHð ð ð Ø %ñ3ñ 3ð 3ð 3ñjð ð ñ7ñ 7ð 7ð 7ñ 	ð 	ð 	ñ
ð 
ð 
ñð ð ñ1ñ 1ð 1ð 1ñ@ð ð ð ØØ+0ñ'ñ 'ð 'ð 'ðX ØØØØØØ!%ØØñ4ñ 4ð 4ð 4ñl
ñ 
ð 
ð 
ñ<
)ð 
)ð 
)ð" (: tÔ'9à,Ô7Ø,Ô>à,Ô=Ø,Ô>à,Ô1Ø,Ô>à,Ô5Ø,Ô5à,Ô5Ø,Ô5à,Ô?Ø,Ô?ð#	
ñ(ô (Ð$ð, $D×#IÒ#Ià,Ô1Ø,Ô:ð	
ñ$ô $Ð ñ<ñ <ð <ð <ñ|oñ oð oð oðd AEñEñ Eð Eð EñNFð Fð Fñ

ð 

ð 

ññ ð ð ñ"ñ ð ñ ð( '+ñTñ Tñ Tð Tñ Tñl
ð 
ñ 
ñ 
ð 
ñ 
ñ
Cñ Cð Cñ CñJOð Oñ Oñ
ð 
ñ 
ñ

ð 
ñ 
ð 
ð 
rÜ   ræ  c                  ó¶   ‡ — e Zd ZdZd d„Zd	„ Z ej        d
¦  «        ˆ fd„¦   «         Zd„ Z	d„ Z
d„ Zd„ Zd!d„Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )"ÚStrSQLCompilera“  A :class:`.SQLCompiler` subclass which allows a small selection
    of non-standard SQL features to render into a string value.

    The :class:`.StrSQLCompiler` is invoked whenever a Core expression
    element is directly stringified without calling upon the
    :meth:`_expression.ClauseElement.compile` method.
    It can render a limited set
    of non-standard SQL constructs to assist in basic stringification,
    however for more substantial custom or dialect-specific SQL constructs,
    it will be necessary to make use of
    :meth:`_expression.ClauseElement.compile`
    directly.

    .. seealso::

        :ref:`faq_sql_expression_string`

    r³   rÅ  rä  r   r"  r×   c                ó   — |j         rdndS )Nrî   r·  )rÊ  rË  s      rÚ   r�  z$StrSQLCompiler.get_select_precolumnst  s   € Ø$Ô.Ð6ˆ{ˆ{°BÐ6rÜ   c                ó   — dS )Nz<name unknown>rÖ   rÛ  s     rÚ   rÜ  z$StrSQLCompiler._fallback_column_namew  s   € ØÐrÜ   zsqlalchemy.engine.urlc                óh  •— |j         dk    r…t          j        j        } |j                             |j         ¦  «                             ¦   «         ¦   «         }|                     |d | ¬¦  «        }t          |t          ¦  «        s |j
        |fi |¤ŽS t          ¦   «                              ||¦  «        S )Nr¹   )r‡  )Ústringify_dialectr*   rk  Ú
engine_urlÚURLr­   Úget_dialectÚstatement_compilerrÐ  rÐ  rÒ  rØ  rå  )r'  râ  rã  rä  ÚurlrÇ  ÚcompilerrÛ  s          €rÚ   rå  z,StrSQLCompiler.visit_unsupported_compilationz  s¯   ø€ àÔ$¨	Ò1Ð1Ý”.Ô+ˆCØM�c”g—n’n WÔ%>Ñ?Ô?×KÒKÑMÔMÑOÔOˆGà×1Ò1Ø˜°4ð 2ñ ô ˆHõ ˜h­Ñ7Ô7ð 7Ø'�xÔ'¨Ð6Ð6°2Ð6Ð6Ð6å‰wŒw×4Ò4°W¸cÑBÔBÐBrÜ   c                óV   —  | j         |j        fi |¤Ž›d | j         |j        fi |¤Ž›d�S )NrJ  rK  )rÒ  r’   r¦   rù  s       rÚ   Úvisit_getitem_binaryz#StrSQLCompiler.visit_getitem_binaryˆ  sJ   € àˆDŒL˜œÐ+Ð+¨Ð+Ð+Ð+Ð+ØˆDŒL˜œÐ,Ð,¨Ð,Ð,Ð,Ð,ð
ð 	
rÜ   c                ó    —  | j         ||fi |¤ŽS r%  ©rÜ  rù  s       rÚ   Úvisit_json_getitem_op_binaryz+StrSQLCompiler.visit_json_getitem_op_binaryŽ  ó   € Ø(ˆtÔ(¨°Ð@Ð@¸RÐ@Ð@Ð@rÜ   c                ó    —  | j         ||fi |¤ŽS r%  rÞ  rù  s       rÚ   Ú!visit_json_path_getitem_op_binaryz0StrSQLCompiler.visit_json_path_getitem_op_binary‘  rà  rÜ   c                ó>   — d| j                              |¦  «        › d�S )Nz<next sequence value: ú>)rÀ  Úformat_sequencerÌ  s      rÚ   rÆ  zStrSQLCompiler.visit_sequence”  s%   € àO T¤]×%BÒ%BÀ8Ñ%LÔ%LÐOÐOÐOð	
rÜ   râ  rI   rÑ  rÒ  r2  r7  c               ót   ‡ — ˆ fd„t          j        |¦  «        D ¦   «         }dd                     |¦  «        z   S )Nc           	     óB   •— g | ]}‰                      d |ddi ¦  «        ‘ŒS )NTFrK  ©rØ   r³  r'  s     €rÚ   r´  z3StrSQLCompiler.returning_clause.<locals>.<listcomp>¡  s?   ø€ ð 
ð 
ð 
àð ×%Ò% d¨A¨t°U¸BÑ?Ô?ð
ð 
ð 
rÜ   rÖ  ré   )r    r×  r‘   rØ  s   `     rÚ   rÙ  zStrSQLCompiler.returning_clause™  sO   ø€ ð
ð 
ð 
ð 
åÔ+¨NÑ;Ô;ð
ñ 
ô 
ˆð ˜dŸiši¨Ñ0Ô0Ñ0Ð0rÜ   c                ó^   ‡ ‡‡— d‰d<   dd                      ˆˆˆ fd„|D ¦   «         ¦  «        z   S )NTr±  r­  ré   c              3  ó8   •K  — | ]} |j         ‰fd ‰i‰¤ŽV — ŒdS ©rç  Nrî  ©rØ   r¶  r�  rä  r'  s     €€€rÚ   rK  z4StrSQLCompiler.update_from_clause.<locals>.<genexpr>«  sQ   øè è € ð #
ð #
àð !ˆAÔ  ÐBÐB°ÐB¸rÐBÐBð#
ð #
ð #
ð #
ð #
ð #
rÜ   rH  rŽ  s   `   ``rÚ   r�  z!StrSQLCompiler.update_from_clause§  s]   øøø€ ð ˆˆ8‰Ø˜Ÿšð #
ð #
ð #
ð #
ð #
ð #
à ð#
ñ #
ô #
ñ 
ô 
ñ 
ð 	
rÜ   c                ó^   ‡ ‡‡— d‰d<   dd                      ˆˆˆ fd„|D ¦   «         ¦  «        z   S )NTr±  ré   c              3  ó8   •K  — | ]} |j         ‰fd ‰i‰¤ŽV — ŒdS rë  rî  rì  s     €€€rÚ   rK  z:StrSQLCompiler.delete_extra_from_clause.<locals>.<genexpr>´  sQ   øè è € ð  
ð  
àð !ˆAÔ  ÐBÐB°ÐB¸rÐBÐBð 
ð  
ð  
ð  
ð  
ð  
rÜ   rH  r¨  s   `   ``rÚ   r©  z'StrSQLCompiler.delete_extra_from_clause°  s]   øøø€ ð ˆˆ8‰Ø�d—i’ið  
ð  
ð  
ð  
ð  
ð  
à ð 
ñ  
ô  
ñ 
ô 
ñ 
ð 	
rÜ   c                ó   — dS )NzSELECT 1 WHERE 1!=1rÖ   r  s      rÚ   r  z#StrSQLCompiler.visit_empty_set_expr¹  s   € Ø$Ð$rÜ   c                ó   — d|z  S )Nz[%s]rÖ   rj  s      rÚ   rb  z!StrSQLCompiler.get_from_hint_text¼  s   € Ø˜‰}ÐrÜ   c                óF   •—  t          ¦   «         j        |fd|j        i|¤ŽS )Nr¨  )rØ  r¯  r  )r'  r«  rä  rÛ  s      €rÚ   r¯  z+StrSQLCompiler.visit_aggregate_strings_func¿  s8   ø€ Ø3�u‰wŒwÔ3Øð
ð 
Ø"$¤'ð
Ø-/ð
ð 
ð 	
rÜ   c                ó    —  | j         |dfi |¤ŽS )Nz
 <regexp> ©r  rù  s       rÚ   r•  z+StrSQLCompiler.visit_regexp_match_op_binaryÄ  s   € Ø,ˆtÔ,¨V°\ÐHÐHÀRÐHÐHÐHrÜ   c                ó    —  | j         |dfi |¤ŽS )Nz <not regexp> ró  rù  s       rÚ   r˜  z/StrSQLCompiler.visit_not_regexp_match_op_binaryÇ  s    € Ø,ˆtÔ,¨VÐ5EÐLÐLÈÐLÐLÐLrÜ   c                óX   — d |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz<regexp replace>(ré   rG  )r’   rï  r¦   rù  s       rÚ   rš  z-StrSQLCompiler.visit_regexp_replace_op_binaryÊ  sN   € € à*ˆFŒKÔ*¨4Ð6Ð6°2Ð6Ð6Ð6Ð6Ø+ˆFŒLÔ+¨DÐ7Ð7°BÐ7Ð7Ð7Ð7ð
ð 	
rÜ   c                óX   — d |j         j        | fi |¤Ž›d |j        j        | fi |¤Ž›d�S )Nz	TRY_CAST(rë   rG  )ro  rï  r  )r'  r   rì  s      rÚ   Úvisit_try_castzStrSQLCompiler.visit_try_castÐ  sN   € € à*ˆDŒKÔ*¨4Ð:Ð:°6Ð:Ð:Ð:Ð:Ø.ˆDŒOÔ.¨tÐ>Ð>°vÐ>Ð>Ð>Ð>ð
ð 	
rÜ   r¾  r¿  )r  r  r  r  r�  rÜ  r*   rÊ  rå  rÜ  rß  râ  rÆ  rÙ  r�  r©  r  rb  r¯  r•  r˜  rš  r÷  r  r  s   @rÚ   rÐ  rÐ  `  sr  ø€ € € € € ðð ð&7ð 7ð 7ð 7ð ð  ð  ð €TÔÐ0Ñ1Ô1ðCð Cð Cð Cñ 2Ô1ðCð
ð 
ð 
ðAð Að AðAð Að Að
ð 
ð 
ð
1ð 1ð 1ð 1ð
ð 
ð 
ð
ð 
ð 
ð%ð %ð %ðð ð ð
ð 
ð 
ð 
ð 
ð
Ið Ið IðMð Mð Mð
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
rÜ   rÐ  c                  óø  — e Zd ZdZer	 	 	 dmdnd„Zej        dod„¦   «         Zej	        d„ ¦   «         Z
	 	 	 dpdqd„Zd„ Zd„ Zd„ Zd„ Zdrd#„Zdsd%„Zdtd(„Z	 dudvd+„Zdwd-„Z	 dud.„Zd/„ Zd0„ Zdxd4„Z	 dyd5„Zd6„ Z	 dwdzd8„Zd9„ Zd:„ Zd;„ Zd<„ Zd=„ Z d>„ Z!d?„ Z"d{dB„Z#dudC„Z$dD„ Z%dE„ Z&d|dI„Z'd}dL„Z(d}dM„Z)d~dO„Z*ddR„Z+dS„ Z,dT„ Z-dU„ Z.d€dX„Z/d�dZ„Z0d[„ Z1d‚d]„Z2dƒd_„Z3d€d`„Z4d�da„Z5d‚db„Z6d„dd„Z7d‚de„Z8d…df„Z9d…dg„Z:d…dh„Z;d†di„Z<d…dj„Z=dk„ Z>dl„ Z?dS )‡ÚDDLCompilerT.rÇ  rv   r@  rE   r½  r¼  rÈ  r7  rÉ  rÊ  c                ó   — d S r%  rÖ   rÔ  s         rÚ   rÕ  zDDLCompiler.__init__Ü  s	   € ð ˆ3rÜ   r"  ræ  c                óP   — | j                              | j         d | j        ¬¦  «        S )Nr  )rÇ  rØ  r½  rN  s    rÚ   rê  zDDLCompiler.sql_compilerå  s-   € àŒ|×.Ò.ØŒL˜$°TÔ5Nð /ñ 
ô 
ð 	
rÜ   c                ó   — | j         j        S r%  )rÇ  r  rN  s    rÚ   Útype_compilerzDDLCompiler.type_compilerë  s   € àŒ|Ô2Ð2rÜ   Nrò  ró  rô  rõ  rö  r÷  c                ó   — d S r%  rÖ   rù  s       rÚ   rú  zDDLCompiler.construct_paramsï  s	   € ð ˆtrÜ   c                ó  — |j         }t          |j        t          j        ¦  «        r½|                     ¦   «         }| j        }|                     |j        ¦  «        }t          |¦  «        dk    r|d         d}}n|d         |d         }}| 	                    d|¦  «         | 	                    d|¦  «         | 	                    d| 
                    |j        ¦  «        ¦  «         | j                             |j        |z  ¦  «        S )Nr   r   r·  rº  r§   r'   ré  )ÚcontextrÐ  Útargetr'   r^   rà  rÀ  Úformat_table_seqrä  r:  ro  rê  r  r@  )r'  Úddlrì  r   rÀ  Úpathr§   Úschs           rÚ   Ú	visit_ddlzDDLCompiler.visit_ddl÷  sè   € à”+ˆÝ�c”j¥&¤,Ñ/Ô/ð 	NØ—l’l‘n”nˆGà”}ˆHØ×,Ò,¨S¬ZÑ8Ô8ˆDÝ�4‰yŒy˜AŠ~ˆ~Ø! !œW b�s��à! "œX t¨A¤w�s�à×Ò˜w¨Ñ.Ô.Ð.Ø×Ò˜x¨Ñ-Ô-Ð-Ø×Ò˜z¨8×+@Ò+@ÀÄÑ+LÔ+LÑMÔMÐMàÔ ×2Ò2°3´=À7Ñ3JÑKÔKÐKrÜ   c                ób   — d}|j         r|dz  }|| j                             |j        ¦  «        z   S )NzCREATE SCHEMA úIF NOT EXISTS )Úif_not_existsrÀ  Úformat_schemarâ  )r'  r­   rä  r  s       rÚ   Úvisit_create_schemazDDLCompiler.visit_create_schema
  s:   € ØˆØÔð 	%ØÐ$Ñ$ˆDØ�d”m×1Ò1°&´.ÑAÔAÑAÐArÜ   c                ó~   — d}|j         r|dz  }|| j                             |j        ¦  «        z  }|j        r|dz  }|S )NzDROP SCHEMA ú
IF EXISTS ú CASCADE)Ú	if_existsrÀ  r
  râ  Úcascade©r'  Údroprä  r  s       rÚ   Úvisit_drop_schemazDDLCompiler.visit_drop_schema  sP   € ØˆØŒ>ð 	!Ø�LÑ ˆDØ�”×+Ò+¨D¬LÑ9Ô9Ñ9ˆØŒ<ð 	Ø�JÑˆDØˆrÜ   c                óÎ  — |j         }| j        }d}|j        r |d                     |j        ¦  «        dz   z  }|dz  }|j        r|dz  }||                     |¦  «        dz   z  }|                      |¦  «        }|r||dz   z  }|dz  }d}d}|j        D ]�}	|	j         }
	 |                      |	|
j	        o| ¬¦  «        }|�||z  }d	}|d
|z   z  }|
j	        rd}ŒD# t          j        $ r8}t          j        d|j        ›d|
j        ›d|j        d         ›�¦  «        |‚d }~ww xY w|                      ||j        ¬¦  «        }|r||d
z   |z   z  }|d|                      |¦  «        z  z  }|S )Nz
CREATE rL  zTABLE r  rF  ú
F©Úfirst_pkr¼  ú	Tz(in table 'z', column 'z'): r   )Ú _include_foreign_key_constraintsz
)%s

)râ  rÀ  r  r‘   r	  ro  Úcreate_table_suffixrB  rÒ  rŒ  r7   r  Údescriptionr  ÚargsÚcreate_table_constraintsÚinclude_foreign_key_constraintsÚpost_create_table)r'  r­   rä  r§   rÀ  r  r  rI  r  Úcreate_columnr¬   Ú	processedÚceÚconsts                 rÚ   Úvisit_create_tablezDDLCompiler.visit_create_table  sþ  € Ø”ˆØ”=ˆàˆØŒ?ð 	4Ø�C—H’H˜Uœ_Ñ-Ô-°Ñ3Ñ3ˆDà�ÑˆØÔð 	%ØÐ$Ñ$ˆDà�×%Ò% eÑ,Ô,¨sÑ2Ñ2ˆà"×6Ò6°uÑ=Ô=ÐØð 	.ØÐ'¨#Ñ-Ñ-ˆDà�‰ˆàˆ	ð ˆØ#œ^ð 	ð 	ˆMØ"Ô*ˆFðØ ŸLšLØ!¨FÔ,>Ð,OÀxÀ<ð )ñ ô �	ð Ð(Ø˜IÑ%�DØ &�IØ˜D 9Ñ,Ñ,�DØÔ%ð $Ø#�HøøÝÔ#ð ð ð ÝÔ&Ð&àÔ(Ð(Ð(¨&¬+¨+¨+°r´w¸q´z°zðCñô ð ðøøøøðøøøð ×-Ò-ØØ-3Ô-Sð .ñ 
ô 
ˆð ð 	-Ø�I Ñ$ uÑ,Ñ,ˆDà�˜d×4Ò4°UÑ;Ô;Ñ;Ñ;ˆØˆs   Â9CÃDÃ&3DÄDrâ  rD   rä  r   r×   c                ó    —  | j         |dfi |¤ŽS )NÚview©Ú_generate_table_selectrù  s      rÚ   Úvisit_create_viewzDDLCompiler.visit_create_viewM  s   € Ø*ˆtÔ*¨7°FÐAÐA¸bÐAÐAÐArÜ   rC   c                ó    —  | j         |dfi |¤ŽS )NÚcreate_table_asr'  rù  s      rÚ   Úvisit_create_table_asz!DDLCompiler.visit_create_table_asP  s    € Ø*ˆtÔ*¨7Ð4EÐLÐLÈÐLÐLÐLrÜ   rB   r!  c                ó   — dS ©Nr·  rÖ   )r'  râ  r!  rä  s       rÚ   Úcreate_table_select_suffixesz(DDLCompiler.create_table_select_suffixesS  s	   € ð ˆrrÜ   r	  úOptional[bool]c                óØ  — | j         }t          |¦  «        }d|d<    | j        j        |j        fi |¤Ž}|�|n|j        }dt          |dd¦  «        rdnd |j        rdnd |dk    rt          |d	d¦  «        rd
n	|dk    rdnd|rdnd |                     |j	        ¦  «        g}	 | j
        ||fi |¤Ž}
|
r|	                     |
¦  «         |	d|gz  }	d                     d„ |	D ¦   «         ¦  «        S )NTr   ÚCREATEÚ
or_replaceFz
OR REPLACEÚ	TEMPORARYr&  ÚmaterializedzMATERIALIZED VIEWr+  ÚTABLEÚVIEWzIF NOT EXISTSÚASrL  c              3  ó   K  — | ]}|¯|V — Œ	d S r%  rÖ   ©rØ   r`  s     rÚ   rK  z5DDLCompiler._generate_table_select.<locals>.<genexpr>  s'   è è € Ð.Ð.˜a¨AÐ.˜Ð.Ð.Ð.Ð.Ð.Ð.rÜ   )rÀ  r  rê  rÒ  r(   r	  rª  Ú	temporaryro  r§   r/  rØ  r‘   )r'  râ  r!  r	  rä  ÚprepÚinner_kwÚ
select_sqlÚuse_if_not_existsr!  Úsuffixess              rÚ   r(  z"DDLCompiler._generate_table_select[  sI  € ð Œ}ˆå˜‘8”8ˆØ$(ˆ�Ñ!Ø.�TÔ&Ô.¨wÔ/AÐNÐNÀXÐNÐNˆ
ð
 Ð(ð ˆMàÔ&ð 	ð Ý# G¨\¸5ÑAÔAÐKˆLˆLÀtØ"Ô,Ð6ˆKˆK°$ð ˜F’?�?¥w¨w¸ÈÑ'NÔ'N�?ð $Ð#à %Ð):Ò :Ð :�W�WÀà0Ð:ˆOˆO°dØ×Ò˜gœmÑ,Ô,ð&
ˆð 5�4Ô4°W¸eÐJÐJÀrÐJÐJˆØð 	#Ø�LŠL˜Ñ"Ô"Ð"Ø�$˜
Ð#Ñ#ˆØ�xŠxÐ.Ð. 5Ð.Ñ.Ô.Ñ.Ô.Ð.rÜ   Fc                ó¶   ‡ — |j         }|j        rd S ‰                      ||¬¦  «        }d                     ˆ fd„|j        D ¦   «         ¦  «        }|r|d|z   z  }|S )Nr  rL  c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r%  r  ©rØ   rÊ   r'  s     €rÚ   rK  z2DDLCompiler.visit_create_column.<locals>.<genexpr>ˆ  s@   øè è € ð 
ð 
Ø)3ˆD�LŠL˜Ñ$Ô$ð
ð 
ð 
ð 
ð 
ð 
rÜ   )râ  ÚsystemÚget_column_specificationr‘   Úconstraints)r'  r­   r  rä  r¬   r  r#  s   `      rÚ   Úvisit_create_columnzDDLCompiler.visit_create_column�  sŠ   ø€ Ø”ˆàŒ=ð 	Ø�4à×,Ò,¨V¸hÐ,ÑGÔGˆØ—’ð 
ð 
ð 
ð 
Ø7=Ô7Ið
ñ 
ô 
ñ 
ô 
ˆð ð 	 Ø�C˜%‘KÑˆDàˆrÜ   c                óL  ‡ ‡‡— g }‰j         r|                     ‰j         ¦  «         ‰j        }|�|                     |¦  «        Šnt	          ¦   «         Š|                     ˆˆfd„‰j        D ¦   «         ¦  «         d                     d„ ˆ fd„|D ¦   «         D ¦   «         ¦  «        S )Nc                ó.   •— g | ]}|‰j         u¯|‰v¯|‘ŒS rÖ   )rŒ  )rØ   r³  Ú	omit_fkcsr§   s     €€rÚ   r´  z8DDLCompiler.create_table_constraints.<locals>.<listcomp>   s;   ø€ ð ð ð àØ˜EÔ-Ð-Ð-°!¸9Ð2DÐ2Dð à2DÐ2DÐ2DrÜ   z, 
	c              3  ó   K  — | ]}|®|V — Œ	d S r%  rÖ   r:  s     rÚ   rK  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>§  s4   è è € ð 
ð 
àð ˆ}ð ð ˆ}ˆ}ˆ}ð
ð 
rÜ   c              3  ó¦   •K  — | ]K}|                      ‰¦  «        ¯‰j        j        rt          |d d¦  «        °4‰                     |¦  «        V — ŒLdS )Ú	use_alterFN)Ú_should_create_for_compilerrÇ  Úsupports_alterrª  rÒ  rC  s     €rÚ   rK  z7DDLCompiler.create_table_constraints.<locals>.<genexpr>©  s|   øè è € ð ð àØ×:Ò:¸4Ñ@Ô@ðð
 œÔ3ðõ # :¨{¸EÑBÔBðØ—’˜ZÑ(Ô(ðð ð ð ð ð rÜ   )rŒ  rØ  Úforeign_key_constraintsru  r‰   rZ  Ú_sorted_constraintsr‘   )r'  r§   r  rä  rF  Úall_fkcsrJ  s   ``    @rÚ   r  z$DDLCompiler.create_table_constraints�  sø   øøø€ ð
 ˆØÔð 	2Ø×Ò˜uÔ0Ñ1Ô1Ð1àÔ0ˆØ+Ð7Ø ×+Ò+Ð,LÑMÔMˆIˆIå™œˆIà×Òðð ð ð ð àÔ2ðñ ô ñ	
ô 	
ð 	
ð �}Š}ð 
ð 
ðð ð ð à"-ðñ ô ð
ñ 
ô 
ñ 
ô 
ð 	
rÜ   c                ób   — d}|j         r|dz  }|| j                             |j        ¦  «        z   S )Nz
DROP TABLE r  )r  rÀ  ro  râ  r  s       rÚ   Úvisit_drop_tablezDDLCompiler.visit_drop_tableµ  s8   € ØˆØŒ>ð 	!Ø�LÑ ˆDØ�d”m×0Ò0°´Ñ>Ô>Ñ>Ð>rÜ   c                ó†   — d}|j         r|dz  }n|dz  }|j        r|dz  }|| j                             |j        ¦  «        z   S )Nz
DROP zMATERIALIZED VIEW zVIEW r  )r5  r  rÀ  ro  râ  r  s       rÚ   Úvisit_drop_viewzDDLCompiler.visit_drop_view»  sY   € ØˆØÔð 	ØÐ(Ñ(ˆDˆDà�G‰OˆDØŒ>ð 	!Ø�LÑ ˆDØ�d”m×0Ò0°´Ñ>Ô>Ñ>Ð>rÜ   r™  r\   r#  c                óL   — |j         €t          j        d|j        z  ¦  «        ‚d S )Nz,Index '%s' is not associated with any table.)r§   r7   r  r  )r'  r™  s     rÚ   Ú_verify_index_tablezDDLCompiler._verify_index_tableÅ  s1   € ØŒ;ÐÝÔ"Ø>ÀÄÑKñô ð ð ÐrÜ   c           	     ó„  ‡ — |j         }‰                      |¦  «         ‰ j        }d}|j        r|dz  }|j        €t          j        d¦  «        ‚|dz  }|j        r|dz  }|‰                      ||¬¦  «        ›d| 	                    |j
        |¬¦  «        ›d	d
                     ˆ fd„|j        D ¦   «         ¦  «        ›d�z  }|S )NzCREATE úUNIQUE z0CREATE INDEX requires that the index have a namezINDEX r  ©Úinclude_schemarî  ©rê  r?  ré   c              3  óR   •K  — | ]!}‰j                              |d d¬¦  «        V — Œ"dS )FT©rã  r   N)rê  rÒ  )rØ   rP  r'  s     €rÚ   rK  z1DDLCompiler.visit_create_index.<locals>.<genexpr>â  sX   øè è € ð ð ð ð Ô!×)Ò)Ø¨¸Tð *ñ ô ðð ð ð ð ð rÜ   rG  )râ  rX  rÀ  r´   r  r7   r  r	  Ú_prepared_index_namero  r§   r‘   Úexpressions)r'  r­   r\  Úinclude_table_schemarä  r™  rÀ  r  s   `       rÚ   Úvisit_create_indexzDDLCompiler.visit_create_indexË  s&  ø€ ð ”ˆØ× Ò  Ñ'Ô'Ð'Ø”=ˆØˆØŒ<ð 	Ø�IÑˆDØŒ:ÐÝÔ"ØBñô ð ð 	�ÑˆØÔð 	%ØÐ$Ñ$ˆDàØ×%Ò% e¸NÐ%ÑKÔKÐKÐKØ×!Ò!Ø”Ð(<ð "ñ ô ð ð ð �IŠIð ð ð ð ð "Ô-ð	ñ ô ñ ô ð ð ð
ñ 	
ˆð ˆrÜ   c                ó–   — |j         }|j        €t          j        d¦  «        ‚d}|j        r|dz  }||                      |d¬¦  «        z   S )Nz.DROP INDEX requires that the index have a namez
DROP INDEX r  Tr[  )râ  r  r7   r  r  r`  )r'  r  rä  r™  r  s        rÚ   Úvisit_drop_indexzDDLCompiler.visit_drop_indexë  sb   € Ø”ˆàŒ:ÐÝÔ"Ø@ñô ð ð ˆØŒ>ð 	!Ø�LÑ ˆDà�d×/Ò/°ÀdÐ/ÑKÔKÑKÐKrÜ   r\  c                óâ   — |j         � | j                             |j         ¦  «        }nd }|r|r| j                             |¦  «        }nd }| j                             |¦  «        }|r|dz   |z   }|S ©NrI  )r§   rÀ  rí  rî  Úformat_index)r'  r™  r\  rñ  Úschema_nameÚ
index_names         rÚ   r`  z DDLCompiler._prepared_index_nameø  sŒ   € ð Œ;Ð"Ø#œ}×>Ò>¸u¼{ÑKÔKÐÐà#ÐØð 	Ð.ð 	Øœ-×4Ò4Ð5EÑFÔFˆKˆKàˆKàœ-×4Ò4°UÑ;Ô;ˆ
àð 	8Ø$ sÑ*¨ZÑ7ˆJØÐrÜ   c                ó†   — d| j                              |j        j        ¦  «        ›d|                      |j        ¦  «        ›�S )NúALTER TABLE z ADD )rÀ  ro  râ  r§   rÒ  ©r'  r­   rä  s      rÚ   Úvisit_add_constraintz DDLCompiler.visit_add_constraint
  s@   € € àŒM×&Ò& v¤~Ô';Ñ<Ô<Ð<Ð<Ø�LŠL˜œÑ(Ô(Ð(ð
ð 	
rÜ   c                ó´   — d| j                              |j        ¦  «        ›d| j                             |j        j        t          j        ¦   «         ¦  «        ›�S )NzCOMMENT ON TABLE rì   )rÀ  ro  râ  rê  r:  Úcommentr)   ÚStringrm  s      rÚ   Úvisit_set_table_commentz#DDLCompiler.visit_set_table_comment  sV   € € àŒM×&Ò& v¤~Ñ6Ô6Ð6Ð6ØÔ×2Ò2Ø”Ô&­¬Ñ(9Ô(9ñô ð ð
ð 	
rÜ   c                óF   — d| j                              |j        ¦  «        z  S )NzCOMMENT ON TABLE %s IS NULL)rÀ  ro  râ  ©r'  r  rä  s      rÚ   Úvisit_drop_table_commentz$DDLCompiler.visit_drop_table_comment  s(   € Ø,¨t¬}×/IÒ/IØŒLñ0
ô 0
ñ 
ð 	
rÜ   c                óº   — d| j                              |j        dd¬¦  «        ›d| j                             |j        j        t          j        ¦   «         ¦  «        ›�S )NzCOMMENT ON COLUMN T)Ú	use_tablerê  rì   )rÀ  Úformat_columnrâ  rê  r:  rp  r)   rq  rm  s      rÚ   Úvisit_set_column_commentz$DDLCompiler.visit_set_column_comment  sj   € € àŒM×'Ò'Ø”¨$¸4ð (ñ ô ð ð ð Ô×2Ò2Ø”Ô&­¬Ñ(9Ô(9ñô ð ð	
ð 	
rÜ   c                óJ   — d| j                              |j        d¬¦  «        z  S )NzCOMMENT ON COLUMN %s IS NULLT)rw  )rÀ  rx  râ  rt  s      rÚ   Úvisit_drop_column_commentz%DDLCompiler.visit_drop_column_comment'  s0   € Ø-°´×0KÒ0KØŒL Dð 1Lñ 1
ô 1
ñ 
ð 	
rÜ   c                óF   — t          j        | t          |¦  «        ¦  «        ‚r%  rß  rm  s      rÚ   Úvisit_set_constraint_commentz(DDLCompiler.visit_set_constraint_comment,  s   € ÝÔ-¨dµD¸±L´LÑAÔAÐArÜ   c                óF   — t          j        | t          |¦  «        ¦  «        ‚r%  rß  rt  s      rÚ   Úvisit_drop_constraint_commentz)DDLCompiler.visit_drop_constraint_comment/  s   € ÝÔ-¨dµD¸±J´JÑ?Ô?Ð?rÜ   Úidentity_optionsr[   c                óR  — g }|j         �|                     d|j         z  ¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     d¦  «         |j        �|                     d¦  «         |j        �|                     d|j        z  ¦  «         |j        �|                     |j        rdnd	¦  «         d
 	                    |¦  «        S )NzINCREMENT BY %dzSTART WITH %dzMINVALUE %dzMAXVALUE %dzNO MINVALUEzNO MAXVALUEzCACHE %dÚCYCLEzNO CYCLErL  )
Ú	incrementrØ  r¤  ÚminvalueÚmaxvalueÚ
nominvalueÚ
nomaxvalueÚcacheÚcycler‘   )r'  r€  r  s      rÚ   Úget_identity_optionsz DDLCompiler.get_identity_options2  s*  € ØˆØÔ%Ð1Ø�KŠKÐ)Ð,<Ô,FÑFÑGÔGÐGØÔ!Ð-Ø�KŠK˜Ð*:Ô*@Ñ@ÑAÔAÐAØÔ$Ð0Ø�KŠK˜Ð(8Ô(AÑAÑBÔBÐBØÔ$Ð0Ø�KŠK˜Ð(8Ô(AÑAÑBÔBÐBØÔ&Ð2Ø�KŠK˜Ñ&Ô&Ð&ØÔ&Ð2Ø�KŠK˜Ñ&Ô&Ð&ØÔ!Ð-Ø�KŠK˜
Ð%5Ô%;Ñ;Ñ<Ô<Ð<ØÔ!Ð-Ø�KŠKÐ#3Ô#9ÐI˜˜¸zÑJÔJÐJØ�xŠx˜‰~Œ~ÐrÜ   c                ó¼   — d}|j         r|dz  }|| j                             |j        ¦  «        z  }|r||z  }|                      |j        ¦  «        }|r|d|z   z  }|S )NzCREATE SEQUENCE r  rL  )r	  rÀ  rå  râ  rŠ  )r'  r­   r¹  rä  r  Úoptionss         rÚ   Úvisit_create_sequencez!DDLCompiler.visit_create_sequenceF  sz   € Ø!ˆØÔð 	%ØÐ$Ñ$ˆDØ�”×-Ò-¨f¬nÑ=Ô=Ñ=ˆàð 	Ø�F‰NˆDØ×+Ò+¨F¬NÑ;Ô;ˆØð 	"Ø�C˜'‘MÑ!ˆDØˆrÜ   c                ób   — d}|j         r|dz  }|| j                             |j        ¦  «        z   S )NzDROP SEQUENCE r  )r  rÀ  rå  râ  r  s       rÚ   Úvisit_drop_sequencezDDLCompiler.visit_drop_sequenceS  s8   € ØˆØŒ>ð 	!Ø�LÑ ˆDØ�d”m×3Ò3°D´LÑAÔAÑAÐArÜ   c                ó  — |j         }|j        �| j                             |¦  «        }nd }|€t	          j        d|j         z  ¦  «        ‚d| j                             |j         j        ¦  «        ›d|j        rdnd›|›|j	        rdnd›�S )Nz<Can't emit DROP CONSTRAINT for constraint %r; it has no namerl  z DROP CONSTRAINT r  r·  r  )
râ  r  rÀ  Úformat_constraintr7   r  ro  r§   r  r  )r'  r  rä  rÊ   Úformatted_names        rÚ   Úvisit_drop_constraintz!DDLCompiler.visit_drop_constraintY  s­   € Ø”\ˆ
ØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNˆNà!ˆNàÐ!ÝÔ"ð!Ø#'¤<ñ0ñô ð ð "ð ŒM×&Ò& t¤|Ô'9Ñ:Ô:Ð:Ð:Ø œNÐ2ˆLˆL°Ð2ØˆNØœ,Ð.ˆJˆJ¨BÐ.ð	
ð 	
rÜ   r¬   úColumn[Any]rì  c                ó¾  — | j                              |¦  «        dz   | j        j                             |j        |¬¦  «        z   }|                      |¦  «        }|�|d|z   z  }|j        � |d|                      |j        ¦  «        z   z  }|j        �,| j        j	        r |d|                      |j        ¦  «        z   z  }|j
        s|j        r| j        j	        s|dz  }|S )NrL  )r  z	 DEFAULT z	 NOT NULL)rÀ  rx  rÇ  r  rÒ  r  Úget_column_default_stringÚcomputedÚidentityÚsupports_identity_columnsÚnullable)r'  r¬   rì  Úcolspecr¹   s        rÚ   rE  z$DDLCompiler.get_column_specificationl  s  € ð ŒM×'Ò'¨Ñ/Ô/ØñàŒlÔ1×9Ò9Ø”¨Vð :ñ ô ñð 	ð ×0Ò0°Ñ8Ô8ˆØÐØ�{ WÑ,Ñ,ˆGàŒ?Ð&Ø�s˜TŸ\š\¨&¬/Ñ:Ô:Ñ:Ñ:ˆGð ŒOÐ'Ø”Ô6ð (ð �s˜TŸ\š\¨&¬/Ñ:Ô:Ñ:Ñ:ˆGàŒð 	#Ø”ð	#Ø'+¤|Ô'Mð	#ð �{Ñ"ˆGØˆrÜ   r§   r^   c                ó   — dS r.  rÖ   ©r'  r§   s     rÚ   r  zDDLCompiler.create_table_suffix‰  ó   € ØˆrrÜ   c                ó   — dS r.  rÖ   r�  s     rÚ   r  zDDLCompiler.post_create_tableŒ  rž  rÜ   rh  c                ó‚   — t          |j        t          j        ¦  «        r|                      |j        j        ¦  «        S d S r%  )rÐ  Úserver_defaultr'   ÚDefaultClauseÚrender_default_stringÚargrÛ  s     rÚ   r–  z%DDLCompiler.get_column_default_string�  s9   € Ý�fÔ+­VÔ-AÑBÔBð 	Ø×-Ò-¨fÔ.CÔ.GÑHÔHÐHà�4rÜ   r¹   úUnion[Visitable, str]c                ó®   — t          |t          ¦  «        r%| j                             |t          j        ¦  «        S | j                             |d¬¦  «        S )NT)r   )rÐ  r×   rê  r:  r)   rZ  rÒ  )r'  r¹   s     rÚ   r£  z!DDLCompiler.render_default_string•  sV   € Ý�g�sÑ#Ô#ð 	JØÔ$×9Ò9Ø�Ô,ñô ð ð Ô$×,Ò,¨WÀDÐ,ÑIÔIÐIrÜ   c                ód   — |j         r|                      |¦  «        S |                      |¦  «        S r%  )Úis_column_levelÚvisit_column_check_constraintÚvisit_check_constraint©r'  rÊ   rä  s      rÚ   Ú&visit_table_or_column_check_constraintz2DDLCompiler.visit_table_or_column_check_constraint�  s5   € ØÔ%ð 	;Ø×5Ò5°jÑAÔAÐAà×.Ò.¨zÑ:Ô:Ð:rÜ   c                ót   —  | j         |fi |¤Ž}| | j        |fi |¤Žz  }||                      |¦  «        z  }|S r%  ©Údefine_constraint_preambleÚdefine_check_bodyÚdefine_constraint_deferrability©r'  rÊ   rä  r  s       rÚ   rª  z"DDLCompiler.visit_check_constraint£  óY   € Ø.ˆtÔ.¨zÐ@Ð@¸RÐ@Ð@ˆØÐ&�Ô& zÐ8Ð8°RÐ8Ð8Ñ8ˆØ�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÜ   c                ót   —  | j         |fi |¤Ž}| | j        |fi |¤Žz  }||                      |¦  «        z  }|S r%  r®  r²  s       rÚ   r©  z)DDLCompiler.visit_column_check_constraint©  r³  rÜ   rÊ   r]   c                óž   — t          |¦  «        dk    rdS  | j        |fi |¤Ž}| | j        |fi |¤Žz  }||                      |¦  «        z  }|S ©Nr   r·  )rä  r¯  Údefine_primary_key_bodyr±  r²  s       rÚ   Úvisit_primary_key_constraintz(DDLCompiler.visit_primary_key_constraint¯  sq   € õ ˆz‰?Œ?˜aÒÐØ�2Ø.ˆtÔ.¨zÐ@Ð@¸RÐ@Ð@ˆØÐ,�Ô,¨ZÐ>Ð>¸2Ð>Ð>Ñ>ˆØ�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÜ   rZ   c                óÔ   —  | j         |fi |¤Ž}| | j        |fi |¤Žz  }||                      |¦  «        z  }||                      |¦  «        z  }||                      |¦  «        z  }|S r%  )r¯  Údefine_foreign_key_bodyÚdefine_constraint_matchÚdefine_constraint_cascadesr±  r²  s       rÚ   Úvisit_foreign_key_constraintz(DDLCompiler.visit_foreign_key_constraint¹  s‹   € ð /ˆtÔ.¨zÐ@Ð@¸RÐ@Ð@ˆØÐ,�Ô,¨ZÐ>Ð>¸2Ð>Ð>Ñ>ˆØ�×,Ò,¨ZÑ8Ô8Ñ8ˆØ�×/Ò/°
Ñ;Ô;Ñ;ˆØ�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÜ   c                ó,   — |                      |¦  «        S )z=Format the remote table clause of a CREATE CONSTRAINT clause.)ro  )r'  rÊ   r§   rÀ  s       rÚ   Údefine_constraint_remote_tablez*DDLCompiler.define_constraint_remote_tableÃ  s   € ð ×$Ò$ UÑ+Ô+Ð+rÜ   r_   c                óž   — t          |¦  «        dk    rdS  | j        |fi |¤Ž}| | j        |fi |¤Žz  }||                      |¦  «        z  }|S r¶  )rä  r¯  Údefine_unique_bodyr±  r²  s       rÚ   Úvisit_unique_constraintz#DDLCompiler.visit_unique_constraintÈ  sq   € õ ˆz‰?Œ?˜aÒÐØ�2Ø.ˆtÔ.¨zÐ@Ð@¸RÐ@Ð@ˆØÐ'�Ô'¨
Ð9Ð9°bÐ9Ð9Ñ9ˆØ�×4Ò4°ZÑ@Ô@Ñ@ˆØˆrÜ   rY   c                ó`   — d}|j         �$| j                             |¦  «        }|�|d|z  z  }|S )Nr·  zCONSTRAINT %s )r  rÀ  r‘  )r'  rÊ   rä  r  r’  s        rÚ   r¯  z&DDLCompiler.define_constraint_preambleÒ  sA   € ð ˆØŒ?Ð&Ø!œ]×<Ò<¸ZÑHÔHˆNØÐ)ØÐ(¨>Ñ9Ñ9�ØˆrÜ   c                óŠ   ‡ — d}|dz  }|dd                      ˆ fd„|j        r|j        n|j        D ¦   «         ¦  «        z  z  }|S )Nr·  zPRIMARY KEY rW  ré   c              3  óV   •K  — | ]#}‰j                              |j        ¦  «        V — Œ$d S r%  ©rÀ  rë  r  rè  s     €rÚ   rK  z6DDLCompiler.define_primary_key_body.<locals>.<genexpr>á  sI   øè è € ð #
ð #
àð ŒM×Ò ¤Ñ'Ô'ð#
ð #
ð #
ð #
ð #
ð #
rÜ   )r‘   Ú_implicit_generatedÚcolumns_autoinc_firstrB  r²  s   `   rÚ   r·  z#DDLCompiler.define_primary_key_bodyÜ  sz   ø€ ð ˆØ�ÑˆØ�˜Ÿšð #
ð #
ð #
ð #
ð Ô1ð(�
Ô0Ð0àÔ'ð#
ñ #
ô #
ñ 
ô 
ñ 
ñ 	
ˆð ˆrÜ   c           	     ó0  ‡— | j         Št          |j        ¦  «        d         j        j        }dd                     ˆfd„|j        D ¦   «         ¦  «        ›d|                      ||‰¦  «        ›dd                     ˆfd„|j        D ¦   «         ¦  «        ›d�}|S )	Nr   zFOREIGN KEY(ré   c              3  óV   •K  — | ]#}‰                      |j        j        ¦  «        V — Œ$d S r%  )rë  Úparentr  ©rØ   rª  rÀ  s     €rÚ   rK  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>ñ  óD   øè è € ð ð Ø23�—’˜qœxœ}Ñ-Ô-ðð ð ð ð ð rÜ   z) REFERENCES r?  c              3  óV   •K  — | ]#}‰                      |j        j        ¦  «        V — Œ$d S r%  )rë  r¬   r  rÌ  s     €rÚ   rK  z6DDLCompiler.define_foreign_key_body.<locals>.<genexpr>÷  rÍ  rÜ   rG  )rÀ  r¿  r#   r¬   r§   r‘   r¿  )r'  rÊ   rä  Úremote_tabler  rÀ  s        @rÚ   rº  z#DDLCompiler.define_foreign_key_bodyë  sç   ø€ ð ”=ˆÝ˜JÔ/Ñ0Ô0°Ô3Ô:Ô@ˆˆà�IŠIð ð ð ð Ø7AÔ7Jðñ ô ñ ô ð ð ð ×/Ò/Ø˜L¨(ñô ð ð ð �IŠIð ð ð ð Ø7AÔ7Jðñ ô ñ ô ð ð ð

ˆð ˆrÜ   c                óp   ‡ — d ‰ j         |fi |¤Ž›dd                     ˆ fd„|D ¦   «         ¦  «        ›d�}|S )NrZ  rF  ré   c              3  óV   •K  — | ]#}‰j                              |j        ¦  «        V — Œ$d S r%  rÆ  rè  s     €rÚ   rK  z1DDLCompiler.define_unique_body.<locals>.<genexpr>  s5   øè è € ÐFÐF°a�d”m×)Ò)¨!¬&Ñ1Ô1ÐFÐFÐFÐFÐFÐFrÜ   rG  )Ú!define_unique_constraint_distinctr‘   r²  s   `   rÚ   rÁ  zDDLCompiler.define_unique_bodyý  s]   ø€ € ð 3ˆDÔ2°:ÐDÐDÀÐDÐDÐDÐDØ�IŠIÐFÐFÐFÐF¸:ÐFÑFÔFÑFÔFÐFÐFð
ˆð ˆrÜ   rW   c                óP   — d| j                              |j        dd¬¦  «        z  }|S )Nz
CHECK (%s)FTr_  )rê  rÒ  r¨  r²  s       rÚ   r°  zDDLCompiler.define_check_body  s7   € Ø˜dÔ/×7Ò7ØÔ¨eÀ4ð 8ñ 
ô 
ñ 
ˆð ˆrÜ   c                ó   — dS r.  rÖ   r«  s      rÚ   rÒ  z-DDLCompiler.define_unique_constraint_distinct  s	   € ð ˆrrÜ   c                ó†   — d}|j         �||                      |¦  «        z  }|j        �||                      |¦  «        z  }|S r.  )ÚondeleteÚ"define_constraint_ondelete_cascadeÚonupdateÚ"define_constraint_onupdate_cascade©r'  rÊ   r  s      rÚ   r¼  z&DDLCompiler.define_constraint_cascades  sP   € ð ˆØÔÐ*Ø�D×;Ò;¸JÑGÔGÑGˆDàÔÐ*Ø�D×;Ò;¸JÑGÔGÑGˆDØˆrÜ   c                óR   — d| j                              |j        t          ¦  «        z  S )Nz ON DELETE %s)rÀ  r�  rÖ  ÚFK_ON_DELETE©r'  rÊ   s     rÚ   r×  z.DDLCompiler.define_constraint_ondelete_cascade  ó-   € ð  ¤×!BÒ!BØÔ¥ñ"
ô "
ñ 
ð 	
rÜ   c                óR   — d| j                              |j        t          ¦  «        z  S )Nz ON UPDATE %s)rÀ  r�  rØ  ÚFK_ON_UPDATErÝ  s     rÚ   rÙ  z.DDLCompiler.define_constraint_onupdate_cascade#  rÞ  rÜ   c                ó    — d}|j         �|j         r|dz  }n|dz  }|j        �+|d| j                             |j        t          ¦  «        z  z  }|S )Nr·  z DEFERRABLEz NOT DEFERRABLEz INITIALLY %s)rË   rÅ   rÀ  r�  ÚFK_INITIALLYrÚ  s      rÚ   r±  z+DDLCompiler.define_constraint_deferrability*  so   € ØˆØÔ Ð,ØÔ$ð *Ø˜Ñ%��àÐ)Ñ)�ØÔÐ+Ø�O d¤m×&GÒ&GØÔ$¥lñ'ô 'ñ ñ ˆDð ˆrÜ   c                ó2   — d}|j         �|d|j         z  z  }|S )Nr·  z	 MATCH %s)rw  rÚ  s      rÚ   r»  z#DDLCompiler.define_constraint_match7  s'   € ØˆØÔÐ'Ø�K *Ô"2Ñ2Ñ2ˆDØˆrÜ   c                óŠ   — d| j                              |j        dd¬¦  «        z  }|j        du r|dz  }n|j        du r|dz  }|S )NzGENERATED ALWAYS AS (%s)FTr_  z STOREDz VIRTUAL)rê  rÒ  r¨  Ú	persisted)r'  Ú	generatedrä  r  s       rÚ   Úvisit_computed_columnz!DDLCompiler.visit_computed_column=  sj   € Ø)¨DÔ,=×,EÒ,EØÔ¨UÀ$ð -Fñ -
ô -
ñ 
ˆð Ô $Ð&Ð&Ø�IÑˆDˆDØÔ  EÐ)Ð)Ø�JÑˆDØˆrÜ   c                ób   — d|j         rdnd›d�}|                      |¦  «        }|r|d|z  z  }|S )Nz
GENERATED ÚALWAYSz
BY DEFAULTz AS IDENTITYrT  )ÚalwaysrŠ  )r'  r˜  rä  r  rŒ  s        rÚ   Úvisit_identity_columnz!DDLCompiler.visit_identity_columnG  sP   € € à œÐ9ˆHˆH¨\Ð9Ð9ð
ˆð ×+Ò+¨HÑ5Ô5ˆØð 	&Ø�G˜gÑ%Ñ%ˆDØˆrÜ   )...)
rÇ  rv   r@  rE   r½  r¼  rÈ  r7  rÉ  rÊ  rý  rÿ  r   )râ  rD   rä  r   r"  r×   )râ  rC   rä  r   r"  r×   )râ  rB   r!  r×   rä  r   r"  r×   r%  )
râ  rB   r!  r×   r	  r0  rä  r   r"  r×   r¼  )r™  r\   r"  r#  )FT)r™  r\   r\  r7  r"  r×   )r€  r[   r"  r×   )r¬   r”  rì  r   r"  r×   )r§   r^   r"  r×   )r¬   r”  r"  rh  )r¹   r¥  r"  r×   )rÊ   r]   rä  r   r"  r×   )rÊ   rZ   rä  r   r"  r×   )rÊ   r_   rä  r   r"  r×   )rÊ   rY   rä  r   r"  r×   )rÊ   rW   rä  r   r"  r×   )rÊ   rZ   r"  r×   )rÊ   rY   r"  r×   )@r  r  r  r  r   rÕ  r*   rÅ  rê  rÆ  rý  rú  r  r  r  r$  r)  r,  r/  r(  rG  r  rT  rV  rX  rc  re  r`  rn  rr  ru  ry  r{  r}  r  rŠ  r�  r�  r“  rE  r  r  r–  r£  r¬  rª  r©  r¸  r½  r¿  rÂ  r¯  r·  rº  rÁ  r°  rÒ  r¼  r×  rÙ  r±  r»  rç  rë  rÖ   rÜ   rÚ   rù  rù  ×  s’  € € € € € Ø€Fàð 	ð FIØ,/Ø03ð	ð 	ð 	ð 	ð 	ð 
Ôð
ð 
ð 
ñ Ôð
ð
 
Ôð3ð 3ñ Ôð3ð
 6:ØGKØ!ð	ð ð ð ð ðLð Lð Lð&Bð Bð Bðð ð ð2ð 2ð 2ðhBð Bð Bð BðMð Mð Mð Mðð ð ð ð )-ð	$/ð $/ð $/ð $/ð $/ðLð ð ð ð  7;ð#
ð #
ð #
ð #
ðJ?ð ?ð ?ð?ð ?ð ?ðð ð ð ð BFðð ð ð ð@Lð Lð Lð 49ðð ð ð ð ð$
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð

ð 
ð 
ð
ð 
ð 
ð
Bð Bð Bð@ð @ð @ðð ð ð ð(ð ð ð ðBð Bð Bð
ð 
ð 
ð&ð ð ð ð:ð ð ð ðð ð ð ðð ð ð ðJð Jð Jð Jð;ð ;ð ;ðð ð ðð ð ðð ð ð ðð ð ð ð,ð ,ð ,ð
ð ð ð ðð ð ð ðð ð ð ðð ð ð ð$ð ð ð ðð ð ð ðð ð ð ð
	ð 	ð 	ð 	ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ðð ð ðð ð ð ð rÜ   rù  c                  óŠ  — e Zd Zd[d„Zd\d	„Zd]d„Zd^d„Zd_d„Zd`d„Zdad„Z	dbd„Z
dcd„Zddd„Zded„Zdfd„Zdgd„Zdhd!„Zdid#„Z	 	 djdkd-„Zdld/„Zdmd1„Zdnd3„Zdod5„Zdid6„Zdpd8„Zdqd:„Zdrd<„Zdsd>„Zdtd@„ZdpdA„ZdqdB„ZdtdC„ZdgdD„Z dedE„Z!dfdF„Z"dcdG„Z#dbdH„Z$dadI„Z%d^dJ„Z&d[dK„Z'd\dL„Z(d_dM„Z)dndN„Z*dudP„Z+didQ„Z,dvdS„Z-dwdU„Z.dV„ Z/dxdX„Z0dydZ„Z1d$S )zÚGenericTypeCompilerr!  úsqltypes.Float[Any]rä  r   r"  r×   c                ó   — dS )NÚFLOATrÖ   r  s      rÚ   Úvisit_FLOATzGenericTypeCompiler.visit_FLOATR  ó   € ØˆwrÜ   úsqltypes.Double[Any]c                ó   — dS )NÚDOUBLErÖ   r  s      rÚ   Úvisit_DOUBLEz GenericTypeCompiler.visit_DOUBLEU  ó   € ØˆxrÜ   úsqltypes.DOUBLE_PRECISION[Any]c                ó   — dS )NzDOUBLE PRECISIONrÖ   r  s      rÚ   Úvisit_DOUBLE_PRECISIONz*GenericTypeCompiler.visit_DOUBLE_PRECISIONX  s
   € ð "Ð!rÜ   úsqltypes.REAL[Any]c                ó   — dS )NÚREALrÖ   r  s      rÚ   Ú
visit_REALzGenericTypeCompiler.visit_REAL]  r9  rÜ   úsqltypes.Numeric[Any]c                ó^   — |j         €dS |j        €dd|j         iz  S d|j         |j        dœz  S )NÚNUMERICzNUMERIC(%(precision)s)Ú	precisionz!NUMERIC(%(precision)s, %(scale)s)©r	  Úscaler	  r  s      rÚ   Úvisit_NUMERICz!GenericTypeCompiler.visit_NUMERIC`  óJ   € ØŒ?Ð"Ø�9ØŒ[Ð Ø+¨{¸E¼OÐ.LÑLÐLà6Ø"œ_Øœð:ð :ñ ð rÜ   úsqltypes.DECIMAL[Any]c                ó^   — |j         €dS |j        €dd|j         iz  S d|j         |j        dœz  S )NÚDECIMALzDECIMAL(%(precision)s)r	  z!DECIMAL(%(precision)s, %(scale)s)r	  r	  r  s      rÚ   Úvisit_DECIMALz!GenericTypeCompiler.visit_DECIMALk  r	  rÜ   úsqltypes.Integerc                ó   — dS )NÚINTEGERrÖ   r  s      rÚ   Úvisit_INTEGERz!GenericTypeCompiler.visit_INTEGERv  ó   € ØˆyrÜ   úsqltypes.SmallIntegerc                ó   — dS )NÚSMALLINTrÖ   r  s      rÚ   Úvisit_SMALLINTz"GenericTypeCompiler.visit_SMALLINTy  ó   € ØˆzrÜ   úsqltypes.BigIntegerc                ó   — dS )NÚBIGINTrÖ   r  s      rÚ   Úvisit_BIGINTz GenericTypeCompiler.visit_BIGINT|  r÷  rÜ   úsqltypes.TIMESTAMPc                ó   — dS )NÚ	TIMESTAMPrÖ   r  s      rÚ   Úvisit_TIMESTAMPz#GenericTypeCompiler.visit_TIMESTAMP  s   € Øˆ{rÜ   úsqltypes.DateTimec                ó   — dS )NÚDATETIMErÖ   r  s      rÚ   Úvisit_DATETIMEz"GenericTypeCompiler.visit_DATETIME‚  r	  rÜ   úsqltypes.Datec                ó   — dS )NÚDATErÖ   r  s      rÚ   Ú
visit_DATEzGenericTypeCompiler.visit_DATE…  r9  rÜ   úsqltypes.Timec                ó   — dS )NÚTIMErÖ   r  s      rÚ   Ú
visit_TIMEzGenericTypeCompiler.visit_TIMEˆ  r9  rÜ   úsqltypes.CLOBc                ó   — dS )NÚCLOBrÖ   r  s      rÚ   Ú
visit_CLOBzGenericTypeCompiler.visit_CLOB‹  r9  rÜ   úsqltypes.Textc                ó   — dS )NÚNCLOBrÖ   r  s      rÚ   Úvisit_NCLOBzGenericTypeCompiler.visit_NCLOBŽ  rò  rÜ   Nr  Úlengthr  r÷  rh  rø  rÌ  úOptional[IdentifierPreparer]c                óx   — |}|r	|d|› d�z  }|r*|€| j         j        }|d|                     ||¦  «        z   z  }|S )NrF  rG  rí   )rÇ  rÌ  rö  )r'  r  r1	  r÷  rø  rÌ  rä  r  s           rÚ   Ú_render_string_typez'GenericTypeCompiler._render_string_type‘  sm   € ð ˆØð 	"Ø�M˜�M�M�MÑ!ˆDØð 	Ø"Ð*Ø&*¤lÔ&FÐ#Ø�KÐ"5×"FÒ"FØÐ+ñ#ô #ñ ñ ˆDð ˆrÜ   úsqltypes.CHARc                óB   —  | j         d|j        |j        |j        fi |¤ŽS )NÚCHAR©r4	  r1	  r÷  rø  r  s      rÚ   Ú
visit_CHARzGenericTypeCompiler.visit_CHAR¥  ó;   € Ø'ˆtÔ'ØØŒLØŒOØÔ"ð	
ð 
ð
 ð
ð 
ð 	
rÜ   úsqltypes.NCHARc                óB   —  | j         d|j        |j        |j        fi |¤ŽS )NÚNCHARr8	  r  s      rÚ   Úvisit_NCHARzGenericTypeCompiler.visit_NCHAR®  s;   € Ø'ˆtÔ'ØØŒLØŒOØÔ"ð	
ð 
ð
 ð
ð 
ð 	
rÜ   úsqltypes.Stringc                óB   —  | j         d|j        |j        |j        fi |¤ŽS )NÚVARCHARr8	  r  s      rÚ   Úvisit_VARCHARz!GenericTypeCompiler.visit_VARCHAR·  s;   € Ø'ˆtÔ'ØØŒLØŒOØÔ"ð	
ð 
ð
 ð
ð 
ð 	
rÜ   úsqltypes.NVARCHARc                óB   —  | j         d|j        |j        |j        fi |¤ŽS )NÚNVARCHARr8	  r  s      rÚ   Úvisit_NVARCHARz"GenericTypeCompiler.visit_NVARCHARÀ  s;   € Ø'ˆtÔ'ØØŒLØŒOØÔ"ð	
ð 
ð
 ð
ð 
ð 	
rÜ   c                óB   —  | j         d|j        |j        |j        fi |¤ŽS )NÚTEXTr8	  r  s      rÚ   Ú
visit_TEXTzGenericTypeCompiler.visit_TEXTÉ  r:	  rÜ   úsqltypes.Uuid[Any]c                ó   — dS )NÚUUIDrÖ   r  s      rÚ   Ú
visit_UUIDzGenericTypeCompiler.visit_UUIDÒ  r9  rÜ   úsqltypes.LargeBinaryc                ó   — dS )NÚBLOBrÖ   r  s      rÚ   Ú
visit_BLOBzGenericTypeCompiler.visit_BLOBÕ  r9  rÜ   úsqltypes.BINARYc                ó.   — d|j         r
d|j         z  pdz   S )NÚBINARYú(%d)r·  ©r1	  r  s      rÚ   Úvisit_BINARYz GenericTypeCompiler.visit_BINARYØ  s    € Ø˜5œ<ÐA¨F°U´\Ñ,AÐGÀRÑHÐHrÜ   úsqltypes.VARBINARYc                ó.   — d|j         r
d|j         z  pdz   S )NÚ	VARBINARYrU	  r·  rV	  r  s      rÚ   Úvisit_VARBINARYz#GenericTypeCompiler.visit_VARBINARYÛ  s    € Ø˜eœlÐD¨v¸¼Ñ/DÐJÈÑKÐKrÜ   úsqltypes.Booleanc                ó   — dS )NÚBOOLEANrÖ   r  s      rÚ   Úvisit_BOOLEANz!GenericTypeCompiler.visit_BOOLEANÞ  r	  rÜ   c                óh   — |j         r| j        j        s | j        	 ddd d dœ|¤ŽS  | j        |fi |¤ŽS )Nr7	  ru  )r1	  r÷  rø  )r7	  )Únative_uuidrÇ  Úsupports_native_uuidr4	  rM	  r  s      rÚ   Ú
visit_uuidzGenericTypeCompiler.visit_uuidá  sl   € ØÔ ð 		0¨¬Ô(Ið 		0Ø+�4Ô+ØðàØØ!%ð	ð ð
 ðð ð ð #�4”? 5Ð/Ð/¨BÐ/Ð/Ð/rÜ   c                ó   —  | j         |fi |¤ŽS r%  )rQ	  r  s      rÚ   Úvisit_large_binaryz&GenericTypeCompiler.visit_large_binaryí  ó   € ð ˆtŒ˜uÐ+Ð+¨Ð+Ð+Ð+rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r_	  r  s      rÚ   Úvisit_booleanz!GenericTypeCompiler.visit_booleanò  ó   € Ø!ˆtÔ! %Ð.Ð.¨2Ð.Ð.Ð.rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r(	  r  s      rÚ   Ú
visit_timezGenericTypeCompiler.visit_timeõ  ó   € ØˆtŒ˜uÐ+Ð+¨Ð+Ð+Ð+rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r 	  r  s      rÚ   Úvisit_datetimez"GenericTypeCompiler.visit_datetimeø  s   € Ø"ˆtÔ" 5Ð/Ð/¨BÐ/Ð/Ð/rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r$	  r  s      rÚ   Ú
visit_datezGenericTypeCompiler.visit_dateû  rl	  rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r	  r  s      rÚ   Úvisit_big_integerz%GenericTypeCompiler.visit_big_integerþ  ó   € Ø ˆtÔ  Ð-Ð-¨"Ð-Ð-Ð-rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r	  r  s      rÚ   Úvisit_small_integerz'GenericTypeCompiler.visit_small_integer  s   € ð #ˆtÔ" 5Ð/Ð/¨BÐ/Ð/Ð/rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r	  r  s      rÚ   Úvisit_integerz!GenericTypeCompiler.visit_integer  ri	  rÜ   c                ó   —  | j         |fi |¤ŽS r%  )rþ  r  s      rÚ   Ú
visit_realzGenericTypeCompiler.visit_real	  rl	  rÜ   c                ó   —  | j         |fi |¤ŽS r%  )rñ  r  s      rÚ   Úvisit_floatzGenericTypeCompiler.visit_float  s   € ØˆtÔ Ð,Ð,¨Ð,Ð,Ð,rÜ   c                ó   —  | j         |fi |¤ŽS r%  )rö  r  s      rÚ   Úvisit_doublez GenericTypeCompiler.visit_double  rs	  rÜ   c                ó   —  | j         |fi |¤ŽS r%  )r	  r  s      rÚ   Úvisit_numericz!GenericTypeCompiler.visit_numeric  ri	  rÜ   c                ó   —  | j         |fi |¤ŽS r%  ©rB	  r  s      rÚ   Úvisit_stringz GenericTypeCompiler.visit_string  ri	  rÜ   úsqltypes.Unicodec                ó   —  | j         |fi |¤ŽS r%  r�	  r  s      rÚ   Úvisit_unicodez!GenericTypeCompiler.visit_unicode  ri	  rÜ   c                ó   —  | j         |fi |¤ŽS r%  ©rI	  r  s      rÚ   Ú
visit_textzGenericTypeCompiler.visit_text  rl	  rÜ   úsqltypes.UnicodeTextc                ó   —  | j         |fi |¤ŽS r%  r‡	  r  s      rÚ   Úvisit_unicode_textz&GenericTypeCompiler.visit_unicode_text  rf	  rÜ   úsqltypes.Enumc                ó   —  | j         |fi |¤ŽS r%  r�	  r  s      rÚ   Ú
visit_enumzGenericTypeCompiler.visit_enum#  ri	  rÜ   c                ó0   — t          j        d|z  ¦  «        ‚)NzKCan't generate DDL for %r; did you forget to specify a type on this Column?rÚ  r  s      rÚ   r8  zGenericTypeCompiler.visit_null&  s$   € ÝÔð#à%*ñ+ñ
ô 
ð 	
rÜ   úTypeDecorator[Any]c                óN   —  | j         |                     | j        ¦  «        fi |¤ŽS r%  )rÒ  Útype_enginerÇ  r  s      rÚ   Úvisit_type_decoratorz(GenericTypeCompiler.visit_type_decorator-  s.   € ð ˆtŒ|˜E×-Ò-¨d¬lÑ;Ô;ÐBÐB¸rÐBÐBÐBrÜ   úUserDefinedType[Any]c                ó   —  |j         di |¤ŽS r½  )Úget_col_specr  s      rÚ   Úvisit_user_definedz&GenericTypeCompiler.visit_user_defined2  s   € ð "ˆuÔ!Ð'Ð' BÐ'Ð'Ð'rÜ   )r!  rî  rä  r   r"  r×   )r!  ró  rä  r   r"  r×   )r!  rø  rä  r   r"  r×   )r!  rû  rä  r   r"  r×   )r!  rÿ  rä  r   r"  r×   )r!  r	  rä  r   r"  r×   )r!  r	  rä  r   r"  r×   )r!  r	  rä  r   r"  r×   )r!  r	  rä  r   r"  r×   )r!  r	  rä  r   r"  r×   )r!  r	  rä  r   r"  r×   )r!  r!	  rä  r   r"  r×   )r!  r%	  rä  r   r"  r×   )r!  r)	  rä  r   r"  r×   )r!  r-	  rä  r   r"  r×   r“  )r  r×   r1	  r  r÷  rh  rø  rh  rÌ  r2	  rä  r   r"  r×   )r!  r5	  rä  r   r"  r×   )r!  r;	  rä  r   r"  r×   )r!  r?	  rä  r   r"  r×   )r!  rC	  rä  r   r"  r×   )r!  rJ	  rä  r   r"  r×   )r!  rN	  rä  r   r"  r×   )r!  rR	  rä  r   r"  r×   )r!  rX	  rä  r   r"  r×   )r!  r\	  rä  r   r"  r×   )r!  rƒ	  rä  r   r"  r×   )r!  r‰	  rä  r   r"  r×   )r!  rŒ	  rä  r   r"  r×   )r!  r�	  rä  r   r"  r×   )r!  r”	  rä  r   r"  r×   )2r  r  r  rñ  rö  rú  rþ  r	  r
	  r	  r	  r	  r	  r 	  r$	  r(	  r,	  r0	  r4	  r9	  r>	  rB	  rF	  rI	  rM	  rQ	  rW	  r[	  r_	  rc	  re	  rh	  rk	  rn	  rp	  rr	  ru	  rw	  ry	  r{	  r}	  r	  r‚	  r…	  rˆ	  r‹	  rŽ	  r8  r“	  r—	  rÖ   rÜ   rÚ   rí  rí  Q  sÔ  € € € € € ðð ð ð ðð ð ð ð"ð "ð "ð "ð
ð ð ð ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð +/Ø<@ðð ð ð ð ð(
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ðIð Ið Ið IðLð Lð Lð Lðð ð ð ð
0ð 
0ð 
0ð 
0ð,ð ,ð ,ð ,ð
/ð /ð /ð /ð,ð ,ð ,ð ,ð0ð 0ð 0ð 0ð,ð ,ð ,ð ,ð.ð .ð .ð .ð0ð 0ð 0ð 0ð
/ð /ð /ð /ð,ð ,ð ,ð ,ð-ð -ð -ð -ð.ð .ð .ð .ð/ð /ð /ð /ð/ð /ð /ð /ð/ð /ð /ð /ð,ð ,ð ,ð ,ð,ð ,ð ,ð ,ð
/ð /ð /ð /ð
ð 
ð 
ðCð Cð Cð Cð
(ð (ð (ð (ð (ð (rÜ   rí  c                  ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚStrSQLTypeCompilerc                ó`   — 	 |j         } || fi |¤ŽS # t          $ r  | j        |fi |¤ŽcY S w xY wr%  )rï  ÚAttributeErrorÚ_visit_unknown)r'  r!  rä  rï  s       rÚ   rÒ  zStrSQLTypeCompiler.process9  si   € ð	2Ø!&Ô!9Ðð &Ð% dÐ1Ð1¨bÐ1Ð1Ð1øõ ð 	4ð 	4ð 	4Ø&�4Ô& uÐ3Ð3°Ð3Ð3Ð3Ð3Ð3ð	4øøøs   ‚ ’-¬-c                óX   — |                      d¦  «        r| j        S t          |¦  «        ‚)Nrã  )rš  rœ	  r›	  )r'  rJ  s     rÚ   Ú__getattr__zStrSQLTypeCompiler.__getattr__A  s-   € Ø�>Š>˜(Ñ#Ô#ð 	&ØÔ&Ð&å  Ñ%Ô%Ð%rÜ   c                ó�   — |j         j        |j         j                             ¦   «         k    r|j         j        S t          |¦  «        S r%  )rÛ  r  ÚupperÚreprr  s      rÚ   rœ	  z!StrSQLTypeCompiler._visit_unknownG  s:   € ØŒ?Ô# u¤Ô'?×'EÒ'EÑ'GÔ'GÒGÐGØ”?Ô+Ð+å˜‘;”;ÐrÜ   c                ó   — dS r5  rÖ   r  s      rÚ   r8  zStrSQLTypeCompiler.visit_nullM  r9  rÜ   c                ó`   — 	 |j         } |di |¤ŽS # t          $ r t          |¦  «        cY S w xY wr½  )r–	  r›	  r¡	  )r'  r!  rä  r–	  s       rÚ   r—	  z%StrSQLTypeCompiler.visit_user_definedP  sV   € ð	&Ø Ô-ˆLð  �<Ð%Ð% "Ð%Ð%Ð%øõ ð 	ð 	ð 	Ý˜‘;”;ÐÐÐð	øøøs   ‚ ‘-¬-N)r  r  r  rÒ  rž	  rœ	  r8  r—	  rÖ   rÜ   rÚ   r™	  r™	  8  s_   € € € € € ð2ð 2ð 2ð&ð &ð &ðð ð ðð ð ð&ð &ð &ð &ð &rÜ   r™	  c                  ó   — e Zd Zdd„ZdS )Ú_SchemaForObjectCallablerë  r   r"  r×   c               ó   — d S r%  rÖ   )r'  rë  s     rÚ   r(  z!_SchemaForObjectCallable.__call__Z  ó   € € € rÜ   N)rë  r   r"  r×   r)  rÖ   rÜ   rÚ   r¥	  r¥	  Y  s   € € € € € Ø/Ð/Ð/Ð/Ð/Ð/rÜ   r¥	  c                  ó   — e Zd Zdd„ZdS )rp  r  rá  r"  r×   c                ó   — d S r%  rÖ   )r'  r  s     rÚ   r(  z _BindNameForColProtocol.__call__^  r§	  rÜ   N)r  rá  r"  r×   r)  rÖ   rÜ   rÚ   rp  rp  ]  s   € € € € € Ø:Ð:Ð:Ð:Ð:Ð:rÜ   rp  c                  óÌ  — e Zd ZU dZeZeZeZ	de
d<   de
d<   de
d<    ej        d¦  «        Zde
d	<   	 d
Zde
d<   	 	 	 	 	 dRdSd„Zd„ ZdTd„ZdUd„ZdUd„Zd „ ZdUd!„ZdVd"„Zd#„ ZdWd$„ZdXd&„ZdYd'„Z	 dZd[d+„Z	 dYd\d/„Z	 dYd]d2„ZdYd3„Z ej         d4¦  «        	 dZd^d8„¦   «         Z!	 dZd_d9„Z"	 dZd_d:„Z#d`d=„Z$dad@„Z%	 	 dbdcdC„Z&dD„ Z'	 dYdE„Z(	 	 	 	 	 dddedL„Z)dZdM„Z*ej+        dN„ ¦   «         Z,dfdQ„Z-dS )gr¿  z@Handle quoting and case-folding of identifiers based on options.r×   Úinitial_quoteÚfinal_quotezMutableMapping[str, str]Ú_stringsr'   r¥	  rí  Fr7  Ú_includes_none_schema_translater­  NTrÇ  rv   rh  Úescape_quoteÚquote_case_sensitive_collationsÚomit_schemac                óº   — || _         || _        |p| j        | _        || _        | j        dz  | _        || _        || _        i | _        | j         j        dv | _	        dS )as  Construct a new ``IdentifierPreparer`` object.

        initial_quote
          Character that begins a delimited identifier.

        final_quote
          Character that ends a delimited identifier. Defaults to
          `initial_quote`.

        omit_schema
          Prevent prepending schema name. Useful for databases that do
          not support schemae.
        r6   )râ   rà   N)
rÇ  r«	  r¬	  r¯	  Úescape_to_quoter±	  r°	  r­	  r™  rå  )r'  rÇ  r«	  r¬	  r¯	  r°	  r±	  s          rÚ   rÕ  zIdentifierPreparer.__init__}  so   € ð. ˆŒØ*ˆÔØ&Ð<¨$Ô*<ˆÔØ(ˆÔØ#Ô0°1Ñ4ˆÔØ&ˆÔØ/NˆÔ,ØˆŒØ $¤Ô 7ð <
ð !
ˆÔÐÐrÜ   c                ó²   ‡— | j                              | j         ¦  «        }|j                             | j        ¦  «         d |v Šˆfd„}||_        ‰|_        |S )Nc                ó¤   •— | j         }| j        r;|€‰r7|�d|v sd|v rt          j        d|z  ¦  «        ‚t	          d|pdz  d¬¦  «        S | j         S )NrJ  rK  zJSquare bracket characters ([]) not supported in schema translate name '%s'z__[SCHEMA_%s]Ú_noneF©rë  )r'   Ú_use_schema_mapr7   r  r3   )rë  r  Úincludes_nones     €rÚ   Úsymbol_getterz@IdentifierPreparer._with_schema_translate.<locals>.symbol_getter§  sˆ   ø€ Ø”:ˆDØÔ"ð 
"¨Ð(8¸MÐ(8ØÐ#¨°¨¨¸¸t¸¸ÝÔ*ð8Ø:>ñ?ñô ð õ #Ø# t ¨wÑ7¸uðñ ô ð ð ”zÐ!rÜ   )rÛ  Ú__new__r¥  r¦  rí  r®	  )r'  r½  r<  rº	  r¹	  s       @rÚ   rÍ  z)IdentifierPreparer._with_schema_translate¡  sm   ø€ ØŒ~×%Ò% d¤nÑ5Ô5ˆØŒ×Ò˜Tœ]Ñ+Ô+Ð+àÐ 4Ð4ˆð	"ð 	"ð 	"ð 	"ð 	"ð "/ˆÔØ/<ˆÔ,ØˆrÜ   r@  r½  rw   r"  c                ó–   ‡ ‡— |Šd ‰v r&‰ j         st          j        d¦  «        ‚‰d          ‰d<   ˆˆ fd„}t          j        d||¦  «        S )Nzâschema translate map which previously did not have `None` present as a key now has `None` present; compiled statement may lack adequate placeholders.  Please use consistent keys in successive schema_translate_map dictionaries.r¶	  c                óî   •— |                       d¦  «        }|‰v r	‰|         }n|dv rt          j        d¦  «        ‚|}|s"‰j        j        }|st          j        d¦  «        ‚‰                     |¦  «        S )Nr6   )Nr¶	  zâschema translate map which previously had `None` present as a key now no longer has it present; don't know how to apply schema for compiled statement. Please use consistent keys in successive schema_translate_map dictionaries.zLDialect has no default schema name; can't use None as dynamic schema target.)r    r7   rL  rÇ  Údefault_schema_namer  rî  )rÔ  r  rñ  Údr'  s      €€rÚ   r
  z=IdentifierPreparer._render_schema_translates.<locals>.replaceÉ  s¡   ø€ Ø—7’7˜1‘:”:ˆDØ�qˆyˆyØ#$ T¤7Ð Ð à˜?Ð*Ð*ÝÔ1ð=ñô ð ð $(Ð à#ð Ø#'¤<Ô#CÐ Ø'ð åÔ*ð=ñô ð ð ×$Ò$Ð%5Ñ6Ô6Ð6rÜ   z(__\[SCHEMA_([^\]]+)\]))r®	  r7   rL  r€  rá  )r'  r@  r½  r
  r¿	  s   `   @rÚ   rÓ  z,IdentifierPreparer._render_schema_translates¹  s}   øø€ ð !ˆØ�1ˆ9ˆ9ØÔ7ð ÝÔ-ð9ñô ð ð ˜4œˆAˆg‰Jð	7ð 	7ð 	7ð 	7ð 	7ð 	7õ2 ŒvÐ0°'¸9ÑEÔEÐErÜ   r  c                ó€   — |                      | j        | j        ¦  «        }| j        r|                      dd¦  «        }|S )z€Escape an identifier.

        Subclasses should override this to provide database-dependent
        escaping behavior.
        rE  r  )r
  r¯	  r³	  rå  ©r'  r  s     rÚ   Ú_escape_identifierz%IdentifierPreparer._escape_identifierä  s@   € ð —’˜dÔ/°Ô1EÑFÔFˆØÔ ð 	-Ø—M’M # tÑ,Ô,ˆEØˆrÜ   c                óB   — |                      | j        | j        ¦  «        S )z±Canonicalize an escaped identifier.

        Subclasses should override this to provide database-dependent
        unescaping behavior that reverses _escape_identifier.
        )r
  r³	  r¯	  rÁ	  s     rÚ   Ú_unescape_identifierz'IdentifierPreparer._unescape_identifierð  s   € ð �}Š}˜TÔ1°4Ô3DÑEÔEÐErÜ   c                ót   — |�5|                      |¦  «        s t          j        d|›d|j        ›d�¦  «        ‚|S )zÞkeyword sequence filter.

        a filter for elements that are intended to represent keyword sequences,
        such as "INITIALLY", "INITIALLY DEFERRED", etc.   no special characters
        should be present.

        NzUnexpected SQL phrase: z (matching against rG  )rw  r7   r  rÄ  )r'  râ  rƒ  s      rÚ   r�  z&IdentifierPreparer.validate_sql_phraseù  sN   € ð Ð s§y¢y°Ñ'9Ô'9ÐÝÔ"Ð"à�7�7˜CœK˜K˜Kð)ñô ð ð ˆrÜ   c                óL   — | j         |                      |¦  «        z   | j        z   S )z~Quote an identifier.

        Subclasses should override this to provide database-dependent
        quoting behavior.
        )r«	  rÂ	  r¬	  rÁ	  s     rÚ   Úquote_identifierz#IdentifierPreparer.quote_identifier	   s0   € ð ÔØ×%Ò% eÑ,Ô,ñ-àÔñð	
rÜ   c                ó¾   — |sdS |                      ¦   «         }|| j        v p<|d         | j        v p-| j                             t          |¦  «        ¦  «         p||k    S )z5Return True if the given identifier requires quoting.Tr   )r¿  Úreserved_wordsÚillegal_initial_charactersÚlegal_charactersrw  r×   )r'  r  Úlc_values      rÚ   r  z#IdentifierPreparer._requires_quotes   ss   € àð 	ð
 �4Ø—;’;‘=”=ˆà˜Ô+Ð+ð #Ø�QŒx˜4Ô:Ð:ð#àÔ(×.Ò.­s°5©z¬zÑ:Ô:Ð:ð#ð ˜EÒ!ð		
rÜ   c                óR   — | j                              t          |¦  «        ¦  «         S )zjReturn True if the given identifier requires quoting, but
        not taking case convention into account.)rË	  rw  r×   rÁ	  s     rÚ   r¾  z1IdentifierPreparer._requires_quotes_illegal_chars&   s$   € ð Ô(×.Ò.­s°5©z¬zÑ:Ô:Ð:Ð:rÜ   c                ó,   — |                       |¦  «        S )a†  Conditionally quote a schema name.


        The name is quoted if it is a reserved word, contains quote-necessary
        characters, or is an instance of :class:`.quoted_name` which includes
        ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for schema names.

        :param schema: string schema name
        r·	  )r'  r'   s     rÚ   rî  zIdentifierPreparer.quote_schema+   s   € ð �zŠz˜&Ñ!Ô!Ð!rÜ   rô  c                ó  — t          |dd¦  «        }|€`|| j        v r| j        |         S |                      |¦  «        r|                      |¦  «        | j        |<   n
|| j        |<   | j        |         S |r|                      |¦  «        S |S )a�  Conditionally quote an identifier.

        The identifier is quoted if it is a reserved word, contains
        quote-necessary characters, or is an instance of
        :class:`.quoted_name` which includes ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for identifier names.

        :param ident: string identifier
        rë  N)rª  r­	  r  rÇ	  )r'  rô  Úforces      rÚ   rë  zIdentifierPreparer.quote:   s¡   € õ ˜˜w¨Ñ-Ô-ˆàˆ=Ø˜œÐ%Ð%Ø”} UÔ+Ð+à×(Ò(¨Ñ/Ô/ð 1Ø+/×+@Ò+@ÀÑ+GÔ+G�D”M %Ñ(Ð(à+0�D”M %Ñ(Ø”} UÔ+Ð+Øð 	Ø×(Ò(¨Ñ/Ô/Ð/àˆLrÜ   c                ó|   — | j         r|                      |¦  «        }n|}|�|                      |¦  «        › d|› �S |S rg  )r°	  rë  rî  )r'  Úcollation_namerø  r  s       rÚ   rö  z#IdentifierPreparer.format_collationV   sS   € ØÔ/ð 	"Ø—:’:˜nÑ-Ô-ˆDˆDà!ˆDàÐ'Ø×'Ò'Ð(8Ñ9Ô9ÐBÐB¸DÐBÐBÐBàˆKrÜ   rÇ  úschema.Sequencerê  c                ó°   — |                       |j        ¦  «        }|                      |¦  «        }| j        s|r|�|                      |¦  «        dz   |z   }|S rg  )rë  r  rí  r±	  rî  )r'  rÇ  rê  r  rñ  s        rÚ   rå  z"IdentifierPreparer.format_sequencea   sm   € ð �zŠz˜(œ-Ñ(Ô(ˆà×1Ò1°(Ñ;Ô;Ðð Ô ð	Dàð	Dð !Ð,à×$Ò$Ð%5Ñ6Ô6¸Ñ<¸tÑCˆDØˆrÜ   r  ú
Label[Any]r  c                ó:   — |                       |p|j        ¦  «        S r%  ©rë  r  )r'  r  r  s      rÚ   rÓ  zIdentifierPreparer.format_labelp   s   € ð �zŠz˜$Ð, %¤*Ñ-Ô-Ð-rÜ   rç  úOptional[AliasedReturnsRows]c                ól   — |€|€J ‚|                       |j        ¦  «        S |                       |¦  «        S r%  r×	  )r'  rç  r  s      rÚ   rÿ  zIdentifierPreparer.format_aliasu   s;   € ð ˆ<ØÐ$Ð$Ð$Ø—:’:˜eœjÑ)Ô)Ð)à—:’:˜dÑ#Ô#Ð#rÜ   c                ól   — |p|j         }|                      |¦  «        r|                      |¦  «        }|S r%  )rô  r  rÇ	  )r'  Ú	savepointr  rô  s       rÚ   r´  z#IdentifierPreparer.format_savepoint~   s>   € ð Ð'˜	œˆØ× Ò  Ñ'Ô'ð 	1Ø×)Ò)¨%Ñ0Ô0ˆEØˆrÜ   zsqlalchemy.sql.namingrÊ   úUnion[Constraint, Index]Ú_alembic_quotec                ó  — t           j        j        }|j        t          u r |                     ||j        ¦  «        }|€d S n|j        }|€J ‚|j        dk    r|                      ||¬¦  «        S |  	                    ||¬¦  «        S )Nr™  )rÝ	  )
r*   rk  Ú
sql_namingr  r0   Ú_constraint_name_for_tabler§   r$  Útruncate_and_render_index_nameÚ#truncate_and_render_constraint_name)r'  rÊ   rÝ	  Únamingr  s        rÚ   r‘  z$IdentifierPreparer.format_constraint‡   s²   € õ ”Ô*ˆàŒ?�jÐ(Ð(Ø×4Ò4Ø˜JÔ,ñô ˆDð ˆ|Ø�tð ð ”?ˆDàÐÐÐØÔ$¨Ò/Ð/Ø×6Ò6Ø ^ð 7ñ ô ð ð ×;Ò;Ø ^ð <ñ ô ð rÜ   c                ó`   — | j         j        p| j         j        }|                      |||¦  «        S r%  )rÇ  Úmax_index_name_lengthrž  Ú _truncate_and_render_maxlen_name©r'  r  rÝ	  Úmax_s       rÚ   rá	  z1IdentifierPreparer.truncate_and_render_index_name¡   s?   € ð ŒLÔ.ð 2ØŒ|Ô1ð 	ð ×4Ò4Ø�$˜ñ
ô 
ð 	
rÜ   c                ó`   — | j         j        p| j         j        }|                      |||¦  «        S r%  )rÇ  Úmax_constraint_name_lengthrž  ræ	  rç	  s       rÚ   râ	  z6IdentifierPreparer.truncate_and_render_constraint_name¯   s?   € ð ŒLÔ3ð 2ØŒ|Ô1ð 	ð ×4Ò4Ø�$˜ñ
ô 
ð 	
rÜ   rè	  rX  c                ó  — t          |t          j        ¦  «        rAt          |¦  «        |k    r-|d|dz
  …         dz   t	          j        |¦  «        dd …         z   }n| j                             |¦  «         |s|S |                      |¦  «        S )Nr   rs  rD  éüÿÿÿ)	rÐ  r#   rL   rä  r*   Úmd5_hexrÇ  Úvalidate_identifierrë  )r'  r  rè	  rÝ	  s       rÚ   ræ	  z3IdentifierPreparer._truncate_and_render_maxlen_name½   s�   € õ �d�HÔ5Ñ6Ô6ð 	3Ý�4‰yŒy˜4ÒÐØ˜A  q¡˜LÔ)¨CÑ/µ$´,¸tÑ2DÔ2DÀRÀSÀSÔ2IÑI�øàŒL×,Ò,¨TÑ2Ô2Ð2àð 	$ØˆKà—:’:˜dÑ#Ô#Ð#rÜ   r™  r\   c                ó8   — |                       |¦  «        }|€J ‚|S r%  )r‘  )r'  r™  r  s      rÚ   rh  zIdentifierPreparer.format_indexË   s&   € Ø×%Ò% eÑ,Ô,ˆØÐÐÐØˆrÜ   r§   rd   c                óô   — |€%t           rt          |t          ¦  «        sJ ‚|j        }|                      |¦  «        }|                      |¦  «        }| j        s|r|r|                      |¦  «        dz   |z   }|S )z'Prepare a quoted table and schema name.NrI  )r   rÐ  re   r  rë  rí  r±	  rî  )r'  r§   rê  r  r�  rñ  s         rÚ   ro  zIdentifierPreparer.format_tableÐ   s“   € ð ˆ<Ýð :Ý! %­Ñ9Ô9Ð9Ð9Ð9Ø”:ˆDà—’˜DÑ!Ô!ˆà×1Ò1°%Ñ8Ô8ÐàÔð 	H Jð 	HÐ3Cð 	HØ×&Ò&Ð'7Ñ8Ô8¸3Ñ>ÀÑGˆFØˆrÜ   c                ó,   — |                       |¦  «        S )zPrepare a quoted schema name.r·	  rÎ  s     rÚ   r
  z IdentifierPreparer.format_schemaä   s   € ð �zŠz˜$ÑÔÐrÜ   c                óŽ   — |�/t          |t          j        ¦  «        r|                     |¦  «        }|                      |¦  «        S )úPrepare a quoted column name.)rÐ  r#   rL   rÆ  rë  )r'  r  rŸ  s      rÚ   ró  z$IdentifierPreparer.format_label_nameé   sF   € ð Ð¥JØ•(Ô+ñ%
ô %
Ðð —>’> (Ñ+Ô+ˆDà�zŠz˜$ÑÔÐrÜ   r¬   úColumnElement[Any]rw  Ú
table_namerŸ  úOptional[Mapping[str, Any]]c                óˆ  — |€|j         }|€J ‚|�/t          |t          j        ¦  «        r|                     |¦  «        }t          |dd¦  «        sM|r6|                      |j        ||¬¦  «        dz   |                      |¦  «        z   S |                      |¦  «        S |r#|                      |j        ||¬¦  «        dz   |z   S |S )ró	  Nrè  F)rê  r  rI  )	r  rÐ  r#   rL   rÆ  rª  ro  r§   rë  )r'  r¬   rw  r  rõ	  rê  rŸ  s          rÚ   rx  z IdentifierPreparer.format_column÷   s  € ð ˆ<Ø”;ˆDØÐ#Ð#Ð#àÐ¥JØ•(Ô+ñ%
ô %
Ðð —>’> (Ñ+Ô+ˆDå�v˜|¨UÑ3Ô3ð 	Øð 	(à×%Ò%Øœ°À*ð &ñ ô ð ñð —j’j Ñ&Ô&ñ	'ðð —z’z $Ñ'Ô'Ð'ð
 ð 	à×%Ò%Øœ°À*ð &ñ ô ð ñð ñ	ðð �rÜ   c                óÊ   — |                       |¦  «        }| j        s0|r.|r,|                      |¦  «        |                      |d¬¦  «        fS |                      |d¬¦  «        fS )z(Format table name and schema as a tuple.Fr]  )rí  r±	  rî  ro  )r'  r§   rê  rñ  s       rÚ   r  z#IdentifierPreparer.format_table_seq%!  s…   € ð  ×1Ò1°%Ñ8Ô8ÐàÔð 	A Jð 	AÐ3Cð 	Aà×!Ò!Ð"2Ñ3Ô3Ø×!Ò! %°EÐ!Ñ:Ô:ðð ð
 ×%Ò% e¸Ð%Ñ>Ô>Ð@Ð@rÜ   c                ó¦   — d„ | j         | j        |                      | j        ¦  «        fD ¦   «         \  }}}t          j        d|||dœz  ¦  «        }|S )Nc              3  ó>   K  — | ]}t          j        |¦  «        V — Œd S r%  )r€  r�  rD  s     rÚ   rK  z4IdentifierPreparer._r_identifiers.<locals>.<genexpr>8!  s>   è è € ð )
ð )
àõ ŒI�a‰LŒLð)
ð )
ð )
ð )
ð )
ð )
rÜ   zM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+)ÚinitialÚfinalrI  )r«	  r¬	  rÂ	  r€  r‚  )r'  rû	  rü	  Úescaped_finalÚrs        rÚ   Ú_r_identifiersz!IdentifierPreparer._r_identifiers6!  s   € ð)
ð )
ð Ô"ØÔ Ø×'Ò'¨Ô(8Ñ9Ô9ðð)
ñ )
ô )
Ñ%ˆ�˜õ ŒJð$ð "¨E¸mÐLÐLñMñ
ô 
ˆð ˆrÜ   ÚidentifiersúSequence[str]c                óh   ‡ — ‰ j         }ˆ fd„d„ |                     |¦  «        D ¦   «         D ¦   «         S )z:Unpack 'schema.table.column'-like strings into components.c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÖ   )rÄ	  r'  s     €rÚ   r´  z;IdentifierPreparer.unformat_identifiers.<locals>.<listcomp>L!  s7   ø€ ð 
ð 
ð 
àð ×%Ò% aÑ(Ô(ð
ð 
ð 
rÜ   c                ó   — g | ]	\  }}|p|‘Œ
S rÖ   rÖ   )rØ   Úar�  s      rÚ   r´  z;IdentifierPreparer.unformat_identifiers.<locals>.<listcomp>N!  s    € Ð@Ð@Ð@¡  A�a�f˜1Ð@Ð@Ð@rÜ   )rÿ	  Úfindall)r'  r 
  rþ	  s   `  rÚ   Úunformat_identifiersz'IdentifierPreparer.unformat_identifiersH!  sR   ø€ ð Ôˆð
ð 
ð 
ð 
à@Ð@¨¯ª°;Ñ)?Ô)?Ð@Ñ@Ô@ð
ñ 
ô 
ð 	
rÜ   )r­  Nr­  TF)rÇ  rv   r«	  r×   r¬	  rh  r¯	  r×   r°	  r7  r±	  r7  )r@  r×   r½  rw   r"  r×   )r  r×   r"  r×   )r  r×   r"  r7  )r'   r×   r"  r×   )rô  r×   r"  r×   r%  )T)rÇ  rÓ	  rê  r7  r"  r×   )r  rÕ	  r  rh  r"  r×   )rç  rØ	  r  rh  r"  r×   )rÊ   rÜ	  rÝ	  r7  r"  rh  )r  r×   rÝ	  r7  r"  r×   )r  r×   rè	  rX  rÝ	  r7  r"  r×   )r™  r\   r"  r×   )TN)r§   rd   rê  r7  r  rh  r"  r×   )FNNFN)r¬   rô	  rw  r7  r  rh  rõ	  rh  rê  r7  rŸ  rö	  r"  r×   )r 
  r×   r"  r
  ).r  r  r  r  ÚRESERVED_WORDSrÉ	  ÚLEGAL_CHARACTERSrË	  ÚILLEGAL_INITIAL_CHARACTERSrÊ	  r  rx  Ú
attrgetterrí  r®	  rÕ  rÍ  rÓ  rÂ	  rÄ	  r�  rÇ	  r  r¾  rî  rë  rö  rå  rÓ  rÿ  r´  r*   rÊ  r‘  rá	  râ	  ræ	  rh  ro  r
  ró  rx  r  rÆ  rÿ	  r
  rÖ   rÜ   rÚ   r¿  r¿  a  sU  € € € € € € ØJÐJà#€Nà'Ðà!;ÐàÐÐÑàÐÐÑà&Ð&Ð&Ñ&à2E°(Ô2EÀhÑ2OÔ2OÐÐOÐOÐOÑOðð -2Ð#Ð1Ð1Ð1Ñ1ð
 !Ø%)ØØ04Ø!ð"
ð "
ð "
ð "
ð "
ðHð ð ð0)Fð )Fð )Fð )FðV
ð 
ð 
ð 
ðFð Fð Fð Fðð ð ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð ;ð ;ð ;ð
"ð "ð "ð "ðð ð ð ð8	ð 	ð 	ð 	ð =Aðð ð ð ð ð  8<ð.ð .ð .ð .ð .ð JNð$ð $ð $ð $ð $ðð ð ð ð €TÔÐ0Ñ1Ô1àKOðð ð ð ñ 2Ô1ðð4 15ð
ð 
ð 
ð 
ð 
ð 15ð
ð 
ð 
ð 
ð 
ð$ð $ð $ð $ðð ð ð ð  Ø"ð	ð ð ð ð ð( ð  ð  ð ð ð  ð  ð  ð"  Ø"Ø$(Ø Ø04ð,ð ,ð ,ð ,ð ,ð\Að Að Að Að" 
Ôðð ñ Ôðð"
ð 
ð 
ð 
ð 
ð 
rÜ   r¿  (
  r  Ú
__future__r   rž  Úcollections.abcÚabcr'  rÈ  Úenumr   r0  rô  rx  r€  Útimer   rÌ  r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r·  r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r¾  Ú_typingr,   r-   r.   r/   r0   r1   r2   r3   r4   Úvisitorsr5   r7   r8   Úutil.typingr9   r:   r;   Ú
annotationr<   r=   r>   r?   r@   rÄ  rA   r  rB   rC   rD   rE   ÚdmlrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   Útype_apiri   rj   rk   rl   rm   Úengine.cursorrn   Úengine.interfacesro   rp   rq   rr   rs   rt   ru   rv   rw   r×   Ú_FromHintsTyper
  r‚  ÚIr	
  ÚLEGAL_CHARACTERS_PLUS_SPACEr4  r¨   r

  rÜ  rà  râ  r�  rT  Ú_bind_params_regexr  ÚUNICODEr  r›  rœ  rP  Úor_rÒ  Úmulrá  ÚmodÚnegÚltÚleÚneÚgtÚgeÚeqÚis_distinct_fromÚis_not_distinct_fromÚ	concat_opr	  Únot_match_opr  r  rÍ  r®  rÒ  r´  rµ  r¸   Úexistsrî  ÚinvÚany_opÚall_opÚdesc_opÚasc_opÚnulls_first_opÚnulls_last_opÚbitwise_xor_opÚbitwise_or_opÚbitwise_and_opÚbitwise_not_opÚbitwise_lshift_opÚbitwise_rshift_oprÑ  rð   rÍ   rÏ   rÔ   rÐ   rÇ   rÓ   r÷   rø   rÑ   r™   ÚcubeÚrollupÚgrouping_setsrý   r  rÀ  Ú_CompoundSelectKeywordr  Ú	UNION_ALLr  Ú
EXCEPT_ALLr  ÚINTERSECT_ALLrÁ  r  r  r*  r+  r,  r.  r0  r5  r?  rT  rd  rq  r�  r†  r‹  rM  rŒ  r�  rŽ  r�  Ú
namedtupler‘  rµ  ÚEnsureKWArgr	  ÚBinaryElementRoleÚCompilerColumnElementr  r'  r6  ræ  rÐ  rù  rí  r™	  r¥	  rp  r¿  rÖ   rÜ   rÚ   ú<module>rE
     sV  ððð ð ð$ #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  à	Ôñ <;Ø+Ð+Ð+Ð+Ð+Ð+Ø,Ð,Ð,Ð,Ð,Ð,Ø"Ð"Ð"Ð"Ð"Ð"Ø Ð Ð Ð Ð Ð Ø)Ð)Ð)Ð)Ð)Ð)Ø#Ð#Ð#Ð#Ð#Ð#Ø$Ð$Ð$Ð$Ð$Ð$Ø"Ð"Ð"Ð"Ð"Ð"ØÐÐÐÐÐØ)Ð)Ð)Ð)Ð)Ð)ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐØ*Ð*Ð*Ð*Ð*Ð*Ø*Ð*Ð*Ð*Ð*Ð*Ø'Ð'Ð'Ð'Ð'Ð'Ø'Ð'Ð'Ð'Ð'Ð'Ø&Ð&Ð&Ð&Ð&Ð&Ø'Ð'Ð'Ð'Ð'Ð'Ø Ð Ð Ð Ð Ð ØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØ#Ð#Ð#Ð#Ð#Ð#Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐØ"Ð"Ð"Ð"Ð"Ð"Ø,Ð,Ð,Ð,Ð,Ð,Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐØ,Ð,Ð,Ð,Ð,Ð,ØÐÐÐÐÐØ(Ð(Ð(Ð(Ð(Ð(Ø1Ð1Ð1Ð1Ð1Ð1Ø.Ð.Ð.Ð.Ð.Ð.Ø/Ð/Ð/Ð/Ð/Ð/ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø+Ð+Ð+Ð+Ð+Ð+Ø'Ð'Ð'Ð'Ð'Ð'Ø"Ð"Ð"Ð"Ð"Ð"Ø'Ð'Ð'Ð'Ð'Ð'Ø,Ð,Ð,Ð,Ð,Ð,Ø'Ð'Ð'Ð'Ð'Ð'Ø$Ð$Ð$Ð$Ð$Ð$Ø)Ð)Ð)Ð)Ð)Ð)Ø#Ð#Ð#Ð#Ð#Ð#Ø4Ð4Ð4Ð4Ð4Ð4Ø<Ð<Ð<Ð<Ð<Ð<Ø:Ð:Ð:Ð:Ð:Ð:Ø<Ð<Ð<Ð<Ð<Ð<Ø=Ð=Ð=Ð=Ð=Ð=Ø3Ð3Ð3Ð3Ð3Ð3Ø=Ð=Ð=Ð=Ð=Ð=ØCÐCÐCÐCÐCÐCØ+Ð+Ð+Ð+Ð+Ð+Ø:Ð:Ð:Ð:Ð:Ð:ð �l CÐ'Ô(€ð_ð _ð _€ðB �2”:Ð.°´Ñ5Ô5Ð Ø(˜bœjÐ):¸B¼DÑAÔAÐ Ø;Ð;¨e¨e°A°r©l¬lÐ;Ñ;Ô;×AÒAÀ3À%ÑHÔHÐ àˆrŒzØ<¸b¼dñô €ð ˆrŒzØ<¸b¼dñô €ð ˆrŒzÐ5°r´tÑ<Ô<€Ø�R”ZØ-¨r¬tñô Ð ð Ô!Ô4€Ø�"”*Ð3°R´ZÑ@Ô@€à$Ð à"ØØØØ$Øðð €ð.à„N�Gð.ð „M�6ð.ð „M�5ð	.ð
 „M�5ð.ð „M�5ð.ð „M�5ð.ð „M�3ð.ð „L�%ð.ð „L�&ð.ð „L�&ð.ð „L�%ð.ð „L�&ð.ð „L�%ð.ð ÔÐ 4ð.ð  Ô"Ð$<ð!.ð" Ô˜ð#.ð$ Ô˜	ð%.ð .ð& Ô˜Mð'.ð( „O�Vð).ð* Ô˜ð+.ð, Ô˜ð-.ð. „O�Xð/.ð0 „M�6ð1.ð2 „M�6ð3.ð4 Ô�jð5.ð6 Ô�{ð7.ð: Ô�ið;.ð< Ô˜;ð=.ð> „M�6ð?.ð@ Ô�fðA.ðB Ô�fðC.ðF Ô�wðG.ðH Ô�fðI.ðJ Ô˜nðK.ð .ðL Ô˜]àÔ˜eØÔ˜UØÔ˜eØÔ˜cØÔ ØÔ ð[.ð .€	ðb Ô˜
ØÔ˜NØÔ˜NØÔÐ!4ØÔ˜NØÔ˜ØÔÐ.ØÔ�hØÔ�yØÔ˜NØ„N�FØ„N�FØÔ�hØÔ˜_ð-€	ð ð ð ñ ð& ØØØØØØØØØØØ"Ø"Ø$Ø(ðð €ð& Ô%Ô+¨WØÔ%Ô/°ØÔ%Ô,¨hØÔ%Ô0°,ØÔ%Ô/°ØÔ%Ô3°_ðÐ ðð ð ð ð ˜ñ ô ð ð>ð ð ð ð ˜ñ ô ð ð  !Ð Ð  Ð  Ð  Ñ  Ø€Ð Ð Ð Ñ Ø€
Ð Ð Ð Ñ Ø€Ð Ð Ð Ñ ðð ð ð ð ˜iñ ô ð ð1ð 1ð 1ð 1ð 1Ð1¸ð 1ñ 1ô 1ð 1ð:ð :ð :ð :ð :�Jñ :ô :ð :ðzAð Að Að Að A˜
ñ Aô Að AðHð ð ð ð ˜Zñ ô ð ð2!ð !ð !ð !ð ! ;ñ !ô !ð !ð*1ð 1ð 1ð 1ð 1˜Gñ 1ô 1ð 1ð(ð ð ð ð �Gñ ô ð ð ð ð ð ð ˆgñ ô ð ð. FKÀUØñFô FÑ B€
Ð&¨°lð
?#ð ?#ð ?#ð ?#ð ?#Ð'�Ô'¨°wÀÐ6HÑIÔIñ ?#ô ?#ð ?#ðD'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðDFð Fð Fð Fñ F�4Ô#ñ Fô Fð Fð0ð ñ ð ñ Ø	Ô˜CÔ  (Ô"@ñô ð ð2
ð 
ñ 
ð 
ñ 
Ø	Ô˜CÔ  (Ô"@ñ
ô 
ñ 
ðB#
ð #
ñ #
ð #
ñ #
Ø	Ô˜CÔ  (Ô"@ñ#
ô #
ñ #
ðLz[
ð z[
ñ z[
ð z[
ñ z[
�(ñ z[
ô z[
ñ z[
ðzwt
ð t
ñ t
ð t
ñ t
‘[ñ t
ô t
ñ t
ðnw	ð w	ñ w	ð w	ñ w	�(ñ w	ô w	ñ w	ðtd(ð d(ñ d(ð d(ñ d(˜,ñ d(ô d(ñ d(ðN&ð &ñ &ð &ñ &Ñ,ñ &ô &ñ &ðB0ð 0ñ 0ð 0ñ 0˜xñ 0ô 0ñ 0ð;ð ;ñ ;ð ;ñ ;˜hñ ;ô ;ñ ;ðn
ð n
ñ n
ð n
ñ n
ñ n
ô n
ñ n
ð n
ð n
rÜ   