code: def process_remote_sources(raw_config, environment=None):
      
  
      config = yaml.safe_load(raw_config)
      if config and config.get('package_sources'):
          processor = SourceProcessor(
              sources=config['package_sources'],
              stacker_cache_dir=config.get('stacker_cache_dir')
          )
          processor.get_package_sources()
          if processor.configs_to_merge:
              for i in processor.configs_to_merge:
                  logger.debug("Merging in remote config \"%s\"", i)
                  remote_config = yaml.safe_load(open(i))
                  config = merge_map(remote_config, config)
              # Call the render again as the package_sources may have merged in
              # additional environment lookups
              if not environment:
                  environment = {}
              return render(str(config), environment)
  
      return raw_config
docs: Stage remote package sources and merge in remote configs.
  
      Args:
          raw_config (str): the raw stacker configuration string.
          environment (dict, optional): any environment values that should be
              passed to the config
  
      Returns:
          str: the raw stacker configuration string