ó
    áÅŸgX ã                   ó¤  • S r SSKrSSKrSSKJrJr  SSKJr  SSKJ	r	J
r
  SSKJrJr  SSKJrJrJr  SSKJrJrJrJrJr  SS	KJrJrJr  SS
KJrJrJrJ r J!r!J"r"J#r#  SSK$J%r%J&r&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrK  SSKLJMrM  SSKNJOrOJPrPJQrQJRrRJSrS  SSKTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[  SSK\J]r]  SSK^J_r_J`r`  \arb\\_\`4   rc " S S\U5      rd " S S\0\   5      reS\S\\%   S\&S\\f   4S jrg SPS\S\&S\\%   S\\   4S jjrhS\S\&S\i4S jrj " S S\	5      rkS\S\\%   S\&S\\   4S  jrl  SQS\S\&S\\%   S!\\b   S\\   4
S" jjrm SPS\S!\\b   S\4S# jjrn  SQS$\S\S\&S\\%   S!\\b   S\\   4S% jjroS&\S$\S\&S\i4S' jrpS(\S)\S*\SS4S+ jrqS,\r\_   S-\S.\_S\i4S/ jrsS,\r\_   S-\S.\_S0\kS\4
S1 jrtS2\ZS\Z4S3 jruS\S\\a   4S4 jrvS5\_S\\%   S\i4S6 jrwS7\iS8\aS\S\4S9 jrx\\1ry\uS\S\\%   S\&S\\   4S: j5       rz\uS\S\\%   S\&S\\   4S; j5       r{S<\`S=\|\f   S\&S\\%   SS4
S> jr}S?\`S@\cSA\aSS4SB jr~S<\`SS4SC jrS<\`S\&S\\%   SS4SD jr€S<\`S?\`SS4SE jr� SRS<\cS?\cSF\iS\i4SG jjr‚S\S.\_S\i4SH jrƒS\SI\aS\\|\b      4SJ jr„SKSL.S\SM\ZS\&S\\%   SN\fS\r\   4SO jjr…g)Sz
Generating lines of code.
é    N)Ú
CollectionÚIterator)Úreplace)ÚEnumÚauto)ÚpartialÚwraps)ÚOptionalÚUnionÚcast)ÚCOMMA_PRIORITYÚDOT_PRIORITYÚSTRING_PRIORITYÚ#get_leaves_inside_matching_bracketsÚmax_delimiter_priority_in_atom)ÚFMT_OFFÚgenerate_commentsÚlist_comments)ÚLineÚ	RHSResultÚappend_leavesÚcan_be_splitÚcan_omit_invisible_parensÚis_line_short_enoughÚline_to_string)ÚFeatureÚModeÚPreview)#ÚASSIGNMENTSÚBRACKETSÚCLOSING_BRACKETSÚOPENING_BRACKETSÚSTANDALONE_COMMENTÚ	STATEMENTÚ
WHITESPACEÚVisitorÚensure_visibleÚfstring_to_stringÚget_annotation_typeÚis_arith_likeÚis_async_stmt_or_funcdefÚis_atom_with_invisible_parensÚis_docstringÚis_empty_tupleÚis_generatorÚis_lpar_tokenÚis_multiline_stringÚis_name_tokenÚis_one_sequence_betweenÚis_one_tupleÚis_parent_function_or_classÚis_part_of_annotationÚis_rpar_tokenÚis_stub_bodyÚis_stub_suiteÚis_tuple_containing_starÚis_tuple_containing_walrusÚis_type_ignore_comment_stringÚ	is_varargÚis_walrus_assignmentÚis_yieldÚsymsÚwrap_in_parentheses)Únormalize_numeric_literal)Úfix_multiline_docstringÚget_string_prefixÚnormalize_string_prefixÚnormalize_string_quotesÚ"normalize_unicode_escape_sequences)ÚCannotTransformÚStringMergerÚStringParenStripperÚStringParenWrapperÚStringSplitterÚTransformerÚhug_power_op)Útoken)ÚLeafÚNodec                   ó   • \ rS rSrSrSrg)ÚCannotSplité]   zBA readable split that fits the allotted line length is impossible.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__rU   ó    ÚN/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/black/linegen.pyrS   rS   ]   s   † ÜLr\   rS   c            	       óÔ  ^ • \ rS rSrSrS\S\\   SS4S jrS)S\	S\
\   4S	 jjrS
\S\
\   4U 4S jjrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\\   S\\   S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jrS
\S\
\   4S jr S
\S\
\   4S jr!S\S\
\   4S jr"S\S\
\   4S jr#S\S\
\   4S  jr$S
\S\
\   4S! jr%S
\S\
\   4S" jr&S\S\
\   4S# jr'S\S\
\   4S$ jr(S
\S\
\   4S% jr)S
\S\
\   4S& jr*S*S' jr+S(r,U =r-$ )+ÚLineGeneratoréc   zÔGenerates reformatted Line objects.  Empty lines are not emitted.

Note: destroys the tree it's visiting by mutating prefixes of its leaves
in ways that will no longer stringify to valid Python code on the tree.
ÚmodeÚfeaturesÚreturnNc                 ó@   • Xl         X l        U   U R                  5         g ©N)ra   rb   Ú__post_init__)Úselfra   rb   s      r]   Ú__init__ÚLineGenerator.__init__j   s   € ØŒ	Ø ŒÙØ×ÑÕr\   Úindentc              #   óp  #   • U R                   (       d   U R                   =R                  U-  sl        g[        U R                   R                  5      S:X  a(  [	        U R                   R                  S   5      (       a  gU R                   n[        U R                  UR                  U-   S9U l         Uv •  g7f)z¹Generate a line.

If the line is empty, only emit if it makes sense.
If the line is too long, split it first and then generate.

If any lines were generated, set up a new current_line.
Né   r   ©ra   Údepth)Úcurrent_linern   ÚlenÚleavesr+   r   ra   )rg   rj   Úcomplete_lines      r]   ÚlineÚLineGenerator.linep   s˜   é € ð × × Ø×Ñ×#Ò# vÑ-Õ#Øäˆt× Ñ ×'Ñ'Ó(¨AÓ-Ô2JØ×Ñ×$Ñ$ QÑ'÷3
ñ 3
ð à×)Ñ)ˆÜ  d§i¡i°}×7JÑ7JÈVÑ7SÑTˆÔØÓùs   ‚B4B6Únodec              #   óâ  >#   • [        U[        5      (       Ga5  U R                  R                  R	                  5       n[        U5       HÅ  nU(       a  U R                  R                  U5        M'  UR                  [        R                  :X  a5  U R                  R                  U5        U R                  5        Sh  v•N   Mz  U R                  5        Sh  v•N   U R                  R                  U5        U R                  5        Sh  v•N   MÇ     U(       a  SUl        UR                  [        ;  a  U R                  R                  U5        [        TU ]9  U5       Sh  v•N   g Nª N’ Na N7f)zCDefault `visit_*()` implementation. Recurses to children of `node`.NÚ )Ú
isinstancerP   ro   Úbracket_trackerÚany_open_bracketsr   ÚappendÚtyperO   ÚCOMMENTrs   Úprefixr%   ÚsuperÚvisit_default)rg   ru   rz   ÚcommentÚ	__class__s       €r]   r€   ÚLineGenerator.visit_default‰   s  øé € ä�dœD×!Ò!Ø $× 1Ñ 1× AÑ A× SÑ SÓ UÐÜ,¨TÖ2�Þ$à×%Ñ%×,Ñ,¨WÖ5Ø—\‘\¤U§]¡]Ó2à×%Ñ%×,Ñ,¨WÔ5Ø#Ÿy™y›{×*Ò*ð  $Ÿy™y›{×*Ð*à×%Ñ%×,Ñ,¨WÔ5Ø#Ÿy™y›{×*Ò*ñ 3ö  !Ø �”Ø�y‰y¤
Ó*Ø×!Ñ!×(Ñ(¨Ô.Ü‘7Ñ(¨Ó.×.Ñ.ñ +ñ +ñ +ñ 	/ùsI   ƒB9E/Â<E'Â=E/ÃE)Ã2E/Ä	E+Ä
AE/Å!E-Å"E/Å)E/Å+E/Å-E/c              #   ó¤  #   • UR                   =(       a'    UR                   R                  [        R                  :H  nU(       dp  [	        [        R                  S5      n[	        [        R
                  S5      nUR                  nSUl        XSl        UR                  SU5        UR                  U5        U R                  U5       Sh  v•N   g N7f)zVisit an `x if y else z` testrw   r   N)
Úprev_siblingr|   rO   ÚLPARrP   ÚRPARr~   Úinsert_childÚappend_childr€   )rg   ru   Úalready_parenthesizedÚlparÚrparr~   s         r]   Ú
visit_testÚLineGenerator.visit_test£   s›   é € ð ×Ñ×F $×"3Ñ"3×"8Ñ"8¼E¿J¹JÑ"Fð 	ö %äœŸ
™
 BÓ'ˆDÜœŸ
™
 BÓ'ˆDØ—[‘[ˆFØˆDŒKØ ŒKØ×Ñ˜a Ô&Ø×Ñ˜dÔ#à×%Ñ% dÓ+×+Ó+ùs   ‚CCÃCÃ	Cc              #   óx   #   • U R                  S5       Sh  v•N   U R                  U5       Sh  v•N   g N N7f)z/Increase indentation level, maybe yield a line.rl   N©rs   r€   ©rg   ru   s     r]   Úvisit_INDENTÚLineGenerator.visit_INDENT¶   s4   é € ð —9‘9˜R“=× Ð Ø×%Ñ% dÓ+×+Ñ+ñ 	!Ù+ùs   ‚:—6˜:°8±:¸:c              #   ó¬   #   • U R                  5        Sh  v•N   U R                  U5       Sh  v•N   U R                  S5       Sh  v•N   g N7 N  N	7f)z/Decrease indentation level, maybe yield a line.Néÿÿÿÿr�   r‘   s     r]   Úvisit_DEDENTÚLineGenerator.visit_DEDENT¼   sN   é € ð
 —9‘9“;×Ðð ×%Ñ% dÓ+×+Ð+ð —9‘9˜R“=× Ñ ñ 	ñ 	,ñ 	!ùs1   ‚A–A—A¯A°AÁAÁ	AÁAÁAÚkeywordsÚparensc              #   ó  #   • [        XU R                  U R                  S9  UR                   HT  n[	        U5      (       a(  UR
                  U;   a  U R                  5        Sh  v•N   U R                  U5       Sh  v•N   MV     g N" N7f)a~  Visit a statement.

This implementation is shared for `if`, `while`, `for`, `try`, `except`,
`def`, `with`, `class`, `assert`, and assignments.

The relevant Python language `keywords` for a given statement will be
NAME leaves within it. This methods puts those on a separate line.

`parens` holds a set of string leaf values immediately after which
invisible parens should be put.
©Úparens_afterra   rb   N)Únormalize_invisible_parensra   rb   Úchildrenr2   Úvaluers   Úvisit)rg   ru   r˜   r™   Úchilds        r]   Ú
visit_stmtÚLineGenerator.visit_stmtÊ   sk   é € ô 	#Ø¨D¯I©IÀÇÁò	
ð —]”]ˆEÜ˜U×#Ñ#¨¯©°xÓ(?ØŸ9™9›;×&Ð&à—z‘z %Ó(×(Ò(ò	 #á&á(ùs$   ‚A"BÁ$BÁ%BÁ=B	Á>
BÂ	Bc              #   ój   #   • U R                  U5       S h  v•N   SUR                  S   l        g  N7f©Nrw   r   ©r€   rž   r~   r‘   s     r]   Úvisit_typeparamsÚLineGenerator.visit_typeparamsá   ó/   é € Ø×%Ñ% dÓ+×+Ð+Ø"$ˆ�‰�aÑÕñ 	,ùó   ‚3—1˜3c              #   ój   #   • U R                  U5       S h  v•N   SUR                  S   l        g  N7f©Nrw   rl   r¦   r‘   s     r]   Úvisit_typevartupleÚ LineGenerator.visit_typevartupleå   r©   rª   c              #   ój   #   • U R                  U5       S h  v•N   SUR                  S   l        g  N7fr¬   r¦   r‘   s     r]   Úvisit_paramspecÚLineGenerator.visit_paramspecé   r©   rª   c              #   óö  #   • [         R                  U R                  ;   a¼  [        UR                  5       H£  u  p#US:X  a  M  UR                  US-
     R
                  [        R                  :X  d  M=  UR
                  [        R                  :X  a>  UR                  S   R
                  [        ;   a  [        U5      (       d  [        UUSS9  M™  [        XSS9  M¥     U R                  U5       S h  v•N   g  N7f)Nr   rl   F©ÚparentÚremove_brackets_around_comma©Úvisible)r   Úwrap_long_dict_values_in_parensra   Ú	enumeraterž   r|   rO   ÚCOLONr@   Úatomr"   r>   Ú#maybe_make_parens_invisible_in_atomrA   r€   )rg   ru   Úir¡   s       r]   Úvisit_dictsetmakerÚ LineGenerator.visit_dictsetmakerí   s»   é € Ü×2Ñ2°d·i±iÓ?Ü% d§m¡mÖ4‘�Ø˜“6ÙØ—=‘=  Q¡Ñ'×,Ñ,´·±Õ;àŸ
™
¤d§i¡iÓ/Ø!ŸN™N¨1Ñ-×2Ñ2Ô6FÓFÜ 4°U× ;Ñ ;ä;Ø!Ø#'Ø9>ôô ,¨DÀÔGñ 5ð  ×%Ñ% dÓ+×+Ó+ùs   ‚A-C9Á3A>C9Ã1C7Ã2C9c              #   óü  #   • U R                  5        Sh  v•N   SnUR                   Hž  nUR                  [        R                  :X  a  SnM%  U(       d  M.  UR                  [
        R                  :X  aF  UR                  S   R                  [        R                  :X  a  [        UUSS9(       a
  [        XSS9  O
[        XSS9  SnM      UR                   H  nU R                  U5       Sh  v•N   M     g Ná N7f)zVisit function definition.NFTr   r³   r¶   )rs   rž   r|   rO   ÚRARROWr@   r»   r†   r¼   rA   r    )rg   ru   Úis_return_annotationr¡   s       r]   Úvisit_funcdefÚLineGenerator.visit_funcdef  sÊ   é € à—9‘9“;×Ðð  %ÐØ—]”]ˆEØ�z‰zœUŸ\™\Ó)Ø'+Ò$ß%Ð%Ø—:‘:¤§¡Ó*¨u¯~©~¸aÑ/@×/EÑ/EÌÏÉÓ/SÜ:ØØ#Ø5:÷ô
 ,¨DÀÒGøä'¨¸UÒCØ',Ò$ñ #ð —]”]ˆEØ—z‘z %Ó(×(Ò(ò #ñ' 	ñ( )ùs(   ‚C<–C8—<C<ÁBC<Ã.C:Ã/
C<Ã:C<c              #   óì   #   • [        U[        5       U R                  U R                  S9  U R	                  5        Sh  v•N   UR
                   H  nU R                  U5       Sh  v•N   M     g N1 N7f)z'Visit either a match or case statement.r›   N)r�   Úsetra   rb   rs   rž   r    ©rg   ru   r¡   s      r]   Úvisit_match_caseÚLineGenerator.visit_match_case  sY   é € ä"Øœs›u¨4¯9©9¸t¿}¹}ò	
ð —9‘9“;×ÐØ—]”]ˆEØ—z‘z %Ó(×(Ò(ò #ñ 	á(ùs!   ‚<A4¾A0¿'A4Á&A2Á'
A4Á2A4c              #   ó´   #   • [        U5      (       a'  U R                  UR                  S   5       Sh  v•N   gU R                  U5       Sh  v•N   g N N7f)zVisit a suite.é   N)r9   r    rž   r€   r‘   s     r]   Úvisit_suiteÚLineGenerator.visit_suite#  sG   é € ä˜×ÑØ—z‘z $§-¡-°Ñ"2Ó3×3Ñ3à×)Ñ)¨$Ó/×/Ñ/ñ 4á/ùs!   ‚2A´AµAÁAÁAÁAc              #   ó0  #   • SnUR                    H@  nUb  U[        R                  :X  a  [        U5      (       a
  [	        XSS9  UR
                  nMB     UR                  (       a¤  UR                  R
                  [        ;   a†  [        U5      (       a*  [        U5      (       a  U R                  U5       Sh  v•N   gU R                  S5       Sh  v•N   U R                  U5       Sh  v•N   U R                  S5       Sh  v•N   gUR                  (       a;  [        UR                  5      (       a!  SUl        U R                  U5       Sh  v•N   gU R                  5        Sh  v•N   U R                  U5       Sh  v•N   g NÏ N· N  N‰ N? N( N7f)z,Visit a statement without nested statements.NFr¶   rl   r•   rw   )rž   rO   ÚSEMIr*   rA   r|   r´   r$   r5   r8   r€   rs   r9   r~   )rg   ru   Ú	prev_typer¡   s       r]   Úvisit_simple_stmtÚLineGenerator.visit_simple_stmt*  s1  é € à#'ˆ	Ø—]”]ˆEØÑ! Y´%·*±*Ó%<Ä-ÐPU×BVÑBVÜ# D¸Ò?ØŸ
™
ŠIñ #ð
 �;�;˜4Ÿ;™;×+Ñ+¬yÓ8Ü*¨4×0Ñ0´\À$×5GÑ5GØ×-Ñ-¨dÓ3×3Ñ3àŸ9™9 R›=×(Ð(Ø×-Ñ-¨dÓ3×3Ð3ØŸ9™9 R›=×(Ñ(ð �{�{œ}¨T¯[©[×9Ñ9Ø �”Ø×-Ñ-¨dÓ3×3Ð3ØØ—y‘y“{×"Ð"Ø×)Ñ)¨$Ó/×/Ñ/ñ 4á(Ù3Ù(ñ
 4á"Ù/ùs   ‚B6FÂ8FÂ9FÃF
ÃFÃ+FÃ,FÄFÄAFÅFÅFÅ)FÅ*FÆFÆFÆ
FÆFÆFÆFÆFÆFc              #   óf  #   • U R                  5        Sh  v•N   [        UR                  5      nU HP  nU R                  U5       Sh  v•N   UR                  [
        R                  :X  d  UR                  [        :X  d  MP    O   [        U5      nU R                  U5       Sh  v•N   g N” Nc N	7f)z-Visit `async def`, `async for`, `async with`.N)	rs   Úiterrž   r    r|   rO   ÚASYNCr#   Únext)rg   ru   rž   r¡   Úinternal_stmts        r]   Úvisit_async_stmtÚLineGenerator.visit_async_stmtB  s‹   é € à—9‘9“;×Ðä˜Ÿ™Ó&ˆÛˆEØ—z‘z %Ó(×(Ð(à�z‰zœUŸ[™[Ó(¨E¯J©JÔ:LÕ,Lñ ñ ô ˜X›ˆØ—:‘:˜mÓ,×,Ñ,ñ 	ñ )ñ 	-ùs9   ‚B1–B+—2B1Á	B-Á
4B1Â#B1Â%B/Â&B1Â-B1Â/B1c              #   óœ   #   • UR                    H4  nU R                  5        Sh  v•N   U R                  U5       Sh  v•N   M6     g N" N7f)zVisit decorators.N)rž   rs   r    rÇ   s      r]   Úvisit_decoratorsÚLineGenerator.visit_decoratorsR  s:   é € à—]”]ˆEØ—y‘y“{×"Ð"Ø—z‘z %Ó(×(Ò(ò #Ù"Ù(ùs   ‚#A¥A¦A¾A
¿
AÁ
Ac              #   óP  #   • [        UR                  S S 5       Hà  u  p#UR                  US-      n[        U[        5      (       d  M.  UR                  R                  5       nUR                  [        R                  :X  d  Mh  UR                  [        R                  :X  d  Mˆ  UR                  S   R                  [        R                  :X  d  Mµ  UR                  S5      (       a  MÍ  SU;  d  MÕ  [        X5        Mâ     [        U5        U R                  U5       S h  v•N   g  N7f)Nr•   rl   r   )Ú0xÚ0bÚ0oÚj)r¹   rž   rx   rP   rŸ   Úlowerr|   rO   ÚNUMBERr@   ÚtrailerÚDOTÚ
startswithrA   Úremove_await_parensr€   )rg   ru   ÚidxÚleafÚ	next_leafrŸ   s         r]   Úvisit_powerÚLineGenerator.visit_powerX  sÒ   é € Ü" 4§=¡=°°"Ð#5Ö6‰IˆCØŸ™ c¨A¡gÑ.ˆIä˜d¤D×)Ñ)Ùà—J‘J×$Ñ$Ó&ˆEà—	‘	œUŸ\™\Õ)Ø—N‘N¤d§l¡lÕ2à×&Ñ& qÑ)×.Ñ.´%·)±)Õ;à×(Ñ(Ð);×<Ó<à˜uÕ$ä# DÖ/ñ# 7ô& 	˜DÔ!à×%Ñ% dÓ+×+Ó+ùs0   ‚A=D&ÂD&Â#)D&ÃD&Ã(D&Ã0.D&ÄD$ÄD&ré   c              #   ó@   #   • U R                  5        Sh  v•N   g N7f)zBRemove a semicolon and put the other statement on a separate line.N)rs   ©rg   ré   s     r]   Ú
visit_SEMIÚLineGenerator.visit_SEMIp  s   é € à—9‘9“;×Óùs   ‚–—c              #   óv   #   • U R                  U5       Sh  v•N   U R                  5        Sh  v•N   g N N7f)zAEnd of file. Process outstanding comments and end with a newline.N)r€   rs   rî   s     r]   Úvisit_ENDMARKERÚLineGenerator.visit_ENDMARKERt  s0   é € à×%Ñ% dÓ+×+Ð+Ø—9‘9“;×Ññ 	,Ùùs   ‚9—5˜9¯7°9·9c              #   óÈ   #   • U R                   R                  R                  5       (       d  U R                  5        S h  v•N   U R	                  U5       S h  v•N   g  N N7fre   )ro   ry   rz   rs   r€   rî   s     r]   Úvisit_STANDALONE_COMMENTÚ&LineGenerator.visit_STANDALONE_COMMENTy  sK   é € Ø× Ñ ×0Ñ0×BÑB×DÑDØ—y‘y“{×"Ð"Ø×%Ñ% dÓ+×+Ñ+ñ #Ù+ùs"   ‚=A"¿AÁ A"ÁA ÁA"Á A"c           	   #   ó  #   • UR                   u  p#UR                  [        R                  :X  a½  [	        UR                   5      S:X  a¤  UR                   S   R                  [
        R                  :X  ay  [        [
        R                  S5      n[        [
        R                  S5      nUR                  5       =(       d    SnUR                  U[        [        R                  XCU/5      5        U R                  U5       Sh  v•N   g N7f)zOForce parentheses between a unary op and a binary power:

-2 ** 8 -> -(2 ** 8)
é   rl   Ú(Ú)r   N)rž   r|   r@   Úpowerrp   rO   Ú
DOUBLESTARrP   r†   r‡   Úremoverˆ   rQ   r»   r€   )rg   ru   Ú	_operatorÚoperandr‹   rŒ   Úindexs          r]   Úvisit_factorÚLineGenerator.visit_factor~  sº   é € ð
 "Ÿ]™]Ñˆ	à�L‰LœDŸJ™JÓ&Ü�G×$Ñ$Ó%¨Ó*Ø× Ñ  Ñ#×(Ñ(¬E×,<Ñ,<Ó<äœŸ
™
 CÓ(ˆDÜœŸ
™
 CÓ(ˆDØ—N‘NÓ$×)¨ˆEØ×Ñ˜e¤T¬$¯)©)°dÀTÐ5JÓ%KÔLØ×%Ñ% dÓ+×+Ó+ùs   ‚C>DÄ DÄDc              #   óÞ   #   • [        UR                  5      S:X  d   e[        UR                  S   US9(       a  [        XR                  S   SS9  U R	                  U5       Sh  v•N   g N7f)zñ
Add potential parentheses around types in function parameter lists to be made
into real parentheses in case the type hint is too long to fit on a line
Examples:
def foo(a: int, b: float = 7): ...

->

def foo(a: (int), b: (float) = 7): ...
rø   rË   ©r´   Fr¶   N)rp   rž   r¼   rA   r€   r‘   s     r]   Úvisit_tnameÚLineGenerator.visit_tname�  sX   é € ô �4—=‘=Ó! QÓ&Ð&Ð&Ü.¨t¯}©}¸QÑ/?È×MÜ §m¡m°AÑ&6ÀÒFà×%Ñ% dÓ+×+Ó+ùs   ‚A#A-Á%A+Á&A-c              #   óÐ  #   • [        U5        [        U5      (       Ga>  [        R                  " SUR                  5      (       Gd  U R
                  R                  (       a!  [        UR                  5      n[        U5      nOUR                  n[        U5      nU[        U5      S  nUS   nUS   U:w  a  SOSnX%U*  nU(       + nSU R                  R                  -  n[        U5      (       a  [        X'5      nOUR                  5       nSnU(       a]  US   U:X  a  SU-   nUS   U:X  a  US-  nUS   S	:X  a7  [        U5      [        UR!                  S	5      5      -
  n	U	S
-  (       a  US-  nSnO	U(       d  SnXE-  n
US:X  aË  UR#                  5       nU(       a  [        US   5      OSn[        U5      S:”  a…  XÅ-   U R
                  R$                  :”  ai  [        U5      U-   U R
                  R$                  ::  aC  U(       d<  UR                  SU-
     S:X  a  X:-   U-   U
-   Ul        O5X:-   U-   S-   U-   U
-   Ul        OX:-   U-   U
-   Ul        OX:-   U-   U
-   Ul        U R
                  R                  (       aR  UR&                  [(        R*                  :X  a4  [        UR                  5      Ul        [        UR                  5      Ul        U R-                  U5       S h  v•N   g  N7f)Nz\\\s*\nr   rl   rø   z    FÚ r•   Ú\rË   TÚ
)rG   r-   ÚreÚsearchrŸ   ra   Ústring_normalizationrE   rF   rD   rp   ro   rn   r1   rC   ÚstripÚrstripÚ
splitlinesÚline_lengthr|   rO   ÚSTRINGr€   )rg   ré   Ú	docstringr~   Ú
quote_charÚ	quote_lenÚdocstring_started_emptyrj   Úhas_trailing_backslashÚbackslash_countÚquoteÚlinesÚlast_line_lengths                r]   Úvisit_STRINGÚLineGenerator.visit_STRING   s’  é € Ü*¨4Ô0ä˜×Ò¤b§i¢i°
¸D¿J¹J×&GÒ&Gð �y‰y×-×-Ü3°D·J±JÓ?�	ô 4°IÓ>‘	à ŸJ™J�	Ü& yÓ1ˆFØ!¤# f£+ -Ð0ˆIØ" 1™ˆJð ' q™\¨ZÓ7™¸QˆIØ!¨Y¨JÐ7ˆIØ*3¤mÐ#Ø˜t×0Ñ0×6Ñ6Ñ6ˆFä" 4×(Ñ(Ü3°IÓF‘	à%ŸO™OÓ-�	à%*Ð"Þà˜Q‘< :Ó-Ø # i¡�IØ˜R‘= JÓ.Ø Ñ$�IØ˜R‘= DÓ(Ü&)¨)£n´s¸9×;KÑ;KÈDÓ;QÓ7RÑ&R�OØ&¨×*ð " SÑ(˜	Ø15Ð.øÞ,Ø�	ð Ñ*ˆEð ˜A‹~ð "×,Ñ,Ó.�Þ5>¤3 u¨R¡y¤>ÀAÐ ô ˜“J “NØ(Ñ4°t·y±y×7LÑ7LÓLÜ˜F› iÑ/°4·9±9×3HÑ3HÓHÞ2à—z‘z " y¡.Ñ1°TÓ9Ø%+¡^°iÑ%?À%Ñ%G˜�
à%+¡^°iÑ%?À$Ñ%FÈÑ%OÐRWÑ%W˜�
à!'¡°)Ñ!;¸eÑ!C�D•Jà#™^¨iÑ7¸%Ñ?�”
à�9‰9×)×)¨d¯i©i¼5¿<¹<Ó.GÜ0°·±Ó<ˆDŒJÜ0°·±Ó<ˆDŒJØ×%Ñ% dÓ+×+Ó+ùs   ‚KK&ËK$ËK&c              #   óX   #   • [        U5        U R                  U5       S h  v•N   g  N7fre   )rB   r€   rî   s     r]   Úvisit_NUMBERÚLineGenerator.visit_NUMBERø  s!   é € Ü! $Ô'Ø×%Ñ% dÓ+×+Ó+ùs   ‚ *¢(£*c              #   óÎ  #   • [        UR                  5      S:X  a­  UR                  S   nUR                  S   nUR                  [        R                  :X  a  UR                  [        R
                  :X  d<  UR                  [        R                  :X  a5  UR                  [        R                  :X  a  [        UR                  S   US9  U R                  U5       Sh  v•N   g N7f)zVisit any atomrø   r   r•   rl   r  N)
rp   rž   r|   rO   ÚLSQBÚRSQBÚLBRACEÚRBRACEr¼   r€   )rg   ru   ÚfirstÚlasts       r]   Ú
visit_atomÚLineGenerator.visit_atomü  s™   é € äˆt�}‰}Ó Ó"Ø—M‘M !Ñ$ˆEØ—=‘= Ñ$ˆDØ—
‘
œeŸj™jÓ(¨T¯Y©Y¼%¿*¹*Ó-DØ—
‘
œeŸl™lÓ*¨t¯y©y¼E¿L¹LÓ/Hô 4°D·M±MÀ!Ñ4DÈTÒRà×%Ñ% dÓ+×+Ó+ùs   ‚CC%ÃC#ÃC%c              #   ó  #   • [        U5      nUR                  U5        SUR                  ;   a;  [        S UR                   5       5      (       a  U R                  U5       S h  v•N   g U R                  U5       S h  v•N   g  N N7f)Nr	  c              3   ó|   #   • U H3  nUR                   [        R                  :X  d  M#  S [        U5      ;   v •  M5     g7f)r	  N)r|   r@   Úfstring_replacement_fieldÚstr©Ú.0r¡   s     r]   Ú	<genexpr>Ú.LineGenerator.visit_fstring.<locals>.<genexpr>  s4   é € ð -
á&�Ø�z‰zœT×;Ñ;Ñ;ó ˆD”C˜“JÖÚ&ùs   ‚!<§<)r(   r   rŸ   Úanyrž   r€   r  )rg   ru   Ústring_leafs      r]   Úvisit_fstringÚLineGenerator.visit_fstring	  s{   é € ä'¨Ó-ˆØ�‰�[Ô!Ø�;×$Ñ$Ó$¬ñ -
àŸšó-
÷ *
ñ *
ð ×)Ñ)¨+Ó6×6Ð6ØØ×$Ñ$ [Ó1×1Ñ1ñ 7á1ùs$   ‚A"BÁ$BÁ%BÁ>BÁ?BÂBc                 ó¼  • [        U R                  S9U l        U R                  n[	        5       n[        US1SS1S9U l        [        U1 SkSS1S9U l        [        USS	1S1S9U l        [        US
S	1S
S1S9U l	        [        U1 SkUS9U l
        [        US1S1S9U l        [        US1S1S9U l        [        US1US9U l        [        X[        S9U l        [        US1S1S9U l        [        XS1S9U l        [        XS1S9U l        U R&                  U l        U R*                  U l        U R.                  U l        U R.                  U l        [        XS1S9U l        g)z,You are in a twisty little maze of passages.©ra   ÚassertÚ,)r˜   r™   >   ÚifÚelifÚelser:  r;  Úwhiler<  ÚforÚin>   Útryr<  ÚexceptÚfinallyrA  ÚwithÚclassrc   ÚimportÚdelN)r   ra   ro   r¢   rÆ   r   Úvisit_assert_stmtÚvisit_if_stmtÚvisit_while_stmtÚvisit_for_stmtÚvisit_try_stmtÚvisit_except_clauseÚvisit_with_stmtÚvisit_classdefr   Úvisit_expr_stmtÚvisit_return_stmtÚvisit_import_fromÚvisit_del_stmtrØ   Úvisit_async_funcdefrÛ   Úvisit_decoratedrÈ   Úvisit_match_stmtÚvisit_case_blockÚvisit_guard)rg   Úvô   Ã˜s      r]   rf   ÚLineGenerator.__post_init__9  sm  € ä  d§i¡iÑ0ˆÔà�O‰OˆÜ“uˆÜ!(¨°h°ZÈÐSVÈÑ!XˆÔÜ$ØÒ.¸¸f°~ñ
ˆÔô !(¨°W¸fÐ4EÈwÈiÑ XˆÔÜ% a°5¸&°/È5ÐRVÈ-ÑXˆÔÜ%ØÒ<ÀRñ
ˆÔô $+¨1¸°zÈ8È*Ñ#UˆÔ Ü& q°F°8ÀVÀHÑMˆÔÜ% a°7°)ÀBÑGˆÔä& q¼kÑJˆÔÜ!(¨°h°ZÈÈ
Ñ!SˆÔÜ!(¨ÀÀ
Ñ!KˆÔÜ% a¸e¸WÑEˆÔØ#'×#8Ñ#8ˆÔ Ø#×4Ñ4ˆÔð !%× 5Ñ 5ˆÔØ $× 5Ñ 5ˆÔÜ" 1¸4¸&ÑAˆÕr\   )ro   rb   ra   rG  rS  rV  rN  rT  rR  rL  rO  rJ  rW  rH  rQ  rU  rP  rK  rI  rM  )r   )rc   N).rV   rW   rX   rY   rZ   r   r   r   rh   Úintr   r   rs   ÚLNr€   rQ   r�   rP   r’   r–   rÆ   r-  r¢   r§   r­   r°   r¾   rÃ   rÈ   rÌ   rÑ   rØ   rÛ   rë   rï   rò   rõ   r  r  r  r  r(  r4  rf   r[   Ú__classcell__)r‚   s   @r]   r_   r_   c   s¨  ø† ñð˜Tð ¨Z¸Ñ-@ð ÀTô ñ˜3ð  x°¡~õ ð2/ "ð /¨°$©÷ /ð4,˜tð ,¨°©ô ,ð&, ð ,¨(°4©.ô ,ð! ð !¨(°4©.ô !ð)Øð)Ø$'¨¡Hð)Ø69¸#±hð)à	�$‰ô)ð.% Tð %¨h°t©nô %ð% tð %°¸±ô %ð% Dð %¨X°d©^ô %ð, tð ,°¸±ô ,ð() $ð )¨8°D©>ô )ð0) Tð )¨h°t©nô )ð0 ð 0¨°$©ô 0ð0 dð 0¨x¸©~ô 0ð0- Tð -¨h°t©nô -ð ) Tð )¨h°t©nô )ð, ð ,¨°$©ô ,ð0˜tð ¨°©ô ð Dð ¨X°d©^ô ð
,¨Tð ,°h¸t±nô ,ð
, ð ,¨(°4©.ô ,ð", ð ,¨°$©ô ,ð"V, ð V,¨(°4©.ô V,ðp, ð ,¨(°4©.ô ,ð,˜tð ,¨°©ô ,ð2 $ð 2¨8°D©>ô 2÷`Bò Br\   r_   rs   rb   ra   rc   c           	      ó`   •  [        [        [        XU5      5      5      $ ! [         a     g f = fre   )r   rÖ   rN   rH   )rs   rb   ra   s      r]   Ú!_hugging_power_ops_line_to_stringr_  Y  s0   € ð
Üœd¤<°ÀÓ#EÓFÓGÐGøÜó Ùðús   ‚   
-¬-c              #   ó–  #   • U R                   (       a  U v •  g[        U 5      n[        XU5      =(       d    UnUR                  nUR                  n[        XV5      n[        XV5      n[        XV5      n	[        XV5      n
U R                  5       (       dœ  U R                  (       d‹  U R                  (       dz  [        XUS9(       d  U R                  5       (       aV  U R                  (       a  U R                  5       (       d0  U R!                  5       (       d  ["        R$                  U;   a  Xx/nOÒ/ nOÏU R&                  (       a  [)        X5      (       d  [*        /nO¦S[,        S[.        S[0        [2           S[4        S[6        [.           4
S jn[9        S	S
SU05      " 5       n["        R$                  U;   a+  U R                  (       a  UUU	[:        [<        U
U/nO*UUU	U
U/nO"U R                  (       a  [:        [<        U/nOU/nUR?                  [@        5        U H  n [C        XXUS9nU Sh  v•N     g   U v •  g N! [D         a     M1  f = f7f)zÌTransform a `line`, potentially splitting it into many lines.

They should fit in the allotted `line_length` but might not be able to.

`features` are syntactical features that may be used in the output.
N)ra   Úline_strrg   rs   rb   ra   rc   c           
   3   óÒ   #   • [        XR                  5       H4  n[        [        XX$S95      n[	        US   US9(       d  M*  U Sh  v•N     g   [        XUS9 Sh  v•N   g N N7f)zÆWraps calls to `right_hand_split`.

The calls increasingly `omit` right-hand trailers (bracket pairs with
content), meaning the trailers get glued together to split on another
bracket pair instead.
©Úomitr   r7  N)rb   )Úgenerate_trailers_to_omitr  ÚlistÚright_hand_splitr   )rg   rs   rb   ra   rd  r  s         r]   Ú_rhsÚtransform_line.<locals>._rhs•  sk   é € ô 2°$×8HÑ8HÖI�ÜÔ-¨d¸(ÑNÓO�ô
 (¨¨a©°t×<Ñ<Ø$×$Ð$Ùñ Jô (¨¸XÑF×FÑFñ %ñ Gùs)   ‚<A'ÁA'ÁA#ÁA'ÁA%ÁA'Á%A'ÚrhsrU   Ú__call__©ra  )#Ú
is_commentr   r_  r  r  rI   rJ   rL   rK   Ú$contains_uncollapsable_type_commentsÚshould_split_rhsÚmagic_trailing_commar   Ú!contains_unsplittable_type_ignoreÚinside_bracketsÚcontains_standalone_commentsÚ0contains_implicit_multiline_string_with_commentsr   Ústring_processingÚis_defÚshould_split_funcdef_with_rhsÚleft_hand_splitÚobjectr   r   r   r   r   r|   Údelimiter_splitÚstandalone_comment_splitr{   rN   Úrun_transformerrH   )rs   ra   rb   ra  Úline_str_hugging_power_opsÚllÚsnÚstring_mergeÚstring_paren_stripÚstring_splitÚstring_paren_wrapÚtransformersrh  rj  Ú	transformÚresults                   r]   Útransform_liner‡  d  s*  é € ð ‡‡ØŠ
Øä˜dÓ#€Hô
 	*¨$¸$Ó?×KÀ8ð ð 
×	Ñ	€BØ	×	"Ñ	"€BÜ Ó'€LÜ,¨RÓ4ÐÜ! "Ó)€LÜ*¨2Ó2Ðð ×5Ñ5×7Ñ7Ø×%×%Ø×)×)ä  Ð;U×VØ×5Ñ5×7Ñ7à×%×%¨$×*KÑ*K×*MÑ*MØ×EÑE×GÑGô ×$Ñ$¨Ó,Ø(Ð=‰Là‰LØ	��Ô:¸4×FÑFÜ'Ð(‰ð	GÜð	GÜ $ð	GÜ0:¼7Ñ0Cð	GÜKOð	Gä”d‰^ô	Gô: �5˜"˜z¨4Ð0Ô1Ó3ˆä×$Ñ$¨Ó,Ø×#×#à Ø&Ø Ü#Ü,Ø%Øð ‘ð !Ø&Ø Ø%Øð ‘ð ×#×#Ü /Ô1IÈ3ÐO‘à #˜u�ð ×ÑœÔ%ã!ˆ	ð	Ü$ T°dÈxÑXˆFð ×ÐÙñ "ð ‹
ñ	 øô ó 	Úð	üs6   ‚HI	ÈH8È#I	È(H6È)I	È8
IÉI	ÉIÉI	c                 óž  • / nSnU R                    H]  nUR                  [        R                  :X  a  SnU(       a  UR	                  U5        UR                  [        R
                  :X  d  M[  SnM_     [        U R                  U R                  S9n[        U5      nU H   nUR	                  US[        U5      U;   S9  M"     UR                  SL$ )zIf a funcdef has a magic trailing comma in the return type, then we should first
split the line with rhs to respect the comma.
FTrm   ©ÚpreformattedÚtrack_bracketN)rq   r|   rO   rº   r{   rÁ   r   ra   rn   r   Úidrp  )rs   ra   Úreturn_type_leavesÚin_return_typeré   r†  Úleaves_to_tracks          r]   rw  rw  à  s¹   € ð &(ÐØ€Nà—”ˆØ�9‰9œŸ™Ó#Ø"ˆNÞØ×%Ñ% dÔ+Ø�9‰9œŸ™Õ$Ø!ŠNñ ô �t—y‘y¨¯
©
Ñ3€FÜ9Ð:LÓM€OÛ"ˆØ�‰ØØÜ˜T›( oÑ5ð 	ó 	
ñ #ð ×&Ñ&¨dÐ2Ð2r\   c                   ó>   • \ rS rSr\" 5       r\" 5       r\" 5       rSrg)Ú_BracketSplitComponentiÿ  rU   N)	rV   rW   rX   rY   r   ÚheadÚbodyÚtailr[   rU   r\   r]   r‘  r‘  ÿ  s   † Ù‹6€DÙ‹6€DÙ‹6ƒDr\   r‘  Ú	_featuresc              #   óÜ  #   • [         R                  [         R                  4 H¼  n/ n/ n/ nUnSnU R                   H�  n	XuL aY  U	R                  [
        ;   aE  U	R                  UL a6  [        U[        5      (       a!  [        U	5        [        U5        U(       a  UOUnUR                  U	5        XvL d  Mw  U	R                  U:X  d  M‰  U	nUnM�     U(       d  M³  U(       d  M¼    O   W(       a  W(       d  [        S5      e[        WX[        R                  S9n
[        WX[        R                  S9n[        X@U[        R                   S9n[#        X«U5        X«U4 H  nU(       d  M  Uv •  M     g7f)a  Split line into many lines, starting with the first matching bracket pair.

Note: this usually looks weird, only use this for function definitions.
Prefer RHS otherwise.  This is why this function is not symmetrical with
:func:`right_hand_split` which also handles optional parentheses.
NúNo brackets found©Ú	component)rO   r†   r"  rq   r|   r!   Úopening_bracketrx   rP   r'   r{   rS   Úbracket_split_build_liner‘  r’  r“  r”  Ú bracket_split_succeeded_or_raise)rs   r•  ra   Ú	leaf_typeÚtail_leavesÚbody_leavesÚhead_leavesÚcurrent_leavesÚmatching_bracketré   r’  r“  r”  r†  s                 r]   rx  rx    sO  é € ô —j‘j¤%§*¡*Ó-ˆ	Ø"$ˆØ"$ˆØ"$ˆØ$ˆØ+/ÐØ—K”KˆDàÒ-Ø—I‘IÔ!1Ó1Ø×(Ñ(Ð,<Ò<ÜÐ/´×6Ñ6ä˜tÔ$ÜÐ/Ô0Þ0;¡À�Ø×!Ñ! $Ô'ØÔ,Ø—9‘9 	Õ)Ø'+Ð$Ø%0’Nñ  ÷ Ð§ Ùñ- .ö. ¦;ÜÐ-Ó.Ð.ä#Ø�TÔ7M×7RÑ7Rñ€Dô $Ø�TÔ7M×7RÑ7Rñ€Dô $ØÐ+Ô7M×7RÑ7Rñ€Dô % T°Ô6Ø˜tÓ$ˆßˆ6ØŒLò %ùs%   ‚B-E,Â3E,ÃE,ÃE,ÃB E,Å#	E,rd  c              #   óH   #   • [        XS9n[        X@XUS9 Sh  v•N   g N7f)aD  Split line into many lines, starting with the last matching bracket pair.

If the split was by optional parentheses, attempt splitting without them, too.
`omit` is a collection of closing bracket IDs that shouldn't be considered for
this split.

Note: running this function modifies `bracket_depth` on the leaves of `line`.
rc  ©rb   rd  N)Ú_first_right_hand_splitÚ%_maybe_split_omitting_optional_parens)rs   ra   rb   rd  Ú
rhs_results        r]   rg  rg  7  s*   é € ô )¨Ñ9€JÜ4Ø˜$¸ñ÷ ó ùs   ‚"š ›"c                 ó2  • / n/ n/ nUnSnSn[        U R                  5       Hd  nXSL a  X†L a  U(       a  UOUnUR                  U5        XRL d  M-  UR                  [        ;   d  MC  [        U5      U;  d  MT  UR                  nUnUnMf     U(       a  U(       a  U(       d  [        S5      eUR                  5         UR                  5         UR                  5         Sn	[        R                  U R                  ;   Ga5  US   R                  (       Ga   US   R                  US   L Ga
  [        U5      n
/ n/ nUS   R                  [        R                  [        R                   4;   nU(       a  SOSn[#        U
5      SU-   :¼  aÓ  U
S   R                  [        ;   a¼  U
S   R                  X®   L a¨  U(       a"  UR                  U
R%                  S5      5        SnUR                  U
R%                  S5      5        UR'                  SU
R%                  5       5        [#        U
5      SU-   :¼  a-  U
S   R                  [        ;   a  U
S   R                  X®   L a  M¨  U(       aÔ  U
(       aÍ  [)        U
U US   [*        R,                  S9nU R                  R.                  (       a$  U
S   R                  [        R0                  :X  a  SnOQU R                  R2                  [5        S	 X¼-    5       5      -
  n[7        U[9        U R                  US
9S9(       a  SnOSnU(       a  U
nUR;                  U5        XÂ-   nUn	[)        X@U[*        R<                  S9nU	c  [)        X0U[*        R,                  S9n	[)        X U[*        R>                  S9n[A        UU	U5        [C        UU	UXg5      $ )a  Split the line into head, body, tail starting with the last bracket pair.

Note: this function should not have side effects. It's relied upon by
_maybe_split_omitting_optional_parens to get an opinion whether to prefer
splitting on the right side of an assignment statement.
Nr—  r   r•   rl   rË   r˜  Tc              3   óH   #   • U H  n[        [        U5      5      v •  M     g 7fre   )rp   r-  ©r/  ré   s     r]   r0  Ú*_first_right_hand_split.<locals>.<genexpr>“  s!   é € ð :á M˜ô œ˜D›	—N�NÚ Mùs   ‚ "©r  r7  F)"Úreversedrq   r{   r|   r!   rŒ  rš  rS   Úreverser   Ú*hug_parens_with_braces_and_square_bracketsra   rŸ   rf  rO   ÚSTARrü   rp   ÚpopÚinsertr›  r‘  r“  rp  ÚCOMMAr  Úsumr   r   Úextendr’  r”  rœ  r   )rs   rd  rž  rŸ  r   r¡  rš  Úclosing_bracketré   r“  Úinner_body_leavesÚhugged_opening_leavesÚhugged_closing_leavesÚis_unpackingÚunpacking_offsetÚ
inner_bodyÚ
should_hugr  r’  r”  s                       r]   r¥  r¥  K  s]  € ð !€KØ €KØ €KØ €NØ&*€OØ&*€OÜ˜Ÿ™Ö%ˆØÒ(ØÒ&Þ0;¡À�Ø×Ñ˜dÔ#ØÔ(Ø�y‰yÔ,Õ,´°D³ÀÕ1EØ"&×"6Ñ"6�Ø"&�Ø!,’ñ &ö ¦¶Kô Ð-Ó.Ð.à×ÑÔØ×ÑÔØ×ÑÔà€Dä×:Ñ:¸d¿i¹iÔGØ˜‰N× × Ð Ø˜‰N×*Ñ*¨k¸"©oÓ=ä  Ó-ÐØ,.ÐØ,.ÐØ" 1‘~×*Ñ*¬u¯z©z¼5×;KÑ;KÐ.LÑLˆÞ%1¡°qÐäÐ!Ó" aÐ*:Ñ&:Ó:Ø! "Ñ%×*Ñ*Ô.>Ó>Ø! "Ñ%×5Ñ5Ø Ñ2ò3ö  Ø%×,Ñ,Ð->×-BÑ-BÀ1Ó-EÔFØ#$Ð Ø!×(Ñ(Ð):×)>Ñ)>¸qÓ)AÔBØ!×(Ñ(¨Ð,=×,AÑ,AÓ,CÔDô Ð!Ó" aÐ*:Ñ&:Ó:Ø! "Ñ%×*Ñ*Ô.>Ó>Ø! "Ñ%×5Ñ5Ø Ñ2ô3ö !Ö%6Ü1Ø!ØØ% bÑ)Ü0×5Ñ5ñ	ˆJð —	‘	×.×.Ø% bÑ)×.Ñ.´%·+±+Ó=à!‘
à"Ÿi™i×3Ñ3´cñ :à 5Ò Mó:ó 7ñ �ô (Ø¤W¨T¯Y©YÀKÑ%P÷ð "'‘Jà!%�JÞØ/�Ø×"Ñ"Ð#8Ô9Ø3ÑA�Ø!�ä#Ø˜?Ô6L×6QÑ6Qñ€Dð �|Ü'Ø˜Ô:P×:UÑ:Uñ
ˆô $Ø˜?Ô6L×6QÑ6Qñ€Dô % T¨4°Ô6Ü�T˜4  ÓHÐHr\   rj  c              #   ó~  #   • [         R                  U;  aù  U R                  R                  [        R
                  :X  aÑ  U R                  R                  (       d¶  U R                  R                  [        R                  :X  aŽ  U R                  R                  (       ds  UR                  (       db  [        XR                  5      (       aH  [        U R                  5      1Ukn [        XS9n[        XPU5      (       a  [        XQX#US9 S h  v•N   g  [;        U R                  5        [;        U R                  5        U R4                  U R&                  U R8                  4 H  nU(       d  M  Uv •  M     g  Nh! [          Ga;  nUR"                  (       a   S nAN…[%        U R&                  5      (       d¶  [)        U R&                  US9(       d�  [*        R,                  (       a|  U R                  R.                  (       aa  U R                  R.                  R.                  (       a<  U R                  R.                  R.                  R                  [0        R2                  :X  d  [!        S5      UeU R4                  R7                  5       (       d  U R8                  R7                  5       (       a  [!        S5      Ue S nAGN¥S nAff = f7f)Nrc  r¤  r7  z<Splitting failed, body is still too long and can't be split.z¼The current optional pair of parentheses is bound to fail to satisfy the splitting algorithm because the head or the tail contains multiline strings which by definition never fit one line.)r   ÚFORCE_OPTIONAL_PARENTHESESrš  r|   rO   r†   rŸ   r¶  r‡   Ú	is_importr   r  rŒ  r¥  Ú_prefer_split_rhs_oop_over_rhsr¦  rS   Úis_chained_assignmentr   r“  r   r   r¸   r´   r@   Údictsetmakerr’  Úcontains_multiline_stringsr”  r'   )rj  rs   ra   rb   rd  Úrhs_oopÚer†  s           r]   r¦  r¦  ²  s	  é € ô 	×*Ñ*°(Ó:à×Ñ×$Ñ$¬¯
©
Ó2Ø×#Ñ#×)×)à×Ñ×$Ñ$¬¯
©
Ó2Ø×#Ñ#×)×)ð ——ä% c×+;Ñ+;×<Ñ<ä�3×&Ñ&Ó'Ð/¨$Ð/ˆð%	ä-¨dÑ>ˆGÜ-¨g¸D×AÑAÜ@Ø 4Àñ÷ ð ð ð	 BôH �3×&Ñ&Ô'Ü�3×&Ñ&Ô'Ø—8‘8˜SŸX™X s§x¡xÓ0ˆßˆ6ØŒLò 1ñKøô
 ô 	à×)×)Üô ! §¡×*Ñ*Ü,¨S¯X©X¸D×Aä×;×;Ø×+Ñ+×2×2Ø×+Ñ+×2Ñ2×9×9Ø×+Ñ+×2Ñ2×9Ñ9×>Ñ>Ä$×BSÑBSÓSô "ØRóàðð
 —‘×3Ñ3×5Ñ5Ø—8‘8×6Ñ6×8Ñ8ä!ðóð
 ðõ 9ûð+	üsV   ‚CJ=Ã!(E4 Ä	E2Ä
E4 ÄAJ=Å)	J=Å2E4 Å4J:Å?J5ÆJ=ÆDJ5Ê/J=Ê5J:Ê:J=rÅ  c                 óÂ  • U R                   R                  5       (       d>  U R                  R                  5       (       d  U R                  R                  5       (       a  g[        R
                  (       aÇ  UR                  R                  (       a¬  UR                  R                  R                  (       a‡  UR                  R                  R                  R                  [        R                  :X  aK  UR                  R                  R                  (       a&  [        S U R                  R                   5       5      $ [        UR                   R                  5      S:¼  a5  UR                   R                  S   R                  [         R"                  :X  d  g[        S UR                   R                  SS  5       5      (       d  g[%        UR                   ['        X"R(                  S-
  S	9S
9(       d  gUR                   R*                  b  gUR                   R                   Vs/ sH  o3R                  PM     snR-                  [         R"                  5      nU R                   R                   Vs/ sH  o3R                  PM     snR-                  [         R"                  5      nUS:”  a  XE:”  a  gSn[/        U R                   R                  5       H;  nUR                  [         R"                  :X  a    OUR                  [0        ;   d  M9  Sn  O   U=(       dA    [        S U R                   R                   5       5      =(       a    [%        U R                   US
9$ s  snf s  snf )zv
Returns whether we should prefer the result from a split omitting optional parens
(rhs_oop) over the original (rhs).
Tc              3   óX   #   • U H!  oR                   [        R                  :H  v •  M#     g 7fre   )r|   rO   rº   rª  s     r]   r0  Ú1_prefer_split_rhs_oop_over_rhs.<locals>.<genexpr>  s   é € ÐLÑ8K°—9‘9¤§¡Ö+Ò8Kùó   ‚(*rË   éþÿÿÿc              3   óD   #   • U H  oR                   [        ;   v •  M     g 7fre   )r|   r    rª  s     r]   r0  rÉ    s   é € ÐFÑ1E¨�y‰yœHÖ$Ò1Eùs   ‚ Nr•   rl   r¬  r7  Fc              3   óX   #   • U H!  oR                   [        R                  :H  v •  M#     g 7fre   )r|   rO   ÚEQUALrª  s     r]   r0  rÉ  :  s   é € ÐIÑ5H¨T—	‘	œUŸ[™[Ö(Ò5HùrÊ  )r’  rq  r“  r”  r   r¸   rš  r´   r|   r@   rÃ  ry   Ú
delimitersr2  rq   rp   rO   rÎ  r   r   r  rp  Úcountr­  r!   )rÅ  rj  ra   ré   Úrhs_head_equal_countÚrhs_oop_head_equal_countÚ has_closing_bracket_after_assigns          r]   rÁ  rÁ  ö  sd  € ð 	�‰×6Ñ6×8Ñ8Ø�<‰<×9Ñ9×;Ñ;Ø�<‰<×9Ñ9×;Ñ;àô 	×/×/Ø×Ñ×&×&Ø×Ñ×&Ñ&×-×-Ø×Ñ×&Ñ&×-Ñ-×2Ñ2´d×6GÑ6GÓGØ�H‰H×$Ñ$×/×/ô ÑL¸¿¹×8KÒ8KÓLÓLÐLô �—‘—‘Ó  AÓ%¨#¯(©(¯/©/¸"Ñ*=×*BÑ*BÄeÇkÁkÓ*QØô ÑF°·±·±ÀÀ"Ñ1EÓF×FÑFØô  Ø�‰”w˜t×1AÑ1AÀAÑ1EÑF÷ð ð ‡x�x×$Ñ$Ñ0Øð 36·(±(·/²/ÓB±/¨$ŸIœI±/ÑB×HÑHÌÏÉÓUÐØ6=·l±l×6IÒ6IÓJÑ6I¨d§	¤	Ñ6IÑJ×PÑPÜ�‰ó Ðð ˜aÓÐ$8Ó$SØà',Ð$Ü˜Ÿ™×,Ñ,Ö-ˆØ�9‰9œŸ™Ó#ÙØ�9‰9Ô(Õ(Ø/3Ð,Ùñ .ð 	)÷ 	
ô ÑI°W·\±\×5HÒ5HÓIÓI÷ >ä$ W§\¡\¸Ñ=ðùò CùÚJs   È!MÉ-Mr’  r“  r”  c                 ó¤   • [        [        U5      R                  5       5      nU(       d'  US:X  a  [        S5      eUS:  a  [        SU S35      egg)a[  Raise :exc:`CannotSplit` if the last left- or right-hand split failed.

Do nothing otherwise.

A left- or right-hand split is based on a pair of brackets. Content before
(and including) the opening bracket is left on one line, content inside the
brackets is put on a separate line, and finally content starting with and
following the closing bracket is put on a separate line.

Those are called `head`, `body`, and `tail`, respectively. If the split
produced the same line (all content in `head`) or ended up with an empty `body`
and the `tail` is just the closing bracket, then it's considered failed.
r   z)Splitting brackets produced the same linerø   z,Splitting brackets on an empty body to save z characters is not worth itN)rp   r-  r  rS   )r’  r“  r”  Útail_lens       r]   rœ  rœ  A  s_   € ô ”3�t“9—?‘?Ó$Ó%€HÞØ�q‹=ÜÐIÓJÐJà˜‹\ÜØ>¸x¸jð I ð  óð ð ð	 r\   rq   Úoriginalrš  c                 óº  • U (       d  gUR                   (       a  gUR                  (       d  gUR                  S:w  a  g[        S U  5       5      (       a  g[	        S U  5       S 5      nUc  g[        U5      S:X  a  gUR                  (       aN  UR                  R                  (       a3  UR                  R                  R                  [        R                  :X  a  gg)NFTrù   c              3   ó†   #   • U H8  oR                   [        R                  :H  =(       a    [        U5      (       + v •  M:     g 7fre   )r|   rO   r³  r6   rª  s     r]   r0  Ú)_ensure_trailing_comma.<locals>.<genexpr>i  s0   é € ð ÙQWÈ�	‰	”U—[‘[Ñ ×DÔ)>¸tÓ)DÔ%DÔDÒQWùs   ‚?Ac              3   óH   #   • U H  oR                   (       d  M  Uv •  M     g 7fre   r  rª  s     r]   r0  rÙ  o  s   é € ÐD©f d¿½ŸT™Tªfùs   ‚"™	"rc   )rÀ  rv  rŸ   r2  rÖ   r)   r´   Únext_siblingr|   rO   ÚVBAR)rq   rÖ  rš  Úleaf_with_parents       r]   Ú_ensure_trailing_commarÞ  [  s½   € ö Øà××Øà�?�?ØØ×Ñ Ó#Øä
ñ ÙQWó÷ ñ ð ô ÑD©fÓDÀdÓKÐØÑØäÐ+Ó,°Ó8Øð 	××Ø×#Ñ#×0×0Ø×#Ñ#×0Ñ0×5Ñ5¼¿¹ÓCàØr\   r™  c                ó  • [        UR                  UR                  S9nU[        R                  L a´  SUl        U=R                  S-  sl        [        XU5      (       a‡  [        [        U 5      S-
  SS5       Hj  nX   R                  [        :X  a  M  X   R                  [        R                  :w  a/  [        [        R                  S5      nU R                  US-   U5          O   [        5       nU[        R                   L a  [#        U 5      nU  HH  nUR%                  US['        U5      U;   S9  UR)                  U5       H  n	UR%                  U	SS9  M     MJ     U[        R                  L a  [+        XB5      (       a  SUl        U$ )aQ  Return a new line with given `leaves` and respective comments from `original`.

If it's the head component, brackets will be tracked so trailing commas are
respected.

If it's the body component, the result line is one-indented inside brackets and as
such has its first leaf's prefix normalized and a trailing comma added when
expected.
rm   Trl   r•   r9  r‰  ©rŠ  )r   ra   rn   r‘  r“  rr  rÞ  Úrangerp   r|   r#   rO   r³  rP   r²  rÆ   r’  r   r{   rŒ  Úcomments_afterÚshould_split_linero  )
rq   rÖ  rš  r™  r†  r½   Ú	new_commar�  ré   Úcomment_afters
             r]   r›  r›    sT  € ô  �x—}‘}¨H¯N©NÑ;€FØÔ*×/Ñ/Ò/Ø!%ˆÔØ�Š˜Ñ�Ü! &°O×DÑDÜœ3˜v›;¨™?¨B°Ö3�Ø‘9—>‘>Ô%7Ó7Ùà‘9—>‘>¤U§[¡[Ó0Ü $¤U§[¡[°#Ó 6�IØ—M‘M ! a¡%¨Ô3Ùñ 4ô $'£5€OØÔ*×/Ñ/Ò/Ü=¸fÓEˆãˆØ�‰ØØÜ˜T›( oÑ5ð 	ñ 	
ð
 &×4Ñ4°TÖ:ˆMØ�M‰M˜-°dˆMÓ;ó ;ñ ð Ô*×/Ñ/Ò/Ô4EØ÷5ñ 5ð #'ˆÔØ€Mr\   Ú
split_funcc           
      ó€   ^ • [        T 5      S[        S[        [           S[        S[
        [           4U 4S jj5       nU$ )zNormalize prefix of the first leaf in every line returned by `split_func`.

This is a decorator over relevant split functions.
rs   rb   ra   rc   c              3   ó^   >#   • T" XU5       H  nSUR                   S   l        Uv •  M     g 7fr¥   )rq   r~   )rs   rb   ra   Ú
split_lineræ  s       €r]   Úsplit_wrapperÚ0dont_increase_indentation.<locals>.split_wrapper¶  s2   øé € ñ % T°TÖ:ˆJØ*,ˆJ×Ñ˜aÑ Ô'ØÔò ;ùs   ƒ*-)r	   r   r   r   r   r   )ræ  rê  s   ` r]   Údont_increase_indentationrì  °  sM   ø€ ô ˆ:ÓðÜðÜ(¬Ñ1ðÜ9=ðä	”$‰öó ðð Ðr\   c                 ó¢   • [        [        U R                  5      S-
  SS5       H(  nU R                  U   R                  [        :w  d  M&  Us  $    g )Nrl   r   r•   )rá  rp   rq   r|   r#   )rs   Úleaf_idxs     r]   Ú_get_last_non_comment_leafrï  Á  sE   € Üœ#˜dŸk™kÓ*¨QÑ.°°2Ö6ˆØ�;‰;�xÑ ×%Ñ%Ô);Õ;ØŠOñ 7ð r\   ré   c                 óæ   • [        U [        R                  1S9(       a  [        R                  U;   $ [        U [        R
                  [        R                  1S9(       a  [        R                  U;   $ g)N)ÚwithinT)r=   r@   Útypedargslistr   ÚTRAILING_COMMA_IN_DEFÚarglistÚargumentÚTRAILING_COMMA_IN_CALL)ré   rb   s     r]   Ú_can_add_trailing_commar÷  È  sQ   € Ü�œt×1Ñ1Ð2×3Ü×,Ñ,°Ñ8Ð8Ü�œtŸ|™|¬T¯]©]Ð;×<Ü×-Ñ-°Ñ9Ð9Ør\   ÚsafeÚdelimiter_priorityc                 ó  • U (       a�  U[         :X  aw  UR                  S   R                  [        R                  :w  aL  UR                  S   R                  [
        :w  a+  [        [        R                  S5      nUR                  U5        U$ )Nr•   r9  )r   rq   r|   rO   r³  r#   rP   r{   )rø  rù  rs   rä  s       r]   Ú_safe_add_trailing_commarû  Ð  s_   € æØ¤.Ó0Ø�K‰K˜‰O× Ñ ¤E§K¡KÓ/Ø�K‰K˜‰O× Ñ Ô$6Ó6äœŸ™ cÓ*ˆ	Ø�‰�IÔØ€Kr\   c              #   óœ  ^ ^^#   • [        T R                  5      S:X  a  [        S5      SeT R                  S   nT R                  n UR	                  [        U5      1S9nU[        :X  a   UR                  U5      S:X  a  [        S5      e[        T R                  T R                  T R                  S	9m[        R                  nS
nS[        S[         [           4UU 4S jjmS[        S[         [           4UU 4S jjn[#        T 5      n	[%        T R                  5       GHo  u  p«T" U5       Sh  v•N   U
S:„  =(       a4    UR&                  R)                  [        T R                  U
S-
     5      5      nXÅ:w  d
  U[*        ;   a  U" U5       Sh  v•N   [-        XkR.                  5      nU(       a  UR.                  U:X  a  [1        X±5      nUR2                  [4        :X  a  X©:X  a  [7        XuT5      mUR&                  R)                  [        U5      5      nXÕ:X  d  Mü  U
S-   [        T R                  5      :  a*  U[*        ;  a   U" T R                  U
S-      5       Sh  v•N   Tv •  [        T R                  T R                  T R                  S	9mGMr     T(       a  [7        XuT5      mTv •  gg! [         a    [        S5      Sef = f GN– GN: No7f)zÃSplit according to delimiters of the highest priority.

If the appropriate Features are given, the split will add trailing commas
also in function signatures and calls that contain `*` and `**`.
r   z
Line emptyNr•   ©ÚexcludezNo delimiters foundrl   z7Splitting a single attribute from its owner looks wrong©ra   rn   rr  Tré   rc   c              3   óÌ   >#   •  TR                  U SS9  g! [         aA    Tv •  [        TR                  TR                  TR
                  S9mTR                  U 5         gf = f7f)úEAppend `leaf` to current line or to new line if appending impossible.Trà  rÿ  N©Úappend_safeÚ
ValueErrorr   ra   rn   rr  r{   ©ré   ro   rs   s    €€r]   Úappend_to_lineÚ'delimiter_split.<locals>.append_to_lineþ  sa   øé € ð	&Ø×$Ñ$ T¸Ð$Ò=øÜó 	&ØÒäØ—Y‘Y d§j¡jÀ$×BVÑBVñˆLð ×Ñ Ö%ð	&üó&   ƒA$… •A$–AA!ÁA$Á A!Á!A$c              3   ób   >#   • TR                  U 5       H  nT" U5       S h  v•N   M     g  N	7fre   )râ  )ré   rå  r  rs   s     €€r]   Úappend_commentsÚ(delimiter_split.<locals>.append_comments  s,   øé € Ø!×0Ñ0°Ö6ˆMÙ% mÓ4×4Ò4ò 7Ù4ùs   ƒ /£-¤
/)rp   rq   rS   ry   Úmax_delimiter_priorityrŒ  r  r   Údelimiter_count_with_priorityr   ra   rn   rr  ÚsysÚmaxsizerP   r   rï  r¹   rÏ  ÚgetÚMIGRATE_COMMENT_DELIMITERSÚminÚbracket_depthr÷  r|   r#   rû  )rs   rb   ra   Ú	last_leafÚbtrù  Úlowest_depthÚtrailing_comma_safer
  Úlast_non_comment_leafrî  ré   Úprevious_priorityÚleaf_priorityr  ro   s   `             @@r]   rz  rz  ß  s�  úé € ô ˆ4�;‰;Ó˜1ÓÜ˜,Ó'¨TÐ1Ø—‘˜B‘€Ià	×	Ñ	€Bð;Ø×6Ñ6ÄÀ9Ã¸Ð6ÐOÐð
 	œlÓ*Ø×,Ñ,Ð-?Ó@ÀAÓEäÐSÓTÐTäØ�Y‰Y˜dŸj™j¸$×:NÑ:Nñ€Lô —;‘;€LØÐð&œTð &¤h¬t¡n÷ &ð &ð5œdð 5¤x´¡~÷ 5ð 5ô 7°tÓ<ÐÜ# D§K¡K×0‰ˆÙ! $Ó'×'Ð'à$ q™L÷ 
¨R¯]©]×->Ñ->Üˆt�{‰{˜8 a™<Ñ(Ó)ó.
Ðð Ó3Ø!Ô%?Ó?á& tÓ,×,Ð,ä˜<×);Ñ);Ó<ˆÞ 4×#5Ñ#5¸Ó#EÜ"9¸$Ó"IÐà�>‰>Ô/Ó/°HÓ4UÜ3Ø#¸óˆLð Ÿ™×)Ñ)¬"¨T«(Ó3ˆØÕ.à˜1‘œs 4§;¡;Ó/Ó/Ø&Ô.HÓHá*¨4¯;©;°xÀ!±|Ñ+DÓE×EÐEàÒÜØ—Y‘Y d§j¡jÀ$×BVÑBVñ‹Lñ= 1öD Ü/Ø°\ó
ˆð Óð	 øôG ó ;ÜÐ/Ó0°dÐ:ð;úòD 	(ò -ñ" FùsY   …AKÁJ* Á CKÄ.KÄ/AKÆKÆBKÈAKÉK
ÉAKÊ*KËKËKË
Kc              #   ó�  ^ ^#   • T R                  5       (       d  [        S5      e[        T R                  T R                  T R
                  S9mS[        S[        [           4UU 4S jjnT R                   H;  nU" U5       Sh  v•N   T R                  U5       H  nU" U5       Sh  v•N   M     M=     T(       a  Tv •  gg N= N7f)z4Split standalone comments from the rest of the line.z*Line does not have any standalone commentsrÿ  ré   rc   c              3   óÌ   >#   •  TR                  U SS9  g! [         aA    Tv •  [        TR                  TR                  TR
                  S9mTR                  U 5         gf = f7f)r  Trà  )rn   rr  Nr  r  s    €€r]   r  Ú0standalone_comment_split.<locals>.append_to_lineE  sa   øé € ð	&Ø×$Ñ$ T¸Ð$Ò=øÜó 	&ØÒäØ—	‘	 §¡¸T×=QÑ=QñˆLð ×Ñ Ö%ð	&ür  N)
rs  rS   r   ra   rn   rr  rP   r   rq   râ  )rs   rb   ra   r  ré   rå  ro   s   `     @r]   r{  r{  9  s¹   ùé € ð
 ×,Ñ,×.Ñ.ÜÐFÓGÐGäØ�Y‰Y˜dŸj™j¸$×:NÑ:Nñ€Lð&œTð &¤h¬t¡n÷ &ð &ð —”ˆÙ! $Ó'×'Ð'à!×0Ñ0°Ö6ˆMÙ% mÓ4×4Ò4ó 7ñ ö ØÓð ñ 	(ñ 5ùs$   „B CÂCÂ#CÂ(CÂ)CÃCru   rœ   c                ó  • [        U R                  SS9 H  nUR                  [        ;   d  M    g   U R                  [
        R                  :X  a  [        XU5        Sn[        [        U R                  5      5       GH„  u  pg[        U[        5      (       a(  UR                  [
        R                  :X  a
  [        XqX#S9  [        U[        5      (       a*  UR                  [
        R                  :X  a  [        US1X#S9  [        U[        5      (       a*  UR                  [
        R                   :X  a  [        US1X#S9  US:X  a5  [        U[        5      (       a   UR                  [
        R"                  :X  a  SnU(       Ga4  UR                  [
        R$                  :X  a›  U R                  [
        R&                  :X  a}  [        UR(                  [*        5      (       a^  UR(                  R                  [,        R.                  :X  a6  UR(                  R                  S	:X  a  [1        UU SS
9(       a
  [3        XSS9  GO{[        U[        5      (       a+  U R                  [
        R                  :X  a  [5        Xp5        GO;UR                  [
        R$                  :X  a  [1        UU S9(       a
  [3        XSS9  GO[7        U5      (       a  [3        XSS9  OçU R                  [
        R8                  :X  a  [;        XU5          gUS:X  a?  UR                  [,        R<                  :X  a!  U R                  [
        R>                  :X  a  GMÂ  [        U[*        5      (       aG  UR@                  b:  UR@                  R                  [,        RB                  :X  a  UR                  S:X  a    g[E        U5      (       d
  [3        XSS9  UR                  [,        RF                  :H  n[        U[*        5      =(       a    UR                  U;   =(       d    UnGM‡     g)a1  Make existing optional parentheses invisible or create new ones.

`parens_after` is a set of string leaf values immediately after which parens
should be put.

Standardizes on visible parentheses for single-element tuples, and keeps
existing visible parentheses for other tuples and generator expressions.
F)Úis_endmarkerNr›   Úcaser:  r   Tr>  r³   r¶   r  rl   )$r   r~   rŸ   r   r|   r@   Ú	with_stmtÚ_maybe_wrap_cms_in_parensr¹   rf  rž   rx   rQ   Ú	annassignr�   Ú
case_blockÚguardÚtestlist_star_exprr»   Úfor_stmtr…   rP   rO   ÚNAMEr¼   rA   Úremove_with_parensr4   Úimport_fromÚ_normalize_import_fromr°  Úexcept_clauserÛ  rº   r1   r³  )	ru   rœ   ra   rb   ÚpcÚ
check_lparr   r¡   Úcomma_checks	            r]   r�   r�   \  sÛ  € ô ˜DŸK™K°eÔ<ˆØ�8‰8”wÕáñ =ð ‡y�y”D—N‘NÓ"Ü! $¨hÔ7à€JÜ!¤$ t§}¡}Ó"5×6‰ˆô �eœT×"Ñ" u§z¡z´T·^±^Ó'CÜ&Ø°tòô �eœT×"Ñ" u§z¡z´T·_±_Ó'DÜ&Ø V H°4òô
 �eœT×"Ñ" u§z¡z´T·Z±ZÓ'?Ü&Ø T F°òð �Q‹JÜ˜5¤$×'Ñ'Ø—
‘
œd×5Ñ5Ó5àˆJçà—
‘
œdŸi™iÓ'Ø—I‘I¤§¡Ó.Ü˜u×1Ñ1´4×8Ñ8Ø×&Ñ&×+Ñ+¬u¯z©zÓ9Ø×&Ñ&×,Ñ,°Ó5ä6ØØØ15÷ô
 (¨¸UÒCùÜ˜E¤4×(Ñ(¨T¯Y©Y¼$¿.¹.Ó-HÜ" 5Ö/Ø—‘œtŸy™yÓ(Ü6ØØ÷ô (¨¸UÒCùÜ˜e×$Ñ$Ü# D¸Ó>Ø—‘œd×.Ñ.Ó.Ü& t°EÔ:Ùà˜“
Ø—J‘J¤%§*¡*Ó,Ø—I‘I¤×!3Ñ!3Ó3ò
 ô ˜5¤$×'Ñ'Ø×&Ñ&Ñ2Ø×&Ñ&×+Ñ+¬u¯{©{Ó:Ø—K‘K 6Ó)ñ ä(¨×/Ñ/Ü# D¸Ò?à—j‘j¤E§K¡KÑ/ˆä ¤tÓ,÷ 
Ø�K‰K˜<Ñ'×6¨;ó 	òc 7r\   r´   r¡   r   c                 ó~  • [        U5      (       a;  [        U R                  S   5      (       d   eSUl        SU R                  S   l        g UR                  [
        R                  :w  aT  U R                  U[        [
        R                  S5      5        U R                  [        [
        R                  S5      5        g g )Nr•   rw   )r0   r7   rž   rŸ   r|   rO   r°  rˆ   rP   r†   r‰   r‡   )r´   r¡   r   s      r]   r+  r+  É  sŠ   € ô �U×ÑÜ˜VŸ_™_¨RÑ0×1Ñ1Ð1Ð1àˆŒØ$&ˆ�‰˜ÑÕ!Ø	�‰”u—z‘zÓ	!à×Ñ˜E¤4¬¯
©
°BÓ#7Ô8Ø×ÑœD¤§¡¨RÓ0Õ1ð 
"r\   c                 óØ  • U R                   S   R                  [        R                  :X  Ga¾  [	        U R                   5      S:”  Ga£  U R                   S   R                  [
        R                  :X  Gav  U R                   S   R                   S   R                  [        R                  :X  Ga<  [        U R                   S   U SS9(       a  [        X R                   S   SS9  [        [        U R                   S   R                   S   5      n[        [        U R                   S   R                   S   5      nU R                   S   R                   S   n[        U[        5      (       a‚  UR                  [
        R                  :w  dL  UR                   S   R                  [        R                  :X  d!  [        S UR                    5       5      (       a  [!        U5        [!        U5        g g g g g g g )	Nr   rl   Tr³   Fr¶   r•   c              3   óˆ   #   • U H9  n[        U[        5      =(       a    UR                  [        R                  :H  v •  M;     g 7fre   )rx   rP   r|   rO   rü   r.  s     r]   r0  Ú&remove_await_parens.<locals>.<genexpr>ñ  s5   é € ð á!:˜ô ˜u¤dÓ+×N°·
±
¼e×>NÑ>NÑ0NÔNÚ!:ùs   ‚A A)rž   r|   rO   ÚAWAITrp   r@   r»   r†   r¼   rA   r   rP   rx   rQ   rû   r2  r'   )ru   rš  r¶  Úbracket_contentss       r]   rç   rç   ×  s†  € Ø‡}�}�QÑ×Ñ¤§¡Ô+´°D·M±MÓ0BÀQÔ0Fà�M‰M˜!Ñ×!Ñ!¤T§Y¡YÔ.Ø—‘˜aÑ ×)Ñ)¨!Ñ,×1Ñ1´U·Z±ZÔ?ä2Ø—‘˜aÑ ØØ-1÷ô
 $ D¯-©-¸Ñ*:ÀEÒJô #¤4¨¯©°qÑ)9×)BÑ)BÀ1Ñ)EÓFˆOÜ"¤4¨¯©°qÑ)9×)BÑ)BÀ2Ñ)FÓGˆOØ#Ÿ}™}¨QÑ/×8Ñ8¸Ñ;ÐÜÐ*¬D×1Ñ1Ø ×%Ñ%¬¯©Ó3Ø#×,Ñ,¨QÑ/×4Ñ4¼¿¹ÓCÜñ à!1×!:Ò!:ó÷ ñ ô
 ˜Ô/Ü˜Õ/ðð 2ð' @ð /ð 1GÐ+r\   c                 ó²  • [         R                  U;  dD  [        U R                  5      S::  d+  U R                  S   R                  [
        R                  :X  a  gSn[        S[        U R                  5      5       H2  nU R                  U   R                  [        R                  :X  d  M0  Un  O   Ub¤  [        [        R                  S5      n[        [        R                  S5      nU R                  SU nU H  nUR                  5         M     [        [
        R                  U[        [
        R                  U5      U/5      n	U R!                  SU	5        gg)z When enabled and safe, wrap the multiple context managers in invisible parens.

It is only safe when `features` contain Feature.PARENTHESIZED_CONTEXT_MANAGERS.
rË   rl   Nrw   )r   ÚPARENTHESIZED_CONTEXT_MANAGERSrp   rž   r|   r@   r»   rá  rO   rº   rP   r†   r‡   rý   rQ   Útestlist_gexprˆ   )
ru   ra   rb   Úcolon_indexr½   r‹   rŒ   Úcontext_managersr¡   Ú	new_childs
             r]   r"  r"  ú  s  € ô 	×.Ñ.°hÓ>Üˆt�}‰}Ó Ó"à�=‰=˜Ñ× Ñ ¤D§I¡IÓ-àØ!%€KÜ�1”c˜$Ÿ-™-Ó(Ö)ˆØ�=‰=˜Ñ× Ñ ¤E§K¡KÕ/ØˆKÙñ *ð ÑÜ”E—J‘J Ó#ˆÜ”E—J‘J Ó#ˆØŸ=™=¨¨;Ð7ÐÛ%ˆEØ�L‰LŽNñ &ô Ü�I‰I˜œd¤4×#5Ñ#5Ð7GÓHÈ$ÐOó
ˆ	ð 	×Ñ˜!˜YÕ'ð) r\   c                 óŠ  • U R                   [        R                  :X  aW  [        U USS9(       a
  [	        XSS9  [        U R                  S   [        5      (       a  [        U R                  S   U 5        ggU R                   [        R                  :X  a6  U R                   H%  n[        U[        5      (       d  M  [        X 5        M'     gU R                   [        R                  :X  a\  [        S U R                  5        5       5      (       d6  [        U R                  S   U SS9(       a  [	        X R                  S   SS9  gggg)	z6Recursively hide optional parens in `with` statements.Tr³   Fr¶   rl   c              3   óX   #   • U H!  oR                   [        R                  :H  v •  M#     g 7fre   )r|   rO   Ú
COLONEQUALrª  s     r]   r0  Ú%remove_with_parens.<locals>.<genexpr>C  s    é € ð 3Ù2?¨$�	‰	”U×%Ñ%Ö%²-ùrÊ  r   N)r|   r@   r»   r¼   rA   rx   rž   rQ   r)  r8  Úasexpr_testr2  rq   )ru   r´   r¡   s      r]   r)  r)  $  s  € ð$ ‡y�y”D—I‘IÓÜ.ØØØ)-÷
ô
   °eÒ<Ü�d—m‘m AÑ&¬×-Ñ-Ü˜tŸ}™}¨QÑ/°Õ6ð .à	�‰”d×(Ñ(Ó	(Ø—]”]ˆEÜ˜%¤×&Ó&Ü" 5Ö/ò #ð 
�‰”d×&Ñ&Ó	&¬sñ 3Ø26·+±+´-ó3÷ 0ñ 0ô /Ø�M‰M˜!ÑØØ)-÷
ô
   §m¡m°AÑ&6ÀÓFð
ð0Ð	&r\   rµ   c                 ó,  • U R                   [        R                  [        R                  4;  d˜  [	        U 5      (       dˆ  [        U 5      (       dx  [        U 5      (       a  UR                   [        R                  :w  dJ  U(       d  [        U 5      [        :¼  d0  [        U 5      (       d   [        U 5      (       d  [        U 5      (       a  g[        U 5      (       a¶  UR                   [        R                  [        R                  [        R                  [        R                   [        R"                  [        R$                  [        R&                  [        R(                  [        R*                  [        R,                  [        R*                  4;   a  gU R.                  S   nU R.                  S   n[1        U5      (       GaX  [3        U5      (       GaG  U R.                  S   n[5        UR6                  R9                  5       5      (       d  SUl        SUl        [=        UUUS9  [?        U5      (       aæ  URA                  UR.                  S   5        UR.                  S   R6                  R9                  5       (       aE  UR.                  S   R6                  UR.                  S   R6                  -   UR.                  S   l        UR.                  S   R6                  R9                  5       (       a+  UR.                  S   R6                  UR6                  -   Ul        gg)zûIf it's safe, make the parens in the atom `node` invisible, recursively.
Additionally, remove repeated, adjacent invisible parens from the atom `node`
as they are redundant.

Returns whether the node should itself be wrapped in invisible parentheses.
Fr   r•   rl   rw   r³   T)!r|   r@   r»   Úexprr.   r4   r?   Ú	expr_stmtr   r   r;   r:   r/   r>   r#  Úassert_stmtÚreturn_stmtr,  Úfuncdefr!  Útnamer'  Údel_stmtrž   r0   r7   r<   r~   r  rŸ   r¼   r,   r   )ru   r´   rµ   r&  r'  Úmiddles         r]   r¼   r¼   N  s-  € ð 	�	‰	œ$Ÿ)™)¤T§Y¡YÐ/Ó/Ü˜$×ÑÜ˜×ÑÜ�T�N‰N˜vŸ{™{¬d¯n©nÓ<ö
 -Ü.¨tÓ4¼ÓFä% d×+Ñ+Ü# D×)Ñ)Ü˜×Ñàä˜D×!Ñ!Ø�;‰;Ü�N‰NÜ�N‰NÜ×ÑÜ×ÑÜ×ÑÜ�L‰LÜ�N‰NÜ�J‰Jä�M‰MÜ�M‰MÜ�M‰Mð
ó 
ð à�M‰M˜!Ñ€EØ�=‰=˜Ñ€DÜ�U×Ò¤¨d× 3Ò 3Ø—‘˜qÑ!ˆô
 .¨f¯m©m×.AÑ.AÓ.C×DÑDàˆEŒKØˆDŒJÜ+ØØØ)Eò	
ô )¨×0Ñ0ð �N‰N˜6Ÿ?™?¨1Ñ-Ô.à�‰˜qÑ!×(Ñ(×.Ñ.×0Ñ0ð —O‘O AÑ&×-Ñ-°·±ÀÑ0B×0IÑ0IÑIð —‘ Ñ"Ô)ð �‰˜rÑ"×)Ñ)×/Ñ/×1Ñ1à$Ÿo™o¨bÑ1×8Ñ8¸4¿;¹;ÑF�”ààr\   c                 ó*  • UR                   (       a  UR                  S;   d  g[        5       nSn U R                  S   nUR                  [
        R                  :X  a  SnUR                  [        U5      5        U R                  R                  US9nU[        :H  =(       a]    U R                  R                  =(       a    U=(       d7    UR                   R                  [         R"                  [         R$                  1;   $ ! [        [        4 a     gf = f)zFShould `line` be immediately split with `delimiter_split()` after RHS?z[{(Fr•   Trý  )r´   rŸ   rÆ   rq   r|   rO   r³  ÚaddrŒ  ry   r  Ú
IndexErrorr  r   ra   rp  r@   r»   r*  )rs   rš  rþ  Útrailing_commar  Úmax_prioritys         r]   rã  rã  ¢  sã   € ð ×"×" ×'<Ñ'<ÀÓ'EØô
 ‹e€GØ€NðØ—K‘K ‘Oˆ	Ø�>‰>œUŸ[™[Ó(Ø!ˆNØ�K‰Kœ˜9›Ô&Ø×+Ñ+×BÑBÈ7ÐBÐSˆð œ>Ñ)÷ Ø	�‰×	'Ñ	'×	:¨N÷ 	Hà×!Ñ!×&Ñ&¬4¯9©9´d×6FÑ6FÐ*GÑGðøô œ
Ð#ó Ùðús   °A"C? Ã?DÄDr  c              #   ó&  #   • [        5       nU R                  (       d  Uv •  SU R                  -  nSnSn[        5       nU R                  SS9 GH=  u  pxn	X9-  nX1:”  a    gU	[	        UR
                  5      [	        UR                  5      -   :„  n
UR                  [        :X  d  U
(       a    gU(       a¯  X„L a  SnMl  UR                  [        ;   a�  US:”  a  U R                  US-
     OSnU(       aR  UR                  [        R                  :X  a4  UR                  b'  [        UR                  X€R                  5      (       d    gUR                  [!        U5      5        GM  GM  UR                  [        ;   d  GM*  US:”  a  U R                  US-
     OSnU(       a1  UR                  ["        ;   a  UR                  [!        U5      5        GM|  U(       a?  UR                  [!        U5      5        UR%                  U5        UR'                  5         Uv •  U(       aR  UR                  [        R                  :X  a4  UR                  b'  [        UR                  X€R                  5      (       d    gUR
                  (       d  GM/  UR                  nUnGM@     g7f)a�  Generate sets of closing bracket IDs that should be omitted in a RHS.

Brackets can be omitted if the entire trailer up to and including
a preceding closing bracket fits in one line.

Yielded sets are cumulative (contain results of previous yields, too).  First
set is empty, unless the line should explode, in which case bracket pairs until
the one that needs to explode are omitted.
é   NT)Úis_reversedr   rl   )rÆ   rp  rn   Úenumerate_with_lengthrp   rŸ   r~   r|   r#   r!   rq   rO   r³  rš  r3   rK  rŒ  r"   ÚupdateÚclear)rs   r  rd  Úlengthrš  r¶  Úinner_bracketsr   ré   Úleaf_lengthÚhas_inline_commentÚprevs               r]   re  re  ½  s   é € ô ›€DØ×$×$ØŠ
à�—‘‰^€FØ&*€OØ&*€OÜ"%£%€NØ$(×$>Ñ$>È4Ð$>Ô$PÑ ˆ�[ØÑˆØÓÙà(¬3¨t¯z©z«?¼SÀÇÁÓ=MÑ+MÑMÐØ�9‰9Ô*Ó*Ö.@ÙæØÒ&Ø"&’Ø—‘Ô.Ó.Ø16¸³�t—{‘{ 5¨1¡9Ò-À�æØŸ	™	¤U§[¡[Ó0Ø×,Ñ,Ñ8Ü3Ø×,Ñ,¨d·K±K÷ñ ñ à×"Ñ"¤2 d£8×,ò /ð �Y‰YÔ*Ö*Ø-2°Q«Y�4—;‘;˜u q™yÒ)¸DˆDÞ˜Ÿ	™	Ô%5Ó5ð ×"Ñ"¤2 d£8Ô,ÚæØ—‘œ˜OÓ,Ô-Ø—‘˜NÔ+Ø×$Ñ$Ô&Ø’
ö Ø—I‘I¤§¡Ó,Ø×(Ñ(Ñ4Ü/°×0DÑ0DÀdÏKÉK×XÑXñ à�z�zŠzØ"&×"6Ñ"6�Ø"&“òm %Qùs   ‚E1JÅ8D JÉ=Jrw   rl  r…  ra  c          	      óŠ  ^• U(       d  [        U 5      n/ nU" XT5       HF  n[        U5      R                  S5      U:X  a  [        S5      eUR	                  [        UTUS95        MH     [        U5      n[        R                  U;   dØ  UR                  R                  S:w  d¾  U R                  R                  (       a£  [        S U R                  R                   5       5      (       dx  U R                  5       (       dc  US   R                  5       (       dK  US   R!                  5       (       d3  [#        US   TS9(       d!  [        S U R$                   5       5      (       a  U$ U R'                  5       n[)        X€U R$                  5        U[        R                  1-  n	[+        X�TX”S	9n
[-        U4S
 jU
 5       5      (       a  U
nU$ )Nr
  z-Line transformer returned an unchanged result)ra   rb   rj  c              3   ó6   #   • U H  oR                   v •  M     g 7fre   )rŸ   )r/  Úbrackets     r]   r0  Ú"run_transformer.<locals>.<genexpr>  s   é € ÐKÑ,J �}Ž}Ò,Jùs   ‚r   r7  c              3   ó:   #   • U H  oR                   S L v •  M     g 7fre   r  rª  s     r]   r0  r]  (  s   é € Ð;©{ t�{‰{˜dÕ"ª{ùs   ‚rl  c              3   ó6   >#   • U H  n[        UTS 9v •  M     g7f)r7  N)r   )r/  Úlnra   s     €r]   r0  r]  2  s   øé € Ð
H¹°2Ô ¨Ö.ºùs   ƒ)r   r-  r  rH   rµ  r‡  rÆ   r   r¿  r‚   rV   ry   Ú	invisibler2  rÄ  rn  rq  r   rq   Úcloner   r|  Úall)rs   r…  ra   rb   ra  r†  Útransformed_lineÚfeatures_setÚ	line_copyÚfeatures_fopÚsecond_opinions     `        r]   r|  r|  	  sv  ø€ ö Ü! $Ó'ˆØ€FÙ% d°dÖ;ÐÜÐÓ ×&Ñ& tÓ,°Ó8Ü!Ð"QÓRÐRà�‰”nÐ%5¸DÈ8ÑTÖUñ	 <ô �x“=€Lä×*Ñ*¨lÓ:Ø×Ñ×'Ñ'¨5Ó0Ø×#Ñ#×-×-ÜÑK¨D×,@Ñ,@×,JÒ,JÓK×KÑKØ×*Ñ*×,Ñ,Ø�!‰9×9Ñ9×;Ñ;Ø�!‰9×6Ñ6×8Ñ8Ü  q¡	°×5ô
 Ñ;¨t¯{ª{Ó;×;Ñ;àˆà—
‘
“€IÜ�) 4§;¡;Ô/Ø¤7×#EÑ#EÐ"FÑF€LÜ$Ø˜d Lñ€Nô Ô
H¹Ó
H×HÑHØˆØ€Mr\   )rU   )rU   rU   )F)†rZ   r  r  Úcollections.abcr   r   Údataclassesr   Úenumr   r   Ú	functoolsr   r	   Útypingr
   r   r   Úblack.bracketsr   r   r   r   r   Úblack.commentsr   r   r   Úblack.linesr   r   r   r   r   r   r   Ú
black.moder   r   r   Úblack.nodesr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Úblack.numericsrB   Úblack.stringsrC   rD   rE   rF   rG   Úblack.transrH   rI   rJ   rK   rL   rM   rN   Úblib2to3.pgen2rO   Úblib2to3.pytreerP   rQ   r[  ÚLeafIDr\  rS   r_   r-  r_  r‡  Úboolrw  r‘  rx  rg  r¥  r¦  rÁ  rœ  rf  rÞ  r›  rì  rï  r÷  rû  r  rz  r{  rÆ   r�   r+  rç   r"  r)  r¼   rã  re  r|  rU   r\   r]   Ú<module>rz     sš  ðñó 
Û 
ß 0Ý ß ß $ß (Ñ (÷õ ÷ EÑ D÷÷ ñ ÷ .Ñ -÷$÷ $÷ $÷ $÷ $÷ $÷ $÷ $÷ $ñ $õJ 5÷õ ÷÷ ñ õ !ß &ð 
€Ø
ˆ4�ˆ:Ñ€ôM�/ô MôsB�G˜D‘Mô sBðlØ
ðà˜Ñ!ðð ðð ˆc�]ô	ð =?ñyØ
ðyØðyØ&0°Ñ&9ðyàˆd�^õyðx3¨ð 3°Dð 3¸Tô 3ô>˜Tô ð/Ø
ð/Ø% gÑ.ð/Ø6:ð/àˆd�^ô/ðj %'Ø!ñ	Ø
ðà
ðð ˜Ñ!ðð �VÑ
ð	ð
 ˆd�^õð,  "ñdIØ
ðdIà
�VÑ
ðdIð õdIðV %'Ø!ñAØ	ðAà
ðAð ðAð ˜Ñ!ð	Að
 �VÑ
ðAð ˆd�^õAðHHØðHØ&ðHØ.2ðHà	ôHðV¨4ð °tð À4ð ÈDô ð4!Ø�‰Jð!Ø"&ð!Ø9=ð!à	ô!ðH.Ø�‰Jð.àð.ð ð.ð
 &ð.ð 
ô.ðb¨+ð ¸+ô ð" Tð ¨h°s©mô ð $ð °*¸WÑ2Eð È$ô ð	 4ð 	¸Sð 	Èð 	ÐQUô 	ð .¨~Ð>Ð ð ðVØ
ðVØ$ WÑ-ðVØ59ðVàˆd�^óVó ðVðr ðØ
ðØ$ WÑ-ðØ59ðàˆd�^óó ððDj
Ø
ðj
Ø! #™hðj
Ø15ðj
ØAKÈGÑATðj
à	ôj
ðZ2 4ð 2°ð 2¸3ð 2À4ô 2ð 0˜dð  0 tô  0ðF'(Ø
ð'(Øð'(Ø&0°Ñ&9ð'(à	ô'(ðT'G˜Tð 'G¨4ð 'G°Dô 'GðZ */ñQØ
ðQàðQð #'ðQð 
õ	Qðh˜Dð °4ð ¸Dô ð6I' Dð I'°sð I'¸xÈÈFÉÑ?Tô I'ðd ò+Ø
ð+àð+ð ð+ð ˜Ñ!ð	+ð ð+ð 
ˆ$�Zö+r\   