import ipaddress

PRIVATE_NETWORKS = [
	ipaddress.ip_network("10.0.0.0/8"),
    ipaddress.ip_network("172.16.0.0/12"),
    ipaddress.ip_network("192.168.0.0/16"),
]

def filter_private_ips(ips):
	result = [] 
	for ip in ips:
		try:
			addr = ipaddress.ip_address(ip)
		except ValueError:
			continue
		if any(addr in net for net in PRIVATE_NETWORKS):
			result.append(ip)
	return result
	

if __name__ == "__main__":
    test_data = [
        "10.0.0.1", "172.16.5.4", "172.32.0.1",  # 172.32 is NOT private
        "192.168.1.1", "8.8.8.8", "not-an-ip", "",
    ]
    result = filter_private_ips(test_data)
    print(result)
    assert result == ["10.0.0.1", "172.16.5.4", "192.168.1.1"]
    assert filter_private_ips([]) == []
    print("Challenge 4 OK")