"""simple docstring"""






from collections import OrderedDict
from typing import TYPE_CHECKING, Any, Mapping, Optional, Union

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig, OnnxSeqaSeqConfigWithPast
from ...utils import logging


if TYPE_CHECKING:
       from ...feature_extraction_utils import FeatureExtractionMixin
       from ...tokenization_utils_base import PreTrainedTokenizerBase
       from ...utils import TensorType

__lowerCAmelCase       :			List[Any]   	=logging.get_logger(__name__)

__lowerCAmelCase       :			Optional[Any]   	={
    """openai/whisper-base""": """https://huggingface.co/openai/whisper-base/resolve/main/config.json""",
}

# fmt: off
__lowerCAmelCase       :			List[Any]   	=[
    1, 2, 7, 8, 9, 1_0, 1_4, 2_5,
    2_6, 2_7, 2_8, 2_9, 3_1, 5_8, 5_9, 6_0, 6_1, 6_2,
    6_3, 9_0, 9_1, 9_2, 9_3, 3_5_7, 3_6_6, 4_3_8, 5_3_2, 6_8_5,
    7_0_5, 7_9_6, 9_3_0, 1_0_5_8, 1_2_2_0, 1_2_6_7, 1_2_7_9, 1_3_0_3, 1_3_4_3, 1_3_7_7,
    1_3_9_1, 1_6_3_5, 1_7_8_2, 1_8_7_5, 2_1_6_2, 2_3_6_1, 2_4_8_8, 3_4_6_7, 4_0_0_8, 4_2_1_1,
    4_6_0_0, 4_8_0_8, 5_2_9_9, 5_8_5_5, 6_3_2_9, 7_2_0_3, 9_6_0_9, 9_9_5_9, 1_0_5_6_3, 1_0_7_8_6,
    1_1_4_2_0, 1_1_7_0_9, 1_1_9_0_7, 1_3_1_6_3, 1_3_6_9_7, 1_3_7_0_0, 1_4_8_0_8, 1_5_3_0_6, 1_6_4_1_0, 1_6_7_9_1,
    1_7_9_9_2, 1_9_2_0_3, 1_9_5_1_0, 2_0_7_2_4, 2_2_3_0_5, 2_2_9_3_5, 2_7_0_0_7, 3_0_1_0_9, 3_0_4_2_0, 3_3_4_0_9,
    3_4_9_4_9, 4_0_2_8_3, 4_0_4_9_3, 4_0_5_4_9, 4_7_2_8_2, 4_9_1_4_6, 5_0_2_5_7, 5_0_3_5_9, 5_0_3_6_0, 5_0_3_6_1
]
__lowerCAmelCase       :			Optional[Any]   	=[
    1, 2, 7, 8, 9, 1_0, 1_4, 2_5,
    2_6, 2_7, 2_8, 2_9, 3_1, 5_8, 5_9, 6_0, 6_1, 6_2,
    6_3, 9_0, 9_1, 9_2, 9_3, 3_5_9, 5_0_3, 5_2_2, 5_4_2, 8_7_3,
    8_9_3, 9_0_2, 9_1_8, 9_2_2, 9_3_1, 1_3_5_0, 1_8_5_3, 1_9_8_2, 2_4_6_0, 2_6_2_7,
    3_2_4_6, 3_2_5_3, 3_2_6_8, 3_5_3_6, 3_8_4_6, 3_9_6_1, 4_1_8_3, 4_6_6_7, 6_5_8_5, 6_6_4_7,
    7_2_7_3, 9_0_6_1, 9_3_8_3, 1_0_4_2_8, 1_0_9_2_9, 1_1_9_3_8, 1_2_0_3_3, 1_2_3_3_1, 1_2_5_6_2, 1_3_7_9_3,
    1_4_1_5_7, 1_4_6_3_5, 1_5_2_6_5, 1_5_6_1_8, 1_6_5_5_3, 1_6_6_0_4, 1_8_3_6_2, 1_8_9_5_6, 2_0_0_7_5, 2_1_6_7_5,
    2_2_5_2_0, 2_6_1_3_0, 2_6_1_6_1, 2_6_4_3_5, 2_8_2_7_9, 2_9_4_6_4, 3_1_6_5_0, 3_2_3_0_2, 3_2_4_7_0, 3_6_8_6_5,
    4_2_8_6_3, 4_7_4_2_5, 4_9_8_7_0, 5_0_2_5_4, 5_0_2_5_8, 5_0_3_6_0, 5_0_3_6_1, 5_0_3_6_2
]





