| 1234567891011121314151617181920212223242526 | 
							- // Based on: https://github.com/mathiasbynens/String.prototype.codePointAt
 
- // Thanks @mathiasbynens !
 
- "use strict";
 
- var toInteger  = require("../../../number/to-integer")
 
-   , validValue = require("../../../object/valid-value");
 
- module.exports = function (pos) {
 
- 	var str = String(validValue(this)), length = str.length, first, second;
 
- 	pos = toInteger(pos);
 
- 	// Account for out-of-bounds indices:
 
- 	if (pos < 0 || pos >= length) return undefined;
 
- 	// Get the first code unit
 
- 	first = str.charCodeAt(pos);
 
- 	if (first >= 0xd800 && first <= 0xdbff && length > pos + 1) {
 
- 		second = str.charCodeAt(pos + 1);
 
- 		if (second >= 0xdc00 && second <= 0xdfff) {
 
- 			// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
 
- 			return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;
 
- 		}
 
- 	}
 
- 	return first;
 
- };
 
 
  |