'use strict'; 
 | 
var DESCRIPTORS = require('../internals/descriptors'); 
 | 
var fails = require('../internals/fails'); 
 | 
var uncurryThis = require('../internals/function-uncurry-this'); 
 | 
var objectGetPrototypeOf = require('../internals/object-get-prototype-of'); 
 | 
var objectKeys = require('../internals/object-keys'); 
 | 
var toIndexedObject = require('../internals/to-indexed-object'); 
 | 
var $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f; 
 | 
  
 | 
var propertyIsEnumerable = uncurryThis($propertyIsEnumerable); 
 | 
var push = uncurryThis([].push); 
 | 
  
 | 
// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys 
 | 
// of `null` prototype objects 
 | 
var IE_BUG = DESCRIPTORS && fails(function () { 
 | 
  // eslint-disable-next-line es/no-object-create -- safe 
 | 
  var O = Object.create(null); 
 | 
  O[2] = 2; 
 | 
  return !propertyIsEnumerable(O, 2); 
 | 
}); 
 | 
  
 | 
// `Object.{ entries, values }` methods implementation 
 | 
var createMethod = function (TO_ENTRIES) { 
 | 
  return function (it) { 
 | 
    var O = toIndexedObject(it); 
 | 
    var keys = objectKeys(O); 
 | 
    var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; 
 | 
    var length = keys.length; 
 | 
    var i = 0; 
 | 
    var result = []; 
 | 
    var key; 
 | 
    while (length > i) { 
 | 
      key = keys[i++]; 
 | 
      if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { 
 | 
        push(result, TO_ENTRIES ? [key, O[key]] : O[key]); 
 | 
      } 
 | 
    } 
 | 
    return result; 
 | 
  }; 
 | 
}; 
 | 
  
 | 
module.exports = { 
 | 
  // `Object.entries` method 
 | 
  // https://tc39.es/ecma262/#sec-object.entries 
 | 
  entries: createMethod(true), 
 | 
  // `Object.values` method 
 | 
  // https://tc39.es/ecma262/#sec-object.values 
 | 
  values: createMethod(false) 
 | 
}; 
 |