ó
    ‡Ž¡j” ã                   óÊ  • S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  SSKJrJr  SSKJrJ r J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*  SSK+J,r,  SSK-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  SSK5J6r6J7r7J8r8J9r9  \9Rt                  " \;5      r<Sr=Sr>Sr?Sr@SrASrB\.S-  r.\\ \!\"S.rC\=\@S.rD\7" \.5       " S S \15      5       rE\ErFg)!z‘
Tokenization classes for fast tokenizers (provided by HuggingFace's tokenizers library). For slow (python) tokenizers
see tokenization_utils.py
é    N)Údefaultdict)ÚIterable)Úcopyfile)ÚAny)Úis_offline_mode)Ú
AddedTokenÚ
processors)ÚEncoding)Ú	Tokenizer)ÚDecoder)ÚBPEÚUnigram)Ú
BpeTrainerÚUnigramTrainerÚWordLevelTrainerÚWordPieceTrainer)Úcached_fileé   )ÚSpmConverter)Úconvert_gguf_tokenizer)Úis_tekken_vocab_filename)Úload_gguf_checkpoint)ÚINIT_TOKENIZER_DOCSTRINGÚBatchEncodingÚPreTokenizedInputÚPreTrainedTokenizerBaseÚ	TextInputÚTruncationStrategyÚgenerate_merges)ÚPaddingStrategyÚadd_end_docstringsÚhf_apiÚloggingztokenizer.jsonzspecial_tokens_map.jsonztokenizer_config.jsonztokenizer.modelzadded_tokens.jsonztiktoken.modelu¡  
        tokenizer_object ([`tokenizers.Tokenizer`]):
            A [`tokenizers.Tokenizer`] object from ðŸ¤— tokenizers to instantiate from. See [Using tokenizers from ðŸ¤—
            tokenizers](../fast_tokenizers) for more information.
        tokenizer_file ([`str`]):
            A path to a local JSON file representing a previously serialized [`tokenizers.Tokenizer`] object from ðŸ¤—
            tokenizers.
)r   r   Ú	WordLevelÚ	WordPiece)Útokenizer_fileÚ
vocab_filec            )       ó0  ^ • \ rS rSrSr\rSrSr\	SUS j5       r
\	S\S\\\4   S\\\4   4S	 j5       r\	S\S\\\4   S\\\4   4S
 j5       rU 4S jr\S\4S j5       r\S\4S j5       rSVS\S\S-  S\\   4S jjr    SWS\\R0                  -  S\S-  S\S-  S\S\S-  S\\S4   4U 4S jjjrS r\S 5       r\S 5       r\R:                  S 5       r\R:                  S 5       rS r\S\4S j5       r S\\\4   4S jr!\S\\\4   4S j5       r"\S\\\4   4S j5       r#\S\\\$4   4S  j5       r%\#r&\%r'S\\\4   4S! jr(S\4S" jr)S\4S# jr*\S\+4S$ j5       r,\S\-4S% j5       r.       SXS'\/S(\S-  S)\S-  S*\S+\S,\S-\S.\S\\\\4   \0\/   4   4S/ jjr1S0\S\4S1 jr2S2\S\S-  4S3 jr3SUS4\0\\$-     S\4S5 jjr4SUS6\S\4S7 jjr5SUS8\\0\   -  S9\S\\0\   -  4S: jjr6SYS;\S6\S-  S<\S\0\   4S= jjr7S>\8S?\9S@\SA\SB\S-  SC\S-  4SD jr:SS&\8Rv                  \9Rx                  SSESSSSSSSSSSS&S4S;\=\>-  \0\=   -  \0\>   -  SF\=\>-  \0\=   -  \0\>   -  S-  S<\S>\8S?\9S@\S-  SA\SG\SB\S-  SC\S-  SH\S-  S(\S-  S)\S-  S*\S+\S,\S-\S.\SI\S-  S\?4(SJ jjr@SK\0\   S\4SL jrA  SZSM\\0\   -  S9\SN\S-  S\4SO jjrB  S[S\\R0                  -  SP\\S4   S\S-  S\S-  S\\S4   4
SQ jjrC   S\SR jrD\	       S]SS j5       rESTrFU =rG$ )^ÚTokenizersBackendéW   a5  
Base class for all fast tokenizers (wrapping HuggingFace tokenizers library).

Inherits from [`~tokenization_utils_base.PreTrainedTokenizerBase`].

Handles all the shared methods for tokenization and special tokens, as well as methods for
downloading/caching/loading pretrained tokenizers, as well as adding tokens to the vocabulary.