class 					_A		(			lowerCAmelCase      ):
      snake_case__     :  List[Any]				    =      'whisper'
      snake_case__     :  Any				    =      ['past_key_values']
      snake_case__     :  Any				    =      {'num_attention_heads': 'encoder_attention_heads', 'hidden_size': 'd_model'}

      def __init__(		self						,			__lowerCAmelCase=5_1865						,			__lowerCAmelCase=80						,			__lowerCAmelCase=6						,			__lowerCAmelCase=4						,			__lowerCAmelCase=6						,			__lowerCAmelCase=4						,			__lowerCAmelCase=1536						,			__lowerCAmelCase=1536						,			__lowerCAmelCase=0.0						,			__lowerCAmelCase=0.0						,			__lowerCAmelCase=5_0257						,			__lowerCAmelCase=True						,			__lowerCAmelCase=True						,			__lowerCAmelCase="gelu"						,			__lowerCAmelCase=256						,			__lowerCAmelCase=0.0						,			__lowerCAmelCase=0.0						,			__lowerCAmelCase=0.0						,			__lowerCAmelCase=0.0_2						,			__lowerCAmelCase=False						,			__lowerCAmelCase=1500						,			__lowerCAmelCase=448						,			__lowerCAmelCase=5_0256						,			__lowerCAmelCase=5_0256						,			__lowerCAmelCase=5_0256						,			__lowerCAmelCase=None						,			__lowerCAmelCase=[220, 5_0256]						,			__lowerCAmelCase=False						,			__lowerCAmelCase=256						,			__lowerCAmelCase=False						,			__lowerCAmelCase=0.0_5						,			__lowerCAmelCase=10						,			__lowerCAmelCase=2						,			__lowerCAmelCase=0.0						,			__lowerCAmelCase=10						,			__lowerCAmelCase=0						,			__lowerCAmelCase=7						,			**__lowerCAmelCase						,			):







            """simple docstring"""



            lowercase								=      vocab_size
            lowercase								=      num_mel_bins
            lowercase								=      d_model
            lowercase								=      encoder_layers
            lowercase								=      encoder_attention_heads
            lowercase								=      decoder_layers
            lowercase								=      decoder_attention_heads
            lowercase								=      decoder_ffn_dim
            lowercase								=      encoder_ffn_dim
            lowercase								=      dropout
            lowercase								=      attention_dropout
            lowercase								=      activation_dropout
            lowercase								=      activation_function
            lowercase								=      init_std
            lowercase								=      encoder_layerdrop
            lowercase								=      decoder_layerdrop
            lowercase								=      use_cache
            lowercase								=      encoder_layers
            lowercase								=      scale_embedding  # scale factor will be sqrt(d_model) if True
            lowercase								=      max_source_positions
            lowercase								=      max_target_positions

            # Audio Classification-specific parameters. Feel free to ignore for other classes.
            lowercase								=      classifier_proj_size
            lowercase								=      use_weighted_layer_sum

            # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
            lowercase								=      apply_spec_augment
            lowercase								=      mask_time_prob
            lowercase								=      mask_time_length
            lowercase								=      mask_time_min_masks
            lowercase								=      mask_feature_prob
            lowercase								=      mask_feature_length
            lowercase								=      mask_feature_min_masks

            lowercase								=      median_filter_width

            super().__init__(
                pad_token_id=__lowerCAmelCase						,			bos_token_id=__lowerCAmelCase						,			eos_token_id=__lowerCAmelCase						,			is_encoder_decoder=__lowerCAmelCase						,			decoder_start_token_id=__lowerCAmelCase						,			suppress_tokens=__lowerCAmelCase						,			begin_suppress_tokens=__lowerCAmelCase						,			**__lowerCAmelCase						,			)






class 					_A		(			lowerCAmelCase      ):

      @property
      def 							A__			(		self		):







            """simple docstring"""



            lowercase								=      OrderedDict(
                [
                    ("""input_features""", {0: """batch""", 1: """feature_size""", 2: """encoder_sequence"""}),
                ]		)
            if self.use_past:
                  lowercase								=      {0: """batch"""}
            else:
                  lowercase								=      {0: """batch""", 1: """decoder_sequence"""}

            if self.use_past:
                  self.fill_with_past_key_values_(__lowerCAmelCase						,			direction="""inputs"""		)

            return common_inputs

      def 							A__			(		self						,			__lowerCAmelCase						,			__lowerCAmelCase = -1						,			__lowerCAmelCase = -1						,			__lowerCAmelCase = False						,			__lowerCAmelCase = None						,			__lowerCAmelCase = 2_2050						,			__lowerCAmelCase = 5.0						,			__lowerCAmelCase = 220						,			):







            """simple docstring"""



            lowercase								=      OrderedDict()
            lowercase								=      OnnxConfig.generate_dummy_inputs(
                self						,			preprocessor=preprocessor.feature_extractor						,			batch_size=__lowerCAmelCase						,			framework=__lowerCAmelCase						,			sampling_rate=__lowerCAmelCase						,			time_duration=__lowerCAmelCase						,			frequency=__lowerCAmelCase						,			)
            lowercase								=      encoder_inputs["""input_features"""].shape[2]
            lowercase								=      encoder_sequence_length // 2 if self.use_past else seq_length

            lowercase								=      super().generate_dummy_inputs(
                preprocessor.tokenizer						,			__lowerCAmelCase						,			__lowerCAmelCase						,			__lowerCAmelCase						,			__lowerCAmelCase		)

            lowercase								=      encoder_inputs.pop("""input_features"""		)
            lowercase								=      decoder_inputs.pop("""decoder_input_ids"""		)

            if "past_key_values" in decoder_inputs:
                  lowercase								=      decoder_inputs.pop("""past_key_values"""		)

            return dummy_inputs







      @property
      def 							A__			(		self		):







            """simple docstring"""



            return 1E-3




"""simple docstring"""






def      UpperCAmelCase__			(							lowerCAmelCase__	:int = 5_0						)					->       int:
      '''simple docstring'''


      lowercase								=      [1] * (length + 1)

      for row_length in range(3   ,						length + 1						):
            for block_length in range(3   ,						row_length + 1						):
                  for block_start in range(row_length - block_length						):
                        ways_number[row_length] += ways_number[
                            row_length - block_start - block_length - 1
                        ]

                  ways_number[row_length] += 1

      return ways_number[length]


if __name__ == "__main__":
       print(F"""{solution() = }""")



