<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_resource_list(self):
 """Finf resource list by hueristics, returns ResourceList object. 1. Use explicitly specified self.sitemap_name (and fail if that doesn't work) 2. Use explicitly specified self.capability_list_uri (and fail is that doesn't work) 3. Look for base_url/.well-known/resourcesync (then look for capability, look for resourcelist) 4. Look for host/.well-known/resourcesync (then look for capability, look for resourcelist) 5. Look for base_url/resourcelist.xml 6. Look for base_url/sitemap.xml 7. Look for host/sitemap.xml """

        # 1 & 2
        if (self.sitemap_name is not None):
            return(self.read_resource_list(self.sitemap_name))
        if (self.capability_list_uri is not None):
            rluri = self.find_resource_list_from_capability_list(self.capability_list_uri)
            return(self.read_resource_list(rluri))
        # 3 & 4
        parts = urlsplit(self.sitemap)
        uri_host = urlunsplit([parts[0], parts[1], '', '', ''])
        errors = []
        for uri in [urljoin(self.sitemap, '.well-known/resourcesync'),
                    urljoin(uri_host, '.well-known/resourcesync')]:
            uri = uri.lstrip('file:///')  # urljoin adds this for local files
            try:
                rluri = self.find_resource_list_from_source_description(uri)
                return(self.read_resource_list(rluri))
            except ClientError as e:
                errors.append(str(e))
        # 5, 6 & 7
        for uri in [urljoin(self.sitemap, 'resourcelist.xml'),
                    urljoin(self.sitemap, 'sitemap.xml'),
                    urljoin(uri_host, 'sitemap.xml')]:
            uri = uri.lstrip('file:///')  # urljoin adds this for local files
            try:
                return(self.read_resource_list(uri))
            except ClientError as e:
                errors.append(str(e))
        raise ClientFatalError(
            "Failed to find source resource list from common patterns (%s)" %
            ". ".join(errors))