```json
{
  "sym_variables": [
    ("x0", "hours worked by Laura"),
    ("x1", "hours worked by Mary"),
    ("x2", "hours worked by Bill"),
    ("x3", "hours worked by Jean"),
    ("x4", "hours worked by Peggy")
  ],
  "objective_function": "2*x0**2 + 2*x0*x1 + 7*x0*x2 + 3*x0*x3 + 8*x0*x4 + 8*x1**2 + 8*x1*x2 + 1*x1*x3 + 5*x1*x4 + 7*x2**2 + 5*x2*x3 + 2*x2*x4 + 5*x3**2 + 8*x3*x4 + 8*x4**2 + 4*x0 + 4*x1 + 5*x2 + 1*x3 + 3*x4",
  "constraints": [
    "16*x0 + 5*x1 + 8*x2 + 17*x3 + 9*x4 <= 211",
    "1*x0 + 12*x1 + 3*x2 + 9*x3 + 11*x4 <= 402",
    "6*x0 + 16*x1 + 16*x2 + 9*x3 + 16*x4 <= 361",
    "5*x1 + 17*x3 >= 36",
    "16*x0**2 + 9*x4**2 >= 37",
    "16*x0**2 + 5*x1**2 >= 42",
    "16*x0**2 + 17*x3**2 >= 42",
    "5*x1 + 9*x4 >= 17",
    "8*x2 + 17*x3 >= 25",
    "8*x2 + 9*x4 >= 28",
    "5*x1**2 + 8*x2**2 + 17*x3**2 >= 37",
    "16*x0**2 + 8*x2**2 + 17*x3**2 >= 37",
    "8*x2**2 + 17*x3**2 + 9*x4**2 >= 37",
    "16*x0 + 8*x2 + 9*x4 >= 37",
    "16*x0 + 5*x1 + 9*x4 >= 37",
    "5*x1 + 8*x2 + 9*x4 >= 37",
    "16*x0 + 5*x1 + 17*x3 >= 37",
    "5*x1 + 8*x2 + 17*x3 >= 22",
    "16*x0 + 8*x2 + 17*x3 >= 22",
    "8*x2 + 17*x3 + 9*x4 >= 22",
    "16*x0**2 + 8*x2**2 + 9*x4**2 >= 22",
    "16*x0**2 + 5*x1**2 + 9*x4**2 >= 22",
    "5*x1 + 8*x2 + 9*x4 >= 22",
    "16*x0 + 5*x1 + 17*x3 >= 22",
    "5*x1 + 8*x2 + 17*x3 >= 23",
    "16*x0 + 8*x2 + 17*x3 >= 23",
    "8*x2 + 17*x3 + 9*x4 >= 23",
    "16*x0**2 + 8*x2**2 + 9*x4**2 >= 23",
    "16*x0 + 5*x1 + 9*x4 >= 23",
    "5*x1**2 + 8*x2**2 + 9*x4**2 >= 23",
    "16*x0 + 5*x1 + 17*x3 >= 23",
    "5*x1**2 + 8*x2**2 + 17*x3**2 >= 41",
    "16*x0 + 8*x2 + 17*x3 >= 41",
    "8*x2**2 + 17*x3**2 + 9*x4**2 >= 41",
    "16*x0 + 8*x2 + 9*x4 >= 41",
    "16*x0 + 5*x1 + 9*x4 >= 41",
    "5*x1**2 + 8*x2**2 + 9*x4**2 >= 41",
    "16*x0 + 5*x1 + 17*x3 >= 41",
    "5*x1**2 + 8*x2**2 + 17*x3**2 >= 28",
    "16*x0**2 + 8*x2**2 + 17*x3**2 >= 28",
    "8*x2 + 17*x3 + 9*x4 >= 28",
    "16*x0 + 8*x2 + 9*x4 >= 28",
    "16*x0 + 5*x1 + 9*x4 >= 28",
    "5*x1 + 8*x2 + 9*x4 >= 28",
    "16*x0 + 5*x1 + 17*x3 >= 28",
    "5*x1 + 8*x2 + 17*x3 >= 36",
    "16*x0**2 + 8*x2**2 + 17*x3**2 >= 36",
    "8*x2 + 17*x3 + 9*x4 >= 36",
    "16*x0**2 + 8*x2**2 + 9*x4**2 >= 36",
    "16*x0**2 + 5*x1**2 + 9*x4**2 >= 36",
    "5*x1**2 + 8*x2**2 + 9*x4**2 >= 36",
    "16*x0**2 + 5*x1**2 + 17*x3**2 >= 36",
    "5*x1 + 8*x2 + 17*x3 >= 21",
    "16*x0**2 + 8*x2**2 + 17*x3**2 >= 21",
    "8*x2 + 17*x3 + 9*x4 >= 21",
    "16*x0 + 8*x2 + 9*x4 >= 21",
    "16*x0 + 5*x1 + 9*x4 >= 21",
    "5*x1 + 8*x2 + 9*x4 >= 21",
    "16*x0 + 5*x1 + 17*x3 >= 21",
    "16*x0 + 5*x1 + 8*x2 + 17*x3 + 9*x4 >= 21",
    "x0 + 3*x2 >= 42",
    "3*x2 + 11*x4 >= 39",
    "3*x2 + 9*x3 >= 54",
    "x0 + 9*x3 >= 49",
    "x0**2 + 12*x1**2 + 3*x2**2 >= 46",
    "x0 + 12*x1 + 3*x2 + 9*x3 + 11*x4 >= 46",
    "16*x2 + 9*x3 >= 36",
    "16*x1 + 16*x2 >= 58",
    "16*x1**2 + 9*x3**2 >= 71",
    "16*x2**2 + 16*x4**2 >= 60",
    "6*x0**2 + 16*x1**2 >= 72",
    "6*x0 + 9*x3 >= 70",
    "6*x0 + 16*x2 >= 29",
    "6*x0**2 + 16*x4**2 >= 35",
    "6*x0 + 16*x1 + 9*x3 >= 49",
    "6*x0 + 16*x1 + 16*x2 + 9*x3 + 16*x4 >= 49",
    "-9*x1 + 7*x4 >= 0",
    "-x0**2 + x1**2 >= 0",
    "8*x1 - 5*x3 >= 0",
    "16*x0 + 5*x1 <= 60",
    "8*x2**2 + 9*x4**2 <= 75",
    "5*x1 + 17*x3 <= 192",
    "16*x0**2 + 17*x3**2 <= 123",
    "16*x0 + 9*x4 <= 188",
    "x0**2 + 3*x2**2 <= 185",
    "9*x3 + 11*x4 <= 244",
    "12*x1**2 + 9*x3**2 <= 263",
    "3*x2 + 9*x3 <= 398",
    "12*x1 + 11*x4 <= 149",
    "x0**2 + 12*x1**2 + 3*x2**2 <= 183",
    "x0**2 + 12*x1**2 + 11*x4**2 <= 219",
    "12*x1 + 9*x3 + 11*x4 <= 91",
    "x0 + 3*x2 + 9*x3 <= 240",
    "6*x0 + 16*x1 <= 105",
    "x3 == int(x3)"

  ]
}
```

