'''simple docstring'''




from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
)


snake_case  =			{
    '''auto_factory''': ['''get_values'''],
    '''configuration_auto''': ['''ALL_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''CONFIG_MAPPING''', '''MODEL_NAMES_MAPPING''', '''AutoConfig'''],
    '''feature_extraction_auto''': ['''FEATURE_EXTRACTOR_MAPPING''', '''AutoFeatureExtractor'''],
    '''image_processing_auto''': ['''IMAGE_PROCESSOR_MAPPING''', '''AutoImageProcessor'''],
    '''processing_auto''': ['''PROCESSOR_MAPPING''', '''AutoProcessor'''],
    '''tokenization_auto''': ['''TOKENIZER_MAPPING''', '''AutoTokenizer'''],
}

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 snake_case  =			[
     '''MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_AUDIO_XVECTOR_MAPPING''',
     '''MODEL_FOR_BACKBONE_MAPPING''',
     '''MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING''',
     '''MODEL_FOR_CAUSAL_LM_MAPPING''',
     '''MODEL_FOR_CTC_MAPPING''',
     '''MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING''',
     '''MODEL_FOR_DEPTH_ESTIMATION_MAPPING''',
     '''MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_IMAGE_SEGMENTATION_MAPPING''',
     '''MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING''',
     '''MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING''',
     '''MODEL_FOR_MASKED_LM_MAPPING''',
     '''MODEL_FOR_MASK_GENERATION_MAPPING''',
     '''MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
     '''MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
     '''MODEL_FOR_OBJECT_DETECTION_MAPPING''',
     '''MODEL_FOR_PRETRAINING_MAPPING''',
     '''MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
     '''MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING''',
     '''MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
     '''MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
     '''MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING''',
     '''MODEL_FOR_TEXT_ENCODING_MAPPING''',
     '''MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING''',
     '''MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_VISION_2_SEQ_MAPPING''',
     '''MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING''',
     '''MODEL_MAPPING''',
     '''MODEL_WITH_LM_HEAD_MAPPING''',
     '''MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING''',
     '''MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING''',
     '''AutoModel''',
     '''AutoBackbone''',
     '''AutoModelForAudioClassification''',
     '''AutoModelForAudioFrameClassification''',
     '''AutoModelForAudioXVector''',
     '''AutoModelForCausalLM''',
     '''AutoModelForCTC''',
     '''AutoModelForDepthEstimation''',
     '''AutoModelForImageClassification''',
     '''AutoModelForImageSegmentation''',
     '''AutoModelForInstanceSegmentation''',
     '''AutoModelForMaskGeneration''',
     '''AutoModelForTextEncoding''',
     '''AutoModelForMaskedImageModeling''',
     '''AutoModelForMaskedLM''',
     '''AutoModelForMultipleChoice''',
     '''AutoModelForNextSentencePrediction''',
     '''AutoModelForObjectDetection''',
     '''AutoModelForPreTraining''',
     '''AutoModelForQuestionAnswering''',
     '''AutoModelForSemanticSegmentation''',
     '''AutoModelForSeq2SeqLM''',
     '''AutoModelForSequenceClassification''',
     '''AutoModelForSpeechSeq2Seq''',
     '''AutoModelForTableQuestionAnswering''',
     '''AutoModelForTokenClassification''',
     '''AutoModelForUniversalSegmentation''',
     '''AutoModelForVideoClassification''',
     '''AutoModelForVision2Seq''',
     '''AutoModelForVisualQuestionAnswering''',
     '''AutoModelForDocumentQuestionAnswering''',
     '''AutoModelWithLMHead''',
     '''AutoModelForZeroShotImageClassification''',
     '''AutoModelForZeroShotObjectDetection''',
 ]

try:
 if not is_tf_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 snake_case  =			[
     '''TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
     '''TF_MODEL_FOR_CAUSAL_LM_MAPPING''',
     '''TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
     '''TF_MODEL_FOR_MASK_GENERATION_MAPPING''',
     '''TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING''',
     '''TF_MODEL_FOR_MASKED_LM_MAPPING''',
     '''TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
     '''TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
     '''TF_MODEL_FOR_PRETRAINING_MAPPING''',
     '''TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
     '''TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING''',
     '''TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING''',
     '''TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
     '''TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
     '''TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
     '''TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING''',
     '''TF_MODEL_FOR_TEXT_ENCODING_MAPPING''',
     '''TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
     '''TF_MODEL_FOR_VISION_2_SEQ_MAPPING''',
     '''TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING''',
     '''TF_MODEL_MAPPING''',
     '''TF_MODEL_WITH_LM_HEAD_MAPPING''',
     '''TFAutoModel''',
     '''TFAutoModelForAudioClassification''',
     '''TFAutoModelForCausalLM''',
     '''TFAutoModelForImageClassification''',
     '''TFAutoModelForMaskedImageModeling''',
     '''TFAutoModelForMaskedLM''',
     '''TFAutoModelForMaskGeneration''',
     '''TFAutoModelForMultipleChoice''',
     '''TFAutoModelForNextSentencePrediction''',
     '''TFAutoModelForPreTraining''',
     '''TFAutoModelForDocumentQuestionAnswering''',
     '''TFAutoModelForQuestionAnswering''',
     '''TFAutoModelForSemanticSegmentation''',
     '''TFAutoModelForSeq2SeqLM''',
     '''TFAutoModelForSequenceClassification''',
     '''TFAutoModelForSpeechSeq2Seq''',
     '''TFAutoModelForTableQuestionAnswering''',
     '''TFAutoModelForTextEncoding''',
     '''TFAutoModelForTokenClassification''',
     '''TFAutoModelForVision2Seq''',
     '''TFAutoModelForZeroShotImageClassification''',
     '''TFAutoModelWithLMHead''',
 ]

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 snake_case  =			[
     '''FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
     '''FLAX_MODEL_FOR_CAUSAL_LM_MAPPING''',
     '''FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
     '''FLAX_MODEL_FOR_MASKED_LM_MAPPING''',
     '''FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
     '''FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
     '''FLAX_MODEL_FOR_PRETRAINING_MAPPING''',
     '''FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
     '''FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
     '''FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
     '''FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
     '''FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
     '''FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING''',
     '''FLAX_MODEL_MAPPING''',
     '''FlaxAutoModel''',
     '''FlaxAutoModelForCausalLM''',
     '''FlaxAutoModelForImageClassification''',
     '''FlaxAutoModelForMaskedLM''',
     '''FlaxAutoModelForMultipleChoice''',
     '''FlaxAutoModelForNextSentencePrediction''',
     '''FlaxAutoModelForPreTraining''',
     '''FlaxAutoModelForQuestionAnswering''',
     '''FlaxAutoModelForSeq2SeqLM''',
     '''FlaxAutoModelForSequenceClassification''',
     '''FlaxAutoModelForSpeechSeq2Seq''',
     '''FlaxAutoModelForTokenClassification''',
     '''FlaxAutoModelForVision2Seq''',
 ]


if TYPE_CHECKING:
 from .auto_factory import get_values
 from .configuration_auto import ALL_PRETRAINED_CONFIG_ARCHIVE_MAP, CONFIG_MAPPING, MODEL_NAMES_MAPPING, AutoConfig
 from .feature_extraction_auto import FEATURE_EXTRACTOR_MAPPING, AutoFeatureExtractor
 from .image_processing_auto import IMAGE_PROCESSOR_MAPPING, AutoImageProcessor
 from .processing_auto import PROCESSOR_MAPPING, AutoProcessor
 from .tokenization_auto import TOKENIZER_MAPPING, AutoTokenizer

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_auto import (
      MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
      MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING,
      MODEL_FOR_AUDIO_XVECTOR_MAPPING,
      MODEL_FOR_BACKBONE_MAPPING,
      MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING,
      MODEL_FOR_CAUSAL_LM_MAPPING,
      MODEL_FOR_CTC_MAPPING,
      MODEL_FOR_DEPTH_ESTIMATION_MAPPING,
      MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
      MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
      MODEL_FOR_IMAGE_SEGMENTATION_MAPPING,
      MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING,
      MODEL_FOR_MASK_GENERATION_MAPPING,
      MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
      MODEL_FOR_MASKED_LM_MAPPING,
      MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
      MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
      MODEL_FOR_OBJECT_DETECTION_MAPPING,
      MODEL_FOR_PRETRAINING_MAPPING,
      MODEL_FOR_QUESTION_ANSWERING_MAPPING,
      MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
      MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
      MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
      MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
      MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
      MODEL_FOR_TEXT_ENCODING_MAPPING,
      MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
      MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING,
      MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING,
      MODEL_FOR_VISION_2_SEQ_MAPPING,
      MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING,
      MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
      MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING,
      MODEL_MAPPING,
      MODEL_WITH_LM_HEAD_MAPPING,
      AutoBackbone,
      AutoModel,
      AutoModelForAudioClassification,
      AutoModelForAudioFrameClassification,
      AutoModelForAudioXVector,
      AutoModelForCausalLM,
      AutoModelForCTC,
      AutoModelForDepthEstimation,
      AutoModelForDocumentQuestionAnswering,
      AutoModelForImageClassification,
      AutoModelForImageSegmentation,
      AutoModelForInstanceSegmentation,
      AutoModelForMaskedImageModeling,
      AutoModelForMaskedLM,
      AutoModelForMaskGeneration,
      AutoModelForMultipleChoice,
      AutoModelForNextSentencePrediction,
      AutoModelForObjectDetection,
      AutoModelForPreTraining,
      AutoModelForQuestionAnswering,
      AutoModelForSemanticSegmentation,
      AutoModelForSeqaSeqLM,
      AutoModelForSequenceClassification,
      AutoModelForSpeechSeqaSeq,
      AutoModelForTableQuestionAnswering,
      AutoModelForTextEncoding,
      AutoModelForTokenClassification,
      AutoModelForUniversalSegmentation,
      AutoModelForVideoClassification,
      AutoModelForVisionaSeq,
      AutoModelForVisualQuestionAnswering,
      AutoModelForZeroShotImageClassification,
      AutoModelForZeroShotObjectDetection,
      AutoModelWithLMHead,
  )

 try:
  if not is_tf_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_tf_auto import (
      TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
      TF_MODEL_FOR_CAUSAL_LM_MAPPING,
      TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
      TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
      TF_MODEL_FOR_MASK_GENERATION_MAPPING,
      TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
      TF_MODEL_FOR_MASKED_LM_MAPPING,
      TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
      TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
      TF_MODEL_FOR_PRETRAINING_MAPPING,
      TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
      TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
      TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
      TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
      TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
      TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
      TF_MODEL_FOR_TEXT_ENCODING_MAPPING,
      TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
      TF_MODEL_FOR_VISION_2_SEQ_MAPPING,
      TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
      TF_MODEL_MAPPING,
      TF_MODEL_WITH_LM_HEAD_MAPPING,
      TFAutoModel,
      TFAutoModelForAudioClassification,
      TFAutoModelForCausalLM,
      TFAutoModelForDocumentQuestionAnswering,
      TFAutoModelForImageClassification,
      TFAutoModelForMaskedImageModeling,
      TFAutoModelForMaskedLM,
      TFAutoModelForMaskGeneration,
      TFAutoModelForMultipleChoice,
      TFAutoModelForNextSentencePrediction,
      TFAutoModelForPreTraining,
      TFAutoModelForQuestionAnswering,
      TFAutoModelForSemanticSegmentation,
      TFAutoModelForSeqaSeqLM,
      TFAutoModelForSequenceClassification,
      TFAutoModelForSpeechSeqaSeq,
      TFAutoModelForTableQuestionAnswering,
      TFAutoModelForTextEncoding,
      TFAutoModelForTokenClassification,
      TFAutoModelForVisionaSeq,
      TFAutoModelForZeroShotImageClassification,
      TFAutoModelWithLMHead,
  )

 try:
  if not is_flax_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flax_auto import (
      FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
      FLAX_MODEL_FOR_CAUSAL_LM_MAPPING,
      FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
      FLAX_MODEL_FOR_MASKED_LM_MAPPING,
      FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
      FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
      FLAX_MODEL_FOR_PRETRAINING_MAPPING,
      FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
      FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
      FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
      FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
      FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
      FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING,
      FLAX_MODEL_MAPPING,
      FlaxAutoModel,
      FlaxAutoModelForCausalLM,
      FlaxAutoModelForImageClassification,
      FlaxAutoModelForMaskedLM,
      FlaxAutoModelForMultipleChoice,
      FlaxAutoModelForNextSentencePrediction,
      FlaxAutoModelForPreTraining,
      FlaxAutoModelForQuestionAnswering,
      FlaxAutoModelForSeqaSeqLM,
      FlaxAutoModelForSequenceClassification,
      FlaxAutoModelForSpeechSeqaSeq,
      FlaxAutoModelForTokenClassification,
      FlaxAutoModelForVisionaSeq,
  )

else:
 import sys

 snake_case  =			_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)






'''simple docstring'''




from __future__ import annotations







def 			A_   ( _lowerCamelCase			:							str  ,  _lowerCamelCase			:							dict[str, str]    ):
      _lowerCAmelCase   ,  _lowerCAmelCase   ,  _lowerCAmelCase		   =   '', '', ''
      _lowerCAmelCase		   =   []

      for character in message_part:
            tmp.append(character_to_number[character]    )

      for each in tmp:
            one += each[0]
            two += each[1]
            three += each[2]

      return one + two + three







def 			A_   ( _lowerCamelCase			:							str  ,  _lowerCamelCase			:							dict[str, str]    ):
      _lowerCAmelCase   ,  _lowerCAmelCase		   =   '', ''
      _lowerCAmelCase		   =   []

      for character in message_part:
            this_part += character_to_number[character]

      for digit in this_part:
            tmp += digit
            if len(_lowerCamelCase    ) == len(_lowerCamelCase    ):
                  result.append(_lowerCamelCase    )
                  _lowerCAmelCase		   =   ''

      return result[0], result[1], result[2]







def 			A_   ( _lowerCamelCase			:							str  ,  _lowerCamelCase			:							str    ):
      # Validate message and alphabet, set to upper and remove spaces
      _lowerCAmelCase		   =   alphabet.replace(' '  ,  ''    ).upper()
      _lowerCAmelCase		   =   message.replace(' '  ,  ''    ).upper()

      # Check length and characters
      if len(_lowerCamelCase    ) != 27:
            raise KeyError('Length of alphabet has to be 27.'    )
      for each in message:
            if each not in alphabet:
                  raise ValueError('Each message character has to be included in alphabet!'    )

    # Generate dictionares
      _lowerCAmelCase		   =   (
          '111',
          '112',
          '113',
          '121',
          '122',
          '123',
          '131',
          '132',
          '133',
          '211',
          '212',
          '213',
          '221',
          '222',
          '223',
          '231',
          '232',
          '233',
          '311',
          '312',
          '313',
          '321',
          '322',
          '323',
          '331',
          '332',
          '333',
      )
      _lowerCAmelCase		   =   {}
      _lowerCAmelCase		   =   {}
      for letter, number in zip(_lowerCamelCase  ,  _lowerCamelCase    ):
            _lowerCAmelCase		   =   number
            _lowerCAmelCase		   =   letter

      return message, alphabet, character_to_number, number_to_character







def 			A_   ( _lowerCamelCase			:							str  ,  _lowerCamelCase			:							str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ."  ,  _lowerCamelCase			:							int = 5    ):
      _lowerCAmelCase   ,  _lowerCAmelCase   ,  _lowerCAmelCase   ,  _lowerCAmelCase		   =   __prepare(
          _lowerCamelCase  ,  _lowerCamelCase    )
      _lowerCAmelCase   ,  _lowerCAmelCase		   =   '', ''

      for i in range(0  ,  len(_lowerCamelCase    ) + 1  ,  _lowerCamelCase    ):
            encrypted_numeric += __encrypt_part(
                message[i : i + period]  ,  _lowerCamelCase    )

      for i in range(0  ,  len(_lowerCamelCase    )  ,  3    ):
            encrypted += number_to_character[encrypted_numeric[i : i + 3]]

      return encrypted







def 			A_   ( _lowerCamelCase			:							str  ,  _lowerCamelCase			:							str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ."  ,  _lowerCamelCase			:							int = 5    ):
      _lowerCAmelCase   ,  _lowerCAmelCase   ,  _lowerCAmelCase   ,  _lowerCAmelCase		   =   __prepare(
          _lowerCamelCase  ,  _lowerCamelCase    )
      _lowerCAmelCase		   =   []
      _lowerCAmelCase		   =   ''

      for i in range(0  ,  len(_lowerCamelCase    ) + 1  ,  _lowerCamelCase    ):
            _lowerCAmelCase   ,  _lowerCAmelCase   ,  _lowerCAmelCase		   =   __decrypt_part(message[i : i + period]  ,  _lowerCamelCase    )

            for j in range(0  ,  len(_lowerCamelCase    )    ):
                  decrypted_numeric.append(a[j] + b[j] + c[j]    )

      for each in decrypted_numeric:
            decrypted += number_to_character[each]

      return decrypted


if __name__ == "__main__":
 snake_case  =			'''DEFEND THE EAST WALL OF THE CASTLE.'''
 snake_case  =			encrypt_message(msg, '''EPSDUCVWYM.ZLKXNBTFGORIJHAQ''')
 snake_case  =			decrypt_message(encrypted, '''EPSDUCVWYM.ZLKXNBTFGORIJHAQ''')
 print(f'''Encrypted: {encrypted}\nDecrypted: {decrypted}''')





