




def    A						(__A   :    str       )   ->      list[int]:







     """simple docstring"""


     UpperCAmelCase_          =							[0 for i in range(len(__A       )       )]

     # initialize interval's left pointer and right pointer
     UpperCAmelCase_     ,       UpperCAmelCase_          =							0, 0

     for i in range(1   ,				len(__A       )       ):
          # case when current index is inside the interval
          if i <= right_pointer:
               UpperCAmelCase_          =							min(right_pointer - i + 1   ,				z_result[i - left_pointer]       )
               UpperCAmelCase_          =							min_edge

          while go_next(__A   ,				__A   ,				__A       ):
               z_result[i] += 1

          # if new index's result gives us more right interval,
          # we've to update left_pointer and right_pointer
          if i + z_result[i] - 1 > right_pointer:
               UpperCAmelCase_     ,       UpperCAmelCase_          =							i, i + z_result[i] - 1

     return z_result


def    A						(__A   :    int   ,				__A   :    list[int]   ,				__A   :    str       )   ->      bool:







     """simple docstring"""


     return i + z_result[i] < len(__A       ) and s[z_result[i]] == s[i + z_result[i]]


def    A						(__A   :    str   ,				__A   :    str       )   ->      int:







     """simple docstring"""


     UpperCAmelCase_          =							0
     # concatenate 'pattern' and 'input_str' and call z_function
     # with concatenated string
     UpperCAmelCase_          =							z_function(pattern + input_str       )

     for val in z_result:
          # if value is greater then length of the pattern string
          # that means this index is starting position of substring
          # which is equal to pattern string
          if val >= len(__A       ):
               answer += 1

     return answer


if __name__ == "__main__":
    import doctest

    doctest.testmod()












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


snake_case_ : Any    		=       logging.get_logger(__name__)

snake_case_ : Optional[Any]    		=       {
    "tiiuae/falcon-40b": "https://huggingface.co/tiiuae/falcon-40b/resolve/main/config.json",
    "tiiuae/falcon-7b": "https://huggingface.co/tiiuae/falcon-7b/resolve/main/config.json",
}







class __snake_case			(			a		):
   UpperCAmelCase__  :    Optional[Any]          =  '''falcon'''
   UpperCAmelCase__  :    List[Any]          =  ['''past_key_values''']







   def __init__(      self		:						Union[str, Any]					,						_snake_case		:						List[str]=65024					,						_snake_case		:						int=4544					,						_snake_case		:						int=32					,						_snake_case		:						Any=71					,						_snake_case		:						int=1e-5					,						_snake_case		:						Dict=0.0_2					,						_snake_case		:						int=True					,						_snake_case		:						List[Any]=0.0					,						_snake_case		:						Tuple=0.0					,						_snake_case		:						int=None					,						_snake_case		:						Tuple=False					,						_snake_case		:						Any=False					,						_snake_case		:						str=True					,						_snake_case		:						Any=True					,						_snake_case		:						List[str]=False					,						_snake_case		:						Tuple=11					,						_snake_case		:						Dict=11					,						**_snake_case		:						Optional[int]					,						):

        """simple docstring"""


        UpperCAmelCase_          =							vocab_size
        # Backward compatibility with n_embed kwarg
        UpperCAmelCase_          =							kwargs.pop('''n_embed'''					,						_snake_case)
        UpperCAmelCase_          =							hidden_size if n_embed is None else n_embed
        UpperCAmelCase_          =							num_hidden_layers
        UpperCAmelCase_          =							num_attention_heads
        UpperCAmelCase_          =							layer_norm_epsilon
        UpperCAmelCase_          =							initializer_range
        UpperCAmelCase_          =							use_cache
        UpperCAmelCase_          =							hidden_dropout
        UpperCAmelCase_          =							attention_dropout

        UpperCAmelCase_          =							bos_token_id
        UpperCAmelCase_          =							eos_token_id
        UpperCAmelCase_          =							num_attention_heads if num_kv_heads is None else num_kv_heads
        UpperCAmelCase_          =							alibi
        UpperCAmelCase_          =							new_decoder_architecture
        UpperCAmelCase_          =							multi_query  # Ignored when new_decoder_architecture is True
        UpperCAmelCase_          =							parallel_attn
        UpperCAmelCase_          =							bias

        super().__init__(bos_token_id=_snake_case					,						eos_token_id=_snake_case					,						**_snake_case)







   @property
   def lowerCamelCase						(      self		:						List[Any]):

        """simple docstring"""


        return self.hidden_size // self.num_attention_heads







   @property
   def lowerCamelCase						(      self		:						Union[str, Any]):

        """simple docstring"""


        return not self.alibi