This class also contains the added tokens in a unified way on top of all tokenizers so we don't have to handle the
specific vocabulary augmentation methods of the various underlying dictionary structures (BPE, sentencepiece...).
NFc                 óÔ  ^• [        U5      nUR                  SS5      nUb_  [        R                  R	                  U5      (       a;  U [
        L d  SU R                  ;  d  U(       a  [        R                  " U5      US'   U$ UGb  [        R                  R	                  U5      (       GaÝ  [        USS9 n[        R                  " U5      nSSS5        WR                  S0 5      R                  S5      nUS	;  a]  [        U5      n[        US   5      n	0 U	S
'   US:X  a  / U	S'   X˜S'   / US'   [        R                  " [        R                  " U5      5      n
O[        R                  " U5      n
U
R                  US'   U
R                   US'   U
R"                  US'   U
R"                  b  U
R"                  US'   U
R                   b  U
R                   US'   UR                  S5      nU(       aw  UR                  SS5      S:X  a  US   nO[%        U[&        5      (       d  U/nU H=  nUR                  S5      S:X  d  M  SU;   d  M"  SSKnUR+                  US   5      US'     O   UR                  S0 5      R                  S
S5      nU R,                  c0  [%        U[&        5      (       a  ['        [/        [0        U5      5      nGO0U R,                  R2                  S:X  aV  [%        U[&        5      (       a@  U(       a9  [%        US   [&        [0        45      (       a  U Vs/ s H  n[1        U5      PM     nnOÀU R,                  R2                  S:X  a"  [5        U5       VVs0 s H	  u  nnUU_M     nnnO„U R,                  R2                  S:X  d  U R,                  R2                  S:X  aP  [%        U[&        5      (       a;  [5        U5       VVs0 s H#  u  nn[%        U[&        5      (       a  US   OUU_M%     nnnXãS
'   [7        U SS5      nSUR                  S0 5      ;   an  U(       ag  UR2                  S:X  aW  US   S   nU Vs/ s H=  n[%        U[8        5      (       a  [1        UR;                  S5      5      O
[1        U5      PM?     nnUUS'   U$ UR                  S5      nUR                  S5      nUR                  S
5      nUR                  S5      n[%        U[8        5      (       aW  [        R                  R	                  U5      (       a3  [=        U5      (       a#  S S!KJ n  U" U5      nURC                  5       US'   U$ [%        U[8        5      (       aŠ  [        R                  R	                  U5      (       af  URE                  S"5      (       aP  [        R                  RG                  U5      [H        :w  a   U RK                  UU5      nU$ U RS                  UU5      nU$ UcC  [%        U[8        5      (       a.  [        R                  R	                  U5      (       a
  UUS
'   US
   nUcC  [%        U[8        5      (       a.  [        R                  R	                  U5      (       a
  UUS'   US   nUc§  U R,                  bš  U R,                  R2                  S:X  a€  [%        U[         5      (       ak  S&[T        [V           S'[&        [8           4U4S( jjm/ S)Qn[Y        5       nU H&  nUU;   d  M  UR[                  T" UU   /5      5        M(     []        UUS*9nUUS'   U$ ! , (       d  f       GNJ= fs  snf s  snnf s  snnf s  snf ! [L         a'  n[N        RQ                  S#U S$U S%35         SnAGN SnAff = f)+z’
Build a `tokenizers.Tokenizer` backend from the available serialization files (tokenizer.json, sentencepiece
models, tekken.json, vocab/merges).
r&   NÚ__init__Útokenizer_objectúutf-8©ÚencodingÚmodelÚtype)Nr   Úvocabr   ÚmergesÚadded_tokensÚpost_processorÚtokenizer_paddingÚtokenizer_truncationÚ_json_truncationÚ_json_paddingÚ
normalizerÚSequenceÚnormalizersÚPrecompiledÚprecompiled_charsmapr   Ú_spm_precompiled_charsmapr   r$   r%   Ú r'   Úmerges_filer   )ÚMistralConverterú.modelz+Could not extract SentencePiece model from z$ using sentencepiece library due to z%. Falling back to TikToken extractor.ÚvaluesÚreturnc                 óÄ   >• / nU  HV  nUc  M  [        U[        [        45      (       a  UR                  T" U5      5        M<  UR	                  [        U5      5        MX     U$ ©N)Ú
isinstanceÚlistÚtupleÚextendÚappendÚstr)rE   Ú	collectedÚvalÚ_iter_special_tokenss      €Ú¸C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/tokenization_utils_tokenizers.pyrQ   ÚHTokenizersBackend.convert_to_native_format.<locals>._iter_special_tokensñ   sY   ø€ Ø')�	Û!�CØ‘{Ù Ü! #¬¬e }×5Ñ5Ø!×(Ñ(Ñ)=¸cÓ)BÖCà!×(Ñ(¬¨S«Ö2ñ "ð !Ð ó    )	Ú	pad_tokenÚ	unk_tokenÚ	bos_tokenÚ	eos_tokenÚ	sep_tokenÚ	cls_tokenÚ
mask_tokenÚadditional_special_tokensÚextra_special_tokens)Úskip_tokens)/ÚdictÚpopÚosÚpathÚisfiler)   Ú__dict__ÚTokenizerFastÚ	from_fileÚopenÚjsonÚloadÚgetÚfrom_strÚdumpsr6   ÚpaddingÚ
truncationrI   rJ   Úbase64Ú	b64decoder1   ÚmaprK   Ú__name__Ú	enumerateÚgetattrrN   Úsplitr   Úintegrations.mistral.tokenizerrC   Ú	convertedÚendswithÚbasenameÚTIKTOKEN_LEGACY_NAMEÚ_convert_from_sentencepieceÚ	ExceptionÚloggerÚwarningÚ_convert_from_tiktokenr   r   ÚsetÚupdater   )ÚclsÚtrust_remote_codeÚkwargsÚlocal_kwargsÚfast_tokenizer_fileÚtokenizer_handleÚtokenizer_jsonÚ
model_typeÚminimal_tokenizer_jsonÚminimal_modelÚtok_from_fileÚnormalizer_configr;   ro   r3   ÚitemÚiÚtokenr4   Úmerger'   rB   rC   Ú	converterÚeÚspecial_tokens_keysr^   ÚkeyrQ   s                               @rR   Úconvert_to_native_formatÚ*TokenizersBackend.convert_to_native_formati   s¬  ø€ ô ˜F“|ˆØ*×.Ñ.Ð/?ÀÓFÐð  Ñ+Ü—‘—‘Ð2×3Ñ3ØÔ)Ò)¨Z¸s¿|¹|Ó-KÖO`ä/<×/FÒ/FÐGZÓ/[ˆLÐ+Ñ,ØÐØ Ò,´·±·±Ð@S×1TÒ1Tô Ð)°GÒ<Ð@PÜ!%§¢Ð+;Ó!<�÷ =ð (×+Ñ+¨G°RÓ8×<Ñ<¸VÓDˆJØÐ!2Ó2Ü)-¨nÓ)=Ð&Ü $ ^°GÑ%<Ó =�Ø)+�˜gÑ&Ø Ó&Ø.0�M (Ñ+Ø2? wÑ/Ø9;Ð& ~Ñ6Ü -× 6Ò 6´t·z²zÐBXÓ7YÓ Z‘ä -× 7Ò 7Ð8KÓ L�à-:×-IÑ-IˆLÐ)Ñ*Ø0=×0EÑ0EˆLÐ,Ñ-Ø3@×3KÑ3KˆLÐ/Ñ0ð ×'Ñ'Ñ3Ø3@×3KÑ3K�Ð/Ñ0Ø×$Ñ$Ñ0Ø0=×0EÑ0E�˜_Ñ-ð !/× 2Ñ 2°<Ó @ÐÞ Ø$×(Ñ(¨°Ó6¸*ÓDØ(9¸-Ñ(HÑ%Ü#Ð$5´t×<Ñ<Ø):Ð(;Ð%Û"3�JØ!—~‘~ fÓ-°Õ>ÐCYÐ]gÕCgÛ%àDJ×DTÑDTØ&Ð'=Ñ>óE˜Ð%@ÑAñ ñ #4ð #×&Ñ& w°Ó3×7Ñ7¸ÀÓFˆEØ�y‰yÑ Ü˜e¤T×*Ñ*Ü ¤¤U¨EÓ!2Ó3�EùØ—‘×#Ñ# yÓ0Ü˜e¤T×*Ñ*®u¼ÀEÈ!ÁHÌtÔUZÈm×9\Ñ9\Ù5:Ó;²U¨TœU 4ž[±U�EÐ;øØ—‘×#Ñ# {Ó2Ü2;¸EÔ2BÔCÒ2B¡h a¨˜ šÑ2B�ÑC�Ø—‘×#Ñ# uÓ,°·	±	×0BÑ0BÀkÓ0QÜ˜e¤T×*Ñ*Ü_hÐinÔ_oÔpÒ_oÑS[ÐSTÐV[¬°E¼4×)@Ñ)@˜U 1šXÀeÈQÒNÑ_o�EÑpØ$)˜Ñ!ä   g¨tÓ4ˆJØ˜>×-Ñ-¨g°rÓ:Ó:Æ
Èz×ObÑObÐfkÓOkØ'¨Ñ0°Ñ:�ÙkqÓrÒkqÐbg´ZÀÄs×5KÑ5Kœ% §¡¨CÓ 0Ô1ÔQVÐW\ÓQ]Ò]Ñkq�ÐrØ)/�˜XÑ&àÐà!×%Ñ% lÓ3ˆ
Ø"×&Ñ& }Ó5ˆØ× Ñ  Ó)ˆØ×!Ñ! (Ó+ˆô �j¤#×&Ñ&¬2¯7©7¯>©>¸*×+EÑ+EÔJbÐcm×JnÑJnÝHá(¨Ó4ˆIØ/8×/BÑ/BÓ/DˆLÐ+Ñ,ØÐô �j¤#×&Ñ&¬2¯7©7¯>©>¸*×+EÑ+EÈ*×J]ÑJ]Ð^f×JgÑJgä�w‰w×Ñ 
Ó+Ô/CÓCðØ#&×#BÑ#BÀ:È|Ó#\�LØ'Ð'ð ×5Ñ5°jÀ,ÓOˆLØÐð ‰=œZ¨
´C×8Ñ8¼R¿W¹W¿^¹^ÈJ×=WÑ=WØ$.ˆL˜Ñ!Ø  Ñ)ˆEØ‰>œj¨´c×:Ñ:¼r¿w¹w¿~¹~Èk×?ZÑ?ZØ%0ˆL˜Ñ"Ø! (Ñ+ˆFð ‰>˜cŸi™iÑ3¸¿	¹	×8JÑ8JÈeÓ8SÔXbÐchÔjn×XoÑXoð	!¬X´c©]ð 	!¼tÄC¹y÷ 	!ò
#Ðô %(£EˆKÛ*�Ø˜,Õ&Ø×&Ñ&Ñ';¸\È#Ñ=NÐ<OÓ'PÖQñ +ô % U¸ÑDˆFØ%+ˆL˜Ñ"ØÐ÷c =Ö<üòx <ùãCùó qùò søô2 !ó Ü—N‘NØEÀjÀ\ð RØ˜3ÐCðE÷ò ûðús=   Â4\Ì\ Í\%Ï*\+Ð:A\1Ö.\6 Ü
\Ü6
]'Ý ]"Ý"]'r'   r…   rF   c           	      óþ  • SSK Jn  UR                  S5      =(       d    0 R                  5        VVs0 s H4  u  pE[	        U5      [        U[        5      (       a  US   O
[        U5      _M6     nnnUR                  S5      =(       d    / n[        U[        5      (       a  [        UR                  5       5      n[        UR                  U5      5      nU(       a  [        UR                  5       5      OSn	X˜:¼  a`  [        X‰S-   5       V
s/ s H  n
UR                  U
SU
 S35      PM     nn
[        U5      nU H  nXÜ;  d  M
  UR                  U5        M     UnU" XS	9nUR!                  5       US
'   U$ s  snnf s  sn
f )z8Path to a vocab file and a list of extra special tokens.r   )ÚTikTokenConverterÚadded_tokens_decoderÚcontentr]   r   z<|reserved_token_z|>)r'   r]   r-   )Úconvert_slow_tokenizerr™   rj   ÚitemsÚintrI   r_   rN   rJ   ÚkeysÚlenÚload_tiktoken_bpeÚmaxÚranger€   rM   rw   )r‚   r'   r…   r™   Útoken_idr�   rš   r]   Úbase_vocab_sizeÚmax_added_token_idÚindexÚ
new_extrasÚset_new_extrasÚspecial_tokenr’   s                  rR   r   Ú(TokenizersBackend._convert_from_tiktoken  s‚  € õ 	>ð
 %1×$4Ñ$4Ð5KÓ$L×$RÐPR×#YÑ#YÔ#[ô0
â#[‘�ô �‹M¬z¸%Ä×/FÑ/F˜5 Ò+ÌCÐPUËJÒVÙ#[ð 	ñ 0
ð
 +7×*:Ñ*:Ð;QÓ*R×*XÐVXÐÜÐ*¬D×1Ñ1Ü#'Ð(<×(AÑ(AÓ(CÓ#DÐ ô Ð/×AÑAÀ*ÓMÓNˆö BVœSÐ!5×!:Ñ!:Ó!<Ô=Ð[\ÐØÓ0ô # ?ÈÑ4JÔKóâK�Eð %×(Ñ(¨Ð2CÀEÀ7È"Ð0MÖNÙKð ð ô ! ›_ˆNÛ!5�Ø Õ6Ø×%Ñ% mÖ4ñ "6ð $.Ð á%°Ñgˆ	Ø+4×+>Ñ+>Ó+@ˆÐ'Ñ(ØÐùó90
ùò s   ²;E4Ä	 E:c                 ój  • SSK Jn  U" U5      nUR                  " U R                  40 UD6n SSK Jn  UR                  U R                  5      nUb#  [        US5      (       a  UR                  " S0 UD6n[        U S5      (       a  U R                  " S0 UD6nS	U;  GaÑ  U [        L d  S
U R                  ;  Ga·  UR                  SS 5      nUR                  SS 5      n	UR                  S5      =(       d    0 n
Ub™  U
(       a’  UR!                  5        VVs0 s H  u  p¼XË_M	     nnnU
R!                  5        HZ  u  pÎ[#        U5      n[%        U5      nUR                  U5      nU(       d  M5  Xþ:w  d  M<  Xè;  d  MC  UR                  U5      XŽ'   XíU'   M\     [&        R(                  " UR*                  UU	S9nUbº  UUS	'   UR*                  R,                  nUR.                  S:¼  a%  UR1                  SUR2                  =(       d    S5        UR4                  S:¼  a%  UR1                  SUR6                  =(       d    S5        UR8                  S:¼  a%  UR1                  SUR:                  =(       d    S5        U$ ! [         a1  n[        R                  SU R                   SU S35         S nAGN3S nAff = fs  snnf )Nr   )ÚSentencePieceExtractor)ÚSLOW_TO_FAST_CONVERTERSÚconvert_from_spmz,Could not reorder vocab using converter for z due to z/. Falling back to raw SentencePiece extraction.Úconvert_from_spm_modelr-   r,   r3   r4   rš   )Úprotor3   r4   r   rW   ú<s>rX   ú</s>rV   z<unk>© )rœ   r­   Úextractr1   r®   rj   rr   Úhasattrr¯   r|   r}   r~   r°   r)   rd   r`   r�   rž   rN   r   Úbuild_tokenizer_from_spm_protor±   Útrainer_specÚbos_idÚ
setdefaultÚ	bos_pieceÚeos_idÚ	eos_pieceÚunk_idÚ	unk_piece)r‚   r'   r…   r­   Ú	extractorr®   Úconverter_classr“   r3   r4   rš   r�   r¤   Úid_to_tokenÚ	new_tokenÚcurrent_tokenr-   Ú
proto_specs                     rR   r{   Ú-TokenizersBackend._convert_from_sentencepiece4  s„  € åBñ +¨:Ó6ˆ	Ø ×(Ò(¨¯©ÑC°lÑCˆð		ÝGà5×9Ñ9¸#¿,¹,ÓGˆOØÑ*¬w°ÐHZ×/[Ñ/[Ø.×?Ò?ÑOÀ,ÑO�ô
 �3Ð0×1Ñ1Ø×5Ò5ÑE¸ÑEˆLð
  \Ô1°sÔ>OÒ7OÐS]Ðeh×eqÑeqÔSqØ ×$Ñ$ W¨dÓ3ˆEØ!×%Ñ% h°Ó5ˆFð $0×#3Ñ#3Ð4JÓ#K×#QÈrÐ ØÑ Ö%9ØFKÇkÁkÄmÔTÂm±?°5˜xšÁm�ÑTØ+?×+EÑ+EÖ+GÑ'�HÜ" 8›}�HÜ # I£�IØ$/§O¡O°HÓ$=�Mß$�}¨Õ)CÈ	ÕH^Ø+0¯9©9°]Ó+C˜Ñ(Ø09 HÓ-ñ ,Hô  ,×JÒJØ—o‘oØØñ Ðð
  Ñ+Ø3C�Ð/Ñ0ð 'Ÿ_™_×9Ñ9�
Ø×$Ñ$¨Ó)Ø ×+Ñ+¨K¸×9MÑ9M×9VÐQVÔWØ×$Ñ$¨Ó)Ø ×+Ñ+¨K¸×9MÑ9M×9WÐQWÔXØ×$Ñ$¨Ó)Ø ×+Ñ+¨K¸×9MÑ9M×9XÐQXÔYØÐøôW ó 	Ü�N‰NØ>¸s¿|¹|¸nÈHÐUVÐTWð  XGð  H÷ò ûð	üó" Us   ­AI1 ÄJ/É1
J,É;&J'Ê'J,c           	      ó’  >• UR                  SS 5      nUR                  SS 5      nUR                  SS 5        UR                  SS 5      nUR                  SS 5      nUR                  SS 5      nUR                  S0 5      nUR                  SS	5      n	UR                  S
5      n
UR                  S5      nUR                  S5      nS nUb  [        R                  " U5      nGOðUb<  [        R
                  R                  U5      (       a  [        R                  " U5      nGO±Ub§  SSK	J
nJnJn  [        UR                  SS5      U40 UD6nU" U5      u  nnUS   U;   a  U" U5      u  nnnO[        U5      nUS   S   nUS   nUS   n[        UU5      u  nnUR!                  U5        [#        U5      S:”  a  UR!                  U5        GOU R$                  câ  Ubß  UbT  ['        U[(        5      (       a  UO&[+        U5       VVVs0 s H  u  nu  nnUU_M     snnnn[        [-        UUSS S95      nO ['        U[(        5      (       a  [        [-        U/ SS S95      nOu['        U[.        5      (       aG  U(       a@  ['        US   [0        [.        45      (       a"  [        [3        X²R                  SS5      S95      nOU R$                  c  [5        S5      eUc4  Uc1  U R$                  c$  UR7                  SS5        UR7                  SS5        Ub  XÐl        U R$                  c  [5        S 5      eUR                  S!S 5      =(       d    U R$                  R8                  =(       d    UnUbq  U R$                  R:                  " S;0 UD6  UR7                  S"US"   5        UR7                  S#US$   5        UR7                  S%US%   5        UR7                  S&US'   5        OU R$                  R=                  5         UR                  S(S 5      =(       d    U R$                  R>                  =(       d    UnUb…  U R$                  R@                  " S;0 UD6  UR7                  S)US)   5        UR7                  S*US+   5        UR7                  S,US$   5        UR7                  S"US-   5        UR7                  S.US.   5        S/U;  a  S0US/'   S1U;   =(       d    S2U;   nUR                  S1S	5      U l!        UR                  S2S	5      U l"        UR                  S3S 5      =n(       a  UU R$                  l#        U=(       d    U R$                  RF                  S L U l$        [J        T*U ]˜  " S;0 UD6  U
b  X l'        X�l(        U RR                  U R$                  l*        U RV                   V s1 s H  n [Y        [[        U 5      5      iM     n!n []        UR_                  5       S4 S59 V"V s/ s H"  u  n"n [Y        [[        U 5      5      U!;  d  M   U PM$     n#n"n [/        U R`                  Rc                  5       5      U# V s/ s H  n [e        U 5      PM     sn -   n$U Rf                  Ri                  5        H2  n%U%c  M  [e        U%5      U$;  d  M  U%U#;  d  M!  U#Rk                  U%5        M4     U Rl                   H-  n [e        U 5      U$;  d  M  U U#;  d  M  U#Rk                  U 5        M/     [#        U#5      S:”  aÌ  / n&U Rf                  Ri                  5        V's/ s H  n'U'(       d  M  [e        U'5      PM     n(n'U# Hp  n ['        U [d        5      (       a  [o        U SS69n O<['        U [n        5      (       a'  U Rp                  (       d  [e        U 5      U(;   a  SU l8        U&Rk                  U 5        Mr     U&(       a  U Rs                  U&5         U R$                  Ru                  5       n)U)S7:”  a„  [y        U R$                  S8S 5      bl  UR                  SS 5        U Rz                  " U R$                  U R|                  R                  SS 5      4U R|                  UR                  S9S 5      S:.UD6U l        U RH                  =(       d    U R$                  RF                  S L U l$        U RH                  (       a  U R                  5         g g s  snnnf s  sn f s  sn n"f s  sn f s  sn'f ! [v         a    Sn) GNf = f)<Nr9   r:   r@   r-   Ú	gguf_filer&   rš   Úadd_prefix_spaceFr'   r3   r4   r   )ÚGGUF_TOKENIZER_ARCHSÚget_gguf_tokenizerÚread_gguf_metadataÚname_or_pathÚ zgeneral.architectureÚconfigr‰   Ú	tokenizerÚtokenizer_configr   T)r3   r4   Úfuse_unkÚdropoutr¾   )r3   r¾   a9  Couldn't instantiate the backend tokenizer from one of: 
(1) a `tokenizers` library serialization file, 
(2) a slow tokenizer instance to convert or 
(3) an equivalent slow tokenizer class to instantiate and convert. 
You need to have sentencepiece or tiktoken installed to convert a slow tokenizer to a fast one.rW   r²   rX   r³   z3The backend tokenizer is not correctly initialized.r8   Ú
max_lengthÚtruncation_sideÚ	directionÚstrideÚtruncation_strategyÚstrategyr7   rU   Úpad_token_type_idÚpad_type_idÚpadding_sideÚlengthÚpad_to_multiple_ofÚbackendÚ
tokenizersÚadd_bos_tokenÚadd_eos_tokenr6   c                 ó   • U S   $ ©Nr   r´   )Úxs    rR   Ú<lambda>Ú,TokenizersBackend.__init__.<locals>.<lambda>â  s   € ÐSTÐUVÒSWrT   ©r•   )Úspeciali † Úpre_tokenizerÚfix_mistral_regex)Úinit_kwargsrë   r´   )@r`   rj   ÚcopyÚdeepcopyra   rb   rc   re   rf   Úintegrations.ggufrÊ   rË   rÌ   r   r   r   r�   r    Ú
_tokenizerrI   r_   rs   r   rJ   rK   r   Ú
ValueErrorrº   rn   Úenable_truncationÚno_truncationrm   Úenable_paddingÚ_add_bos_tokenÚ_add_eos_tokenr6   Ú_should_update_post_processorÚsuperr,   r'   rÉ   Úsplit_special_tokensÚencode_special_tokensrš   ÚhashÚreprÚsortedr�   Úadded_tokens_encoderrŸ   rN   Ú_special_tokens_maprE   rM   Ú_extra_special_tokensr   ré   Ú
add_tokensÚget_vocab_sizeÚNotImplementedErrorrt   Ú_patch_mistral_regexrì   Úupdate_post_processor)+ÚselfÚargsr„   r9   r:   r-   rÈ   r†   rš   rÉ   r'   r3   r4   Úfast_tokenizerrÊ   rË   rÌ   Ú	gguf_pathÚmetadataÚ_ÚarchitectureÚtokenizer_dictrÑ   Ú
gguf_paramÚadditional_kwargsr�   ÚwÚ
vocab_dictÚ_truncationÚ_paddingÚexplicit_bos_eos_in_kwargsr6   r�   Úadded_tokens_decoder_hashr§   Útokens_to_addÚencoderÚspecial_token_valueÚtokensÚtÚall_named_tokensÚ
vocab_sizeÚ	__class__s+                                             €rR   r,   ÚTokenizersBackend.__init__p  sú  ø€ ð "Ÿ:™:Ð&8¸$Ó?ÐØŸ
™
 ?°DÓ9ˆð 	�
‰
Ð.°Ô5à!Ÿ:™:Ð&8¸$Ó?ÐØ—J‘J˜{¨DÓ1ˆ	Ø$Ÿj™jÐ)9¸4Ó@Ðà%Ÿz™zÐ*@À"ÓEÐà!Ÿ:™:Ð&8¸%Ó@ÐØ—Z‘Z Ó-ˆ
à—
‘
˜7Ó#ˆØ—‘˜HÓ%ˆàˆØÑ'Ü!Ÿ]š]Ð+;Ó<ŠNØ Ñ,´·±·±Ð@S×1TÑ1Tä*×4Ò4Ð5HÓIŠNØÑ"çgÑgä# F§J¡J¨~¸rÓ$BÀIÑXÐQWÑXˆIá,¨YÓ7‰KˆH�aØÐ.Ñ/Ð3GÓGÙASÐT]ÓA^Ñ>�˜nÑ.>ä1°)Ó<�
Ø)¨(Ñ3°LÑA�Ø!+¨KÑ!8�Ø#-Ð.@Ñ#AÐ Ü0FÀ|ÐUcÓ0dÑ-ˆNÐ-Ø�M‰MÐ*Ô+ÜÐ$Ó%¨Ó)Ø—‘Ð/Ô0ùØ�_‰_Ñ$¨Ñ):àÑ!Ü&0°¼×&=Ñ&=™UÔZcÐdiÔZjÕCkÒZjÉYÈQÑPVÐQRÐTUÀAÀqÂDÑZjÓCk�
Ü!.¬s¸ÈFÐ]aÐkoÑ/pÓ!q‘Ü˜E¤4×(Ñ(Ü!.¬s¸ÀrÐTXÐbfÑ/gÓ!h‘Ü˜E¤4×(Ñ(®U´zÀ%ÈÁ(ÌUÔTXÈM×7ZÑ7ZÜ!.¬w¸UÏ:É:ÐV^Ð`aÓKbÑ/cÓ!d�øØ�_‰_Ñ$Üðróð ð Ñ&Ð+;Ñ+CÈÏÉÑH_Ø×Ñ˜k¨5Ô1Ø×Ñ˜k¨6Ô2àÑ%Ø,ŒOà�?‰?Ñ"ÜÐRÓSÐSà—j‘jÐ!7¸Ó>×pÀ$Ç/Á/×B\ÑB\×pÐ`pˆØÑ"Ø�O‰O×-Ò-Ñ<°Ò<Ø×Ñ˜l¨K¸Ñ,EÔFØ×ÑÐ/°¸[Ñ1IÔJØ×Ñ˜h¨°HÑ(=Ô>Ø×ÑÐ3°[ÀÑ5LÕMà�O‰O×)Ñ)Ô+à—:‘:Ð1°4Ó8×d¸D¿O¹O×<SÑ<S×dÐWdˆØÑØ�O‰O×*Ò*Ñ6¨XÒ6Ø×Ñ˜k¨8°KÑ+@ÔAØ×ÑÐ1°8¸MÑ3JÔKØ×Ñ˜n¨h°{Ñ.CÔDØ×Ñ˜l¨H°XÑ,>Ô?Ø×ÑÐ2°HÐ=QÑ4RÔSð ˜FÓ"Ø ,ˆF�9Ñà%4¸Ñ%>×%[À/ÐU[ÑB[Ð"Ø$Ÿj™j¨¸%Ó@ˆÔØ$Ÿj™j¨¸%Ó@ˆÔØ#ŸZ™ZÐ(8¸$Ó?Ð?ˆ>Õ?Ø-;ˆD�O‰OÔ*Ø-G×-qÈ4Ï?É?×KiÑKiÐmqÐKqˆÔ*ä‰ÒÑ"˜6Ò"àÑ!Ø(ŒOà 0ÔØ04×0IÑ0Iˆ�‰Ô-àDH×D]ÒD]Ó$^ÒD]¸5¤T¬$¨u«+Ö%6ÑD]Ð!Ð$^ô !'Ð';×'AÑ'AÓ'CÉÒ Xô
â X‘��uÜ”D˜“KÓ Ð(AÑA÷ Ù Xð 	ñ 
ô
 �t×0Ñ0×5Ñ5Ó7Ó8ÑTaÓ;bÒTaÈ5¼CÀ¾JÑTaÑ;bÑbˆð $(×#;Ñ#;×#BÑ#BÖ#DÐØ"Ñ*ÙÜÐ&Ó'¨wÕ6Ð;NÐVcÕ;cØ×$Ñ$Ð%8Ö9ñ	 $Eð ×/Ô/ˆEÜ�5‹z Õ(¨U¸-Õ-GØ×$Ñ$ UÖ+ñ 0ô ˆ}Ó Ó!ØˆFØ04×0HÑ0H×0OÑ0OÔ0QÓWÒ0Q¨1ÔUV£¤ A¦Ñ0QÐÐWÛ&�Ü˜e¤S×)Ñ)ä& u°dÑ;‘EÜ ¤z×2Ñ2à Ÿ=Ÿ=¬S°«ZÐ;KÓ-KØ(,˜œØ—‘˜eÖ$ñ 'ö à—‘ Ô'ð	ØŸ™×7Ñ7Ó9ˆJð
 ˜Ó¤7¨4¯?©?¸OÈTÓ#RÑ#^Ø�J‰J�{ DÔ)Ø"×7Ò7Ø—‘Ø× Ñ ×$Ñ$ ^°TÓ:ðð !×,Ñ,Ø"(§*¡*Ð-@À$Ó"Gñ	ð
 ñˆDŒOð ×.Ñ.×X°$·/±/×2PÑ2PÐTXÐ2Xð 	Ô*ð ×-×-Ø×&Ñ&Õ(ð .ùôo Dlùò~ %_ùó
ùò
 <cùò"  Xøô  #ó 	Ø‹Jð	ús<   ÈbÖb!×b&×1b&Ø b,Û4b1Üb1Þ#b6 â6cãcc                 ó   • g)NTr´   ©r  s    rR   Úis_fastÚTokenizersBackend.is_fast  s   € àrT   c                 ó  • SU R                   ;   ao  U R                   S   R                  S5      (       aL  [        U S5      (       a:  U R                  (       a)  [        R
                  R                  U R                  5      $ gg)z´
`bool`: Whether or not the slow tokenizer can be saved. For a sentencepiece based slow tokenizer, this
can only be `True` if the original `"sentencepiece.model"` was not deleted.
r'   rD   FT)Úvocab_files_namesrx   r¶   r'   ra   rb   rc   r   s    rR   Úcan_save_slow_tokenizerÚ)TokenizersBackend.can_save_slow_tokenizer  s^   € ð ˜4×1Ñ1Ó1°d×6LÑ6LÈ\Ñ6Z×6cÑ6cÐdl×6mÑ6mÜ�t˜\×*Ñ*¨t¯¯ä—w‘w—~‘~ d§o¡oÓ6Ð6ØàrT   Úsave_directoryÚfilename_prefixc                 ó®  • [         R                  R                  U5      (       d  [        R	                  SU S35        g [         R                  R                  X(       a  US-   OS[        S   -   5      n[         R                  R                  U R                  5      [         R                  R                  U5      :w  a  [        U R                  U5        U4$ )NzVocabulary path (z) should be a directoryÚ-rÎ   r'   )
ra   rb   Úisdirr}   ÚerrorÚjoinÚVOCAB_FILES_NAMESÚabspathr'   r   )r  r'  r(  Úout_vocab_files       rR   Úsave_vocabularyÚ!TokenizersBackend.save_vocabulary,  s›   € Ü�w‰w�}‰}˜^×,Ñ,Ü�L‰LÐ,¨^Ð,<Ð<SÐTÔUØÜŸ™Ÿ™Øµo˜_¨sÒ2È2ÔQbÐcoÑQpÑpó
ˆô �7‰7�?‰?˜4Ÿ?™?Ó+¬r¯w©w¯©¸~Ó/NÓNÜ�T—_‘_ nÔ5àÐ Ð rT   Úlegacy_formatÚpush_to_hubÚsave_format.c           	      óP  >• US;  a  [        SU< S35      eUS:X  aõ  SSKJn  0 nU(       a5  [        R                  R                  U5      (       a  U R                  U5      nU" X5      n	U(       a   UR                  SS5      n
UR                  S	[        U5      R                  [        R                  R                  5      S
   5      n[        5       R                  " U4SS0UD6R                  nU R                  UUUU
UR                  S5      S9  U	$ [         TU ]D  " U4UUUS.UD6$ )av  
Save the full tokenizer state.


Extends [`~tokenization_utils_base.PreTrainedTokenizerBase.save_pretrained`] with
`save_format` support, for tokenizers converted from a native vocabulary file
(e.g. Mistral's `tekken.json`). See the base method for `legacy_format`,
`filename_prefix`, and `push_to_hub`.

Args:
    save_format (`str`, *optional*):
        `"mistral"` to save as a native `tekken.json` by copying the original
        file (requires the original tekken vocabulary file to be available). The name is
        normalized to `tekken.json` on save, and the instantiated tokenizer must still match
        it exactly.
        `"hf"` or `None` for the default HuggingFace format.
    kwargs (`dict[str, Any]`, *optional*):
        Additional key word arguments passed along to the [`~utils.PushToHubMixin.push_to_hub`] method.

Returns:
    A tuple of `str`: The files saved.
)NÚhfÚmistralzUnknown save_format=z$. Supported values: 'hf', 'mistral'.r8  r   )Úsave_tekken_formatÚcommit_messageNÚrepo_idéÿÿÿÿÚexist_okTr�   )Úworking_dirr;  Úfiles_timestampsr:  r�   )r3  r(  r4  )rñ   rv   r9  ra   rb   r+  Ú_get_files_timestampsr`   rN   ru   Úsepr"   Úcreate_repor;  Ú_upload_modified_filesrj   rø   Úsave_pretrained)r  r'  r3  r(  r4  r5  r„   r9  r?  Ú
save_filesr:  r;  r  s               €rR   rD  Ú!TokenizersBackend.save_pretrained9  s+  ø€ ð> Ð5Ó5ÜÐ3°K±?ÐBfÐgÓhÐhà˜)Ó#ÝJð
  "ÐÞœrŸw™wŸ}™}¨^×<Ñ<Ø#'×#=Ñ#=¸nÓ#MÐ á+¨DÓAˆJæØ!'§¡Ð,<¸dÓ!C�Ø Ÿ*™* Y´°NÓ0C×0IÑ0IÌ"Ï'É'Ï+É+Ó0VÐWYÑ0ZÓ[�Ü ›(×.Ò.¨wÑPÀÐPÈÑP×XÑX�Ø×+Ñ+Ø .Ø#Ø%5Ø#1Ø Ÿ*™* WÓ-ð ,ñ ð Ðä‰wÒ&Øð
à'Ø+Ø#ñ	
ð
 ñ
ð 	
rT   c                 óŠ  • U R                   nU R                  nUc  U R                  (       a  SU l        U R                  nU R                  nUc  U R
                  (       a  SU l        U R                  (       a  US-   OS SU R
                  (       a  SU-   S-   OS 3nU U R                  (       a  SU-   S-   OS S	U R
                  (       a  SU-   S-   OS 3n/ nU R                  (       a  UR                  X45        U R
                  (       a  UR                  X445        [        R                  " XVUS
9U R                  l
        g)zU
Updates the underlying post processor with the current `bos_token` and `eos_token`.
NFz:0 rÎ   z$A:0rA   z:0z:1z $B:1)ÚsingleÚpairÚspecial_tokens)rW   Úbos_token_idrá   rX   Úeos_token_idrâ   rM   r	   ÚTemplateProcessingrð   r6   )r  ÚbosrK  ÚeosrL  rH  rI  rJ  s           rR   r  Ú'TokenizersBackend.update_post_processor}  s.  € ð �n‰nˆØ×(Ñ(ˆØ‰;˜4×-×-Ø!&ˆDÔà�n‰nˆØ×(Ñ(ˆØ‰;˜4×-×-Ø!&ˆDÔà%)×%7×%7�S˜5’[¸RÐ@ÀÐ[_×[m×[mÀcÈCÁiÐRVÒFVÐsuÐDvÐwˆØ�°×0B×0B˜3 ™9 tÒ+ÈÐKÈ5Ðgk×gy×gyÐRUÐX[ÑR[Ð^bÒRbð  @Bð  QCð  DˆàˆØ××Ø×!Ñ! 3Ð"5Ô6Ø××Ø×!Ñ! 3Ð"5Ô6Ü)3×)FÒ)FØ°^ñ*
ˆ�‰Õ&rT   c                 ó   • [        U SS5      $ )Nrö   F©rt   r   s    rR   râ   ÚTokenizersBackend.add_eos_token—  ó   € ä�tÐ-¨uÓ5Ð5rT   c                 ó   • [        U SS5      $ )Nrõ   FrR  r   s    rR   rá   ÚTokenizersBackend.add_bos_token›  rT  rT   c                 óR   • [         R                  U SU5        U R                  5         g )Nrö   ©ÚobjectÚ__setattr__r  ©r  Úvalues     rR   râ   rS  Ÿ  ó!   € ä×Ñ˜4Ð!1°5Ô9Ø×"Ñ"Õ$rT   c                 óR   • [         R                  U SU5        U R                  5         g )Nrõ   rX  r[  s     rR   rá   rV  ¤  r]  rT   c           	      ó€  • / nU R                   R                  5        Ha  nUc  M  [        U[        5      (       a  UR	                  U5        M0  [        U[
        5      (       d  MG  UR	                  [        USSS95        Mc     U R                   H\  n[        U[        5      (       a  UR	                  U5        M+  [        U[
        5      (       d  MB  UR	                  [        USSS95        M^     U(       a  U R                  USS9  [        U SS5      (       d  U R                  R                  c  U R                  5         gg)a3  
Post-initialization hook that runs after the tokenizer is fully set up.
This is called by from_pretrained() after loading the tokenizer, which allows
us to add any special tokens that may have been passed as AddedToken objects.

Child classes should call super()._post_init() if they override this method.
NTF)ré   Ú
normalized)rJ  r÷   )rÿ   rE   rI   r   rM   rN   r   r  rt   rð   r6   r  )r  r  Útoken_valuer�   s       rR   Ú
_post_initÚTokenizersBackend._post_init©  s  € ð ˆà×3Ñ3×:Ñ:Ö<ˆKØÑ"ÙÜ˜+¤z×2Ñ2Ø×$Ñ$ [Ö1Ü˜K¬×-Ó-Ø×$Ñ$¤Z°ÀTÐV[Ñ%\Ö]ñ =ð ×/Ô/ˆEÜ˜%¤×,Ñ,Ø×$Ñ$ UÖ+Ü˜E¤3×'Ó'Ø×$Ñ$¤Z°¸tÐPUÑ%VÖWñ	 0ö à�O‰O˜M¸$ˆOÑ?ä�4Ð8¸$×?Ñ?À4Ç?Á?×CaÑCaÑCiØ×&Ñ&Õ(ð DjrT   c                 ó4   • U R                   R                  SS9$ )z@
`int`: Size of the base vocabulary (without the added tokens).
F©Úwith_added_tokens©rð   r  r   s    rR   r  ÚTokenizersBackend.vocab_sizeÉ  s   € ð
 �‰×-Ñ-ÀÐ-ÐFÐFrT   c                 ó4   • U R                   R                  SS9$ )NTre  )rð   Ú	get_vocabr   s    rR   rj  ÚTokenizersBackend.get_vocabÐ  s   € Ø�‰×(Ñ(¸4Ð(Ð@Ð@rT   c                 ó"   • U R                  5       $ rH   )rj  r   s    rR   r3   ÚTokenizersBackend.vocabÓ  s   € à�~‰~ÓÐrT   c                 ó”   • [        U R                  R                  5       S S9 VVs0 s H  u  pUR                  U_M     snn$ s  snnf )z«
Returns the sorted mapping from string to index. The added tokens encoder is cached for performance
optimisation in `self._added_tokens_encoder` for the slow tokenizers.
c                 ó   • U S   $ rä   r´   ©rŽ   s    rR   ræ   Ú8TokenizersBackend.added_tokens_encoder.<locals>.<lambda>Ý  ó   € ÐdhÐijÒdkrT   rè   ©rý   rš   r�   r›   ©r  ÚvÚks      rR   rþ   Ú&TokenizersBackend.added_tokens_encoder×  s?   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÒ)lÔmÒ)l¡ �—	‘	˜1’Ñ)lÒmÐmùÓmó   §Ac                 ó6   • U R                   R                  5       $ )z†
Returns the added tokens in the vocabulary as a dictionary of index to AddedToken.

Returns:
    `dict[str, int]`: The added tokens.
)rð   Úget_added_tokens_decoderr   s    rR   rš   Ú&TokenizersBackend.added_tokens_decoderß  s   € ð �‰×7Ñ7Ó9Ð9rT   c                 ó”   • [        U R                  R                  5       S S9 VVs0 s H  u  pUR                  U_M     snn$ s  snnf )z�
Returns the added tokens in the vocabulary as a dictionary of token to index.

Returns:
    `dict[str, int]`: The added tokens.
c                 ó   • U S   $ rä   r´   rp  s    rR   ræ   Ú3TokenizersBackend.get_added_vocab.<locals>.<lambda>õ  rr  rT   rè   rs  rt  s      rR   Úget_added_vocabÚ!TokenizersBackend.get_added_vocabî  s?   € ô *0°×0IÑ0I×0OÑ0OÓ0QÑWkÒ)lÔmÒ)l¡ �—	‘	˜1’Ñ)lÒmÐmùÓmrx  c                 ó   • g)z>
Returns True, to avoid expensive `assert tokenizer` gotchas.
Tr´   r   s    rR   Ú__bool__ÚTokenizersBackend.__bool__÷  s   € ð rT   c                 ó4   • U R                   R                  SS9$ )z4
Size of the full vocabulary with the added tokens.
Tre  rg  r   s    rR   Ú__len__ÚTokenizersBackend.__len__ý  s   € ð �‰×-Ñ-ÀÐ-ÐEÐErT   c                 ó   • U R                   $ )zS
`tokenizers.implementations.BaseTokenizer`: The Rust tokenizer used as a backend.
)rð   r   s    rR   Úbackend_tokenizerÚ#TokenizersBackend.backend_tokenizer  s   € ð
 �‰ÐrT   c                 ó.   • U R                   R                  $ )zE
`tokenizers.decoders.Decoder`: The Rust decoder for this tokenizer.
)rð   Údecoderr   s    rR   r‹  ÚTokenizersBackend.decoder
  s   € ð
 �‰×&Ñ&Ð&rT   Tr0   Úreturn_token_type_idsÚreturn_attention_maskÚreturn_overflowing_tokensÚreturn_special_tokens_maskÚreturn_offsets_mappingÚreturn_lengthÚverbosec	                 ó”  • Uc  SU R                   ;   nUc  SU R                   ;   nU(       a  UR                  b  U/UR                  -   n	OU/n	[        [        5      n
U	 Hå  nU
S   R	                  UR
                  5        U(       a  U
S   R	                  UR                  5        U(       a  U
S   R	                  UR                  5        U(       a  U
S   R	                  UR                  5        U(       a  U
S   R	                  UR                  5        U(       d  M¾  U
S   R	                  [        UR
                  5      5        Mç     X©4$ )ar  
Convert the encoding representation (from low-level HuggingFace tokenizer output) to a python Dict and a list
of encodings, take care of building a batch from overflowing tokens.

Overflowing tokens are converted to additional examples (like batches) so the output values of the dict are
lists (overflows) of lists (tokens).

Output shape: (overflows, sequence length)
Útoken_type_idsÚattention_maskÚ	input_idsÚspecial_tokens_maskÚoffset_mappingrÝ   )Úmodel_input_namesÚoverflowingr   rJ   rM   ÚidsÚtype_idsr–  r˜  Úoffsetsr    )r  r0   r�  rŽ  r�  r�  r‘  r’  r“  Ú	encodingsÚencoding_dictr“   s               rR   Ú_convert_encodingÚ#TokenizersBackend._convert_encoding  s  € ð( !Ñ(Ø$4¸×8NÑ8NÑ$NÐ!Ø Ñ(Ø$4¸×8NÑ8NÑ$NÐ!æ$¨×)=Ñ)=Ñ)IØ!˜
 X×%9Ñ%9Ñ9‰Ià!˜
ˆIä#¤DÓ)ˆÛˆAØ˜+Ñ&×-Ñ-¨a¯e©eÔ4æ$ØÐ.Ñ/×6Ñ6°q·z±zÔBÞ$ØÐ.Ñ/×6Ñ6°q×7GÑ7GÔHÞ)ØÐ3Ñ4×;Ñ;¸A×<QÑ<QÔRÞ%ØÐ.Ñ/×6Ñ6°q·y±yÔAßˆ}Ø˜hÑ'×.Ñ.¬s°1·5±5«zÖ:ñ ð Ð'Ð'rT   r�   c                 óZ   • U R                   R                  U5      nUc  U R                  $ U$ rH   )rð   Útoken_to_idÚunk_token_id)r  r�   r§   s      rR   Ú#_convert_token_to_id_with_added_vocÚ5TokenizersBackend._convert_token_to_id_with_added_voc@  s,   € Ø—‘×+Ñ+¨EÓ2ˆØ‰=Ø×$Ñ$Ð$ØˆrT   r§   c                 óJ   • U R                   R                  [        U5      5      $ rH   )rð   rÂ   rž   )r  r§   s     rR   Ú_convert_id_to_tokenÚ&TokenizersBackend._convert_id_to_tokenF  s   € Ø�‰×*Ñ*¬3¨u«:Ó6Ð6rT   Ú
new_tokensc                 ó|   • U(       a  U R                   R                  U5      $ U R                   R                  U5      $ rH   )rð   Úadd_special_tokensr  )r  r«  rJ  s      rR   Ú_add_tokensÚTokenizersBackend._add_tokensI  s/   € ÞØ—?‘?×5Ñ5°jÓAÐAà�‰×)Ñ)¨*Ó5Ð5rT   rI  c                 ó8   • U R                   R                  U5      $ )aç  
Returns the number of added tokens when encoding a sequence with special tokens.

<Tip>

This encodes a dummy input and checks the number of added tokens, and is therefore not efficient. Do not put
this inside your training loop.

</Tip>

Args:
    pair (`bool`, *optional*, defaults to `False`):
        Whether the number of added tokens should be computed in the case of a sequence pair or a single
        sequence.

Returns:
    `int`: Number of special tokens added to sequences.
)rð   Únum_special_tokens_to_add)r  rI  s     rR   r±  Ú+TokenizersBackend.num_special_tokens_to_addO  s   € ð& �‰×8Ñ8¸Ó>Ð>rT   rœ  Úskip_special_tokensc                 ó@  • [        U[        5      (       a  U R                  R                  U5      $ / nU(       a  [	        U R
                  5      O	[	        5       nU H?  n[        U5      nXT;   a  M  UR                  U R                  R                  U5      5        MA     U$ )aœ  
Converts a single index or a sequence of indices in a token or a sequence of tokens, using the vocabulary and
added tokens.

Args:
    ids (`int` or `list[int]`):
        The token id (or token ids) to convert to tokens.
    skip_special_tokens (`bool`, *optional*, defaults to `False`):
        Whether or not to remove special tokens in the decoding.

Returns:
    `str` or `list[str]`: The decoded token(s).
)rI   rž   rð   rÂ   r€   Úall_special_idsrM   )r  rœ  r³  r  Úids_to_skipr§   s         rR   Úconvert_ids_to_tokensÚ'TokenizersBackend.convert_ids_to_tokensd  s   € ô �cœ3×ÑØ—?‘?×.Ñ.¨sÓ3Ð3Øˆæ3F”c˜$×.Ñ.Ô/ÌCËEˆÛˆEÜ˜“JˆEØÓ#ÙØ�M‰M˜$Ÿ/™/×5Ñ5°eÓ<Ö=ñ	 ð
 ˆrT   Útextr­  c                 óH   • U R                   " SXUS.UD6R                  5       $ )N)r¹  Ú	text_pairr­  r´   )Ú_encode_plusr  )r  r¹  rI  r­  r„   s        rR   ÚtokenizeÚTokenizersBackend.tokenize~  s(   € Ø× Ò Ðl dÐOaÑlÐekÑl×sÑsÓuÐurT   Úpadding_strategyrØ   rÔ   r×   rÞ   rÜ   c                 óØ  • U R                   R                  nU R                   R                  nU[        R                  :X  a  Ub  U R                   R                  5         OdUUUR                  U R                  S.n	Uc  Sn
O"U	 Vs0 s H  o»UR                  US5      _M     n
nX©:w  a  U R                   R                  " S0 U	D6  U[        R                  :X  a  Ub  U R                   R                  5         ggU[        R                  :X  a  UOSnUUb  UOU R                  U R                  U R                   U R"                  US.n	X‰:w  a  U R                   R$                  " S0 U	D6  ggs  snf )aí  
Define the truncation and the padding strategies for fast tokenizers (provided by HuggingFace tokenizers
library) and restore the tokenizer settings afterwards.

The provided tokenizer has no padding / truncation strategy before the managed section. If your tokenizer set a
padding / truncation strategy before, then it will be reset to no padding / truncation when exiting the managed
section.

Args:
    padding_strategy ([`~utils.PaddingStrategy`]):
        The kind of padding that will be applied to the input
    truncation_strategy ([`~tokenization_utils_base.TruncationStrategy`]):
        The kind of truncation that will be applied to the input
    max_length (`int`):
        The maximum size of a sequence.
    stride (`int`):
        The stride to use when handling overflow.
    pad_to_multiple_of (`int`, *optional*):
        If set will pad the sequence to a multiple of the provided value. This is especially useful to enable
        the use of Tensor Cores on NVIDIA hardware with compute capability `>= 7.5` (Volta).
    padding_side (`str`, *optional*):
        The side on which the model should have padding applied. Should be selected between ['right', 'left'].
        Default value is picked from the class attribute of the same name.
N)rÔ   r×   rÙ   rÖ   )rÝ   rÖ   Úpad_idrU   rÛ   rÞ   r´   )rð   rn   rm   r   ÚDO_NOT_TRUNCATEró   r\  rÕ   rj   rò   r    Ú
DO_NOT_PADÚ
no_paddingÚ
MAX_LENGTHrÜ   Úpad_token_idrU   rÚ   rô   )r  r¿  rØ   rÔ   r×   rÞ   rÜ   r  r  ÚtargetÚcurrentrv  rÝ   s                rR   Úset_truncation_and_paddingÚ,TokenizersBackend.set_truncation_and_padding�  sR  € ðB —o‘o×0Ñ0ˆØ—?‘?×*Ñ*ˆàÔ"4×"DÑ"DÓDØÑ&Ø—‘×-Ñ-Ô/øð )Ø Ø/×5Ñ5Ø!×1Ñ1ñ	ˆFð Ñ"Ø‘á@FÓGÂ¸1˜kŸo™o¨a°Ó6Ò6Á�ÐGàÓ Ø—‘×1Ò1Ñ;°FÒ;àœ×9Ñ9Ó9ØÑ#Ø—‘×*Ñ*Õ,ð $ð $4´×7QÑ7QÓ#Q‘ZÐW[ˆFà Ø-9Ñ-E™\È4×K\ÑK\Ø×+Ñ+Ø!Ÿ^™^Ø#×5Ñ5Ø&8ñˆFð Ó!Ø—‘×.Ò.Ñ8°Ó8ð "ùò% Hs   ÂE'r   r»  Úis_split_into_wordsÚreturn_tensorsrù   c                 óv  • S nU" U5      (       d  [        S5      eUb  U" U5      (       d  [        S5      eU(       a@  [        U[        [        45      =(       a"    U=(       a    [        US   [        [        45      nO[        U[        [        45      nU(       ay  [        U[        5      (       a  [        S5      eUb<  [        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      eUb  [        [        X5      5      OUnOU(       a  X4/OU/n[        U[        [        45      (       d  [        S[        U5       S	35      eU R                  UUUUU	U
S
9  Uc  U R                  nU R                  R                  U:w  a  UU R                  l        U R                  R                  UUUS9nU Vs/ s H  nU R                  UUUUUUUUS9PM     nn0 nUS   S    H.  nU VVVs/ s H  u  nnUU     H  nUPM     M     n nnnU UU'   M0     U VVVs/ s H  u  nnU  H  nUPM     M     n!nnnU(       a4  / n"[        U5       H  u  n#u  n$nU"U#/[        U$S   5      -  -  n"M      U"US'   US    H  n%U R!                  U%UU5        M     [#        UU!US9n&U(       dq  Ucn  U(       dg  [#        U&R%                  5        VV's0 s H5  u  nn'U[        U'5      S:”  a  [        U'S   [        5      (       a  U'S   OU'_M7     sn'nU&R&                  5      n&U&$ s  snf s  snnnf s  snnnf s  sn'nf )Nc                 óþ  • [        U [        5      (       a  g[        U [        [        45      (       aÌ  [	        U 5      S:X  a  g[        U S   [        5      (       a  g[        U S   [        [        45      (       a„  [	        U S   5      S:X  d  [        U S   S   [        5      (       a  g[        U S   S   [        [        45      (       a4  [	        U S   S   5      S:H  =(       d    [        U S   S   S   [        5      $ ggg)NTr   F)rI   rN   rJ   rK   r    )r  s    rR   Ú_is_valid_text_inputÚ<TokenizersBackend._encode_plus.<locals>._is_valid_text_inputä  sÑ   € Ü˜!œS×!Ñ!ØÜ˜A¤¤e˜}×-Ñ-Ü�q“6˜Q“;ØÜ  !¡¤c×*Ñ*ØÜ  !¡¤t¬U m×4Ñ4Ü˜1˜Q™4“y A“~¬°A°a±D¸±G¼S×)AÑ)AØ#Ü# A a¡D¨¡G¬d´E¨]×;Ñ;Ü" 1 Q¡4¨¡7›|¨qÑ0×O´J¸qÀ¹tÀA¹wÀq¹zÌ3Ó4OÐOà$à àrT   zêtext input must be of type `str` (single example), `list[str]` (batch or single pretokenized example) or `list[list[str]]` (batch of pretokenized examples) or `list[tuple[list[str], list[str]]]` (batch of pretokenized sequence pairs).r   zdwhen tokenizing batches of text, `text_pair` must be a list or tuple with the same length as `text`.zbatch length of `text`: z- does not match batch length of `text_pair`: Ú.z:batch_text_or_text_pairs has to be a list or a tuple (got Ú))r¿  rØ   rÔ   r×   rÞ   rÜ   )r­  Úis_pretokenized)r0   r�  rŽ  r�  r�  r‘  r’  r“  r—  Úoverflow_to_sample_mapping)Útensor_type)rñ   rI   rJ   rK   rN   Ú	TypeErrorr    Úzipr2   rÉ  rù   rð   rú   Úencode_batchr¡  rs   Ú&_eventual_warn_about_too_long_sequencer   r�   rŸ  )(r  r¹  r»  r­  r¿  rØ   rÔ   r×   rË  rÞ   rÜ   rÌ  r�  rŽ  r�  r�  r‘  r’  r“  rù   r„   rÏ  Ú
is_batchedÚbatch_text_or_text_pairsrŸ  r0   Útokens_and_encodingsÚsanitized_tokensr•   rŽ   r  r“   ÚstackÚsanitized_encodingsrÔ  r�   Útoksr—  Úbatched_outputr\  s(                                           rR   r¼  ÚTokenizersBackend._encode_plusÌ  s«  € ò0	ñ( $ D×)Ñ)ÜðWóð ð
 Ñ Ñ)=¸i×)HÑ)HÜðWóð ö Ü# D¬4´¨-Ó8×h¸T×hÄjÐQUÐVWÑQXÔ[_ÔafÐZgÓFh‰Jä# D¬4´¨-Ó8ˆJæä˜)¤S×)Ñ)Üðóð ð Ñ$¬¨T«´c¸)³nÓ)DÜ Ø.¬s°4«y¨kð :Ü˜I›Ð' qð*óð ð FOÑEZ¤t¬C°Ó,@Ô'AÐ`dÑ$ö ?H¨Ð(9Ñ':ÈdÈVÐ$ô Ð2´U¼D°M×BÑBÜØLÌTÐRjÓMkÐLlÐlmÐnóð ð 	×'Ñ'Ø-Ø 3Ø!ØØ1Ø%ð 	(ñ 	
ð  Ñ'Ø#'×#<Ñ#<Ð à�?‰?×0Ñ0Ð4HÓHØ4HˆD�O‰OÔ1ð —O‘O×0Ñ0Ø$Ø1Ø/ð 1ð 
ˆ	ñ$ &ó 
ò &�ð ×"Ñ"Ø!Ø&;Ø&;Ø*CØ+EØ'=Ø+Øð #ó 	ñ &ð 	ð  
ð ÐØ'¨Ñ*¨1Ô-ˆCÙ&:ÕNÒ&:™7˜4 ÀDÈÅI¸q“QÁI‘QÑ&:ˆEÒNØ$)Ð˜SÓ!ñ .ñ 1EÕSÒ0D¡W Q¨ÌdÈ›qÉd™qÑ0DÐÒSö %Ø)+Ð&Ü )Ð*>Ö ?‘�‘9�D˜!Ø*¨q¨c´C¸¸[Ñ8IÓ4JÑ.JÑJÒ*ñ !@à=WÐÐ9Ñ:à)¨+Ô6ˆIØ×7Ñ7¸	À:ÈwÖWñ 7ô 'Ð'7Ð9LÐZhÑiˆö ˜nÑ4Ö=VÜ*ð '5×&:Ñ&:Ô&<ôâ&<™
˜˜Uð ¤c¨%£j°1£n¼ÀEÈ!ÁHÌd×9SÑ9S˜% š(ÐY^Ò^Ù&<òð ×(Ñ(óˆNð ÐùòW 
ùô" OùäSùó"s   Ç L"Ç7L'
È&L.Ë<L5
r  c                 óœ   • U R                   R                  b%  U R                   R                  R                  U5      $ SR                  U5      $ )NrA   )rˆ  r‹  Údecoder-  )r  r  s     rR   Úconvert_tokens_to_stringÚ*TokenizersBackend.convert_tokens_to_stringf  sJ   € ð ×%Ñ%×-Ñ-Ñ9ð ×"Ñ"×*Ñ*×1Ñ1°&Ó9ð	
ð —‘˜&Ó!ð	
rT   Ú	token_idsÚclean_up_tokenization_spacesc                 óì  • UR                  SS 5        [        U[        5      (       a  U/n[        U[        5      (       a  US   nU R                  R                  XS9nUb  UOU R                  nU(       a~  [        U R                  R                  5      R                  S:X  a@  U R                  (       d/  [        R                  SU R                  R                   S35        U$ U R                  U5      nU$ )NÚuse_source_tokenizerr—  )r³  r   z=Ignoring clean_up_tokenization_spaces=True for BPE tokenizer aE  . The clean_up_tokenization post-processing step is designed for WordPiece tokenizers and is destructive for BPE (it strips spaces before punctuation). Set clean_up_tokenization_spaces=False to suppress this warning, or set clean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_output=True to force cleanup anyway.)r`   rI   rž   r_   rð   rä  rè  r2   rˆ  r1   rr   ÚGclean_up_tokenization_spaces_for_bpe_even_though_it_will_corrupt_outputr}   Úwarning_oncer  Úclean_up_tokenization)r  rç  r³  rè  r„   r¹  s         rR   Ú_decodeÚTokenizersBackend._decodem  sê   € ð 	�
‰
Ð)¨4Ô0ä�i¤×%Ñ%Ø"˜ˆIÜ�i¤×&Ñ&Ø! +Ñ.ˆIØ�‰×%Ñ% iÐ%ÐYˆð ,Ñ7ñ )à×2Ñ2ð 	%ö
 (ô
 �T×+Ñ+×1Ñ1Ó2×;Ñ;¸uÓDØ×d×dä×#Ñ#ðØŸ™×/Ñ/Ð0ð 1-ð-ôð ˆð ×1Ñ1°$Ó7�àˆrT   Ú
file_namesc                 óÀ   • [        U5      n[        R                  R                  X(       a  US-   OS[        -   5      nU R
                  R                  U5        X%4-   nU$ )Nr*  rÎ   )rN   ra   rb   r-  ÚTOKENIZER_FILErˆ  Úsave)r  r'  rð  r3  r(  r&   s         rR   Ú_save_pretrainedÚ"TokenizersBackend._save_pretrained˜  s[   € ô ˜^Ó,ˆäŸ™Ÿ™Øµo˜_¨sÒ2È2ÔQ_Ñ_ó
ˆð 	×Ñ×#Ñ# NÔ3ØÐ"3Ñ3ˆ
àÐrT   c           
      ó
  • [         R                  " U R                  R                  5       5      nUR	                  S5      nUR	                  S5      n	Sn
US   S   S:X  a  0 US   S'   / US   S'   OuUS   S   S	:X  a?  US   S
   b5  US   S
   nUS   S   U   S   n
Ub	  X¥;   a  XZ   n
SUS   S
'   U
S//US   S'   O*US   S   S;   a	  0 US   S'   O[        SUS   S    S35      eUb%  SUS   ;   a  US   S   U;   a  XWS   S      US   S'   [        R                  " [         R                  " U5      5      n/ nU Hl  nUR	                  SS5      nUR	                  SS5      nUS   S   S	:w  a	  U(       d  M<  Ub  US   U;   a
  X^S      US'   UR                  [        S(0 UD65        Mn     Ub  UR                  U5        US   S   S:X  a  SU;  a  US   S   b  US   S   US'   US   S   S:X  a  SU;  a  US   S   b  US   S   US'   US   S   S	:X  a  U
b  X¦S'   US   b_  US   S   S:X  d2  US   S   S:X  aG  SUS   ;   a>  [        S US   S    5       5      (       a!  [        R                  R                  5       US'   [         US   S      nU" S(X-S.UD6nUR#                  XUS9  U	Gb@  [         R                  " UR                  5       5      nSU	;   aš  U	S    H‘  nU	S   U   S   nUb"  U Vs/ s H  nUR%                  UU5      PM     nnUU	S   U   S'   U H"  nUR'                  U5      nUb  M  [        S 5      e   U Vs/ s H  nUR'                  U5      PM     snU	S   U   S!'   M“     S" HG  nUU	;   d  M  U	U   u  nnUb  UU;   a  UU   nUR'                  U5      nUc  [        S 5      eUU/U	U'   MI     U	US'   [        R                  " [         R                  " U5      5      nU R(                  R+                  5       n[,        R.                   H�  n[1        U U5      c  M  [1        U U5      nUb  UU;   a  UU   nU R2                  R%                  US5      n[5        U[        5      (       a;  [        UUR6                  UR8                  UR:                  UR<                  S#S$9UU'   M˜  UUU'   MŸ     U R>                  (       a  U R>                  R+                  5       O/ nUb  UR                  U5        [A        U5      S:”  a  UUS%'   XÆS&'    U RB                  " S(0 UD6$ s  snf s  snf ! [D         aG  nS'[G        U5      ;   a2  UR	                  S&S5        U RB                  " S(0 UD6nUUl        Us SnA$ e SnAff = f))u¾  
Trains a tokenizer on a new corpus with the same defaults (in terms of special tokens or tokenization pipeline)
as the current one.

Args:
    text_iterator (generator of `list[str]`):
        The training corpus. Should be a generator of batches of texts, for instance a list of lists of texts
        if you have everything in memory.
    vocab_size (`int`):
        The size of the vocabulary you want for your tokenizer.
    length (`int`, *optional*):
        The total number of sequences in the iterator. This is used to provide meaningful progress tracking
    new_special_tokens (list of `str` or `AddedToken`, *optional*):
        A list of new special tokens to add to the tokenizer you are training.
    special_tokens_map (`dict[str, str]`, *optional*):
        If you want to rename some of the special tokens this tokenizer uses, pass along a mapping old special
        token name to new special token name in this argument.
    kwargs (`dict[str, Any]`, *optional*):
        Additional keyword arguments passed along to the trainer from the ðŸ¤— Tokenizers library.

Returns:
    [`PreTrainedTokenizerFast`]: A new tokenizer of the same type as the original one, trained on
    `text_iterator`.

r5   r6   Nr1   r2   r   r3   r4   r   r¾   r   g        )r$   r%   z;This method does not support this type of tokenizer (found z-) only BPE, Unigram, WordLevel and WordPiece.rV   ré   Úidr›   Úcontinuing_subword_prefixÚend_of_word_suffixrê   Ú	ByteLevelr<   Úpretokenizersc              3   ó2   #   • U  H  nUS    S:H  v •  M     g7f)r2   rú  Nr´   )Ú.0Úpretokenizers     rR   Ú	<genexpr>Ú<TokenizersBackend.train_new_from_iterator.<locals>.<genexpr>  s!   é € ð â(X˜ð ! Ñ(¨KÖ7Ú(Xùs   ‚Úinitial_alphabet)r  rJ  )rÝ   ÚtrainerrJ  r  zQAttempted to set a token in the post processor that does not exist in the mappingrœ  )r‚   rA  T)Úsingle_wordÚlstripÚrstripr`  ré   r]   r-   z7multiple values for keyword argument 'tokenizer_object'r´   )$rh   Úloadsrð   Úto_strr`   rñ   re   rk   rl   rM   r   rL   ÚanyÚpre_tokenizers_fastrú  ÚalphabetÚMODEL_TO_TRAINER_MAPPINGÚtrain_from_iteratorrj   r¤  rì   rí   r   ÚSPECIAL_TOKENS_ATTRIBUTESrt   rÿ   rI   r  r  r  r`  r]   r    r  rÖ  rN   )r  Útext_iteratorr  rÝ   Únew_special_tokensÚspecial_tokens_mapr„   rˆ   r5   r6   rV   r¾   rÐ   rJ  Úadded_tokenré   r  Útrainer_classr  Útrained_tokenizer_jsonr•   r  r�   r¤   rª   Úspecial_token_fullr]   r“   Únew_tokenizers                                rR   Útrain_new_from_iteratorÚ)TokenizersBackend.train_new_from_iterator©  s½  € ôD Ÿš D§O¡O×$:Ñ$:Ó$<Ó=ˆà%×)Ñ)¨.Ó9ˆà'×+Ñ+Ð,<Ó=ˆàˆ	à˜'Ñ" 6Ñ*¨eÓ3Ø/1ˆN˜7Ñ# GÑ,Ø02ˆN˜7Ñ# HÒ-Ø˜GÑ$ VÑ,°	Ó9Ø˜gÑ& xÑ0Ñ<Ø'¨Ñ0°Ñ:�Ø*¨7Ñ3°GÑ<¸VÑDÀQÑG�	Ø%Ñ1°iÓ6UØ 2Ñ =�IØ45�˜wÑ'¨Ñ1Ø5>ÀÐ4DÐ3E�˜wÑ'¨Ñ0øØ˜GÑ$ VÑ,Ð0JÓJØ/1ˆN˜7Ñ# GÒ,äØMÈnÐ]dÑNeÐflÑNmÐMnð o>ð >óð ð Ñ*Ø˜~¨gÑ6Ó6Ø˜wÑ'¨Ñ4Ð8JÓJà3EÐU\ÑF]Ð^iÑFjÑ3kˆN˜7Ñ# KÑ0ä!×*Ò*¬4¯:ª:°nÓ+EÓFˆ	ð ˆÛ'ˆKØ!—o‘o i°Ó6ˆGØ—‘  dÓ+ˆAØ˜gÑ& vÑ.°)Ó;ÆGÙØ!Ñ-°+¸iÑ2HÐL^Ó2^Ø);È	Ñ<RÑ)S�˜IÑ&Ø×!Ñ!¤*Ñ";¨{Ñ";Ö<ñ (ð Ñ)Ø×!Ñ!Ð"4Ô5ð ˜7Ñ# FÑ+¨uÓ4Ø+°6Ó9Ø˜wÑ'Ð(CÑDÑPà2@ÀÑ2IÐJeÑ2fˆFÐ.Ñ/à˜7Ñ# FÑ+¨uÓ4Ø$¨FÓ2Ø˜wÑ'Ð(<Ñ=ÑIà+9¸'Ñ+BÐCWÑ+XˆFÐ'Ñ(Ø˜'Ñ" 6Ñ*¨iÓ7¸IÑ<QØ"+�;ÑØ˜/Ñ*Ñ6à˜Ñ/°Ñ7¸;ÓFØ! /Ñ2°6Ñ:¸jÓHØ# ~°oÑ'FÓFÜñ à(6°Ñ(GÈÒ(Xó÷ ñ ô
 .A×-JÑ-J×-SÑ-SÓ-U�Ð)Ñ*ä0°ÀÑ1HÈÑ1PÑQˆÙÐ_¨:Ñ_ÐX^Ñ_ˆØ×%Ñ% mÈGÐ%ÑTàÒ%Ü%)§Z¢Z°	×0@Ñ0@Ó0BÓ%CÐ"à >Ó1Ø)Ð*:Ô;�CØ+Ð,<Ñ=¸cÑBÀ8ÑL�FØ)Ñ5ÙTZÓ![ÒTZÈ5Ð"4×"8Ñ"8¸ÀÖ"FÑTZ˜Ð![ØFL�NÐ#3Ñ4°SÑ9¸(ÑCÛ!'˜Ø#,×#8Ñ#8¸Ó#?˜Ø#Ó+Ü",Ø só#ð ñ "(ñ ouÓCuÒntÐejÀI×DYÑDYÐZ_ÖD`ÑntÑCu�NÐ#3Ñ4°SÑ9¸%Ó@ñ <ó "0�Ø  NÕ2Ø-¨mÑ<‘H�E˜1Ø)Ñ5¸%ÐCUÓ:UØ 2°5Ñ 9˜Ø(×4Ñ4°UÓ;�HØÑ'Ü(Øoóð ð 6;¸HÐ4E�N =Ó1ñ "0ð 8FÐ"Ð#3Ñ4Ü%×.Ò.¬t¯zªzÐ:PÓ/QÓRˆIà×!Ñ!×&Ñ&Ó(ˆä,×FÔFˆEÜ�t˜UÓ#Ó/Ü '¨¨eÓ 4�Ø%Ñ1°mÐGYÓ6YØ$6°}Ñ$E�Mà%)×%=Ñ%=×%AÑ%AÀ%ÈÓ%NÐ"ÜÐ0´*×=Ñ=ä$.Ø%Ø$6×$BÑ$BØ1×8Ñ8Ø1×8Ñ8Ø#5×#@Ñ#@Ø $ñ%�F˜5“Mð %2�F˜5“Mñ% Gð* DH×C\×C\˜t×8Ñ8×=Ñ=Ô?ÐbdÐØÑ)Ø ×'Ñ'Ð(:Ô;ÜÐ#Ó$ qÓ(Ø-AˆFÐ)Ñ*ð &/Ð!Ñ"ð	Ø—>’>Ñ+ FÑ+Ð+ùò{ "\ùò Dvøôj ó 	àHÌCÐPQËFÓRð —
‘
Ð-¨tÔ4Ø $§¢Ñ 8°Ñ 8�Ø+4�Ô(Ø$Õ$ð ûð	ús0   Ë4T'Í	T,ÔT1 Ô1
VÔ;;U=Õ6VÕ<U=Õ=Vc
                 óv  ^^• SSK mSSKJn  SSKJn  SSKJnJm  U" SS9S[        S	[        4UU4S
 jj5       nU(       d  [        5       (       a  SnUGbR  U(       d  U(       GdC  U" U5      (       Ga5  U" USUUUSSUS9nSnUb¸  [        USS9 n[        R                  " U5      nSSS5        WR                  S5      nUR                  S5      nU(       a7  UR                  U5      UR                  S5      :  a  U(       a  Ub  US;  a  U$ O-U(       a&  UR                  U5      UR                  S5      :¼  a  U$ SnU(       d  U(       Gd\  U" U5      (       GaN  U(       a  SU;   a  [!        USUS   5        U	c:  [#        USS5      (       d(  [!        USS5        [$        R'                  SU S35        U$ U	SL d  [#        USS5      (       aÝ  [!        USS5        SSKnUR*                  R-                  UR/                  S5      SS9nUR0                  n[3        UUR*                  R4                  5      (       a  UUR0                  S'   U$ [3        UUR*                  R6                  5      (       a  UR*                  R9                  SSS9nUR*                  R5                  UU/5      Ul        U$ ! , (       d  f       GN= f)a6  
Patches mistral related tokenizers with incorrect regex if detected
    1) Local file with an associated config saved next to it
        >> Model type one of the mistral models (on older versions)
    2) Remote models on the hub from official mistral models
        >> Tags including `base_model:.*mistralai`
r   N)Ú	lru_cache)Úversion)r   r"   é€   )ÚmaxsizeÚmodel_idrF   c                 óÐ   >•  T" 5       R                  U 5      nUR                  b1  TR                  SSR	                  UR                  5      5      (       a  gg! [         a     gf = f)NFzbase_model:.*mistralairÎ   T)Ú
model_infor|   ÚtagsÚsearchr-  )r  r1   r"   Úres     €€rR   Úis_base_mistralÚ?TokenizersBackend._patch_mistral_regex.<locals>.is_base_mistralŠ  s_   ø€ ðÙ›×+Ñ+¨HÓ5�ð �z‰zÑ%Ø—9‘9Ð5°r·w±w¸u¿z¹zÓ7J×KÑKØØøô ó áðús   ƒA Á
A%Á$A%Tzconfig.jsonF)Ú	cache_dirr�   Úlocal_files_onlyÚ%_raise_exceptions_for_missing_entriesÚ'_raise_exceptions_for_connection_errorsÚ_commit_hashr.   r/   Útransformers_versionr‰   z5.0.0)r8  Úmistral3ÚvoxtralÚ	ministralÚpixtralrë   z$The tokenizer you are loading from 'a  ' with an incorrect regex pattern: https://huggingface.co/mistralai/Mistral-Small-3.1-24B-Instruct-2503/discussions/84#69121093e8b480e709447d5e. This will lead to incorrect tokenization. You should set the `fix_mistral_regex=True` flag when loading this tokenizer to fix this issue.zÓ[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]*[\p{Ll}\p{Lm}\p{Lo}\p{M}]+|[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]+[\p{Ll}\p{Lm}\p{Lo}\p{M}]*|\p{N}| ?[^\s\p{L}\p{N}]+[\r\n/]*|\s*[\r\n]+|\s+(?!\S)|\s+Úisolated)ÚpatternÚbehavior)rÉ   Ú	use_regex)r"  Ú	functoolsr  Ú	packagingr  Útransformers.utils.hubr   r"   rN   Úboolr   rg   rh   ri   rj   ÚparseÚsetattrrt   r}   r~   rà   Úpre_tokenizersÚSplitÚRegexrê   rI   r<   Ú	Metaspacerú  )r‚   rÐ   Úpretrained_model_name_or_pathr�   r%  r&  r)  Úis_localrì   rë   r„   r  r  r   r#  Ú_config_fileÚmistral_config_detectedÚfÚ_configr*  Útransformers_model_typerà   Úsplit_pretokenizerÚcurrent_pretokenizerr"   r"  s                           @@rR   r  Ú&TokenizersBackend._patch_mistral_regexn  sÎ  ù€ ó* 	Ý'å%ç>á	˜3Ñ	ð		¤cð 		¬d÷ 		ó 
 ð		ö œ×0Ñ0ØˆHà(Ò4ÞŸX©/Ð:W×*XÒ*Xá&Ø-ØØ#ØØ!1Ø6;Ø8=Ø)ñ	ˆLð ',Ð#ØÑ'Ü˜,°Ò9¸QÜ"Ÿiši¨›l�G÷ :à'.§{¡{Ð3IÓ'JÐ$Ø*1¯+©+°lÓ*CÐ'ö
 (¨G¯M©MÐ:NÓ,OÐRY×R_ÑR_Ð`gÓRhÓ,hæ Ø3Ñ?Ø3ð óð  )Ð(øÞ)¨g¯m©mÐ<PÓ.QÐU\×UbÑUbÐcjÓUkÓ.kØ$Ð$à*.Ð'æ&¯x¹OÐLi×<jÒ<jæÐ#6¸+Ó#EÜ˜IÐ':¸KÐH[Ñ<\Ô]ð %Ñ,´W¸YÐH[Ð]b×5cÑ5cÜ˜IÐ':¸EÔBÜ—N‘NØ>Ð?\Ð>]ð ^eð eôðH Ðð? '¨$Ò.´'¸)ÐEXÐZ_×2`Ñ2`Ü˜IÐ':¸DÔAÛ%à)3×)BÑ)B×)HÑ)HØ *× 0Ñ 0ð só!ð ",ð	 *Ið *Ð&ð ,5×+BÑ+BÐ(ä!Ð"6¸
×8QÑ8Q×8ZÑ8Z×[Ñ[à5G˜	×/Ñ/°Ñ2ð" Ðô &Ð&:¸J×<UÑ<U×<_Ñ<_×`Ñ`Ø3=×3LÑ3L×3VÑ3VØ16À%ð 4Wð 4Ð0ð
 3=×2KÑ2K×2TÑ2Tà 2Ø 4ðó3˜	Ô/ð Ð÷O :Ö9ús   ÂJ)Ê)
J8)rõ   rö   r÷   rð   rá   râ   rÉ   r'   )FrH   )NNFN)NNFFFFT)NF)FN)NN)NNN)NNFNFNN)Hrr   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r.  r$  r1   rð   Úclassmethodr–   rN   r_   r   r   r{   r,   Úpropertyr6  r!  r%  rK   r1  ra   ÚPathLikerD  r  râ   rá   Úsetterrb  rž   r  rj  r3   rþ   r   rš   Ú_added_tokens_encoderÚ_added_tokens_decoderr  r‚  r…  re   rˆ  ÚDecoderFastr‹  ÚEncodingFastrJ   r¡  r¦  r©  r®  r±  r·  r½  r    r   rÉ  rÃ  rÂ  r   r   r   r¼  rå  rî  rô  r  r  Ú__static_attributes__Ú__classcell__)r  s   @rR   r)   r)   W   s  ø† ñ
ð *ÐØ€EØ€Jàódó ðdðL ð!°ð !À4ÈÈSÈÁ>ð !ÐVZÐ[^Ð`cÐ[cÑVdó !ó ð!ðF ð9°Sð 9ÈÈSÐRUÈXÉð 9Ð[_Ð`cÐehÐ`hÑ[ió 9ó ð9õvh)ðT ð˜ó ó ðð ð¨ó ó ðñ!¨cð !ÀCÈ$ÁJð !ÐZ_Ð`cÑZdõ !ð  &*Ø&*Ø!Ø"&ñB
à˜bŸk™kÑ)ðB
ð ˜d‘{ðB
ð ˜t™ð	B
ð
 ðB
ð ˜4‘ZðB
ð 
ˆs�Cˆx‰÷B
ð B
òH
ð4 ñ6ó ð6ð ñ6ó ð6ð ×Ññ%ó ð%ð ×Ññ%ó ð%ò)ð@ ðG˜Có Gó ðGðA˜4  S ™>ô Að ð �t˜C ˜H‘~ó  ó ð ð ðn d¨3°¨8¡nó nó ðnð ð: d¨3°
¨?Ñ&;ó :ó ð:ð 1ÐØ0Ððn  c¨3 h¡ô nð˜$ô ðF˜ô Fð ð =ó ó ðð ð'˜ó 'ó ð'ð .2Ø-1Ø*/Ø+0Ø',Ø#Øñ-(àð-(ð  $ d™{ð-(ð  $ d™{ð	-(ð
 $(ð-(ð %)ð-(ð !%ð-(ð ð-(ð ð-(ð 
ˆt�C˜�H‰~˜t LÑ1Ð1Ñ	2õ-(ð^¸ð Àô ð7¨#ð 7°#¸±*ô 7ñ6 d¨3°Ñ+;Ñ&<ð 6ÐWZõ 6ñ?¨dð ?¸sõ ?ñ*¨¨t°C©y©ð Ètð Ð`cÐfjÐknÑfoÑ`oõ ñ4v˜Sð v¨¨d©
ð vÈtð vÐjnÐorÑjsõ vðI9à)ðI9ð 0ðI9ð ð	I9ð
 ðI9ð   $™JðI9ð ˜D‘jôI9ð\ gkØ#'Ø,;×,FÑ,FØ2D×2TÑ2TØ!%ØØ$)Ø)-Ø#'Ø&*Ø-1Ø-1Ø*/Ø+0Ø',Ø#ØØ,0ñ)XàÐ+Ñ+¨d°9©oÑ=ÀÐEVÑ@WÑWðXð Ð0Ñ0°4¸	±?ÑBÀTÐJ[ÑE\Ñ\Ð_cÑcðXð !ð	Xð
 *ðXð 0ðXð ˜$‘JðXð ðXð "ðXð   $™JðXð ˜D‘jðXð ˜t™ðXð  $ d™{ðXð  $ d™{ðXð $(ðXð  %)ð!Xð" !%ð#Xð$ ð%Xð& ð'Xð( # T™kð)Xð, 
õ-Xðt
¨t°C©yð 
¸Sô 
ð %*Ø48ñ	)à˜˜c™‘?ð)ð "ð)ð '+¨T¡kð	)ð 
õ)ð^ &*Ø&*ñà˜bŸk™kÑ)ðð ˜#˜s˜(‘Oðð ˜d‘{ð	ð
 ˜t™ðð 
ˆs�Cˆx‰õð* ØØôCðJ ð
 ØØØØØØóBó öBrT   r)   )GrJ  rí   rh   ra   Úcollectionsr   Úcollections.abcr   Úshutilr   Útypingr   Útokenizers.pre_tokenizersr9  r	  Úhuggingface_hubr   rà   r   r	   r
   rR  r   re   Útokenizers.decodersr   rQ  Útokenizers.modelsr   r   Útokenizers.trainersr   r   r   r   r5  r   rœ   r   Úintegrations.ggmlr   Úintegrations.mistral.constantsr   Úmodeling_gguf_pytorch_utilsr   Útokenization_utils_baser   r   r   r   r   r   r   Úutilsr    r!   r"   r#   Ú
get_loggerrr   r}   rò  ÚSPECIAL_TOKENS_MAP_FILEÚTOKENIZER_CONFIG_FILEÚTIKTOKEN_VOCAB_FILEÚADDED_TOKENS_FILErz   r  r.  r)   ÚPreTrainedTokenizerFastr´   rT   rR   Ú<module>ri     s   ðñó
 Û Û 	Ý #Ý $Ý Ý å 7Ý +ß -Ý /Ý 1Ý 6ß *ß ^Ó ^å .å 0Ý 5Ý DÝ =÷÷ ñ ÷ HÓ Gð 
×	Ò	˜HÓ	%€ð "€Ø3Ð Ø/Ð Ø'Ð ð (Ð ð (Ð à ð ñ Ð ð ØØ!Ø!ñ	Ð ð (6ÐEXÑYÐ ñ Ð,Ó-ôYÐ/ó Yó .ðYðz, ,Ñ rT   