





'''simple docstring'''


import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from .tokenization_electra import ElectraTokenizer


lowerCAmelCase :					Optional[int] 							={'''vocab_file''': '''vocab.txt''', '''tokenizer_file''': '''tokenizer.json'''}

lowerCAmelCase :					Optional[Any] 							={
    '''vocab_file''': {
        '''google/electra-small-generator''': (
            '''https://huggingface.co/google/electra-small-generator/resolve/main/vocab.txt'''
        ),
        '''google/electra-base-generator''': '''https://huggingface.co/google/electra-base-generator/resolve/main/vocab.txt''',
        '''google/electra-large-generator''': (
            '''https://huggingface.co/google/electra-large-generator/resolve/main/vocab.txt'''
        ),
        '''google/electra-small-discriminator''': (
            '''https://huggingface.co/google/electra-small-discriminator/resolve/main/vocab.txt'''
        ),
        '''google/electra-base-discriminator''': (
            '''https://huggingface.co/google/electra-base-discriminator/resolve/main/vocab.txt'''
        ),
        '''google/electra-large-discriminator''': (
            '''https://huggingface.co/google/electra-large-discriminator/resolve/main/vocab.txt'''
        ),
    },
    '''tokenizer_file''': {
        '''google/electra-small-generator''': (
            '''https://huggingface.co/google/electra-small-generator/resolve/main/tokenizer.json'''
        ),
        '''google/electra-base-generator''': (
            '''https://huggingface.co/google/electra-base-generator/resolve/main/tokenizer.json'''
        ),
        '''google/electra-large-generator''': (
            '''https://huggingface.co/google/electra-large-generator/resolve/main/tokenizer.json'''
        ),
        '''google/electra-small-discriminator''': (
            '''https://huggingface.co/google/electra-small-discriminator/resolve/main/tokenizer.json'''
        ),
        '''google/electra-base-discriminator''': (
            '''https://huggingface.co/google/electra-base-discriminator/resolve/main/tokenizer.json'''
        ),
        '''google/electra-large-discriminator''': (
            '''https://huggingface.co/google/electra-large-discriminator/resolve/main/tokenizer.json'''
        ),
    },
}

lowerCAmelCase :					str 							={
    '''google/electra-small-generator''': 512,
    '''google/electra-base-generator''': 512,
    '''google/electra-large-generator''': 512,
    '''google/electra-small-discriminator''': 512,
    '''google/electra-base-discriminator''': 512,
    '''google/electra-large-discriminator''': 512,
}

