<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_route_spec_config(data):
 """ Parse and sanity check the route spec config. The config data is a blob of JSON that needs to be in this format: { "<CIDR-1>" : [ "host-1-ip", "host-2-ip", "host-3-ip" ], "<CIDR-2>" : [ "host-4-ip", "host-5-ip" ], "<CIDR-3>" : [ "host-6-ip", "host-7-ip", "host-8-ip", "host-9-ip" ] } Returns the validated route config. This validation is performed on any route-spec pushed out by the config watcher plugin. Duplicate hosts in the host lists are removed. Raises ValueError exception in case of problems. """

    # Sanity checking on the data object
    if type(data) is not dict:
        raise ValueError("Expected dictionary at top level")
    try:
        for k, v in data.items():
            utils.ip_check(k, netmask_expected=True)
            if type(v) is not list:
                raise ValueError("Expect list of IPs as values in dict")
            hosts = set(v)   # remove duplicates
            for ip in hosts:
                utils.ip_check(ip)
            clean_host_list = sorted(list(hosts))
            data[k] = clean_host_list

    except ArgsError as e:
        raise ValueError(e.message)

    return data