
from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


__A							=logging.get_logger(__name__)

__A							={
    '''facebook/data2vec-vision-base-ft''': (
        '''https://huggingface.co/facebook/data2vec-vision-base-ft/resolve/main/config.json'''
    ),
}




class        _SCREAMING_SNAKE_CASE	( snake_case_		):
	lowerCAmelCase__   =					'data2vec-vision'



	def __init__(       self		,    lowercase=768		,    lowercase=12		,    lowercase=12		,    lowercase=3072		,    lowercase="gelu"		,    lowercase=0.0		,    lowercase=0.0		,    lowercase=0.0_2		,    lowercase=1e-12		,    lowercase=224		,    lowercase=16		,    lowercase=3		,    lowercase=False		,    lowercase=False		,    lowercase=False		,    lowercase=False		,    lowercase=0.1		,    lowercase=0.1		,    lowercase=True		,    lowercase=[3, 5, 7, 11]		,    lowercase=[1, 2, 3, 6]		,    lowercase=True		,    lowercase=0.4		,    lowercase=256		,    lowercase=1		,    lowercase=False		,    lowercase=255		,    **lowercase		,    )							->			Optional[int]:
					super().__init__(**lowercase					)

					lowerCamelCase_         =     hidden_size
					lowerCamelCase_         =     num_hidden_layers
					lowerCamelCase_         =     num_attention_heads
					lowerCamelCase_         =     intermediate_size
					lowerCamelCase_         =     hidden_act
					lowerCamelCase_         =     hidden_dropout_prob
					lowerCamelCase_         =     attention_probs_dropout_prob
					lowerCamelCase_         =     initializer_range
					lowerCamelCase_         =     layer_norm_eps

					lowerCamelCase_         =     image_size
					lowerCamelCase_         =     patch_size
					lowerCamelCase_         =     num_channels
					lowerCamelCase_         =     use_mask_token
					lowerCamelCase_         =     use_absolute_position_embeddings
					lowerCamelCase_         =     use_relative_position_bias
					lowerCamelCase_         =     use_shared_relative_position_bias
					lowerCamelCase_         =     layer_scale_init_value
					lowerCamelCase_         =     drop_path_rate
					lowerCamelCase_         =     use_mean_pooling
					# decode head attributes (semantic segmentation)
					lowerCamelCase_         =     out_indices
					lowerCamelCase_         =     pool_scales
					# auxiliary head attributes (semantic segmentation)
					lowerCamelCase_         =     use_auxiliary_head
					lowerCamelCase_         =     auxiliary_loss_weight
					lowerCamelCase_         =     auxiliary_channels
					lowerCamelCase_         =     auxiliary_num_convs
					lowerCamelCase_         =     auxiliary_concat_input
					lowerCamelCase_         =     semantic_loss_ignore_index




class        _SCREAMING_SNAKE_CASE	( snake_case_		):
	lowerCAmelCase__   =					version.parse('1.11'		)



	@property
	def        SCREAMING_SNAKE_CASE_(       self					)							->			Mapping[str, Mapping[int, str]]:
					return OrderedDict(
					    [
					        ("pixel_values", {0: "batch", 1: "num_channels", 2: "height", 3: "width"}),
					    ]					)



	@property
	def        SCREAMING_SNAKE_CASE_(       self					)							->			float:
					return 1e-4




class        _SCREAMING_SNAKE_CASE	:



	def __init__(       self		,    lowercase		,    lowercase=None		,    lowercase=None					)							->			List[Any]:
					lowerCamelCase_         =     data
					lowerCamelCase_         =     previous
					lowerCamelCase_         =     next_node



	def __str__(       self					)							->			str:
					return f'{self.data}'



	def        SCREAMING_SNAKE_CASE_(       self					)							->			int:
					return self.data



	def        SCREAMING_SNAKE_CASE_(       self					)							->			Union[str, Any]:
					return self.next



	def        SCREAMING_SNAKE_CASE_(       self					)							->			int:
					return self.previous