lowerCAmelCase :					str 							={
    '''google/electra-small-generator''': {'''do_lower_case''': True},
    '''google/electra-base-generator''': {'''do_lower_case''': True},
    '''google/electra-large-generator''': {'''do_lower_case''': True},
    '''google/electra-small-discriminator''': {'''do_lower_case''': True},
    '''google/electra-base-discriminator''': {'''do_lower_case''': True},
    '''google/electra-large-discriminator''': {'''do_lower_case''': True},
}
class 				a_       (    _lowerCAmelCase							):
     __A								=      VOCAB_FILES_NAMES
     __A								=      PRETRAINED_VOCAB_FILES_MAP
     __A								=      PRETRAINED_INIT_CONFIGURATION
     __A								=      PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
     __A								=      ElectraTokenizer





     def __init__(			self		: Dict     ,				lowercase		: Optional[Any]=None     ,				lowercase		: Union[str, Any]=None     ,				lowercase		: List[str]=True     ,				lowercase		: Any="[UNK]"     ,				lowercase		: Optional[Any]="[SEP]"     ,				lowercase		: Dict="[PAD]"     ,				lowercase		: Optional[Any]="[CLS]"     ,				lowercase		: Union[str, Any]="[MASK]"     ,				lowercase		: Dict=True     ,				lowercase		: Any=None     ,				**lowercase		: Dict     ,				):





        """simple docstring"""




        super().__init__(
            lowercase     ,				tokenizer_file=lowercase     ,				do_lower_case=lowercase     ,				unk_token=lowercase     ,				sep_token=lowercase     ,				pad_token=lowercase     ,				cls_token=lowercase     ,				mask_token=lowercase     ,				tokenize_chinese_chars=lowercase     ,				strip_accents=lowercase     ,				**lowercase     ,				)

        lowercase_      :Tuple         =			json.loads(self.backend_tokenizer.normalizer.__getstate__()						)
        if (
            normalizer_state.get("lowercase"     ,				lowercase						) != do_lower_case
            or normalizer_state.get("strip_accents"     ,				lowercase						) != strip_accents
            or normalizer_state.get("handle_chinese_chars"     ,				lowercase						) != tokenize_chinese_chars
        ):
           lowercase_      :Optional[int]         =			getattr(lowercase     ,				normalizer_state.pop("type"						)						)
           lowercase_      :List[Any]         =			do_lower_case
           lowercase_      :Dict         =			strip_accents
           lowercase_      :Optional[Any]         =			tokenize_chinese_chars
           lowercase_      :int         =			normalizer_class(**lowercase						)

        lowercase_      :int         =			do_lower_case





     def 							lowercase__				(			self		: List[Any]     ,				lowercase		: int     ,				lowercase		: List[str]=None						):





        """simple docstring"""




        lowercase_      :Any         =			[self.cls_token_id] + token_ids_a + [self.sep_token_id]

        if token_ids_a:
           output += token_ids_a + [self.sep_token_id]

        return output





     def 							lowercase__				(			self		: List[Any]     ,				lowercase		: List[int]     ,				lowercase		: Optional[List[int]] = None						):





        """simple docstring"""




        lowercase_      :Optional[Any]         =			[self.sep_token_id]
        lowercase_      :Any         =			[self.cls_token_id]
        if token_ids_a is None:
           return len(cls + token_ids_a + sep						) * [0]
        return len(cls + token_ids_a + sep						) * [0] + len(token_ids_a + sep						) * [1]







     def 							lowercase__				(			self		: int     ,				lowercase		: str     ,				lowercase		: Optional[str] = None						):





        """simple docstring"""




        lowercase_      :Dict         =			self._tokenizer.model.save(lowercase     ,				name=lowercase						)
        return tuple(lowercase						)









'''simple docstring'''


import sys

lowerCAmelCase :					List[Any] 							=(
    '''73167176531330624919225119674426574742355349194934'''
    '''96983520312774506326239578318016984801869478851843'''
    '''85861560789112949495459501737958331952853208805511'''
    '''12540698747158523863050715693290963295227443043557'''
    '''66896648950445244523161731856403098711121722383113'''
    '''62229893423380308135336276614282806444486645238749'''
    '''30358907296290491560440772390713810515859307960866'''
    '''70172427121883998797908792274921901699720888093776'''
    '''65727333001053367881220235421809751254540594752243'''
    '''52584907711670556013604839586446706324415722155397'''
    '''53697817977846174064955149290862569321978468622482'''
    '''83972241375657056057490261407972968652414535100474'''
    '''82166370484403199890008895243450658541227588666881'''
    '''16427171479924442928230863465674813919123162824586'''
    '''17866458359124566529476545682848912883142607690042'''
    '''24219022671055626321111109370544217506941658960408'''
    '''07198403850962455444362981230987879927244284909188'''
    '''84580156166097919133875499200524063689912560717606'''
    '''05886116467109405077541002256983155200055935729725'''
    '''71636269561882670428252483600823257530420752963450'''
)
def 							UpperCAmelCase_  (						__lowerCamelCase : str			):
   lowercase_      :List[str]         =			1
   for digit in s:
      product *= int(__lowerCamelCase			)
   return product
def 							UpperCAmelCase_  (						__lowerCamelCase : str = N			):
   lowercase_      :Any         =			-sys.maxsize - 1
   lowercase_      :int         =			n[:13]
   lowercase_      :Optional[int]         =			13
   while cur_index < len(__lowerCamelCase			) - 13:
      if int(n[cur_index]			) >= int(substr[0]			):
         lowercase_      :str         =			substr[1:] + n[cur_index]
         cur_index += 1
      else:
         lowercase_      :List[str]         =			max(__lowerCamelCase     ,str_eval(__lowerCamelCase			)			)
         lowercase_      :Any         =			n[cur_index : cur_index + 13]
         cur_index += 13
   return largest_product


if __name__ == "__main__":
 print(F'''{solution() = }''')


