





def 		_SCREAMING_SNAKE_CASE    (   lowerCAmelCase__       ,lowerCAmelCase__       ,lowerCAmelCase__	):

		if power < 0:
				return -1
		base %= mod
		lowerCamelCase_  :    Union[str, Any]   	=			1

		while power > 0:
				if power & 1:
						lowerCamelCase_  :    str   	=			(result * base) % mod
				lowerCamelCase_  :    Any   	=			power >> 1
				lowerCamelCase_  :    str   	=			(base * base) % mod

		return result


def 		_SCREAMING_SNAKE_CASE    (   ):
		print(modular_exponential(3       ,2_00       ,13	)	)


if __name__ == "__main__":
		import doctest

		doctest.testmod()

		main()







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


_lowercase		:     Dict 					=logging.get_logger(__name__)

_lowercase		:     Any 					={
    """dandelin/vilt-b32-mlm""": """https://huggingface.co/dandelin/vilt-b32-mlm/blob/main/config.json"""
}






class 	UpperCamelCase_     (     snake_case__       ):
					_a			:	List[str]							=				'vilt'



					def __init__(		self    :    int					,			lowerCamelCase    :    Any=3_05_22					,			lowerCamelCase    :    Union[str, Any]=2					,			lowerCamelCase    :    Optional[Any]=2					,			lowerCamelCase    :    str=40					,			lowerCamelCase    :    List[str]=7_68					,			lowerCamelCase    :    Optional[int]=12					,			lowerCamelCase    :    List[Any]=12					,			lowerCamelCase    :    List[str]=30_72					,			lowerCamelCase    :    Union[str, Any]="gelu"					,			lowerCamelCase    :    int=0.0					,			lowerCamelCase    :    str=0.0					,			lowerCamelCase    :    int=0.02					,			lowerCamelCase    :    Union[str, Any]=1E-12					,			lowerCamelCase    :    Dict=3_84					,			lowerCamelCase    :    List[str]=32					,			lowerCamelCase    :    Dict=3					,			lowerCamelCase    :    List[str]=True					,			lowerCamelCase    :    int=-1					,			lowerCamelCase    :    List[Any]=False					,			lowerCamelCase    :    Any=-1					,			**lowerCamelCase    :    str					,			):
							super().__init__(tie_word_embeddings=lowerCamelCase					,			**lowerCamelCase	)

							lowerCamelCase_  :    str   	=			vocab_size
							lowerCamelCase_  :    Dict   	=			type_vocab_size
							lowerCamelCase_  :    str   	=			modality_type_vocab_size
							lowerCamelCase_  :    Optional[Any]   	=			max_position_embeddings

							lowerCamelCase_  :    List[Any]   	=			hidden_size
							lowerCamelCase_  :    Union[str, Any]   	=			num_hidden_layers
							lowerCamelCase_  :    Any   	=			num_attention_heads
							lowerCamelCase_  :    List[Any]   	=			intermediate_size
							lowerCamelCase_  :    Union[str, Any]   	=			hidden_act
							lowerCamelCase_  :    Any   	=			hidden_dropout_prob
							lowerCamelCase_  :    Optional[int]   	=			attention_probs_dropout_prob
							lowerCamelCase_  :    Any   	=			initializer_range
							lowerCamelCase_  :    str   	=			layer_norm_eps

							lowerCamelCase_  :    Optional[Any]   	=			image_size
							lowerCamelCase_  :    List[Any]   	=			patch_size
							lowerCamelCase_  :    Tuple   	=			num_channels
							lowerCamelCase_  :    Optional[Any]   	=			qkv_bias
							lowerCamelCase_  :    Optional[int]   	=			max_image_length
							lowerCamelCase_  :    Optional[Any]   	=			num_images
