prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Use the common base Docker image
  This is a corollary to work done in cal-itp/eligibility-server#123.
  
  We have a new repository [`cal-itp/docker-python-web`](https://github.com/cal-itp/docker-python-web) that publishes a Docker image to GitHub Container Registry at [`ghcr.io/cal-itp/docker-python-web`](https://github.com/cal-itp/docker-python-web/pkgs/container/docker-python-web).
  
  This image contains a baseline `nginx` and `gunicorn` setup and configuration. We can replace the Benefits app container's base image with this image to simplify the repository and build process for Benefits.
  
  ## Acceptance Criteria
  
  <!-- Remember to consider edge cases -->
  
  - [ ] the Benefits app container builds `FROM ghcr.io/cal-itp/docker-python-web`
  - [ ] duplicate `nginx` and `gunicorn` setup in this repository is removed
  - [ ] the app runs locally as a container `docker compose up client`
  - [ ] the devcontainer starts up
  - [ ] the app runs in DEBUG mode in the devcontainer with `F5`
  
  ## Additional context
  
  See the [`docker-python-web` Docs](https://docs.calitp.org/docker-python-web/) for more information.
  
  </issue>
  <code>
  [start of appcontainer/gunicorn.conf.py]
  1 """
  2 The Gunicorn configuration file
  3 More information: https://docs.gunicorn.org/en/stable/settings.html
  4 """
  5 
  6 import multiprocessing
  7 
  8 # the unix socket defined in nginx.conf
  9 bind = "unix:/home/calitp/app/run/gunicorn.sock"
  10 
  11 # Recommend (2 x $num_cores) + 1 as the number of workers to start off with
  12 workers = multiprocessing.cpu_count() * 2 + 1
  13 
  14 # send logs to stdout and stderr
  15 accesslog = "-"
  16 errorlog = "-"
  17 
  18 # Preloading can save some RAM resources as well as speed up server boot times,
  19 # at the cost of not being able to reload app code by restarting workers
  20 # (in an ECS Fargate environment, this isn't possible anyway)
  21 preload_app = True
  22
  [end of appcontainer/gunicorn.conf.py]
  [start of .devcontainer/server/settings.py]
  1 # App settings
  2 
  3 LOG_LEVEL = "DEBUG"
  4 
  5 # Eligibility Verification settings
  6 
  7 CLIENT_KEY_PATH = "https://raw.githubusercontent.com/cal-itp/eligibility-server/main/keys/client.pub"
  8 SERVER_PRIVATE_KEY_PATH = "https://raw.githubusercontent.com/cal-itp/eligibility-server/main/keys/server.key"
  9 SERVER_PUBLIC_KEY_PATH = "https://raw.githubusercontent.com/cal-itp/eligibility-server/main/keys/server.pub"
  10 SUB_FORMAT_REGEX = r".+"
  11 
  12 # Data settings
  13 
  14 IMPORT_FILE_PATH = "/.devcontainer/server/data.csv"
  15 INPUT_HASH_ALGO = ""
  16 
  17 # CSV-specific settings
  18 
  19 CSV_DELIMITER = ";"
  20 CSV_NEWLINE = ""
  21 CSV_QUOTING = 3
  22 CSV_QUOTECHAR = ""
  23
  [end of .devcontainer/server/settings.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/.devcontainer/server/settings.py b/.devcontainer/server/settings.py
  --- a/.devcontainer/server/settings.py
  +++ b/.devcontainer/server/settings.py
  @@ -11,7 +11,7 @@
   
   # Data settings
   
  -IMPORT_FILE_PATH = "/.devcontainer/server/data.csv"
  +IMPORT_FILE_PATH = "https://raw.githubusercontent.com/cal-itp/eligibility-server/main/data/server.csv"
   INPUT_HASH_ALGO = ""
   
   # CSV-specific settings
  diff --git a/appcontainer/gunicorn.conf.py b/appcontainer/gunicorn.conf.py
  deleted file mode 100644
  --- a/appcontainer/gunicorn.conf.py
  +++ /dev/null
  @@ -1,21 +0,0 @@
  -"""
  -The Gunicorn configuration file
  -More information: https://docs.gunicorn.org/en/stable/settings.html
  -"""
  -
  -import multiprocessing
  -
  -# the unix socket defined in nginx.conf
  -bind = "unix:/home/calitp/app/run/gunicorn.sock"
  -
  -# Recommend (2 x $num_cores) + 1 as the number of workers to start off with
  -workers = multiprocessing.cpu_count() * 2 + 1
  -
  -# send logs to stdout and stderr
  -accesslog = "-"
  -errorlog = "-"
  -
  -# Preloading can save some RAM resources as well as speed up server boot times,
  -# at the cost of not being able to reload app code by restarting workers
  -# (in an ECS Fargate environment, this isn't possible anyway)
  -preload_app = True
  
verification_info: {"golden_diff": "diff --git a/.devcontainer/server/settings.py b/.devcontainer/server/settings.py\n--- a/.devcontainer/server/settings.py\n+++ b/.devcontainer/server/settings.py\n@@ -11,7 +11,7 @@\n \n # Data settings\n \n-IMPORT_FILE_PATH = \"/.devcontainer/server/data.csv\"\n+IMPORT_FILE_PATH = \"https://raw.githubusercontent.com/cal-itp/eligibility-server/main/data/server.csv\"\n INPUT_HASH_ALGO = \"\"\n \n # CSV-specific settings\ndiff --git a/appcontainer/gunicorn.conf.py b/appcontainer/gunicorn.conf.py\ndeleted file mode 100644\n--- a/appcontainer/gunicorn.conf.py\n+++ /dev/null\n@@ -1,21 +0,0 @@\n-\"\"\"\n-The Gunicorn configuration file\n-More information: https://docs.gunicorn.org/en/stable/settings.html\n-\"\"\"\n-\n-import multiprocessing\n-\n-# the unix socket defined in nginx.conf\n-bind = \"unix:/home/calitp/app/run/gunicorn.sock\"\n-\n-# Recommend (2 x $num_cores) + 1 as the number of workers to start off with\n-workers = multiprocessing.cpu_count() * 2 + 1\n-\n-# send logs to stdout and stderr\n-accesslog = \"-\"\n-errorlog = \"-\"\n-\n-# Preloading can save some RAM resources as well as speed up server boot times,\n-# at the cost of not being able to reload app code by restarting workers\n-# (in an ECS Fargate environment, this isn't possible anyway)\n-preload_app = True\n", "issue": "Use the common base Docker image\nThis is a corollary to work done in cal-itp/eligibility-server#123.\r\n\r\nWe have a new repository [`cal-itp/docker-python-web`](https://github.com/cal-itp/docker-python-web) that publishes a Docker image to GitHub Container Registry at [`ghcr.io/cal-itp/docker-python-web`](https://github.com/cal-itp/docker-python-web/pkgs/container/docker-python-web).\r\n\r\nThis image contains a baseline `nginx` and `gunicorn` setup and configuration. We can replace the Benefits app container's base image with this image to simplify the repository and build process for Benefits.\r\n\r\n## Acceptance Criteria\r\n\r\n<!-- Remember to consider edge cases -->\r\n\r\n- [ ] the Benefits app container builds `FROM ghcr.io/cal-itp/docker-python-web`\r\n- [ ] duplicate `nginx` and `gunicorn` setup in this repository is removed\r\n- [ ] the app runs locally as a container `docker compose up client`\r\n- [ ] the devcontainer starts up\r\n- [ ] the app runs in DEBUG mode in the devcontainer with `F5`\r\n\r\n## Additional context\r\n\r\nSee the [`docker-python-web` Docs](https://docs.calitp.org/docker-python-web/) for more information.\n", "before_files": [{"content": "\"\"\"\nThe Gunicorn configuration file\nMore information: https://docs.gunicorn.org/en/stable/settings.html\n\"\"\"\n\nimport multiprocessing\n\n# the unix socket defined in nginx.conf\nbind = \"unix:/home/calitp/app/run/gunicorn.sock\"\n\n# Recommend (2 x $num_cores) + 1 as the number of workers to start off with\nworkers = multiprocessing.cpu_count() * 2 + 1\n\n# send logs to stdout and stderr\naccesslog = \"-\"\nerrorlog = \"-\"\n\n# Preloading can save some RAM resources as well as speed up server boot times,\n# at the cost of not being able to reload app code by restarting workers\n# (in an ECS Fargate environment, this isn't possible anyway)\npreload_app = True\n", "path": "appcontainer/gunicorn.conf.py"}, {"content": "# App settings\n\nLOG_LEVEL = \"DEBUG\"\n\n# Eligibility Verification settings\n\nCLIENT_KEY_PATH = \"https://raw.githubusercontent.com/cal-itp/eligibility-server/main/keys/client.pub\"\nSERVER_PRIVATE_KEY_PATH = \"https://raw.githubusercontent.com/cal-itp/eligibility-server/main/keys/server.key\"\nSERVER_PUBLIC_KEY_PATH = \"https://raw.githubusercontent.com/cal-itp/eligibility-server/main/keys/server.pub\"\nSUB_FORMAT_REGEX = r\".+\"\n\n# Data settings\n\nIMPORT_FILE_PATH = \"/.devcontainer/server/data.csv\"\nINPUT_HASH_ALGO = \"\"\n\n# CSV-specific settings\n\nCSV_DELIMITER = \";\"\nCSV_NEWLINE = \"\"\nCSV_QUOTING = 3\nCSV_QUOTECHAR = \"\"\n", "path": ".devcontainer/server/settings.py"}]}