```python
import gurobipy as gp

# Create a new model
m = gp.Model("optimization_problem")

# Create variables
laura_hours = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="laura_hours")
mary_hours = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="mary_hours")
bill_hours = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="bill_hours")
jean_hours = m.addVar(lb=0, vtype=gp.GRB.INTEGER, name="jean_hours")
peggy_hours = m.addVar(lb=0, vtype=gp.GRB.CONTINUOUS, name="peggy_hours")


# Set objective function
obj = 2*laura_hours**2 + 2*laura_hours*mary_hours + 7*laura_hours*bill_hours + 3*laura_hours*jean_hours + 8*laura_hours*peggy_hours + 8*mary_hours**2 + 8*mary_hours*bill_hours + 1*mary_hours*jean_hours + 5*mary_hours*peggy_hours + 7*bill_hours**2 + 5*bill_hours*jean_hours + 2*bill_hours*peggy_hours + 5*jean_hours**2 + 8*jean_hours*peggy_hours + 8*peggy_hours**2 + 4*laura_hours + 4*mary_hours + 5*bill_hours + 1*jean_hours + 3*peggy_hours

m.setObjective(obj, gp.GRB.MINIMIZE)

# Add constraints
m.addConstr(16*laura_hours + 5*mary_hours + 8*bill_hours + 17*jean_hours + 9*peggy_hours <= 211, "r0")
m.addConstr(1*laura_hours + 12*mary_hours + 3*bill_hours + 9*jean_hours + 11*peggy_hours <= 402, "r1")
m.addConstr(6*laura_hours + 16*mary_hours + 16*bill_hours + 9*jean_hours + 16*peggy_hours <= 361, "r2")

# ... (Rest of the constraints from the JSON "constraints" field)
# Example:
m.addConstr(5*mary_hours + 17*jean_hours >= 36)
# ... (Add all other constraints similarly)


# Optimize model
m.optimize()

# Print results
if m.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % m.objVal)
    print('Laura Hours:', laura_hours.x)
    print('Mary Hours:', mary_hours.x)
    print('Bill Hours:', bill_hours.x)
    print('Jean Hours:', jean_hours.x)
    print('Peggy Hours:', peggy_hours.x)

elif m.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print("Optimization ended with status:", m.status)

```