This repository has been archived by the owner on Jul 10, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathintl-relativeformat.min.js.map
1 lines (1 loc) · 107 KB
/
intl-relativeformat.min.js.map
1
{"version":3,"file":"intl-relativeformat.min.js","sources":["../node_modules/intl-messageformat/src/utils.js","../node_modules/intl-messageformat/src/es5.js","../node_modules/intl-messageformat/src/compiler.js","../node_modules/intl-messageformat-parser/src/parser.js","../node_modules/intl-messageformat/src/core.js","../node_modules/intl-messageformat/src/main.js","../node_modules/intl-messageformat/src/en.js","../src/diff.js","../src/es5.js","../src/core.js","../src/main.js","../src/en.js"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nexport var hop = Object.prototype.hasOwnProperty;\n\nexport function extend(obj) {\n var sources = Array.prototype.slice.call(arguments, 1),\n i, len, source, key;\n\n for (i = 0, len = sources.length; i < len; i += 1) {\n source = sources[i];\n if (!source) { continue; }\n\n for (key in source) {\n if (hop.call(source, key)) {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport {hop} from './utils';\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexport {defineProperty, objCreate};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nexport default Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n this.locales = locales;\n this.formats = formats;\n this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n this.pluralStack = [];\n this.currentPlural = null;\n this.pluralNumberFormat = null;\n\n return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n }\n\n var elements = ast.elements,\n pattern = [];\n\n var i, len, element;\n\n for (i = 0, len = elements.length; i < len; i += 1) {\n element = elements[i];\n\n switch (element.type) {\n case 'messageTextElement':\n pattern.push(this.compileMessageText(element));\n break;\n\n case 'argumentElement':\n pattern.push(this.compileArgument(element));\n break;\n\n default:\n throw new Error('Message element does not have a valid type');\n }\n }\n\n return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n // When this `element` is part of plural sub-pattern and its value contains\n // an unescaped '#', use a `PluralOffsetString` helper to properly output\n // the number with the correct offset in the string.\n if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n // Create a cache a NumberFormat instance that can be reused for any\n // PluralOffsetString instance in this message.\n if (!this.pluralNumberFormat) {\n this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n }\n\n return new PluralOffsetString(\n this.currentPlural.id,\n this.currentPlural.format.offset,\n this.pluralNumberFormat,\n element.value);\n }\n\n // Unescape the escaped '#'s in the message text.\n return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n var format = element.format;\n\n if (!format) {\n return new StringFormat(element.id);\n }\n\n var formats = this.formats,\n locales = this.locales,\n pluralFn = this.pluralFn,\n options;\n\n switch (format.type) {\n case 'numberFormat':\n options = formats.number[format.style];\n return {\n id : element.id,\n format: new Intl.NumberFormat(locales, options).format\n };\n\n case 'dateFormat':\n options = formats.date[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'timeFormat':\n options = formats.time[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'pluralFormat':\n options = this.compileOptions(element);\n return new PluralFormat(\n element.id, format.ordinal, format.offset, options, pluralFn\n );\n\n case 'selectFormat':\n options = this.compileOptions(element);\n return new SelectFormat(element.id, options);\n\n default:\n throw new Error('Message element does not have a valid format type');\n }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n var format = element.format,\n options = format.options,\n optionsHash = {};\n\n // Save the current plural element, if any, then set it to a new value when\n // compiling the options sub-patterns. This conforms the spec's algorithm\n // for handling `\"#\"` syntax in message text.\n this.pluralStack.push(this.currentPlural);\n this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n var i, len, option;\n\n for (i = 0, len = options.length; i < len; i += 1) {\n option = options[i];\n\n // Compile the sub-pattern and save it under the options's selector.\n optionsHash[option.selector] = this.compileMessage(option.value);\n }\n\n // Pop the plural stack to put back the original current plural value.\n this.currentPlural = this.pluralStack.pop();\n\n return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n if (!value && typeof value !== 'number') {\n return '';\n }\n\n return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n this.id = id;\n this.useOrdinal = useOrdinal;\n this.offset = offset;\n this.options = options;\n this.pluralFn = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n var options = this.options;\n\n var option = options['=' + value] ||\n options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n this.id = id;\n this.offset = offset;\n this.numberFormat = numberFormat;\n this.string = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n var number = this.numberFormat.format(value - this.offset);\n\n return this.string\n .replace(/(^|[^\\\\])#/g, '$1' + number)\n .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n this.id = id;\n this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n var options = this.options;\n return options[value] || options.other;\n};\n","export default (function() {\n \"use strict\";\n\n /*\n * Generated by PEG.js 0.9.0.\n *\n * http://pegjs.org/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n }\n\n peg$subclass(peg$SyntaxError, Error);\n\n function peg$parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n parser = this,\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = function(elements) {\n return {\n type : 'messageFormatPattern',\n elements: elements,\n location: location()\n };\n },\n peg$c1 = function(text) {\n var string = '',\n i, j, outerLen, inner, innerLen;\n\n for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n inner = text[i];\n\n for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n string += inner[j];\n }\n }\n\n return string;\n },\n peg$c2 = function(messageText) {\n return {\n type : 'messageTextElement',\n value: messageText,\n location: location()\n };\n },\n peg$c3 = /^[^ \\t\\n\\r,.+={}#]/,\n peg$c4 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n peg$c5 = \"{\",\n peg$c6 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c7 = \",\",\n peg$c8 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c9 = \"}\",\n peg$c10 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c11 = function(id, format) {\n return {\n type : 'argumentElement',\n id : id,\n format: format && format[2],\n location: location()\n };\n },\n peg$c12 = \"number\",\n peg$c13 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n peg$c14 = \"date\",\n peg$c15 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n peg$c16 = \"time\",\n peg$c17 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n peg$c18 = function(type, style) {\n return {\n type : type + 'Format',\n style: style && style[2],\n location: location()\n };\n },\n peg$c19 = \"plural\",\n peg$c20 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c21 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: false,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options,\n location: location()\n };\n },\n peg$c22 = \"selectordinal\",\n peg$c23 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c24 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: true,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options,\n location: location()\n }\n },\n peg$c25 = \"select\",\n peg$c26 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c27 = function(options) {\n return {\n type : 'selectFormat',\n options: options,\n location: location()\n };\n },\n peg$c28 = \"=\",\n peg$c29 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c30 = function(selector, pattern) {\n return {\n type : 'optionalFormatPattern',\n selector: selector,\n value : pattern,\n location: location()\n };\n },\n peg$c31 = \"offset:\",\n peg$c32 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n peg$c33 = function(number) {\n return number;\n },\n peg$c34 = function(offset, options) {\n return {\n type : 'pluralFormat',\n offset : offset,\n options: options,\n location: location()\n };\n },\n peg$c35 = { type: \"other\", description: \"whitespace\" },\n peg$c36 = /^[ \\t\\n\\r]/,\n peg$c37 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n peg$c38 = { type: \"other\", description: \"optionalWhitespace\" },\n peg$c39 = /^[0-9]/,\n peg$c40 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c41 = /^[0-9a-f]/i,\n peg$c42 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c43 = \"0\",\n peg$c44 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n peg$c45 = /^[1-9]/,\n peg$c46 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n peg$c47 = function(digits) {\n return parseInt(digits, 10);\n },\n peg$c48 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c49 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F\\\\x7f \\\\t\\\\n\\\\r]\" },\n peg$c50 = \"\\\\\\\\\",\n peg$c51 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c52 = function() { return '\\\\'; },\n peg$c53 = \"\\\\#\",\n peg$c54 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c55 = function() { return '\\\\#'; },\n peg$c56 = \"\\\\{\",\n peg$c57 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c58 = function() { return '\\u007B'; },\n peg$c59 = \"\\\\}\",\n peg$c60 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c61 = function() { return '\\u007D'; },\n peg$c62 = \"\\\\u\",\n peg$c63 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c64 = function(digits) {\n return String.fromCharCode(parseInt(digits, 16));\n },\n peg$c65 = function(chars) { return chars.join(''); },\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function error(message) {\n throw peg$buildException(\n message,\n null,\n input.substring(peg$savedPos, peg$currPos),\n peg$computeLocation(peg$savedPos, peg$currPos)\n );\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos],\n p, ch;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n seenCR: details.seenCR\n };\n\n while (p < pos) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, found, location) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0100-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1000-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new peg$SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0;\n\n s0 = peg$parsemessageTextElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n }\n\n return s0;\n }\n\n function peg$parsemessageText() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsews();\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parsemessageTextElement() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c2(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseargument() {\n var s0, s1, s2;\n\n s0 = peg$parsenumber();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c3.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargument();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c7;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseelementFormat();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$FAILED;\n }\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c9;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0;\n\n s0 = peg$parsesimpleFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectOrdinalFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectFormat();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesimpleFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c12) {\n s1 = peg$c12;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c16) {\n s1 = peg$c16;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsechars();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c18(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselectOrdinalFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 13) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselectFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c25) {\n s1 = peg$c25;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseoptionalFormatPattern();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseoptionalFormatPattern();\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselector() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c28;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsechars();\n }\n\n return s0;\n }\n\n function peg$parseoptionalFormatPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseselector();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c5;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c9;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseoffset() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralStyle() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseoffset();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseoptionalFormatPattern();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseoptionalFormatPattern();\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c34(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsews() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c36.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsews();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsews();\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c43;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsedigit();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsedigit();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s1 = input.substring(s1, peg$currPos);\n } else {\n s1 = s2;\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c47(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n if (peg$c48.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c50) {\n s1 = peg$c50;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c53) {\n s1 = peg$c53;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c55();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c56) {\n s1 = peg$c56;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c58();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c59) {\n s1 = peg$c59;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c61();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s1 = peg$c62;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsehexDigit();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsehexDigit();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = input.substring(s2, peg$currPos);\n } else {\n s2 = s3;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c65(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(\n null,\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n }\n\n return {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n };\n})();","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport {extend, hop} from './utils';\nimport {defineProperty, objCreate} from './es5';\nimport Compiler from './compiler';\nimport parser from 'intl-messageformat-parser';\n\nexport default MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n // Parse string messages into an AST.\n var ast = typeof message === 'string' ?\n MessageFormat.__parse(message) : message;\n\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n formats = this._mergeFormats(MessageFormat.formats, formats);\n\n // Defined first because it's used to build the format pattern.\n defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n\n // Compile the `ast` to a pattern that is highly optimized for repeated\n // `format()` invocations. **Note:** This passes the `locales` set provided\n // to the constructor instead of just the resolved locale.\n var pluralFn = this._findPluralRuleFunction(this._locale);\n var pattern = this._compilePattern(ast, locales, formats, pluralFn);\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var messageFormat = this;\n this.format = function (values) {\n try {\n return messageFormat._format(pattern, values);\n } catch (e) {\n if (e.variableId) {\n throw new Error(\n 'The intl string context variable \\'' + e.variableId + '\\'' +\n ' was not provided to the string \\'' + message + '\\''\n );\n } else {\n throw e;\n }\n }\n };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\ndefineProperty(MessageFormat, 'formats', {\n enumerable: true,\n\n value: {\n number: {\n 'currency': {\n style: 'currency'\n },\n\n 'percent': {\n style: 'percent'\n }\n },\n\n date: {\n 'short': {\n month: 'numeric',\n day : 'numeric',\n year : '2-digit'\n },\n\n 'medium': {\n month: 'short',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'long': {\n month: 'long',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'full': {\n weekday: 'long',\n month : 'long',\n day : 'numeric',\n year : 'numeric'\n }\n },\n\n time: {\n 'short': {\n hour : 'numeric',\n minute: 'numeric'\n },\n\n 'medium': {\n hour : 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n\n 'long': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n },\n\n 'full': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n }\n }\n }\n});\n\n// Define internal private properties for dealing with locale data.\ndefineProperty(MessageFormat, '__localeData__', {value: objCreate(null)});\ndefineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlMessageFormat is missing a ' +\n '`locale` property'\n );\n }\n\n MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\ndefineProperty(MessageFormat, '__parse', {value: parser.parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\ndefineProperty(MessageFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n // TODO: Provide anything else?\n return {\n locale: this._locale\n };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n var compiler = new Compiler(locales, formats, pluralFn);\n return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n var localeData = MessageFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find a `pluralRuleFunction` to return.\n while (data) {\n if (data.pluralRuleFunction) {\n return data.pluralRuleFunction;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlMessageFormat is missing a ' +\n '`pluralRuleFunction` for :' + locale\n );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n var result = '',\n i, len, part, id, value, err;\n\n for (i = 0, len = pattern.length; i < len; i += 1) {\n part = pattern[i];\n\n // Exist early for string parts.\n if (typeof part === 'string') {\n result += part;\n continue;\n }\n\n id = part.id;\n\n // Enforce that all required values are provided by the caller.\n if (!(values && hop.call(values, id))) {\n err = new Error('A value must be provided for: ' + id);\n err.variableId = id;\n throw err;\n }\n\n value = values[id];\n\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (part.options) {\n result += this._format(part.getOption(value), values);\n } else {\n result += part.format(value);\n }\n }\n\n return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n var mergedFormats = {},\n type, mergedType;\n\n for (type in defaults) {\n if (!hop.call(defaults, type)) { continue; }\n\n mergedFormats[type] = mergedType = objCreate(defaults[type]);\n\n if (formats && hop.call(formats, type)) {\n extend(mergedType, formats[type]);\n }\n }\n\n return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n var localeData = MessageFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlMessageFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n","/* jslint esnext: true */\n\nimport IntlMessageFormat from './core';\nimport defaultLocale from './en';\n\nIntlMessageFormat.__addLocaleData(defaultLocale);\nIntlMessageFormat.defaultLocale = 'en';\n\nexport default IntlMessageFormat;\n","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nvar round = Math.round;\n\nfunction daysToYears(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n}\n\nexport default function (from, to) {\n // Convert to ms timestamps.\n from = +from;\n to = +to;\n\n var millisecond = round(to - from),\n second = round(millisecond / 1000),\n minute = round(second / 60),\n hour = round(minute / 60),\n day = round(hour / 24),\n week = round(day / 7);\n\n var rawYears = daysToYears(day),\n month = round(rawYears * 12),\n year = round(rawYears);\n\n return {\n millisecond : millisecond,\n second : second,\n 'second-short' : second,\n minute : minute,\n 'minute-short' : minute,\n hour : hour,\n 'hour-short' : hour,\n day : day,\n 'day-short' : day,\n week : week,\n 'week-short' : week,\n month : month,\n 'month-short' : month,\n year : year,\n 'year-short' : year\n };\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n /*jshint validthis:true */\n var arr = this;\n if (!arr.length) {\n return -1;\n }\n\n for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n if (arr[i] === search) {\n return i;\n }\n }\n\n return -1;\n};\n\nvar isArray = Array.isArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n};\n\nvar dateNow = Date.now || function () {\n return new Date().getTime();\n};\n\nexport {defineProperty, objCreate, arrIndexOf, isArray, dateNow};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport IntlMessageFormat from 'intl-messageformat';\nimport diff from './diff';\nimport {\n defineProperty,\n objCreate,\n arrIndexOf,\n isArray,\n dateNow\n} from './es5';\n\nexport default RelativeFormat;\n\n// -----------------------------------------------------------------------------\n\nvar FIELDS = [\n 'second', 'second-short',\n 'minute', 'minute-short',\n 'hour', 'hour-short',\n 'day', 'day-short',\n 'month', 'month-short',\n 'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n\n// -- RelativeFormat -----------------------------------------------------------\n\nfunction RelativeFormat(locales, options) {\n options = options || {};\n\n // Make a copy of `locales` if it's an array, so that it doesn't change\n // since it's used lazily.\n if (isArray(locales)) {\n locales = locales.concat();\n }\n\n defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n defineProperty(this, '_options', {value: {\n style: this._resolveStyle(options.style),\n units: this._isValidUnits(options.units) && options.units\n }});\n\n defineProperty(this, '_locales', {value: locales});\n defineProperty(this, '_fields', {value: this._findFields(this._locale)});\n defineProperty(this, '_messages', {value: objCreate(null)});\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var relativeFormat = this;\n this.format = function format(date, options) {\n return relativeFormat._format(date, options);\n };\n}\n\n// Define internal private properties for dealing with locale data.\ndefineProperty(RelativeFormat, '__localeData__', {value: objCreate(null)});\ndefineProperty(RelativeFormat, '__addLocaleData', {value: function () {\n for (var i = 0; i < arguments.length; i++) {\n var datum = arguments[i]\n if (!(datum && datum.locale)) {\n throw new Error(\n 'Locale data provided to IntlRelativeFormat is missing a ' +\n '`locale` property value'\n );\n }\n \n RelativeFormat.__localeData__[datum.locale.toLowerCase()] = datum;\n \n // Add data to IntlMessageFormat.\n IntlMessageFormat.__addLocaleData(datum);\n }\n}});\n\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\ndefineProperty(RelativeFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\ndefineProperty(RelativeFormat, 'thresholds', {\n enumerable: true,\n\n value: {\n second: 45, 'second-short': 45, // seconds to minute\n minute: 45, 'minute-short': 45, // minutes to hour\n hour : 22, 'hour-short': 22, // hours to day\n day : 26, 'day-short': 26, // days to month\n month : 11, 'month-short': 11 // months to year\n }\n});\n\nRelativeFormat.prototype.resolvedOptions = function () {\n return {\n locale: this._locale,\n style : this._options.style,\n units : this._options.units\n };\n};\n\nRelativeFormat.prototype._compileMessage = function (units) {\n // `this._locales` is the original set of locales the user specified to the\n // constructor, while `this._locale` is the resolved root locale.\n var locales = this._locales;\n var resolvedLocale = this._locale;\n\n var field = this._fields[units];\n var relativeTime = field.relativeTime;\n var future = '';\n var past = '';\n var i;\n\n for (i in relativeTime.future) {\n if (relativeTime.future.hasOwnProperty(i)) {\n future += ' ' + i + ' {' +\n relativeTime.future[i].replace('{0}', '#') + '}';\n }\n }\n\n for (i in relativeTime.past) {\n if (relativeTime.past.hasOwnProperty(i)) {\n past += ' ' + i + ' {' +\n relativeTime.past[i].replace('{0}', '#') + '}';\n }\n }\n\n var message = '{when, select, future {{0, plural, ' + future + '}}' +\n 'past {{0, plural, ' + past + '}}}';\n\n // Create the synthetic IntlMessageFormat instance using the original\n // locales value specified by the user when constructing the the parent\n // IntlRelativeFormat instance.\n return new IntlMessageFormat(message, locales);\n};\n\nRelativeFormat.prototype._getMessage = function (units) {\n var messages = this._messages;\n\n // Create a new synthetic message based on the locale data from CLDR.\n if (!messages[units]) {\n messages[units] = this._compileMessage(units);\n }\n\n return messages[units];\n};\n\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n var field = this._fields[units];\n\n if (field.relative) {\n return field.relative[diff];\n }\n};\n\nRelativeFormat.prototype._findFields = function (locale) {\n var localeData = RelativeFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find `fields` to return.\n while (data) {\n if (data.fields) {\n return data.fields;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlRelativeFormat is missing `fields` for :' +\n locale\n );\n};\n\nRelativeFormat.prototype._format = function (date, options) {\n var now = options && options.now !== undefined ? options.now : dateNow();\n\n if (date === undefined) {\n date = now;\n }\n\n // Determine if the `date` and optional `now` values are valid, and throw a\n // similar error to what `Intl.DateTimeFormat#format()` would throw.\n if (!isFinite(now)) {\n throw new RangeError(\n 'The `now` option provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.'\n );\n }\n\n if (!isFinite(date)) {\n throw new RangeError(\n 'The date value provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.'\n );\n }\n\n var diffReport = diff(now, date);\n var units = this._options.units || this._selectUnits(diffReport);\n var diffInUnits = diffReport[units];\n\n if (this._options.style !== 'numeric') {\n var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n if (relativeUnits) {\n return relativeUnits;\n }\n }\n\n return this._getMessage(units).format({\n '0' : Math.abs(diffInUnits),\n when: diffInUnits < 0 ? 'past' : 'future'\n });\n};\n\nRelativeFormat.prototype._isValidUnits = function (units) {\n if (!units || arrIndexOf.call(FIELDS, units) >= 0) {\n return true;\n }\n\n if (typeof units === 'string') {\n var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n if (suggestion && arrIndexOf.call(FIELDS, suggestion) >= 0) {\n throw new Error(\n '\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n 'value, did you mean: ' + suggestion\n );\n }\n }\n\n throw new Error(\n '\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n 'must be one of: \"' + FIELDS.join('\", \"') + '\"'\n );\n};\n\nRelativeFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(RelativeFormat.defaultLocale);\n\n var localeData = RelativeFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlRelativeFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n\nRelativeFormat.prototype._resolveStyle = function (style) {\n // Default to \"best fit\" style.\n if (!style) {\n return STYLES[0];\n }\n\n if (arrIndexOf.call(STYLES, style) >= 0) {\n return style;\n }\n\n throw new Error(\n '\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n 'must be one of: \"' + STYLES.join('\", \"') + '\"'\n );\n};\n\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n var i, l, units;\n var fields = FIELDS.filter(function(field) {\n return field.indexOf('-short') < 1;\n });\n\n for (i = 0, l = fields.length; i < l; i += 1) {\n units = fields[i];\n\n if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n break;\n }\n }\n\n return units;\n};\n","/* jslint esnext: true */\n\nimport IntlRelativeFormat from './core';\nimport defaultLocale from './en';\n\nIntlRelativeFormat.__addLocaleData(defaultLocale);\nIntlRelativeFormat.defaultLocale = 'en';\n\nexport default IntlRelativeFormat;\n","/* @generated */\t\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 1 && n100 != 11) ? 'one'\n : (n10 == 2 && n100 != 12) ? 'two'\n : (n10 == 3 && n100 != 13) ? 'few'\n : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"year-short\":{\"displayName\":\"yr.\",\"relative\":{\"0\":\"this yr.\",\"1\":\"next yr.\",\"-1\":\"last yr.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} yr.\",\"other\":\"in {0} yr.\"},\"past\":{\"one\":\"{0} yr. ago\",\"other\":\"{0} yr. ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"month-short\":{\"displayName\":\"mo.\",\"relative\":{\"0\":\"this mo.\",\"1\":\"next mo.\",\"-1\":\"last mo.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} mo.\",\"other\":\"in {0} mo.\"},\"past\":{\"one\":\"{0} mo. ago\",\"other\":\"{0} mo. ago\"}}},\"week\":{\"displayName\":\"week\",\"relativePeriod\":\"the week of {0}\",\"relative\":{\"0\":\"this week\",\"1\":\"next week\",\"-1\":\"last week\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} week\",\"other\":\"in {0} weeks\"},\"past\":{\"one\":\"{0} week ago\",\"other\":\"{0} weeks ago\"}}},\"week-short\":{\"displayName\":\"wk.\",\"relativePeriod\":\"the week of {0}\",\"relative\":{\"0\":\"this wk.\",\"1\":\"next wk.\",\"-1\":\"last wk.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} wk.\",\"other\":\"in {0} wk.\"},\"past\":{\"one\":\"{0} wk. ago\",\"other\":\"{0} wk. ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"day-short\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"hour-short\":{\"displayName\":\"hr.\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hr.\",\"other\":\"in {0} hr.\"},\"past\":{\"one\":\"{0} hr. ago\",\"other\":\"{0} hr. ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"minute-short\":{\"displayName\":\"min.\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} min.\",\"other\":\"in {0} min.\"},\"past\":{\"one\":\"{0} min. ago\",\"other\":\"{0} min. ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}},\"second-short\":{\"displayName\":\"sec.\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} sec.\",\"other\":\"in {0} sec.\"},\"past\":{\"one\":\"{0} sec. ago\",\"other\":\"{0} sec. ago\"}}}}};\t\n"],"names":["hop","Object","prototype","hasOwnProperty","extend","obj","i","len","source","key","sources","Array","slice","call","arguments","length","defineProperty","e","name","desc","__defineGetter__","get","value","objCreate","create","proto","props","k","F","Compiler","locales","formats","pluralFn","this","StringFormat","id","PluralFormat","useOrdinal","offset","options","PluralOffsetString","numberFormat","string","SelectFormat","compile","ast","pluralStack","currentPlural","pluralNumberFormat","compileMessage","type","Error","element","elements","pattern","push","compileMessageText","compileArgument","test","Intl","NumberFormat","format","replace","number","style","date","DateTimeFormat","time","compileOptions","ordinal","option","optionsHash","selector","pop","String","getOption","other","child","parent","peg$SyntaxError","ctor","SyntaxError","parse","input","peg$result","message","expected","found","location","peg$FAILED","peg$startRuleFunctions","start","peg$parsestart","peg$startRuleFunction","peg$c0","peg$c1","text","j","outerLen","inner","innerLen","peg$c2","messageText","peg$c3","peg$c4","description","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","pluralStyle","peg$c22","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","digits","parseInt","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","fromCharCode","peg$c65","chars","join","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","seenCR","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","peg$computeLocation","peg$computePosDetails","pos","p","ch","details","charAt","startPos","endPos","startPosDetails","endPosDetails","end","peg$fail","peg$parsemessageFormatPattern","s0","s1","s2","peg$parsemessageFormatElement","s3","s4","s5","peg$parse_","peg$parsechars","peg$parsews","substring","peg$parsemessageText","peg$parsemessageTextElement","s6","s7","s8","charCodeAt","peg$parsenumber","peg$parseargument","substr","peg$parsesimpleFormat","peg$parsepluralStyle","peg$parsepluralFormat","peg$parseselectOrdinalFormat","peg$parseoptionalFormatPattern","peg$parseselectFormat","peg$parseelementFormat","peg$parseargumentElement","peg$parseselector","peg$parseoffset","peg$parsedigit","peg$parsehexDigit","peg$parsechar","sort","a","b","splice","cleanupExpected","expectedDescs","hex","toString","toUpperCase","buildMessage","captureStackTrace","constructor","MessageFormat","__parse","TypeError","_mergeFormats","_resolveLocale","_findPluralRuleFunction","_locale","_compilePattern","messageFormat","values","_format","variableId","enumerable","currency","percent","short","month","day","year","medium","long","full","weekday","hour","minute","second","timeZoneName","data","locale","__localeData__","toLowerCase","parser","writable","undefined","resolvedOptions","localeData","pluralRuleFunction","parentLocale","part","err","result","defaults","mergedType","mergedFormats","concat","defaultLocale","localeParts","split","__addLocaleData","n","ord","s","v0","t0","Number","n10","n100","round","Math","arrIndexOf","indexOf","search","fromIndex","max","isArray","dateNow","Date","now","getTime","FIELDS","STYLES","RelativeFormat","_resolveStyle","units","_isValidUnits","_findFields","relativeFormat","datum","IntlMessageFormat","second-short","minute-short","hour-short","day-short","month-short","_options","_compileMessage","_locales","relativeTime","_fields","future","past","_getMessage","messages","_messages","_getRelativeUnits","diff","field","relative","fields","isFinite","RangeError","diffReport","from","to","millisecond","week","rawYears","days","daysToYears","week-short","year-short","_selectUnits","diffInUnits","relativeUnits","0","abs","when","suggestion","l","filter","thresholds","displayName","1","-1","one","relativePeriod"],"mappings":"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"}