prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  When attempting to generate a Finnish ssn of a specific age the provider crashes
  * Faker version: 19.11.0
  * OS: Windows 10
  
  When attempting to generate a Finnish ssn of a certain age the provider crashes because ``datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))`` is always trying to generate a time within range. The ssn provider should handle situations where min_age and max_age are the same.
  For example:
  ```
  if min_age == max_age:
      age = datetime.timedelta(days=min_age * 365)
  else:
      age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))
  ```
  
  ### Steps to reproduce
  
  1. Create a faker with fi_FI locale: ``fake = Faker('fi_FI')``
  2. Call the ssn provider with the same minimum and maximum age: ``fake.ssn(min_age=50, max_age=50, artificial=True)``
  
  ### Expected behavior
  
  The faker generates an artificial Finnish ssn that is 50 years old. 
  
  ### Actual behavior
  
  ``ValueError: empty range for randrange() (18250, 18250, 0)``
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `faker/providers/ssn/fi_FI/__init__.py`
  Content:
  ```
  1 import datetime
  2 
  3 from .. import Provider as SsnProvider
  4 
  5 
  6 class Provider(SsnProvider):
  7     def ssn(self, min_age: int = 0, max_age: int = 105, artificial: bool = False) -> str:
  8         """
  9         Returns 11 character Finnish personal identity code (Henkilötunnus,
  10         HETU, Swedish: Personbeteckning). This function assigns random
  11         gender to person.
  12 
  13         HETU consists of eleven characters of the form DDMMYYCZZZQ, where
  14         DDMMYY is the date of birth, C the century sign, ZZZ the individual
  15         number and Q the control character (checksum). The sign for the
  16         century is either + (1800–1899), - (1900–1999), or A (2000–2099).
  17         The individual number ZZZ is odd for males and even for females.
  18         For people born in Finland its range is 002-899
  19         (larger numbers may be used in special cases).
  20         An example of a valid code is 311280-888Y.
  21 
  22         https://en.wikipedia.org/wiki/National_identification_number#Finland
  23         """
  24 
  25         def _checksum(hetu):
  26             checksum_characters = "0123456789ABCDEFHJKLMNPRSTUVWXY"
  27             return checksum_characters[int(hetu) % 31]
  28 
  29         age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))
  30         birthday = datetime.date.today() - age
  31         hetu_date = "%02d%02d%s" % (
  32             birthday.day,
  33             birthday.month,
  34             str(birthday.year)[-2:],
  35         )
  36         range = (900, 999) if artificial is True else (2, 899)
  37         suffix = str(self.generator.random.randrange(*range)).zfill(3)
  38         checksum = _checksum(hetu_date + suffix)
  39         separator = self._get_century_code(birthday.year)
  40         hetu = "".join([hetu_date, separator, suffix, checksum])
  41         return hetu
  42 
  43     @staticmethod
  44     def _get_century_code(year: int) -> str:
  45         """Returns the century code for a given year"""
  46         if 2000 <= year < 3000:
  47             separator = "A"
  48         elif 1900 <= year < 2000:
  49             separator = "-"
  50         elif 1800 <= year < 1900:
  51             separator = "+"
  52         else:
  53             raise ValueError("Finnish SSN do not support people born before the year 1800 or after the year 2999")
  54         return separator
  55 
  56     vat_id_formats = ("FI########",)
  57 
  58     def vat_id(self) -> str:
  59         """
  60         http://ec.europa.eu/taxation_customs/vies/faq.html#item_11
  61         :return: A random Finnish VAT ID
  62         """
  63         return self.bothify(self.random_element(self.vat_id_formats))
  64
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/faker/providers/ssn/fi_FI/__init__.py b/faker/providers/ssn/fi_FI/__init__.py
  --- a/faker/providers/ssn/fi_FI/__init__.py
  +++ b/faker/providers/ssn/fi_FI/__init__.py
  @@ -26,7 +26,10 @@
               checksum_characters = "0123456789ABCDEFHJKLMNPRSTUVWXY"
               return checksum_characters[int(hetu) % 31]
   
  -        age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))
  +        if min_age == max_age:
  +            age = datetime.timedelta(days=min_age * 365)
  +        else:
  +            age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))
           birthday = datetime.date.today() - age
           hetu_date = "%02d%02d%s" % (
               birthday.day,
  
verification_info: {"golden_diff": "diff --git a/faker/providers/ssn/fi_FI/__init__.py b/faker/providers/ssn/fi_FI/__init__.py\n--- a/faker/providers/ssn/fi_FI/__init__.py\n+++ b/faker/providers/ssn/fi_FI/__init__.py\n@@ -26,7 +26,10 @@\n             checksum_characters = \"0123456789ABCDEFHJKLMNPRSTUVWXY\"\n             return checksum_characters[int(hetu) % 31]\n \n-        age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))\n+        if min_age == max_age:\n+            age = datetime.timedelta(days=min_age * 365)\n+        else:\n+            age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))\n         birthday = datetime.date.today() - age\n         hetu_date = \"%02d%02d%s\" % (\n             birthday.day,\n", "issue": "When attempting to generate a Finnish ssn of a specific age the provider crashes\n* Faker version: 19.11.0\r\n* OS: Windows 10\r\n\r\nWhen attempting to generate a Finnish ssn of a certain age the provider crashes because ``datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))`` is always trying to generate a time within range. The ssn provider should handle situations where min_age and max_age are the same.\r\nFor example:\r\n```\r\nif min_age == max_age:\r\n    age = datetime.timedelta(days=min_age * 365)\r\nelse:\r\n    age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))\r\n```\r\n\r\n### Steps to reproduce\r\n\r\n1. Create a faker with fi_FI locale: ``fake = Faker('fi_FI')``\r\n2. Call the ssn provider with the same minimum and maximum age: ``fake.ssn(min_age=50, max_age=50, artificial=True)``\r\n\r\n### Expected behavior\r\n\r\nThe faker generates an artificial Finnish ssn that is 50 years old. \r\n\r\n### Actual behavior\r\n\r\n``ValueError: empty range for randrange() (18250, 18250, 0)``\r\n\n", "before_files": [{"content": "import datetime\n\nfrom .. import Provider as SsnProvider\n\n\nclass Provider(SsnProvider):\n    def ssn(self, min_age: int = 0, max_age: int = 105, artificial: bool = False) -> str:\n        \"\"\"\n        Returns 11 character Finnish personal identity code (Henkil\u00f6tunnus,\n        HETU, Swedish: Personbeteckning). This function assigns random\n        gender to person.\n\n        HETU consists of eleven characters of the form DDMMYYCZZZQ, where\n        DDMMYY is the date of birth, C the century sign, ZZZ the individual\n        number and Q the control character (checksum). The sign for the\n        century is either + (1800\u20131899), - (1900\u20131999), or A (2000\u20132099).\n        The individual number ZZZ is odd for males and even for females.\n        For people born in Finland its range is 002-899\n        (larger numbers may be used in special cases).\n        An example of a valid code is 311280-888Y.\n\n        https://en.wikipedia.org/wiki/National_identification_number#Finland\n        \"\"\"\n\n        def _checksum(hetu):\n            checksum_characters = \"0123456789ABCDEFHJKLMNPRSTUVWXY\"\n            return checksum_characters[int(hetu) % 31]\n\n        age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))\n        birthday = datetime.date.today() - age\n        hetu_date = \"%02d%02d%s\" % (\n            birthday.day,\n            birthday.month,\n            str(birthday.year)[-2:],\n        )\n        range = (900, 999) if artificial is True else (2, 899)\n        suffix = str(self.generator.random.randrange(*range)).zfill(3)\n        checksum = _checksum(hetu_date + suffix)\n        separator = self._get_century_code(birthday.year)\n        hetu = \"\".join([hetu_date, separator, suffix, checksum])\n        return hetu\n\n    @staticmethod\n    def _get_century_code(year: int) -> str:\n        \"\"\"Returns the century code for a given year\"\"\"\n        if 2000 <= year < 3000:\n            separator = \"A\"\n        elif 1900 <= year < 2000:\n            separator = \"-\"\n        elif 1800 <= year < 1900:\n            separator = \"+\"\n        else:\n            raise ValueError(\"Finnish SSN do not support people born before the year 1800 or after the year 2999\")\n        return separator\n\n    vat_id_formats = (\"FI########\",)\n\n    def vat_id(self) -> str:\n        \"\"\"\n        http://ec.europa.eu/taxation_customs/vies/faq.html#item_11\n        :return: A random Finnish VAT ID\n        \"\"\"\n        return self.bothify(self.random_element(self.vat_id_formats))\n", "path": "faker/providers/ssn/fi_FI/__init__.py"}], "after_files": [{"content": "import datetime\n\nfrom .. import Provider as SsnProvider\n\n\nclass Provider(SsnProvider):\n    def ssn(self, min_age: int = 0, max_age: int = 105, artificial: bool = False) -> str:\n        \"\"\"\n        Returns 11 character Finnish personal identity code (Henkil\u00f6tunnus,\n        HETU, Swedish: Personbeteckning). This function assigns random\n        gender to person.\n\n        HETU consists of eleven characters of the form DDMMYYCZZZQ, where\n        DDMMYY is the date of birth, C the century sign, ZZZ the individual\n        number and Q the control character (checksum). The sign for the\n        century is either + (1800\u20131899), - (1900\u20131999), or A (2000\u20132099).\n        The individual number ZZZ is odd for males and even for females.\n        For people born in Finland its range is 002-899\n        (larger numbers may be used in special cases).\n        An example of a valid code is 311280-888Y.\n\n        https://en.wikipedia.org/wiki/National_identification_number#Finland\n        \"\"\"\n\n        def _checksum(hetu):\n            checksum_characters = \"0123456789ABCDEFHJKLMNPRSTUVWXY\"\n            return checksum_characters[int(hetu) % 31]\n\n        if min_age == max_age:\n            age = datetime.timedelta(days=min_age * 365)\n        else:\n            age = datetime.timedelta(days=self.generator.random.randrange(min_age * 365, max_age * 365))\n        birthday = datetime.date.today() - age\n        hetu_date = \"%02d%02d%s\" % (\n            birthday.day,\n            birthday.month,\n            str(birthday.year)[-2:],\n        )\n        range = (900, 999) if artificial is True else (2, 899)\n        suffix = str(self.generator.random.randrange(*range)).zfill(3)\n        checksum = _checksum(hetu_date + suffix)\n        separator = self._get_century_code(birthday.year)\n        hetu = \"\".join([hetu_date, separator, suffix, checksum])\n        return hetu\n\n    @staticmethod\n    def _get_century_code(year: int) -> str:\n        \"\"\"Returns the century code for a given year\"\"\"\n        if 2000 <= year < 3000:\n            separator = \"A\"\n        elif 1900 <= year < 2000:\n            separator = \"-\"\n        elif 1800 <= year < 1900:\n            separator = \"+\"\n        else:\n            raise ValueError(\"Finnish SSN do not support people born before the year 1800 or after the year 2999\")\n        return separator\n\n    vat_id_formats = (\"FI########\",)\n\n    def vat_id(self) -> str:\n        \"\"\"\n        http://ec.europa.eu/taxation_customs/vies/faq.html#item_11\n        :return: A random Finnish VAT ID\n        \"\"\"\n        return self.bothify(self.random_element(self.vat_id_formats))\n", "path": "faker/providers/ssn/fi_FI/__init__.py"}]}