class        _SCREAMING_SNAKE_CASE	:



	def __init__(       self		,    lowercase					)							->			Optional[int]:
					lowerCamelCase_         =     head



	def __iter__(       self					)							->			int:
					return self



	def        SCREAMING_SNAKE_CASE_(       self					)							->			Optional[Any]:
					if not self.current:
									raise StopIteration
					else:
									lowerCamelCase_         =     self.current.get_data()
									lowerCamelCase_         =     self.current.get_next()
									return value




class        _SCREAMING_SNAKE_CASE	:



	def __init__(       self					)							->			Union[str, Any]:
					lowerCamelCase_         =     None  # First node in list
					lowerCamelCase_         =     None  # Last node in list



	def __str__(       self					)							->			Optional[Any]:
					lowerCamelCase_         =     self.head
					lowerCamelCase_         =     []
					while current is not None:
									nodes.append(current.get_data()					)
									lowerCamelCase_         =     current.get_next()
					return " ".join(str(lowercase					) for node in nodes					)



	def __contains__(       self		,    lowercase					)							->			Optional[int]:
					lowerCamelCase_         =     self.head
					while current:
									if current.get_data() == value:
													return True
									lowerCamelCase_         =     current.get_next()
					return False



	def __iter__(       self					)							->			List[str]:
					return LinkedListIterator(self.head					)



	def        SCREAMING_SNAKE_CASE_(       self					)							->			List[str]:
					if self.head:
									return self.head.get_data()
					return None



	def        SCREAMING_SNAKE_CASE_(       self					)							->			Any:
					if self.tail:
									return self.tail.get_data()
					return None



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			None:
					if self.head is None:
									lowerCamelCase_         =     node
									lowerCamelCase_         =     node
					else:
									self.insert_before_node(self.head		,    lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			None:
					if self.head is None:
									self.set_head(lowercase					)
					else:
									self.insert_after_node(self.tail		,    lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			None:
					lowerCamelCase_         =     Node(lowercase					)
					if self.head is None:
									self.set_head(lowercase					)
					else:
									self.set_tail(lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase		,    lowercase					)							->			None:
					lowerCamelCase_         =     node
					lowerCamelCase_         =     node.previous

					if node.get_previous() is None:
									lowerCamelCase_         =     node_to_insert
					else:
									lowerCamelCase_         =     node_to_insert

					lowerCamelCase_         =     node_to_insert



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase		,    lowercase					)							->			None:
					lowerCamelCase_         =     node
					lowerCamelCase_         =     node.next

					if node.get_next() is None:
									lowerCamelCase_         =     node_to_insert
					else:
									lowerCamelCase_         =     node_to_insert

					lowerCamelCase_         =     node_to_insert



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase		,    lowercase					)							->			None:
					lowerCamelCase_         =     1
					lowerCamelCase_         =     Node(lowercase					)
					lowerCamelCase_         =     self.head
					while node:
									if current_position == position:
													self.insert_before_node(lowercase		,    lowercase					)
													return
									current_position += 1
									lowerCamelCase_         =     node.next
					self.insert_after_node(self.tail		,    lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			Node:
					lowerCamelCase_         =     self.head
					while node:
									if node.get_data() == item:
													return node
									lowerCamelCase_         =     node.get_next()
					raise Exception("Node not found"					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			Union[str, Any]:
					if (node := self.get_node(lowercase					)) is not None:
									if node == self.head:
													lowerCamelCase_         =     self.head.get_next()

									if node == self.tail:
													lowerCamelCase_         =     self.tail.get_previous()

									self.remove_node_pointers(lowercase					)



	@staticmethod
	def        SCREAMING_SNAKE_CASE_(       lowercase					)							->			None:
					if node.get_next():
									lowerCamelCase_         =     node.previous

					if node.get_previous():
									lowerCamelCase_         =     node.next

					lowerCamelCase_         =     None
					lowerCamelCase_         =     None



	def        SCREAMING_SNAKE_CASE_(       self					)							->			int:
					return self.head is None





def      lowerCamelCase_					(							):
				pass


if __name__ == "__main__":
			import doctest

			doctest.testmod()


