"""simple docstring"""


def       UpperCAmelCase					(	UpperCAmelCase		,      UpperCAmelCase      )       ->   str:
     if not isinstance(UpperCAmelCase		,      UpperCAmelCase      ):
          raise TypeError('plaintext must be a string'      )
     if not isinstance(UpperCAmelCase		,      UpperCAmelCase      ):
          raise TypeError('key must be a string'      )

     if not plaintext:
          raise ValueError('plaintext is empty'      )
     if not key:
          raise ValueError('key is empty'      )

     key += plaintext
     snake_case_       =      plaintext.lower()
     snake_case_       =      key.lower()
     snake_case_       =      0
     snake_case_       =      0
     snake_case_       =      ''
     while plaintext_iterator < len(UpperCAmelCase      ):
          if (
              ord(plaintext[plaintext_iterator]      ) < 97
              or ord(plaintext[plaintext_iterator]      ) > 122
          ):
               ciphertext += plaintext[plaintext_iterator]
               plaintext_iterator += 1
          elif ord(key[key_iterator]      ) < 97 or ord(key[key_iterator]      ) > 122:
               key_iterator += 1
          else:
               ciphertext += chr(
                   (
                       (ord(plaintext[plaintext_iterator]      ) - 97 + ord(key[key_iterator]      ))
                       - 97
                   )
                   % 26
                   + 97      )
               key_iterator += 1
               plaintext_iterator += 1
     return ciphertext







def       UpperCAmelCase					(	UpperCAmelCase		,      UpperCAmelCase      )       ->   str:
     if not isinstance(UpperCAmelCase		,      UpperCAmelCase      ):
          raise TypeError('ciphertext must be a string'      )
     if not isinstance(UpperCAmelCase		,      UpperCAmelCase      ):
          raise TypeError('key must be a string'      )

     if not ciphertext:
          raise ValueError('ciphertext is empty'      )
     if not key:
          raise ValueError('key is empty'      )

     snake_case_       =      key.lower()
     snake_case_       =      0
     snake_case_       =      0
     snake_case_       =      ''
     while ciphertext_iterator < len(UpperCAmelCase      ):
          if (
              ord(ciphertext[ciphertext_iterator]      ) < 97
              or ord(ciphertext[ciphertext_iterator]      ) > 122
          ):
               plaintext += ciphertext[ciphertext_iterator]
          else:
               plaintext += chr(
                   (ord(ciphertext[ciphertext_iterator]      ) - ord(key[key_iterator]      )) % 26
                   + 97      )
               key += chr(
                   (ord(ciphertext[ciphertext_iterator]      ) - ord(key[key_iterator]      )) % 26
                   + 97      )
               key_iterator += 1
          ciphertext_iterator += 1
     return plaintext


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      __UpperCamelCase								=    int(input('''Type 1 to encrypt or 2 to decrypt:'''))
      if operation == 1:
            __UpperCamelCase								=    input('''Typeplaintext to be encrypted:\n''')
            __UpperCamelCase								=    input('''Type the key:\n''')
            print(encrypt(plaintext, key))
      elif operation == 2:
            __UpperCamelCase								=    input('''Type the ciphertext to be decrypted:\n''')
            __UpperCamelCase								=    input('''Type the key:\n''')
            print(decrypt(ciphertext, key))
      decrypt('''jsqqs avvwo''', '''coffee''')


"""simple docstring"""


import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging


__UpperCamelCase								=    logging.get_logger(__name__)

__UpperCamelCase								=    {
    '''facebook/sam-vit-huge''': '''https://huggingface.co/facebook/sam-vit-huge/resolve/main/config.json''',
    '''facebook/sam-vit-large''': '''https://huggingface.co/facebook/sam-vit-large/resolve/main/config.json''',
    '''facebook/sam-vit-base''': '''https://huggingface.co/facebook/sam-vit-base/resolve/main/config.json''',
}




class 				UpperCamelCase      (       lowerCAmelCase__     ):







       def __init__(				self,							lowerCAmelCase__=256,							lowerCAmelCase__=1024,							lowerCAmelCase__=16,							lowerCAmelCase__=16,							lowerCAmelCase__=4,							lowerCAmelCase__="gelu",							lowerCAmelCase__=1e-6,							**lowerCAmelCase__,							)   ->   int:
            super().__init__(**lowerCAmelCase__)
            snake_case_       =      hidden_size
            snake_case_       =      image_size
            snake_case_       =      patch_size
            snake_case_       =      image_size // patch_size
            snake_case_       =      mask_input_channels
            snake_case_       =      num_point_embeddings
            snake_case_       =      hidden_act
            snake_case_       =      layer_norm_eps




