Ë
    äU.jD  ã                  óæ   — d Z ddlmZ ddlmZ g d¢ZddlmZ ddlm	Z	 ddl
m
Z
 dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddlmZ dd„Z	 	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zy)z.This is a python implementation of wcswidth().é    )Úannotations)ÚOptional)zwcwidth._constantszwcwidth._wcwidthzwcwidth.bisearchzwcwidth.table_graphemezwcwidth.table_vs16é   )Útable_grapheme_overrides©Úwcwidth)Úbisearch)Ú_EMOJI_ZWJ_SETÚ_ISC_VIRAMA_SETÚ_CATEGORY_MC_TABLEÚ_FITZPATRICK_RANGEÚ_REGIONAL_INDICATOR_SETÚresolve_terminalÚget_term_overrides)ÚVS15_WIDE_TO_NARROW)ÚVS16_NARROW_TO_WIDE)ÚGRAPHEME_EXTENDc                ó°  — |dz   }||k  rCt        t        | |   «      t        «      r'|dz  }||k  rt        t        | |   «      t        «      rŒ'||k  rƒt        | |   «      dk7  r	 |S |dz  }||k  rbt        | |   «      t        v rN|dz  }||k  rCt        t        | |   «      t        «      r'|dz  }||k  rt        t        | |   «      t        «      rŒ'Œ…	 |S |S )zÖ
    Scan forward from *start* (base character) to end of a ZWJ grapheme cluster.

    Follows the UAX #29 GB11 pattern (ExtPict Extend* ZWJ x ExtPict) chained repeatedly until no
    more ZWJ joins are found.
    r   é   )r	   Úordr   r
   )ÚtextÚstartÚendÚidxs       úSC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\wcwidth/_wcswidth.pyÚ_scan_zwj_cluster_endr      sá   € ð �!‰)€Cà
�Š)œ¤ T¨#¡Y£´ÔAØˆq‰ˆð �Š)œ¤ T¨#¡Y£´ÕAð �Š)Üˆt�C‰y‹>˜VÒ#Øð €Jð 	ˆq‰ˆð
 �Š9œ˜T #™Y›¬>Ñ9Ø�1‰HˆCà˜’)¤¬¨T°#©Y«¼Ô IØ�q‘�ð ˜’)¤¬¨T°#©Y«¼Õ IàØØ€Jˆ3€Jó    Nc                óÐ  ‡— |€+| j                  «       r| j                  «       rt        | «      S ‰dk(  rt        nˆfd„}|€t        | «      n|}d}d}d}d}	d}
d}d}t        d   }t
        d   }t        }||k  �re| |   }t        |«      }|dk(  r"|r|dz  }n|dz   |k  r
d}
d}|d	z  }nd}|dz  }Œ=|d
k(  r|dk\  r ||	|«      rd	}d}|dz  }ŒZ|dk(  r!|dk\  rt        |	|«      r
|
d	k(  r|dz  }|dz  }Œ€|dkD  r‡|t        v rTd}|dz
  }|dk\  r8t        | |   «      t        v r$|dz  }|dz  }|dk\  rt        | |   «      t        v rŒ$|d	z  dk(  r3|}	|dz  }Œát        d   |cxk  rt        d   k  rn n|	t        v r|dz  }�Œ ||«      }|dk  ry|dkD  r|rd	}n|r||z  }|}n|}|}|}	|}
