




def 			a   (_lowerCAmelCase     ):
							return credit_card_number.startswith(('''34''', '''35''', '''37''', '''4''', '''5''', '''6''')     )

def 			a   (_lowerCAmelCase     ):
							SCREAMING_SNAKE_CASE_   	=    credit_card_number
							SCREAMING_SNAKE_CASE_   	=    0
							SCREAMING_SNAKE_CASE_   	=    len(_lowerCAmelCase     ) - 2
							for i in range(_lowerCAmelCase  ,    -1  ,    -2     ):
														#  double the value of every second digit
														SCREAMING_SNAKE_CASE_   	=    int(cc_number[i]     )
														digit *= 2
														# If doubling of a number results in a two digit number
														# i.e greater than 9(e.g., 6 × 2 = 12),
														# then add the digits of the product (e.g., 12: 1 + 2 = 3, 15: 1 + 5 = 6),
														# to get a single digit number.
														if digit > 9:
																					digit %= 1_0
																					digit += 1
														SCREAMING_SNAKE_CASE_   	=    cc_number[:i] + str(_lowerCAmelCase     ) + cc_number[i + 1 :]
														total += digit

							# Sum up the remaining digits
							for i in range(len(_lowerCAmelCase     ) - 1  ,    -1  ,    -2     ):
														total += int(cc_number[i]     )

							return total % 1_0 == 0

def 			a   (_lowerCAmelCase     ):
							SCREAMING_SNAKE_CASE_   	=    F"{credit_card_number} is an invalid credit card number because"
							if not credit_card_number.isdigit():
														print(F"{error_message} it has nonnumerical characters."     )
														return False

							if not 1_3 <= len(_lowerCAmelCase     ) <= 1_6:
														print(F"{error_message} of its length."     )
														return False

							if not validate_initial_digits(_lowerCAmelCase     ):
														print(F"{error_message} of its first two digits."     )
														return False

							if not luhn_validation(_lowerCAmelCase     ):
														print(F"{error_message} it fails the Luhn check."     )
														return False

							print(F"{credit_card_number} is a valid credit card number."     )
							return True


if __name__ == "__main__":
			import doctest

			doctest.testmod()
			validate_credit_card_number("""4111111111111111""")
			validate_credit_card_number("""32323""")








from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__SCREAMING_SNAKE_CASE 						={
    """configuration_xlm_roberta_xl""": [
        """XLM_ROBERTA_XL_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """XLMRobertaXLConfig""",
        """XLMRobertaXLOnnxConfig""",
    ],
}

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			__SCREAMING_SNAKE_CASE 						=[
			    """XLM_ROBERTA_XL_PRETRAINED_MODEL_ARCHIVE_LIST""",
			    """XLMRobertaXLForCausalLM""",
			    """XLMRobertaXLForMaskedLM""",
			    """XLMRobertaXLForMultipleChoice""",
			    """XLMRobertaXLForQuestionAnswering""",
			    """XLMRobertaXLForSequenceClassification""",
			    """XLMRobertaXLForTokenClassification""",
			    """XLMRobertaXLModel""",
			    """XLMRobertaXLPreTrainedModel""",
			]

if TYPE_CHECKING:
			from .configuration_xlm_roberta_xl import (
			    XLM_ROBERTA_XL_PRETRAINED_CONFIG_ARCHIVE_MAP,
			    XLMRobertaXLConfig,
			    XLMRobertaXLOnnxConfig,
			)

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_xlm_roberta_xl import (
						    XLM_ROBERTA_XL_PRETRAINED_MODEL_ARCHIVE_LIST,
						    XLMRobertaXLForCausalLM,
						    XLMRobertaXLForMaskedLM,
						    XLMRobertaXLForMultipleChoice,
						    XLMRobertaXLForQuestionAnswering,
						    XLMRobertaXLForSequenceClassification,
						    XLMRobertaXLForTokenClassification,
						    XLMRobertaXLModel,
						    XLMRobertaXLPreTrainedModel,
						)

else:
			import sys

			__SCREAMING_SNAKE_CASE 						=_LazyModule(__name__, globals()["""__file__"""], _import_structure)


