Ë
    T^(h3N  ã                   óà   — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZmZ ddlZddlmZ ddlmZ ddlmZ erdd	lmZ dd
lmZ  ej0                  e«      ZddiZdZ G d„ de«      ZdgZy)z Tokenization class for model T5.é    N)Úcopyfile)ÚTYPE_CHECKINGÚAnyÚDictÚListÚOptionalÚTupleé   )Úimport_protobuf)ÚPreTrainedTokenizer)Ú
AddedToken)Ú	TextInput)ÚloggingÚ
vocab_filezspiece.modelu   â–�c            
       ó¸  ‡ — e Zd ZdZeZddgZ	 	 	 	 	 	 	 	 d#deee	e
f      ddfˆ fd„Zd$d„Zed	„ «       Zed
„ «       Zd„ Z	 d%dee   deee      dedee   fˆ fd„Zd„ Zd„ Zdee   dee   fd„Z	 d&dee   deee      dee   fd„Z	 d&dee   deee      dee   fd„Zd„ Zd„ Zdddee	   fˆ fd„Zed„ «       Zd„ Zd„ Z d„ Z!d„ Z"d&d e	d!ee	   de#e	   fd"„Z$ˆ xZ%S )'ÚT5TokenizeraÒ  
    Construct a T5 tokenizer. Based on [SentencePiece](https://github.com/google/sentencepiece).

    This tokenizer inherits from [`PreTrainedTokenizer`] which contains most of the main methods. Users should refer to
    this superclass for more information regarding those methods.

    Args:
        vocab_file (`str`):
            [SentencePiece](https://github.com/google/sentencepiece) file (generally has a *.spm* extension) that
            contains the vocabulary necessary to instantiate a tokenizer.
        eos_token (`str`, *optional*, defaults to `"</s>"`):
            The end of sequence token.

            <Tip>

            When building a sequence using special tokens, this is not the token that is used for the end of sequence.
            The token used is the `sep_token`.

            </Tip>

        unk_token (`str`, *optional*, defaults to `"<unk>"`):
            The unknown token. A token that is not in the vocabulary cannot be converted to an ID and is set to be this
            token instead.
        pad_token (`str`, *optional*, defaults to `"<pad>"`):
            The token used for padding, for example when batching sequences of different lengths.
        extra_ids (`int`, *optional*, defaults to 100):
           Add a number of extra ids added to the vocabulary for use as sentinels. These tokens are
            accessible as "<extra_id_{%d}>" where "{%d}" is a number between 0 and extra_ids-1. These tokens can be
            retrieved by calling get_sentinel_tokens method and token ids can be by calling get_sentinel_token_ids
            method
         additional_special_tokens (`List[str]`, *optional*):
            Additional special tokens used by the tokenizer.
        sp_model_kwargs (`dict`, *optional*):
            Will be passed to the `SentencePieceProcessor.__init__()` method. The [Python wrapper for
            SentencePiece](https://github.com/google/sentencepiece/tree/master/python) can be used, among other things,
            to set:

            - `enable_sampling`: Enable subword regularization.
            - `nbest_size`: Sampling parameters for unigram. Invalid for BPE-Dropout.

              - `nbest_size = {0,1}`: No sampling is performed.
              - `nbest_size > 1`: samples from the nbest_size results.
              - `nbest_size < 0`: assuming that nbest_size is infinite and samples from the all hypothesis (lattice)
                using forward-filtering-and-backward-sampling algorithm.

            - `alpha`: Smoothing parameter for unigram sampling, and dropout probability of merge operations for
              BPE-dropout.
        legacy (`bool`, *optional*):
            Whether or not the `legacy` behaviour of the tokenizer should be used. Legacy is before the merge of #24622
            and #25224 which includes fixes to properly handle tokens that appear after special tokens. A simple
            example:

            - `legacy=True`:
            ```python
            >>> from transformers import T5Tokenizer

            >>> tokenizer = T5Tokenizer.from_pretrained("google-t5/t5-base", legacy=True)
            >>> tokenizer.encode("Hello <extra_id_0>.")
            [8774, 32099, 3, 5, 1]
            ```
            - `legacy=False`:
            ```python
            >>> from transformers import T5Tokenizer

            >>> tokenizer = T5Tokenizer.from_pretrained("google-t5/t5-base", legacy=False)
            >>> tokenizer.encode("Hello <extra_id_0>.")  # the extra space `[3]` is no longer here
            [8774, 32099, 5, 1]
            ```
            Checkout the [pull request](https://github.com/huggingface/transformers/pull/24565) for more details.
        add_prefix_space (`bool`, *optional*, defaults to `False`):
            Whether or not to add an initial space to the input. This allows to treat the leading word just as any
            other word.

    Attributes:
        sp_model (`SentencePieceProcessor`):
            The *SentencePiece* processor that is used for every conversion (string, tokens and IDs).
    Ú	input_idsÚattention_maskNÚsp_model_kwargsÚreturnc
                 ó‚  •— t        |t        «      rt        |d¬«      n|}t        |t        «      rt        |d¬«      n|}t        |t        «      rt        |d¬«      n|}|€i n|| _        || _        || _        t        j                  di | j                  ¤Ž| _        | j                  j                  |«       |�q|D �cg c]  }dt        |«      v sŒ|‘Œ }}t        |«      dk  r!|t        |«      D �cg c]  }d|› d�‘Œ
 c}z  }nC|dkD  r>|t        |«      k7  r0t        d|› d|› d	�«      ‚t        |«      D �cg c]  }d|› d�‘Œ
 }}|}i | _        t        t        |«      «      D ]@  }t        d|› d�d
