code: def deep_merge(*args):
      
      if len(args) == 0:
          return None
  
      if len(args) == 1:
          return copy.deepcopy(args[0])
  
      lst = list(args)
      last = copy.deepcopy(lst.pop(len(lst) - 1))
  
      return _deep_merge(deep_merge(*lst), last)
docs: >>> dbt.utils.deep_merge({'a': 1, 'b': 2, 'c': 3}, {'a': 2}, {'a': 3, 'b': 1})  # noqa
      {'a': 3, 'b': 1, 'c': 3}