d}n&|t        v rd}n|dk\  r ||t        «      rd	}d}d}nd}|dz  }||k  r�Œe|r||z  }|S )aî  
    Given a unicode string, return its printable length on a terminal.

    See :ref:`Specification` for details of cell measurement.

    This implementation differs from Markus Khun's original POSIX C implementation, in that this
    ``wcswidth()`` processes graphemes strings yielded by :func:`wcwidth.iter_graphemes` defined by
    `Unicode Standard Annex #29`_. POSIX wcswidth(3) is not grapheme-aware and does not measure many
    kinds of Emojis or complex scripts correctly.

    :param pwcs: Measure width of given unicode string.
    :param n: When ``n`` is None (default), return the length of the entire
        string, otherwise only the first ``n`` characters are measured.
    :param unicode_version: Ignored. Retained for backwards compatibility.

        .. deprecated:: 0.3.0
           Only the latest Unicode version is now shipped.

    :param ambiguous_width: Width to use for East Asian Ambiguous (A)
        characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
    :returns: The width, in cells, needed to display the first ``n`` characters
        of the unicode string ``pwcs``.  Returns ``-1`` for C0 and C1 control
        characters!

    .. _`Unicode Standard Annex #29`: https://www.unicode.org/reports/tr29/
    r   c                ó   •— t        | d‰«      S ©NÚautor   ©ÚcÚambiguous_widths    €r   Ú<lambda>zwcswidth.<locals>.<lambda>c   ó   ø€ ¼gÀaÈÐQ`Ô>ar   r   éþÿÿÿéÿÿÿÿFú9.0.0r   é   éþ  éþ  éÿÿ  T)ÚisasciiÚisprintableÚlenr   r   r   r	   r   r   r   r
   r   r   )ÚpwcsÚnÚunicode_versionr$   Ú_wcwidthr   Útotal_widthr   Úlast_measured_idxÚlast_measured_ucsÚlast_measured_wÚprev_was_viramaÚcluster_widthÚvs16_nw_tableÚvs15_wn_tableÚ	_bisearchÚcharÚucsÚ	ri_beforeÚjÚws      `                 r   ÚwcswidthrC   <   sª  ø€ ðH 	€y�T—\‘\”^¨×(8Ñ(8Ô(:Ü�4‹yÐà)¨QÒ.�wÓ4a€Hà�yŒ#ˆdŒ) a€CØ€KØ
€CàÐØÐØ€OØ€OØ€MÜ'¨Ñ0€MÜ'¨Ñ0€MÜ€Ià
�‹)Ø�C‰yˆÜ�$‹iˆð �&Š=ÙØ�q‘‘Ø�q‘˜3’Ø"#�Ø"'�Ø�q‘‘à"'�Ø�q‘�Øð �&Š=Ð.°!Ò3ÙÐ*¨MÔ:Ø !�Ø "ÐØ�1‰HˆCØð �&Š=Ð.°!Ò3ÜÐ)¨=Ô9¸oÐQRÒ>RØ˜qÑ �Ø�1‰HˆCØð �Š<ØÔ-Ñ-Ø�	Ø˜!‘G�Ø˜1’f¤ T¨!¡W£Ô1HÑ!HØ ‘N�IØ˜‘F�Að ˜1’f¤ T¨!¡W£Ô1HÒ!Hð ˜q‘= AÒ%Ø(+Ð%Ø˜1‘H�CØÜ$ QÑ'¨3ÔGÔ2DÀQÑ2GÕGØ'¬>Ñ9Ø�q‘�Ùñ �T‹NˆØˆqŠ5ØØˆqŠ5ÙØ !‘ÙØ˜}Ñ,�Ø !‘à !�à #ÐØ #ÐØˆOØ#‰OØ”OÑ#Ø"‰OØ !Ò#©	°#Ô7IÔ(JØˆMØ "ÐØ#‰Oà#ˆOØˆq‰ˆð] �Œ)ñ` Ø�}Ñ$ˆØÐr   c                ór  ‡— |€+| j                  «       r| j                  «       rt        | «      S t        |«      }|rit	        |«      }|j
                  }|j                  }|j                  }	|j                  }
|j                  }|j                  }t        j                  |«      }nd}d}d}	d}
d}d}i }‰dk(  rt        nˆfd„}|€t        | «      n|}d}d}d}d}d}d}d}d}d}t        d   }t        d   }t         }||k  �r�| |   }t#        |«      }|d	k(  rk|r|dz  }nb|dz   |k  rS|rG|dk\  rB|t$        v r:t'        | ||«      }| || }|j                  |«      } | �|| |z
  z  }d}d}d}d}d}|}Œtd}d}|d