dddd
¬«      | j                  t        | j                  «      dz
  |z   |z
  <   ŒB |€%t        j                  d| j                   › d�«       d}|| _        | j%                  |
j'                  dd
«      «      | _        || _        || _        |	| _        t+        ‰| �X  d|||||| j                  ||	dœ|
¤Ž y c c}w c c}w c c}w )NT)Úspecialz
<extra_id_é   ú>r   zBoth extra_ids (z!) and additional_special_tokens (zk) are provided to T5Tokenizer. In this case the additional_special_tokens must include the extra_ids tokensF)Úsingle_wordÚlstripÚrstripr   Ú
normalizedz2You are using the default legacy behaviour of the a_  . This is expected, and simply means that the `legacy` (previous) behavior will be used so nothing changes for you. If you want to use the new behaviour, set `legacy=False`. This should only be set if you understand what it means, and thoroughly read the reason why this was added as explained in https://github.com/huggingface/transformers/pull/24565Ú	from_slow)Ú	eos_tokenÚ	unk_tokenÚ	pad_tokenÚ	extra_idsÚadditional_special_tokensr   ÚlegacyÚadd_prefix_space© )Ú
isinstanceÚstrr   r   r   Ú
_extra_idsÚspmÚSentencePieceProcessorÚsp_modelÚLoadÚlenÚrangeÚ
ValueErrorÚ_added_tokens_decoderÚloggerÚwarning_onceÚ	__class__r%   Úget_spm_processorÚpopr&   ÚsuperÚ__init__)Úselfr   r    r!   r"   r#   r$   r   r%   r&   ÚkwargsÚxÚextra_tokensÚir5   s                 €úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/t5/tokenization_t5.pyr9   zT5Tokenizer.__init__   sy  ø€ ô <FÀiÔQTÔ;U”J˜y°$Õ7Ð[dˆ	Ü;EÀiÔQTÔ;U”J˜y°$Õ7Ð[dˆ	Ü;EÀiÔQTÔ;U”J˜y°$Õ7Ð[dˆ	à%4Ð%<™rÀ/ˆÔà$ˆŒØ#ˆŒä×2Ñ2ÑJ°T×5IÑ5IÑJˆŒØ�‰×Ñ˜:Ô&à$Ð0Ø'@Ö[ !ÀLÔTWÐXYÓTZÒDZšAÐ[ˆLÐ[Ü�<Ó  1Ò$Ø)ÌÈyÓIYÖ-ZÀA°
¸1¸#¸QÒ.?Ò-ZÑZÑ)Ø˜Q’ 9´°LÓ0AÒ#AÜ Ø& y kÐ1RÐSlÐRmð nð óð ô 8=¸YÓ7GÖH°!˜j¨¨¨1Ò-ÐHˆLÐHØ(4Ð%ð &(ˆÔ"Ü”s˜<Ó(Ó)ò 	ˆAÜQ[Ø˜Q˜C˜qÐ!¨u¸TÈ$ÐX\ÐinôRˆD×&Ñ&¤s¨4¯=©=Ó'9¸AÑ'=À	Ñ'IÈAÑ'MÒNð	ð
 ˆ>Ü×ÑØDÀTÇ^Á^ÐDTð UJð Jôð ˆFàˆŒØ×.Ñ.¨v¯z©z¸+ÀuÓ/MÓNˆŒØ$ˆŒØ#ˆŒØ 0ˆÔä‰Ñð 
	
