


def 							UpperCamelCase_( lowerCamelCase_					)       ->		bool:
    return credit_card_number.startswith(('34', '35', '37', '4', '5', '6')					)



def 							UpperCamelCase_( lowerCamelCase_					)       ->		bool:
    _lowercase			:				Tuple 						=						credit_card_number
    _lowercase			:				str 						=						0
    _lowercase			:				List[Any] 						=						len(lowerCamelCase_					) - 2
    for i in range(lowerCamelCase_				,					-1				,					-2					):
        #  double the value of every second digit
        _lowercase			:				List[str] 						=						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 %= 10
            digit += 1
        _lowercase			:				List[Any] 						=						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 % 10 == 0



def 							UpperCamelCase_( lowerCamelCase_					)       ->		bool:
    _lowercase			:				Optional[Any] 						=						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 13 <= len(lowerCamelCase_					) <= 16:
        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, is_vision_available


SCREAMING_SNAKE_CASE			: List[Any]				   =					{
    "configuration_poolformer": [
        "POOLFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "PoolFormerConfig",
        "PoolFormerOnnxConfig",
    ]
}

try:
 if not is_vision_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 SCREAMING_SNAKE_CASE			: List[str]				   =					["PoolFormerFeatureExtractor"]
 SCREAMING_SNAKE_CASE			: List[Any]				   =					["PoolFormerImageProcessor"]

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 SCREAMING_SNAKE_CASE			: List[Any]				   =					[
     "POOLFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
     "PoolFormerForImageClassification",
     "PoolFormerModel",
     "PoolFormerPreTrainedModel",
 ]


if TYPE_CHECKING:
 from .configuration_poolformer import (
     POOLFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
     PoolFormerConfig,
     PoolFormerOnnxConfig,
 )

 try:
  if not is_vision_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .feature_extraction_poolformer import PoolFormerFeatureExtractor
  from .image_processing_poolformer import PoolFormerImageProcessor

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_poolformer import (
      POOLFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
      PoolFormerForImageClassification,
      PoolFormerModel,
      PoolFormerPreTrainedModel,
  )


else:
 import sys

 SCREAMING_SNAKE_CASE			: str				   =					_LazyModule(__name__, globals()["__file__"], _import_structure)


