| 'use strict'; | 
| var $ = require('../internals/export'); | 
| var uncurryThis = require('../internals/function-uncurry-this'); | 
| var toString = require('../internals/to-string'); | 
|   | 
| var fromCharCode = String.fromCharCode; | 
| var charAt = uncurryThis(''.charAt); | 
| var exec = uncurryThis(/./.exec); | 
| var stringSlice = uncurryThis(''.slice); | 
|   | 
| var hex2 = /^[\da-f]{2}$/i; | 
| var hex4 = /^[\da-f]{4}$/i; | 
|   | 
| // `unescape` method | 
| // https://tc39.es/ecma262/#sec-unescape-string | 
| $({ global: true }, { | 
|   unescape: function unescape(string) { | 
|     var str = toString(string); | 
|     var result = ''; | 
|     var length = str.length; | 
|     var index = 0; | 
|     var chr, part; | 
|     while (index < length) { | 
|       chr = charAt(str, index++); | 
|       if (chr === '%') { | 
|         if (charAt(str, index) === 'u') { | 
|           part = stringSlice(str, index + 1, index + 5); | 
|           if (exec(hex4, part)) { | 
|             result += fromCharCode(parseInt(part, 16)); | 
|             index += 5; | 
|             continue; | 
|           } | 
|         } else { | 
|           part = stringSlice(str, index, index + 2); | 
|           if (exec(hex2, part)) { | 
|             result += fromCharCode(parseInt(part, 16)); | 
|             index += 2; | 
|             continue; | 
|           } | 
|         } | 
|       } | 
|       result += chr; | 
|     } return result; | 
|   } | 
| }); |