'use strict'; 
 | 
var hasOwn = require('../internals/has-own-property'); 
 | 
var ownKeys = require('../internals/own-keys'); 
 | 
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); 
 | 
var definePropertyModule = require('../internals/object-define-property'); 
 | 
  
 | 
module.exports = function (target, source, exceptions) { 
 | 
  var keys = ownKeys(source); 
 | 
  var defineProperty = definePropertyModule.f; 
 | 
  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 
 | 
  for (var i = 0; i < keys.length; i++) { 
 | 
    var key = keys[i]; 
 | 
    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { 
 | 
      defineProperty(target, key, getOwnPropertyDescriptor(source, key)); 
 | 
    } 
 | 
  } 
 | 
}; 
 |