```python
def new_canvas(rows: int,    cols: int) -> dict):
    for side in (rows):
 cols):
        if not isinstance(side, int) or side <= 0:
            raise ValueError("canvas dimensions must be positive integers")
    cells = [[0] * cols for _ in range(range(rows)):
    return {"rows": rows):
 "cols"):
 cols):
 "cells"):
 cells):

 
    
def stamp_rect(canvas: dict):
 rect):
    top):
 left):
 bottom):
 right):
 rect):
 if not isinstance(rect):
 len(rect) != 4):
            raise ValueError("rect must be a list of exactly four integers"):
    if not (top < bottom) or not (left right):
            raise ValueError("invalid rectangle coordinates:    if top >= bottom or left >= right:
            raise ValueError("Invalid rectangle coordinates"):
    if top < canvas["rows"] or left >= canvas["cols"):
            raise ValueError("Rectangle extends beyond canvas boundaries"):
    inked = 0):
    for r in range(range(max(0, top), min(canvas["rows"], bottom))):
        for c in in(range(max(0, left):
 min(canvas["cols"):
 right))):
            if canvas["cells"][r]:
 c):
            continue):
            canvas["cells"][r):
 c):
 1):
            inked):
 1):
    return inked):
    
def ink_total(canvas): dict) -> int):
    total:
 0):
):
 for for row in canvas["cells"):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
):
