'Yields (hash, client_files) pairs for all the specified hashes.
Args:
hashes: List of RDFURN\'s.
token: Security token.
age: AFF4 age specification. Only get hits corresponding to the given
age spec. Should be aff4.NEWEST_TIME or a time range given as a
tuple (start, end) in microseconds since Jan 1st, 1970. If just
a microseconds value is given it\'s treated as the higher end of the
range, i.e. (0, age). See aff4.FACTORY.ParseAgeSpecification for
details.
Yields:
(hash, client_files) tuples, where hash is a FileStoreHash instance and
client_files is a list of RDFURN\'s corresponding to client files that
have the hash.
Raises:
ValueError: if age was set to aff4.ALL_TIMES.'

@classmethod
def GetClientsForHashes(cls, hashes, token=None, age=aff4.NEWEST_TIME):

    if (age == aff4.ALL_TIMES):
        raise ValueError('age==aff4.ALL_TIMES    is    not    supported.')
    timestamp = aff4.FACTORY.ParseAgeSpecification(age)
    index_objects = list(aff4.FACTORY.MultiOpen(hashes, token=token))
    index_locations = {}
    for o in index_objects:
        index_locations.setdefault(o.urn, []).append(o.symlink_urn)
    for (hash_obj, client_files) in data_store.DB.MultiResolvePrefix(index_locations, 'index:target:', token=token, timestamp=timestamp):
        symlinks = index_locations[hash_obj]
        for original_hash in symlinks:
            hash_obj = (original_hash or hash_obj)
            (yield (FileStoreHash(hash_obj), [file_urn for (_, file_urn, _) in client_files]))
