prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  en_US SSN provider generates invalid SSNs
  There's a few limitations on United States' SSNs that prevent it from being completely random.
  - No group can be all 0s
  - The SSN cannot start with 666
  - The SSN cannot start with a number >= 900
  
  See http://www.ssa.gov/employer/randomization.html
  
  Could you modify the SSN generator to avoid these issues?
  
  
  --- 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/en_US/__init__.py`
  Content:
  ```
  1 # coding=utf-8
  2 from __future__ import unicode_literals
  3 from .. import Provider as BaseProvider
  4 
  5 
  6 class Provider(BaseProvider):
  7     pass
  8
  ```
  --- 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/en_US/__init__.py b/faker/providers/ssn/en_US/__init__.py
  --- a/faker/providers/ssn/en_US/__init__.py
  +++ b/faker/providers/ssn/en_US/__init__.py
  @@ -4,4 +4,17 @@
   
   
   class Provider(BaseProvider):
  -    pass
  +
  +    @classmethod
  +    def ssn(cls):
  +        # Certain numbers are invalid for U.S. SSNs. The area (first 3 digits)
  +        # cannot be 666 or 900-999. The group number (middle digits) cannot be
  +        # 00. The serial (last 4 digits) cannot be 0000
  +        area = BaseProvider.random_int(min=1, max=899)
  +        if area == 666:
  +            area += 1
  +        group = BaseProvider.random_int(1, 99)
  +        serial = BaseProvider.random_int(1, 9999)
  +
  +        ssn = "{0:03d}-{1:02d}-{2:04d}".format(area, group, serial)
  +        return ssn
  
verification_info: {"golden_diff": "diff --git a/faker/providers/ssn/en_US/__init__.py b/faker/providers/ssn/en_US/__init__.py\n--- a/faker/providers/ssn/en_US/__init__.py\n+++ b/faker/providers/ssn/en_US/__init__.py\n@@ -4,4 +4,17 @@\n \n \n class Provider(BaseProvider):\n-    pass\n+\n+    @classmethod\n+    def ssn(cls):\n+        # Certain numbers are invalid for U.S. SSNs. The area (first 3 digits)\n+        # cannot be 666 or 900-999. The group number (middle digits) cannot be\n+        # 00. The serial (last 4 digits) cannot be 0000\n+        area = BaseProvider.random_int(min=1, max=899)\n+        if area == 666:\n+            area += 1\n+        group = BaseProvider.random_int(1, 99)\n+        serial = BaseProvider.random_int(1, 9999)\n+\n+        ssn = \"{0:03d}-{1:02d}-{2:04d}\".format(area, group, serial)\n+        return ssn\n", "issue": "en_US SSN provider generates invalid SSNs\nThere's a few limitations on United States' SSNs that prevent it from being completely random.\n- No group can be all 0s\n- The SSN cannot start with 666\n- The SSN cannot start with a number >= 900\n\nSee http://www.ssa.gov/employer/randomization.html\n\nCould you modify the SSN generator to avoid these issues?\n\n", "before_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom .. import Provider as BaseProvider\n\n\nclass Provider(BaseProvider):\n    pass\n", "path": "faker/providers/ssn/en_US/__init__.py"}], "after_files": [{"content": "# coding=utf-8\nfrom __future__ import unicode_literals\nfrom .. import Provider as BaseProvider\n\n\nclass Provider(BaseProvider):\n\n    @classmethod\n    def ssn(cls):\n        # Certain numbers are invalid for U.S. SSNs. The area (first 3 digits)\n        # cannot be 666 or 900-999. The group number (middle digits) cannot be\n        # 00. The serial (last 4 digits) cannot be 0000\n        area = BaseProvider.random_int(min=1, max=899)\n        if area == 666:\n            area += 1\n        group = BaseProvider.random_int(1, 99)\n        serial = BaseProvider.random_int(1, 9999)\n\n        ssn = \"{0:03d}-{1:02d}-{2:04d}\".format(area, group, serial)\n        return ssn\n", "path": "faker/providers/ssn/en_US/__init__.py"}]}