function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  var objIsArr = isArray_1(object),
      othIsArr = isArray_1(other),
      objTag = objIsArr ? arrayTag : _getTag(object),
      othTag = othIsArr ? arrayTag : _getTag(other);

  objTag = objTag == argsTag$1 ? objectTag : objTag;
  othTag = othTag == argsTag$1 ? objectTag : othTag;

  var objIsObj = objTag == objectTag,
      othIsObj = othTag == objectTag,
      isSameTag = objTag == othTag;

  if (isSameTag && isBuffer_1(object)) {
    if (!isBuffer_1(other)) {
      return false;
    }
    objIsArr = true;
    objIsObj = false;
  }
  if (isSameTag && !objIsObj) {
    stack || (stack = new _Stack);
    return (objIsArr || isTypedArray_1(object))
      ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack)
      : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  }
  if (!(bitmask & COMPARE_PARTIAL_FLAG$1)) {
    var objIsWrapped = objIsObj && hasOwnProperty$5.call(object, '__wrapped__'),
        othIsWrapped = othIsObj && hasOwnProperty$5.call(other, '__wrapped__');

    if (objIsWrapped || othIsWrapped) {
      var objUnwrapped = objIsWrapped ? object.value() : object,
          othUnwrapped = othIsWrapped ? other.value() : other;

      stack || (stack = new _Stack);
      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
    }
  }
  if (!isSameTag) {
    return false;
  }
  stack || (stack = new _Stack);
  return _equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
/**
 * A specialized version of `baseIsEqual` for arrays and objects which performs
 * deep comparisons and tracks traversed objects enabling objects with circular
 * references to be compared.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */
A specialized version of `baseIsEqual` for arrays and objects which performs
deep comparisons and tracks traversed objects enabling objects with circular
references to be compared.

@private
@param {Object} object The object to compare.
@param {Object} other The other object to compare.
@param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
@param {Function} customizer The function to customize comparisons.
@param {Function} equalFunc The function to determine equivalents of values.
@param {Object} [stack] Tracks traversed `object` and `other` objects.
@returns {boolean} Returns `true` if the objects are equivalent, else `false`.
A specialized version of ` baseIsEqual ` for arrays and objects which performs deep comparisons and tracks traversed objects enabling objects with circular references to be compared . @private @param { Object } object The object to compare . @param { Object } other The other object to compare . @param { number } bitmask The bitmask flags . See ` baseIsEqual ` for more details . @param { Function } customizer The function to customize comparisons . @param { Function } equalFunc The function to determine equivalents of values . @param { Object } [ stack ] Tracks traversed ` object ` and ` other ` objects . @returns { boolean } Returns ` true ` if the objects are equivalent else ` false ` .
function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
  var objIsArr = isArray_1(object),
      othIsArr = isArray_1(other),
      objTag = objIsArr ? arrayTag : _getTag(object),
      othTag = othIsArr ? arrayTag : _getTag(other);
  objTag = objTag == argsTag$1 ? objectTag : objTag;
  othTag = othTag == argsTag$1 ? objectTag : othTag;
  var objIsObj = objTag == objectTag,
      othIsObj = othTag == objectTag,
      isSameTag = objTag == othTag;
  if (isSameTag && isBuffer_1(object)) {
    if (!isBuffer_1(other)) {
      return false;
    }
    objIsArr = true;
    objIsObj = false;
  }
  if (isSameTag && !objIsObj) {
    stack || (stack = new _Stack);
    return (objIsArr || isTypedArray_1(object))
      ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack)
      : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
  }
  if (!(bitmask & COMPARE_PARTIAL_FLAG$1)) {
    var objIsWrapped = objIsObj && hasOwnProperty$5.call(object, '__wrapped__'),
        othIsWrapped = othIsObj && hasOwnProperty$5.call(other, '__wrapped__');
    if (objIsWrapped || othIsWrapped) {
      var objUnwrapped = objIsWrapped ? object.value() : object,
          othUnwrapped = othIsWrapped ? other.value() : other;
      stack || (stack = new _Stack);
      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
    }
  }
  if (!isSameTag) {
    return false;
  }
  stack || (stack = new _Stack);
  return _equalObjects(object, other, bitmask, customizer, equalFunc, stack);
}
function baseIsEqualDeep ( object , other , bitmask , customizer , equalFunc , stack ) { var objIsArr = isArray_1 ( object ) , othIsArr = isArray_1 ( other ) , objTag = objIsArr ? arrayTag : _getTag ( object ) , othTag = othIsArr ? arrayTag : _getTag ( other ) ; objTag = objTag == argsTag$1 ? objectTag : objTag ; othTag = othTag == argsTag$1 ? objectTag : othTag ; var objIsObj = objTag == objectTag , othIsObj = othTag == objectTag , isSameTag = objTag == othTag ; if ( isSameTag && isBuffer_1 ( object ) ) { if ( ! isBuffer_1 ( other ) ) { return false ; } objIsArr = true ; objIsObj = false ; } if ( isSameTag && ! objIsObj ) { stack || ( stack = new _Stack ) ; return ( objIsArr || isTypedArray_1 ( object ) ) ? _equalArrays ( object , other , bitmask , customizer , equalFunc , stack ) : _equalByTag ( object , other , objTag , bitmask , customizer , equalFunc , stack ) ; } if ( ! ( bitmask & COMPARE_PARTIAL_FLAG$1 ) ) { var objIsWrapped = objIsObj && hasOwnProperty$5 . call ( object , '__wrapped__' ) , othIsWrapped = othIsObj && hasOwnProperty$5 . call ( other , '__wrapped__' ) ; if ( objIsWrapped || othIsWrapped ) { var objUnwrapped = objIsWrapped ? object . value ( ) : object , othUnwrapped = othIsWrapped ? other . value ( ) : other ; stack || ( stack = new _Stack ) ; return equalFunc ( objUnwrapped , othUnwrapped , bitmask , customizer , stack ) ; } } if ( ! isSameTag ) { return false ; } stack || ( stack = new _Stack ) ; return _equalObjects ( object , other , bitmask , customizer , equalFunc , stack ) ; }
A specialized version of `baseIsEqual` for arrays and objects which performs
 deep comparisons and tracks traversed objects enabling objects with circular
 references to be compared.
A specialized version of ` baseIsEqual ` for arrays and objects which performs deep comparisons and tracks traversed objects enabling objects with circular references to be compared .