ØØØØØ&?Ø ×0Ñ0ØØ-ñ
	
ð ó
	
ùòI \ùâ-Zùò Is   Â=H2ÃH2Ã2H7Ä7H<c                 ó4  — t        j                  di | j                  ¤Ž}| j                  s|r|j	                  | j
                  «       |S t        | j
                  d«      5 }|j                  «       }t        d| j                  j                  › d�«      }|j                  j                  |«      }|j                  «       }d|_        |j                  j!                  |«       |j#                  «       }|j%                  |«       d d d «       |S # 1 sw Y   |S xY w)NÚrbzThe new behaviour of z (with `self.legacy = False`)Fr'   )r+   r,   r   r%   r.   r   ÚopenÚreadr   r5   Ú__name__Ú
ModelProtoÚ
FromStringÚNormalizerSpecÚadd_dummy_prefixÚnormalizer_specÚ	MergeFromÚSerializeToStringÚLoadFromSerializedProto)r:   r   Ú	tokenizerÚfr-   Ú	model_pb2ÚmodelrI   s           r?   r6   zT5Tokenizer.get_spm_processorÊ   sñ   € Ü×.Ñ.ÑF°×1EÑ1EÑFˆ	Ø�;Š;™)Ø�N‰N˜4Ÿ?™?Ô+ØÐä�$—/‘/ 4Ó(ð 	8¨AØ—v‘v“xˆHÜ'Ð*?ÀÇÁ×@WÑ@WÐ?XÐXuÐ(vÓwˆIØ×(Ñ(×3Ñ3°HÓ=ˆEØ'×6Ñ6Ó8ˆOØ/4ˆOÔ,Ø×!Ñ!×+Ñ+¨OÔ<Ø×.Ñ.Ó0ˆHØ×-Ñ-¨hÔ7÷	8ð Ð÷	8ð Ðús   Á!B"DÄDc                 ó´   — | t         j                  v rEt         j                  |    }|�||k7  r|S |€'t        j                  d|› d| › d|› d|› d�	t        «       |S )NzGThis tokenizer was incorrectly instantiated with a model max length of zÎ which will be corrected in Transformers v5.
For now, this behavior is kept to avoid breaking backwards compatibility when padding/encoding with `truncation is True`.
- Be aware that you SHOULD NOT rely on z( automatically truncating your input to zM when padding/encoding.
- If you want to encode/pad to sequences longer than zÞ you can either instantiate this tokenizer with `model_max_length` or pass `max_length` when encoding/padding.
- To avoid this warning, please instantiate this tokenizer with `model_max_length` set to your preferred value.)r   Úmax_model_input_sizesÚwarningsÚwarnÚFutureWarning)Úpretrained_model_name_or_pathÚmax_model_lengthÚinit_max_model_lengthÚdeprecated_max_model_lengths       r?   Ú!_eventually_correct_t5_max_lengthz-T5Tokenizer._eventually_correct_t5_max_lengthÛ   s‘   € à(¬K×,MÑ,MÑMÜ*5×*KÑ*KÐLiÑ*jÐ'Ø$Ð0Ð5JÐN^Ò5^Ø,Ð,Ø&Ð.Ü—‘ðØ3Ð4ð 5ð 6Ð6ð 7Ø3Ð4ð 5$Ø$?Ð#@ð Agðgô "ôð  Ðó    c                 ó6   — | j                   j                  «       S ©N)r-   Úget_piece_size©r:   s    r?   Ú
vocab_sizezT5Tokenizer.vocab_sizeñ   s   € à�}‰}×+Ñ+Ó-Ð-r[   c                 óª   — t        | j                  «      D �ci c]  }| j                  |«      |“Œ }}|j                  | j                  «       |S c c}w r]   )r0   r`   Úconvert_ids_to_tokensÚupdateÚadded_tokens_encoder)r:   r>   Úvocabs      r?   Ú	get_vocabzT5Tokenizer.get_vocabõ   sK   € Ü;@ÀÇÁÓ;QÖR°a�×+Ñ+¨AÓ.°Ñ1ÐRˆÐRØ�‰�T×.Ñ.Ô/Øˆùò Ss   ˜AÚtoken_ids_0Útoken_ids_1Úalready_has_special_tokensc                 ó¤   •— |rt         ‰| �  ||d¬«      S |€dgt        |«      z  dgz   S dgt        |«      z  dgz   dgt        |«      z  z   dgz   S )aÄ  
        Retrieve sequence ids from a token list that has no special tokens added. This method is called when adding
        special tokens using the tokenizer `prepare_for_model` method.

        Args:
            token_ids_0 (`List[int]`):
                List of IDs.
            token_ids_1 (`List[int]`, *optional*):
                Optional second list of IDs for sequence pairs.
            already_has_special_tokens (`bool`, *optional*, defaults to `False`):
                Whether or not the token list is already formatted with special tokens for the model.

        Returns:
            `List[int]`: A list of integers in the range [0, 1]: 1 for a special token, 0 for a sequence token.
        T)rg   rh   ri   r   r   )r8   Úget_special_tokens_maskr/   )r:   rg   rh   ri   r5   s       €r?   rk   z#T5Tokenizer.get_special_tokens_maskú   sy   ø€ ñ$ &Ü‘7Ñ2Ø'°[Ð]að 3ó ð ð
 ÐØ�Cœ#˜kÓ*Ñ*¨q¨cÑ1Ð1Ø�”c˜+Ó&Ñ&¨1¨#Ñ-°!°´s¸;Ó7GÑ1GÑHÈAÈ3ÑNÐNr[   c                 óT   — t        t        t        d„ | j                  «      «      «      S )Nc                 óD   — t        t        j                  d| «      «      d uS )Nz<extra_id_\d+>)ÚboolÚreÚsearch)r<   s    r?   ú<lambda>z1T5Tokenizer.get_sentinel_tokens.<locals>.<lambda>  s   € ¤¤b§i¡iÐ0AÀ1Ó&EÓ!FÈdÐ!R€ r[   )ÚlistÚsetÚfilterr$   r_   s    r?   Úget_sentinel_tokenszT5Tokenizer.get_sentinel_tokens  s&   € ÜÜ”ÑRÐTX×TrÑTrÓsÓtó
ð 	
r[   c                 óf   — | j                  «       D �cg c]  }| j                  |«      ‘Œ c}S c c}w r]   )ru   Úconvert_tokens_to_ids©r:   Útokens     r?   Úget_sentinel_token_idsz"T5Tokenizer.get_sentinel_token_ids  s*   € Ø?C×?WÑ?WÓ?YÖZ°e�×*Ñ*¨5Õ1ÒZÐZùÒZs   “.Ú	token_idsc                 ó¬   — t        |«      dkD  r7|d   | j                  k(  r%t        j                  d| j                  › d�«       |S || j                  gz   S )z.Do not add eos again if user already added it.r   éÿÿÿÿzThis sequence already has zQ. In future versions this behavior may lead to duplicated eos tokens being added.)r/   Úeos_token_idrS   rT   r    )r:   r{   s     r?   Ú_add_eos_if_not_presentz#T5Tokenizer._add_eos_if_not_present  s]   € äˆy‹>˜AÒ )¨B¡-°4×3DÑ3DÒ"DÜ�M‰MØ,¨T¯^©^Ð,<ð =+ð +ôð Ðà × 1Ñ 1Ð2Ñ2Ð2r[   c                 ót   — | j                   g}|€t        ||z   «      dgz  S t        ||z   |z   |z   «      dgz  S )aÇ  
        Create a mask from the two sequences passed to be used in a sequence-pair classification task. T5 does not make
        use of token type ids, therefore a list of zeros is returned.

        Args:
            token_ids_0 (`List[int]`):
                List of IDs.
            token_ids_1 (`List[int]`, *optional*):
                Optional second list of IDs for sequence pairs.

        Returns:
            `List[int]`: List of zeros.
        r   )r~   r/   )r:   rg   rh   Úeoss       r?   Ú$create_token_type_ids_from_sequencesz0T5Tokenizer.create_token_type_ids_from_sequences)  sP   € ð  × Ñ Ð!ˆàÐÜ�{ SÑ(Ó)¨Q¨CÑ/Ð/Ü�; Ñ$ {Ñ2°SÑ8Ó9¸Q¸CÑ?Ð?r[   c                 óX   — | j                  |«      }|€|S | j                  |«      }||z   S )a‚  
        Build model inputs from a sequence or a pair of sequence for sequence classification tasks by concatenating and
        adding special tokens. A sequence has the following format:

        - single sequence: `X </s>`
        - pair of sequences: `A </s> B </s>`

        Args:
            token_ids_0 (`List[int]`):
                List of IDs to which the special tokens will be added.
            token_ids_1 (`List[int]`, *optional*):
                Optional second list of IDs for sequence pairs.

        Returns:
            `List[int]`: List of [input IDs](../glossary#input-ids) with the appropriate special tokens.
        )r   )r:   rg   rh   s      r?   Ú build_inputs_with_special_tokensz,T5Tokenizer.build_inputs_with_special_tokens?  s;   € ð& ×2Ñ2°;Ó?ˆØÐØÐà×6Ñ6°{ÓCˆKØ Ñ,Ð,r[   c                 óD   — | j                   j                  «       }d |d<   |S )Nr-   )Ú__dict__Úcopy)r:   Ústates     r?   Ú__getstate__zT5Tokenizer.__getstate__Y  s#   € Ø—‘×"Ñ"Ó$ˆØ ˆˆjÑØˆr[   c                 óÊ   — || _         t        | d«      si | _        t        j                  di | j                  ¤Ž| _        | j
                  j                  | j                  «       y )Nr   r'   )r†   Úhasattrr   r+   r,   r-   r.   r   )r:   Úds     r?   Ú__setstate__zT5Tokenizer.__setstate__^  sO   € ØˆŒô �tÐ.Ô/Ø#%ˆDÔ ä×2Ñ2ÑJ°T×5IÑ5IÑJˆŒØ�‰×Ñ˜4Ÿ?™?Õ+r[   Útextr   c                 ó2  •— | j                   st        |«      dk(  rt        ‰| �  |fi |¤ŽS |j	                  t
        d«      }| j                  r	t
        |z   }t        ‰| �  |fi |¤Ž}t        |«      dkD  r"|d   t
        k(  r|d   | j                  v r|dd }|S )zŸ
        Converts a string to a list of tokens. If `self.legacy` is set to `False`, a prefix token is added unless the
        first token is special.
        r   ú r   N)r%   r/   r8   ÚtokenizeÚreplaceÚSPIECE_UNDERLINEr&   Úall_special_tokens)r:   rŽ   r;   Útokensr5   s       €r?   r‘   zT5Tokenizer.tokenizeh  s›   ø€ ð
 �;Š;œ#˜d›) qš.Ü‘7Ñ# DÑ3¨FÑ3Ð3à�|‰|Ô,¨cÓ2ˆØ× Ò Ü# dÑ*ˆDä‘Ñ! $Ñ1¨&Ñ1ˆäˆv‹;˜Š?˜v a™yÔ,<Ò<ÀÈÁÈd×NeÑNeÑAeØ˜A˜B�ZˆFØˆr[   c                 óp   — t        | j                  j                  t        | j                  «      «      «      S r]   )r/   r-   Úencoder)   r!   r_   s    r?   Úunk_token_lengthzT5Tokenizer.unk_token_lengthz  s%   € ä�4—=‘=×'Ñ'¬¨D¯N©NÓ(;Ó<Ó=Ð=r[   c                 ó8  — | j                   s|j                  t        df«      s!| j                  j	                  |t
        ¬«      S | j                  j	                  | j                  |z   t
        ¬«      }t        |«      | j                  k\  r|| j                  d S |S )u(  
        Returns a tokenized string.

        We de-activated the `add_dummy_prefix` option, thus the sentencepiece internals will always strip any
        SPIECE_UNDERLINE. For example: `self.sp_model.encode(f"{SPIECE_UNDERLINE}Hey", out_type = str)` will give
        `['H', 'e', 'y']` instead of `['â–�He', 'y']`. Thus we always encode `f"{unk_token}text"` and strip the
        `unk_token`. Here is an example with `unk_token = "<unk>"` and `unk_token_length = 4`.
        `self.tokenizer.sp_model.encode("<unk> Hey", out_type = str)[4:]`.
        r�   )Úout_typeN)	r%   Ú
startswithr“   r-   r—   r)   r!   r/   r˜   )r:   rŽ   r;   r•   s       r?   Ú	_tokenizezT5Tokenizer._tokenize~  s…   € ð �;Š;˜dŸo™oÔ/?ÀÐ.EÔFØ—=‘=×'Ñ'¨´sÐ'Ó;Ð;ð —‘×%Ñ% d§n¡n°tÑ&;ÄcÐ%ÓJˆä25°f³+À×AVÑAVÒ2Vˆv�d×+Ñ+Ð-Ð.ÐbÐ\bÐbr[   c                 ó8   — | j                   j                  |«      S )z0Converts a token (str) in an id using the vocab.)r-   Úpiece_to_idrx   s     r?   Ú_convert_token_to_idz T5Tokenizer._convert_token_to_id�  s   € à�}‰}×(Ñ(¨Ó/Ð/r[   c                 ó<   — | j                   j                  |«      }|S )z=Converts an index (integer) in a token (str) using the vocab.)r-   Ú	IdToPiece)r:   Úindexry   s      r?   Ú_convert_id_to_tokenz T5Tokenizer._convert_id_to_token”  s   € à—‘×'Ñ'¨Ó.ˆØˆr[   c                 ór  — |d   j                  t        «      r| j                  r|d   dd |d<   g }d}d}|D ]P  }|| j                  v r-|s|dz  }|| j                  j                  |«      |z   z  }d}g }Œ>|j                  |«       d}ŒR || j                  j                  |«      z  }|j                  «       S )z:Converts a sequence of tokens (string) in a single string.r   r   NÚ Fr�   T)r›   r“   r&   r”   r-   ÚdecodeÚappendÚstrip)r:   r•   Úcurrent_sub_tokensÚ
out_stringÚprev_is_specialry   s         r?   Úconvert_tokens_to_stringz$T5Tokenizer.convert_tokens_to_string™  sÔ   € ð �!‰9×ÑÔ 0Ô1°d×6KÒ6KØ˜q™	 ! "˜ˆF�1‰IàÐØˆ
ØˆØò 
	(ˆEà˜×/Ñ/Ñ/Ù&Ø #Ñ%�JØ˜dŸm™m×2Ñ2Ð3EÓFÈÑNÑN�
Ø"&�Ø%'Ñ"à"×)Ñ)¨%Ô0Ø"'‘ð
	(ð 	�d—m‘m×*Ñ*Ð+=Ó>Ñ>ˆ
Ø×ÑÓ!Ð!r[   Úsave_directoryÚfilename_prefixc                 óæ  — t         j                  j                  |«      st        j	                  d|› d�«       y t         j                  j                  ||r|dz   ndt        d   z   «      }t         j                  j                  | j                  «      t         j                  j                  |«      k7  rBt         j                  j                  | j                  «      rt        | j                  |«       |fS t         j                  j                  | j                  «      sCt        |d«      5 }| j                  j                  «       }|j                  |«       d d d «       |fS |fS # 1 sw Y   |fS xY w)NzVocabulary path (z) should be a directoryú-r¥   r   Úwb)ÚosÚpathÚisdirr3   ÚerrorÚjoinÚVOCAB_FILES_NAMESÚabspathr   Úisfiler   rB   r-   Úserialized_model_protoÚwrite)r:   r­   r®   Úout_vocab_fileÚfiÚcontent_spiece_models         r?   Úsave_vocabularyzT5Tokenizer.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ÔSU×SZÑSZ×SaÑSaÐbf×bqÑbqÔSrÜ�T—_‘_ nÔ5ð Ð Ð ô —‘—‘ §¡Ô0Ü�n dÓ+ð /¨rØ'+§}¡}×'KÑ'KÓ'MÐ$Ø—‘Ð-Ô.÷/ð Ð Ð �Ð Ð ÷	/ð Ð Ð ús   Ä+,E%Å%E0)z</s>z<unk>z<pad>éd   NNNT)F)NFr]   )&rD   Ú
__module__Ú__qualname__Ú__doc__r·   Úvocab_files_namesÚmodel_input_namesr   r   r)   r   r9   r6   ÚstaticmethodrZ   Úpropertyr`   rf   r   Úintrn   rk   ru   rz   r   r‚   r„   r‰   r�   r‘   r˜   rœ   rŸ   r£   r¬   r	   r¿   Ú__classcell__)r5   s   @r?   r   r   -   sÙ  ø„ ñLð\ *ÐØ$Ð&6Ð7Ðð
 ØØØØ"&Ø48ØØñH
