1 var global = require('../internals/global');
2 var fails = require('../internals/fails');
3 var uncurryThis = require('../internals/function-uncurry-this');
4 var toString = require('../internals/to-string');
5 var trim = require('../internals/string-trim').trim;
6 var whitespaces = require('../internals/whitespaces');
8 var $parseInt = global.parseInt;
9 var Symbol = global.Symbol;
10 var ITERATOR = Symbol && Symbol.iterator;
11 var hex = /^[+-]?0x/i;
12 var exec = uncurryThis(hex.exec);
13 var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22
14 // MS Edge 18- broken with boxed symbols
15 || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));
18 // https://tc39.es/ecma262/#sec-parseint-string-radix
19 module.exports = FORCED ? function parseInt(string, radix) {
20 var S = trim(toString(string));
21 return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));