'use strict';

var _commonjsHelpers = require('./_commonjsHelpers-06173234.js');
var _toObject = require('./_to-object-329a650b.js');
var es6_string_iterator = require('./es6.string.iterator-cc0bbaa4.js');
var _library = require('./_library-dd23b178.js');
var _objectPie = require('./_object-pie-68c5bcbc.js');
require('./web.dom.iterable-a0e279c1.js');
var _isArray = require('./_is-array-754e012d.js');

var f = es6_string_iterator._wks;

var _wksExt = {
	f: f
};

var iterator = _wksExt.f('iterator');

var iterator$1 = _commonjsHelpers.createCommonjsModule(function (module) {
module.exports = { "default": iterator, __esModule: true };
});

_commonjsHelpers.unwrapExports(iterator$1);

var defineProperty = _toObject._objectDp.f;
var _wksDefine = function (name) {
  var $Symbol = _toObject._core.Symbol || (_toObject._core.Symbol =  {} );
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: _wksExt.f(name) });
};

// all enumerable object keys, includes symbols



var _enumKeys = function (it) {
  var result = _toObject._objectKeys(it);
  var getSymbols = _objectPie._objectGops.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = _objectPie._objectPie.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)

var hiddenKeys = _toObject._enumBugKeys.concat('length', 'prototype');

var f$1 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return _toObject._objectKeysInternal(O, hiddenKeys);
};

var _objectGopn = {
	f: f$1
};

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window

var gOPN = _objectGopn.f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

var f$2 = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(_toObject._toIobject(it));
};

var _objectGopnExt = {
	f: f$2
};

var gOPD = Object.getOwnPropertyDescriptor;

var f$3 = _toObject._descriptors ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = _toObject._toIobject(O);
  P = _toObject._toPrimitive(P, true);
  if (_toObject._ie8DomDefine) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (_toObject._has(O, P)) return _toObject._propertyDesc(!_objectPie._objectPie.f.call(O, P), O[P]);
};

var _objectGopd = {
	f: f$3
};

// ECMAScript 6 symbols shim





var META = _isArray._meta.KEY;





















var gOPD$1 = _objectGopd.f;
var dP = _toObject._objectDp.f;
var gOPN$1 = _objectGopnExt.f;
var $Symbol = _toObject._global.Symbol;
var $JSON = _toObject._global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = es6_string_iterator._wks('_hidden');
var TO_PRIMITIVE = es6_string_iterator._wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = _toObject._shared('symbol-registry');
var AllSymbols = _toObject._shared('symbols');
var OPSymbols = _toObject._shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!_objectPie._objectGops.f;
var QObject = _toObject._global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = _toObject._descriptors && _toObject._fails(function () {
  return es6_string_iterator._objectCreate(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD$1(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = es6_string_iterator._objectCreate($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  _toObject._anObject(it);
  key = _toObject._toPrimitive(key, true);
  _toObject._anObject(D);
  if (_toObject._has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!_toObject._has(it, HIDDEN)) dP(it, HIDDEN, _toObject._propertyDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (_toObject._has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = es6_string_iterator._objectCreate(D, { enumerable: _toObject._propertyDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  _toObject._anObject(it);
  var keys = _enumKeys(P = _toObject._toIobject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? es6_string_iterator._objectCreate(it) : $defineProperties(es6_string_iterator._objectCreate(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = _toObject._toPrimitive(key, true));
  if (this === ObjectProto && _toObject._has(AllSymbols, key) && !_toObject._has(OPSymbols, key)) return false;
  return E || !_toObject._has(this, key) || !_toObject._has(AllSymbols, key) || _toObject._has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = _toObject._toIobject(it);
  key = _toObject._toPrimitive(key, true);
  if (it === ObjectProto && _toObject._has(AllSymbols, key) && !_toObject._has(OPSymbols, key)) return;
  var D = gOPD$1(it, key);
  if (D && _toObject._has(AllSymbols, key) && !(_toObject._has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN$1(_toObject._toIobject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!_toObject._has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN$1(IS_OP ? OPSymbols : _toObject._toIobject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (_toObject._has(AllSymbols, key = names[i++]) && (IS_OP ? _toObject._has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = _toObject._uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (_toObject._has(this, HIDDEN) && _toObject._has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, _toObject._propertyDesc(1, value));
    };
    if (_toObject._descriptors && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  es6_string_iterator._redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  _objectGopd.f = $getOwnPropertyDescriptor;
  _toObject._objectDp.f = $defineProperty;
  _objectGopn.f = _objectGopnExt.f = $getOwnPropertyNames;
  _objectPie._objectPie.f = $propertyIsEnumerable;
  _objectPie._objectGops.f = $getOwnPropertySymbols;

  if (_toObject._descriptors && !_library._library) {
    es6_string_iterator._redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  _wksExt.f = function (name) {
    return wrap(es6_string_iterator._wks(name));
  };
}

_toObject._export(_toObject._export.G + _toObject._export.W + _toObject._export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)es6_string_iterator._wks(es6Symbols[j++]);

for (var wellKnownSymbols = _toObject._objectKeys(es6_string_iterator._wks.store), k = 0; wellKnownSymbols.length > k;) _wksDefine(wellKnownSymbols[k++]);

_toObject._export(_toObject._export.S + _toObject._export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return _toObject._has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

_toObject._export(_toObject._export.S + _toObject._export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = _toObject._fails(function () { _objectPie._objectGops.f(1); });

_toObject._export(_toObject._export.S + _toObject._export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return _objectPie._objectGops.f(_toObject._toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && _toObject._export(_toObject._export.S + _toObject._export.F * (!USE_NATIVE || _toObject._fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!_toObject._isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!_isArray._isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || _toObject._hide($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
es6_string_iterator._setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
es6_string_iterator._setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
es6_string_iterator._setToStringTag(_toObject._global.JSON, 'JSON', true);

_wksDefine('asyncIterator');

_wksDefine('observable');

var symbol = _toObject._core.Symbol;

var symbol$1 = _commonjsHelpers.createCommonjsModule(function (module) {
module.exports = { "default": symbol, __esModule: true };
});

_commonjsHelpers.unwrapExports(symbol$1);

var _typeof_1 = _commonjsHelpers.createCommonjsModule(function (module, exports) {

exports.__esModule = true;



var _iterator2 = _interopRequireDefault(iterator$1);



var _symbol2 = _interopRequireDefault(symbol$1);

var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; };

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) {
  return typeof obj === "undefined" ? "undefined" : _typeof(obj);
} : function (obj) {
  return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj);
};
});

var _typeof = _commonjsHelpers.unwrapExports(_typeof_1);

exports._objectGopd = _objectGopd;
exports._typeof = _typeof;
exports._typeof_1 = _typeof_1;