ð " $ s¨C x¡.Ñ1ðH
ð 
õH
óVð" ñ ó ð ð* ñ.ó ð.òð sxñOØ ™9ðOØ3;¸DÀ¹IÑ3FðOØkoðOà	ˆc‰õOò8
ò
[ð	3°°c±ð 	3¸tÀC¹yó 	3ð JNñ@Ø ™9ð@Ø3;¸DÀ¹IÑ3Fð@à	ˆc‰ó@ð. JNñ-Ø ™9ð-Ø3;¸DÀ¹IÑ3Fð-à	ˆc‰ó-ò4ò
,ð˜[ð °t¸C±yõ ð$ ñ>ó ð>òcò$0òò
"ñ.!¨cð !ÀHÈSÁMð !Ð]bÐcfÑ]g÷ !r[   r   )rÃ   r²   ro   rS   Úshutilr   Útypingr   r   r   r   r   r	   Úsentencepiecer+   Úconvert_slow_tokenizerr   Útokenization_utilsr   Útokenization_utils_baser   r   Úutilsr   Ú
get_loggerrD   r3   r·   r“   r   Ú__all__r'   r[   r?   ú<module>rÓ      ss   ðñ 'ã 	Û 	Û Ý ß B× Bã å 5Ý 5Ý 1ñ Ý4Ý ð 
ˆ×	Ñ	˜HÓ	%€à! >Ð2Ð ð
 Ð ôR!Ð%ô R!ðj ˆ/�r[   