class 				UpperCamelCase      (       lowerCAmelCase__     ):







       def __init__(				self,							lowerCAmelCase__=256,							lowerCAmelCase__="relu",							lowerCAmelCase__=2048,							lowerCAmelCase__=2,							lowerCAmelCase__=8,							lowerCAmelCase__=2,							lowerCAmelCase__=3,							lowerCAmelCase__=3,							lowerCAmelCase__=256,							lowerCAmelCase__=1e-6,							**lowerCAmelCase__,							)   ->   List[str]:
            super().__init__(**lowerCAmelCase__)
            snake_case_       =      hidden_size
            snake_case_       =      hidden_act
            snake_case_       =      mlp_dim
            snake_case_       =      num_hidden_layers
            snake_case_       =      num_attention_heads
            snake_case_       =      attention_downsample_rate
            snake_case_       =      num_multimask_outputs
            snake_case_       =      iou_head_depth
            snake_case_       =      iou_head_hidden_dim
            snake_case_       =      layer_norm_eps




class 				UpperCamelCase      (       lowerCAmelCase__     ):







       def __init__(				self,							lowerCAmelCase__=768,							lowerCAmelCase__=256,							lowerCAmelCase__=12,							lowerCAmelCase__=12,							lowerCAmelCase__=3,							lowerCAmelCase__=1024,							lowerCAmelCase__=16,							lowerCAmelCase__="gelu",							lowerCAmelCase__=1e-06,							lowerCAmelCase__=0.0,							lowerCAmelCase__=1e-10,							lowerCAmelCase__=True,							lowerCAmelCase__=4.0,							lowerCAmelCase__=True,							lowerCAmelCase__=True,							lowerCAmelCase__=14,							lowerCAmelCase__=[2, 5, 8, 11],							lowerCAmelCase__=128,							lowerCAmelCase__=None,							**lowerCAmelCase__,							)   ->   List[str]:
            super().__init__(**lowerCAmelCase__)

            snake_case_       =      hidden_size
            snake_case_       =      output_channels
            snake_case_       =      num_hidden_layers
            snake_case_       =      num_attention_heads
            snake_case_       =      num_channels
            snake_case_       =      image_size
            snake_case_       =      patch_size
            snake_case_       =      hidden_act
            snake_case_       =      layer_norm_eps
            snake_case_       =      attention_dropout
            snake_case_       =      initializer_range
            snake_case_       =      qkv_bias
            snake_case_       =      mlp_ratio
            snake_case_       =      use_abs_pos
            snake_case_       =      use_rel_pos
            snake_case_       =      window_size
            snake_case_       =      global_attn_indexes
            snake_case_       =      num_pos_feats
            snake_case_       =      int(hidden_size * mlp_ratio) if mlp_dim is None else mlp_dim




class 				UpperCamelCase      (       lowerCAmelCase__     ):
       SCREAMING_SNAKE_CASE_				=   "sam"
       SCREAMING_SNAKE_CASE_				=   True







       def __init__(				self,							lowerCAmelCase__=None,							lowerCAmelCase__=None,							lowerCAmelCase__=None,							lowerCAmelCase__=0.02,							**lowerCAmelCase__,							)   ->   Any:
            super().__init__(**lowerCAmelCase__)
            snake_case_       =      vision_config if vision_config is not None else {}
            snake_case_       =      prompt_encoder_config if prompt_encoder_config is not None else {}
            snake_case_       =      mask_decoder_config if mask_decoder_config is not None else {}

            if isinstance(lowerCAmelCase__,							lowerCAmelCase__):
                 snake_case_       =      vision_config.to_dict()
            if isinstance(lowerCAmelCase__,							lowerCAmelCase__):
                 snake_case_       =      prompt_encoder_config.to_dict()
            if isinstance(lowerCAmelCase__,							lowerCAmelCase__):
                 snake_case_       =      mask_decoder_config.to_dict()

            snake_case_       =      SamVisionConfig(**lowerCAmelCase__)
            snake_case_       =      SamPromptEncoderConfig(**lowerCAmelCase__)
            snake_case_       =      SamMaskDecoderConfig(**lowerCAmelCase__)
            snake_case_       =      initializer_range







       def 	a_		(				self)   ->   Dict:
            snake_case_       =      copy.deepcopy(self.__dict__)
            snake_case_       =      self.vision_config.to_dict()
            snake_case_       =      self.prompt_encoder_config.to_dict()
            snake_case_       =      self.mask_decoder_config.to_dict()
            snake_case_       =      self.__class__.model_type
            return output

