




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


__a  :		List[Any]		     =   {'''configuration_vilt''': ['''VILT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''ViltConfig''']}

try:
						if not is_vision_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__a  :		Optional[Any]		     =   ['''ViltFeatureExtractor''']
						__a  :		str		     =   ['''ViltImageProcessor''']
						__a  :		Optional[Any]		     =   ['''ViltProcessor''']

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__a  :		Dict		     =   [
						    '''VILT_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''ViltForImageAndTextRetrieval''',
						    '''ViltForImagesAndTextClassification''',
						    '''ViltForTokenClassification''',
						    '''ViltForMaskedLM''',
						    '''ViltForQuestionAnswering''',
						    '''ViltLayer''',
						    '''ViltModel''',
						    '''ViltPreTrainedModel''',
						]


if TYPE_CHECKING:
						from .configuration_vilt import VILT_PRETRAINED_CONFIG_ARCHIVE_MAP, ViltConfig

						try:
												if not is_vision_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .feature_extraction_vilt import ViltFeatureExtractor
												from .image_processing_vilt import ViltImageProcessor
												from .processing_vilt import ViltProcessor

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_vilt import (
												    VILT_PRETRAINED_MODEL_ARCHIVE_LIST,
												    ViltForImageAndTextRetrieval,
												    ViltForImagesAndTextClassification,
												    ViltForMaskedLM,
												    ViltForQuestionAnswering,
												    ViltForTokenClassification,
												    ViltLayer,
												    ViltModel,
												    ViltPreTrainedModel,
												)


else:
						import sys

						__a  :		List[Any]		     =   _LazyModule(__name__, globals()['''__file__'''], _import_structure)





def  snake_case_					(		SCREAMING_SNAKE_CASE_    )      ->			list:
							lowercase__  :	Optional[Any]        =							len(SCREAMING_SNAKE_CASE_    )

							# Set the gap value to be decreased by a factor of 1.3
							# after each iteration
							lowercase__  :	Tuple        =							1.3

							# Continue sorting until the gap is 1
							while gap > 1:
														# Decrease the gap value
														lowercase__  :	Tuple        =							int(gap / shrink    )

														# Sort the elements using insertion sort
														for i in range(SCREAMING_SNAKE_CASE_    ,len(SCREAMING_SNAKE_CASE_    )    ):
																					lowercase__  :	int        =							collection[i]
																					lowercase__  :	Union[str, Any]        =							i
																					while j >= gap and collection[j - gap] > temp:
																												lowercase__  :	str        =							collection[j - gap]
																												j -= gap
																					lowercase__  :	List[Any]        =							temp

							return collection


if __name__ == "__main__":
						import doctest

						doctest.testmod()