



'''simple docstring'''


from ...configuration_utils import PretrainedConfig
from ...utils import logging


lowercase_   :					Optional[int]        =     logging.get_logger(__name__)

lowercase_   :					Tuple        =     {
    "google/canine-s": "https://huggingface.co/google/canine-s/resolve/main/config.json",
    # See all CANINE models at https://huggingface.co/models?filter=canine
}




class   __UpperCamelCase							(a_      ):
	__A      	=       '''canine'''







	def __init__(     self			,					_lowerCAmelCase=768			,					_lowerCAmelCase=12			,					_lowerCAmelCase=12			,					_lowerCAmelCase=3072			,					_lowerCAmelCase="gelu"			,					_lowerCAmelCase=0.1			,					_lowerCAmelCase=0.1			,					_lowerCAmelCase=1_6384			,					_lowerCAmelCase=16			,					_lowerCAmelCase=0.02			,					_lowerCAmelCase=1E-12			,					_lowerCAmelCase=0			,					_lowerCAmelCase=0xe000			,					_lowerCAmelCase=0xe001			,					_lowerCAmelCase=4			,					_lowerCAmelCase=4			,					_lowerCAmelCase=8			,					_lowerCAmelCase=1_6384			,					_lowerCAmelCase=128			,					**_lowerCAmelCase			,					)     ->     int:
							'''simple docstring'''






							super().__init__(pad_token_id=_SCREAMING_SNAKE_CASE			,					bos_token_id=_SCREAMING_SNAKE_CASE			,					eos_token_id=_SCREAMING_SNAKE_CASE			,					**_SCREAMING_SNAKE_CASE    )

							lowercase   =				max_position_embeddings
							lowercase   =				hidden_size
							lowercase   =				num_hidden_layers
							lowercase   =				num_attention_heads
							lowercase   =				intermediate_size
							lowercase   =				hidden_act
							lowercase   =				hidden_dropout_prob
							lowercase   =				attention_probs_dropout_prob
							lowercase   =				initializer_range
							lowercase   =				type_vocab_size
							lowercase   =				layer_norm_eps

							# Character config:
							lowercase   =				downsampling_rate
							lowercase   =				upsampling_kernel_size
							lowercase   =				num_hash_functions
							lowercase   =				num_hash_buckets
							lowercase   =				local_transformer_stride





'''simple docstring'''



def       snake_case   (	snake_case      : int					,		snake_case      : int					,		snake_case      : int			) ->  int:


    """simple docstring"""


    if exponent == 1:
        return base
    if exponent % 2 == 0:
        lowerCAmelCase 						=							_modexpt(snake_case					,		exponent // 2					,		snake_case			) % modulo_value
        return (x * x) % modulo_value
    else:
        return (base * _modexpt(snake_case					,		exponent - 1					,		snake_case			)) % modulo_value


def       snake_case   (	snake_case      : int = 1777					,		snake_case      : int = 1855					,		snake_case      : int = 8			) ->  int:


    """simple docstring"""


    lowerCAmelCase 						=							base
    for _ in range(1					,		snake_case			):
        lowerCAmelCase 						=							_modexpt(snake_case					,		snake_case					,		10**digits			)

    return result


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