z  }nd}|dz  }Œ†|dk(  r$|dk\  r|r
 |||«      rn |||«      rd
}d}|dz  }Œ¯|dk(  r5|dk\  r0|}!t!        |!|«      }"|	rt!        |!|	«      rd}"|"r
|d
k(  r|dz  }|dz  }Œé|dkD  rˆ|t(        v rUd}#|dz
  }$|$dk\  r8t#        | |$   «      t(        v r$|#dz  }#|$dz  }$|$dk\  rt#        | |$   «      t(        v rŒ$|#d
z  dk(  r4|}|dz  }�ŒKt*        d   |cxk  rt*        d   k  rn n|t$        v r|dz  }�Œv ||«      }%|%dk  ry|%d
k(  r|rt!        ||«      rd}%n|%d
k(  r|
rt!        ||
«      rd}%|%dk(  r|rt!        ||«      rd
}%n|%dk(  r|rt!        ||«      rd}%|%dkD  rv|rd
}nh|r`d}&|rN|dk\  rI| ||dz    }'|j                  |'«      } | �
|| z   }d}&d}n)| || }(|j                  |(«      } | �|| z   }n||z  }n||z  }|&s|%}|}|}n|%}|}|}|}|}|%}d}n&|t,        v rd}n|dk\  r ||t.        «      rd
}d}d}nd}|dz  }||k  r�Œ�|r2|r+|dk\  r&| || }(|j                  |(«      } | �|| z   }|S ||z  }|S ||z  }|S )a  
    Given a unicode string, return its printable length on a terminal given by ``term_program``.

    See :ref:`Specification` for details of cell measurement.

    Unlike :func:`wcswidth`, this function applies per-terminal correction tables for
    emoji presentation and grapheme clusters.

    :param pwcs: Measure width of given unicode string.
    :param n: When ``n`` is None (default), return the length of the entire
        string, otherwise only the first ``n`` characters are measured.
    :param unicode_version: Ignored. Retained for backwards compatibility.
    :param ambiguous_width: Width to use for East Asian Ambiguous (A)
        characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
    :param term_program: Terminal software identifier for table correction.
        ``True`` (default) reads the ``TERM_PROGRAM`` or ``TERM`` environment
        variable for auto-detection.  ``False`` disables override lookup.
        Accepts a canonical terminal name matching :func:`list_term_programs`,
        such as from XTVERSION_, ENQ_, or ``TERM_PROGRAM``.

        .. versionadded:: 0.8.0
    :returns: The width, in cells, needed to display the first ``n`` characters
        of the unicode string ``pwcs``.  Returns ``-1`` for C0 and C1 control
        characters!
    © r   c                ó   •— t        | d‰«      S r    r   r"   s    €r   r%   zwcstwidth.<locals>.<lambda>  r&   r   r   r'   r(   Fr)   r   r*   r+   r,   r-   T)r.   r/   r0   r   r   ÚnarrowerÚvs16_narrowerÚ
vs15_widerÚzeroerÚnarrow_widerÚnarrow_zeroerr   Úgetr   r   r   r	   r   r
   r   r   r   r   r   ))r1   r2   r3   r$   Úterm_programÚterm_canonicalÚ	overridesÚ	_narrowerÚ_vs16_narrowerÚ_vs15_widerÚ_zeroerÚ_narrow_widerÚ_narrow_zeroerÚ_grapheme_overridesr4   r   r5   r   r6   r7   r8   r9   Úcluster_startÚtotal_before_clusterr:   r;   r<   r=   r>   r?   Úcluster_endÚclusterÚ
override_wÚbase_ucsÚvs15_narrowr@   rA   rB   ÚflushedÚ	candidateÚcluster_texts)      `                                     r   Ú	wcstwidthrb   Ç   s8  ø€ ðJ 	€y�T—\‘\”^¨×(8Ñ(8Ô(:Ü�4‹yÐô & lÓ3€Nñ Ü& ~Ó6ˆ	Ø×&Ñ&ˆ	Ø"×0Ñ0ˆØ×*Ñ*ˆØ×"Ñ"ˆØ!×.Ñ.ˆØ"×0Ñ0ˆÜ6×:Ñ:¸>ÓJÑàˆ	ØˆØˆØˆØˆØˆØ Ðð *¨QÒ.�wÓ4a€Hà�yŒ#ˆdŒ) a€CØ€KØ
€Cð ÐØÐØ€OØ€OØ€MØÐØ€MÜ'¨Ñ0€MÜ'¨Ñ0€MÜ€Ià
�‹)Ø�C‰yˆÜ�$‹iˆð �&Š=ÙØ�q‘‘Ø�q‘˜3’á'Ø-°Ò2Ø-´Ñ?Ü"7¸Ð>OÐQTÓ"U�KØ"Ð#4°[ÐA�GØ!4×!8Ñ!8¸Ó!A�JØ!Ð-Ø#¨
°_Ñ(DÑE˜Ø,.Ð)Ø,.Ð)Ø*+˜Ø*/˜Ø(*˜Ø)˜Ø ð #$�Ø"'�Ø�q‘‘à"'�Ø�q‘�Øð �&Š=Ð.°!Ò3Ù¡)Ð,=¸~Ô"NØÙÐ,¨mÔ<Ø !�Ø "ÐØ�1‰HˆCØð �&Š=Ð.°!Ò3Ø(ˆHÜ" 8¨]Ó;ˆKÙœx¨°+Ô>Ø#�Ù˜°!Ò3Ø˜qÑ �Ø�1‰HˆCØð �Š<ØÔ-Ñ-Ø�	Ø˜!‘G�Ø˜1’f¤ T¨!¡W£Ô1HÑ!HØ ‘N�IØ˜‘F�Að ˜1’f¤ T¨!¡W£Ô1HÒ!Hð ˜q‘= AÒ%Ø(+Ð%Ø˜1‘H�CÙÜ$ QÑ'¨3ÔGÔ2DÀQÑ2GÕGØ'¬>Ñ9Ø�q‘�Ùñ �T‹NˆØˆqŠ5àà�Š6‘i¤H¨S°)Ô$<Ø‰AØ�!ŠV™¤H¨S°'Ô$:ØˆAØ�Š6‘m¬°°mÔ(DØ‰AØ�!ŠV™¬8°C¸Ô+HØˆAØˆqŠ5áØ !‘Ùà�Ù&¨=¸AÒ+=ð !% ]°3¸±7Ð ;�IØ!4×!8Ñ!8¸Ó!C�JØ!Ð-Ø&:¸ZÑ&G˜Ø"&˜Ø()™à'+¨M¸#Ð'>˜Ø%8×%<Ñ%<¸\Ó%J˜
Ø%Ð1Ø*>ÀÑ*K™Kà'¨=Ñ8™Kà =Ñ0�KÙØ$%�MØ$'�MØ+6Ñ(à !�Ø #�Ø'2Ð$Ø #ÐØ #ÐØˆOØ#‰OØ”OÑ#Ø"‰OØ !Ò#©	°#Ô7IÔ(JàˆMØ "ÐØ#‰Oà#ˆOØˆq‰ˆð_ �Œ)ñb Ù =°AÒ#5Ø ¨cÐ2ˆLØ,×0Ñ0°Ó>ˆJØÐ%Ø2°ZÑ?�ð
 Ðð ˜}Ñ,�ð Ðð ˜=Ñ(ˆKØÐr   )r   Ústrr   Úintr   rd   Úreturnrd   )Nr!   r   )
r1   rc   r2   úOptional[int]r3   rc   r$   rd   re   rd   )Nr!   r   T)r1   rc   r2   rf   r3   rc   r$   rd   rN   z
bool | strre   rd   )Ú__doc__Ú
__future__r   Útypingr   Ú__lazy_modules__Ú r   r4   r   r	   Ú
_constantsr
   r   r   r   r   r   r   Ú
table_vs15r   Ú
table_vs16r   Útable_graphemer   r   rC   rb   rE   r   r   Ú<module>rp      sØ   ðÙ 4å "å òÐ õ 'Ý Ý ÷-÷ -ñ -õ ,Ý +Ý +óð@ Ø!Øð	HØ
ðHàðHð ðHð ð	Hð
 	óHðZ Ø!ØØ#ðpØ
ðpàðpð ðpð ð	pð
 ðpð 	ôpr   