Bones/node_modules/buble/dist/buble.deps.js.map
SOUTHERNCO\x2mjbyrn 7efe7605b8 Template Upload
2017-05-17 13:45:25 -04:00

1 line
890 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"buble.deps.js","sources":["../node_modules/acorn/dist/acorn.js","../node_modules/acorn-jsx/xhtml.js","../node_modules/acorn-jsx/inject.js","../node_modules/acorn-object-spread/inject.js","../node_modules/vlq/src/vlq.js","../node_modules/magic-string/dist/magic-string.es6.js","../src/program/keys.js","../src/program/Node.js","../src/utils/spread.js","../src/program/types/ArrayExpression.js","../src/program/types/ArrowFunctionExpression.js","../src/utils/locate.js","../src/utils/getSnippet.js","../src/utils/CompileError.js","../src/program/types/AssignmentExpression.js","../src/program/types/BinaryExpression.js","../src/program/types/BreakStatement.js","../src/program/types/CallExpression.js","../src/utils/array.js","../src/utils/reserved.js","../src/program/types/ClassBody.js","../src/utils/deindent.js","../src/program/types/ClassDeclaration.js","../src/program/types/ClassExpression.js","../src/program/types/ContinueStatement.js","../src/program/types/ExportDefaultDeclaration.js","../src/program/types/ExportNamedDeclaration.js","../src/program/extractNames.js","../src/program/types/shared/LoopStatement.js","../src/program/types/ForStatement.js","../src/program/types/ForInStatement.js","../src/program/types/ForOfStatement.js","../src/program/types/FunctionDeclaration.js","../src/program/types/FunctionExpression.js","../src/utils/isReference.js","../src/program/types/Identifier.js","../src/program/types/ImportDeclaration.js","../src/program/types/ImportDefaultSpecifier.js","../src/program/types/ImportSpecifier.js","../src/program/types/JSXAttribute.js","../src/program/types/JSXClosingElement.js","../src/program/types/JSXElement.js","../src/program/types/JSXExpressionContainer.js","../src/program/types/JSXOpeningElement.js","../src/program/types/JSXSpreadAttribute.js","../node_modules/regenerate/regenerate.js","../node_modules/regexpu-core/data/character-class-escape-sets.js","../node_modules/regexpu-core/data/iu-mappings.js","../node_modules/regenerate-unicode-properties/index.js","../node_modules/unicode-loose-match/data/mappings.js","../node_modules/unicode-loose-match/index.js","../node_modules/regjsparser/parser.js","../node_modules/regjsgen/regjsgen.js","../node_modules/regexpu-core/rewrite-pattern.js","../src/program/types/Literal.js","../src/program/types/MemberExpression.js","../src/program/types/ObjectExpression.js","../src/program/types/Property.js","../src/program/types/ReturnStatement.js","../src/program/types/SpreadProperty.js","../src/program/types/Super.js","../src/program/types/TaggedTemplateExpression.js","../src/program/types/TemplateElement.js","../src/program/types/TemplateLiteral.js","../src/program/types/ThisExpression.js","../src/program/types/UpdateExpression.js","../src/utils/destructure.js","../src/program/types/VariableDeclaration.js","../src/program/types/VariableDeclarator.js","../src/program/types/index.js","../src/program/wrap.js","../src/program/Scope.js","../src/program/BlockStatement.js","../src/program/Program.js","../src/support.js","../package.json","../src/index.js"],"sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.acorn = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\"use strict\";\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _state = _dereq_(\"./state\");\n\nvar pp = _state.Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp.checkPropClash = function (prop, propHash) {\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) return;\n var key = prop.key;var name = undefined;\n switch (key.type) {\n case \"Identifier\":\n name = key.name;break;\n case \"Literal\":\n name = String(key.value);break;\n default:\n return;\n }\n var kind = prop.kind;\n\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n propHash.proto = true;\n }\n return;\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var isGetSet = kind !== \"init\";\n if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) this.raiseRecoverable(key.start, \"Redefinition of property\");\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp.parseExpression = function (noIn, refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(noIn, refDestructuringErrors);\n if (this.type === _tokentype.types.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(_tokentype.types.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors));\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp.parseMaybeAssign = function (noIn, refDestructuringErrors, afterLeftParse) {\n if (this.inGenerator && this.isContextual(\"yield\")) return this.parseYield();\n\n var validateDestructuring = false;\n if (!refDestructuringErrors) {\n refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 };\n validateDestructuring = true;\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n if (this.type == _tokentype.types.parenL || this.type == _tokentype.types.name) this.potentialArrowAt = this.start;\n var left = this.parseMaybeConditional(noIn, refDestructuringErrors);\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc);\n if (this.type.isAssign) {\n if (validateDestructuring) this.checkPatternErrors(refDestructuringErrors, true);\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.left = this.type === _tokentype.types.eq ? this.toAssignable(left) : left;\n refDestructuringErrors.shorthandAssign = 0; // reset because shorthand default was used correctly\n this.checkLVal(left);\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\");\n } else {\n if (validateDestructuring) this.checkExpressionErrors(refDestructuringErrors, true);\n }\n return left;\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp.parseMaybeConditional = function (noIn, refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprOps(noIn, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr;\n if (this.eat(_tokentype.types.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(_tokentype.types.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n};\n\n// Start the precedence parser.\n\npp.parseExprOps = function (noIn, refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false);\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr;\n return this.parseExprOp(expr, startPos, startLoc, -1, noIn);\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) {\n var prec = this.type.binop;\n if (prec != null && (!noIn || this.type !== _tokentype.types._in)) {\n if (prec > minPrec) {\n var logical = this.type === _tokentype.types.logicalOR || this.type === _tokentype.types.logicalAND;\n var op = this.value;\n this.next();\n var startPos = this.start,\n startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical);\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);\n }\n }\n return left;\n};\n\npp.buildBinary = function (startPos, startLoc, left, right, op, logical) {\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\");\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp.parseMaybeUnary = function (refDestructuringErrors, sawUnary) {\n var startPos = this.start,\n startLoc = this.startLoc,\n expr = undefined;\n if (this.type.prefix) {\n var node = this.startNode(),\n update = this.type === _tokentype.types.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) this.checkLVal(node.argument);else if (this.strict && node.operator === \"delete\" && node.argument.type === \"Identifier\") this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\");else sawUnary = true;\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr;\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n node.prefix = false;\n node.argument = expr;\n this.checkLVal(expr);\n this.next();\n expr = this.finishNode(node, \"UpdateExpression\");\n }\n }\n\n if (!sawUnary && this.eat(_tokentype.types.starstar)) return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false);else return expr;\n};\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp.parseExprSubscripts = function (refDestructuringErrors) {\n var startPos = this.start,\n startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors);\n var skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\";\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr;\n return this.parseSubscripts(expr, startPos, startLoc);\n};\n\npp.parseSubscripts = function (base, startPos, startLoc, noCalls) {\n for (;;) {\n if (this.eat(_tokentype.types.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = this.parseIdent(true);\n node.computed = false;\n base = this.finishNode(node, \"MemberExpression\");\n } else if (this.eat(_tokentype.types.bracketL)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = this.parseExpression();\n node.computed = true;\n this.expect(_tokentype.types.bracketR);\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(_tokentype.types.parenL)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseExprList(_tokentype.types.parenR, false);\n base = this.finishNode(node, \"CallExpression\");\n } else if (this.type === _tokentype.types.backQuote) {\n var node = this.startNodeAt(startPos, startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate();\n base = this.finishNode(node, \"TaggedTemplateExpression\");\n } else {\n return base;\n }\n }\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp.parseExprAtom = function (refDestructuringErrors) {\n var node = undefined,\n canBeArrow = this.potentialArrowAt == this.start;\n switch (this.type) {\n case _tokentype.types._super:\n if (!this.inFunction) this.raise(this.start, \"'super' outside of function or class\");\n\n case _tokentype.types._this:\n var type = this.type === _tokentype.types._this ? \"ThisExpression\" : \"Super\";\n node = this.startNode();\n this.next();\n return this.finishNode(node, type);\n\n case _tokentype.types.name:\n var startPos = this.start,\n startLoc = this.startLoc;\n var id = this.parseIdent(this.type !== _tokentype.types.name);\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokentype.types.arrow)) return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id]);\n return id;\n\n case _tokentype.types.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = { pattern: value.pattern, flags: value.flags };\n return node;\n\n case _tokentype.types.num:case _tokentype.types.string:\n return this.parseLiteral(this.value);\n\n case _tokentype.types._null:case _tokentype.types._true:case _tokentype.types._false:\n node = this.startNode();\n node.value = this.type === _tokentype.types._null ? null : this.type === _tokentype.types._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\");\n\n case _tokentype.types.parenL:\n return this.parseParenAndDistinguishExpression(canBeArrow);\n\n case _tokentype.types.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(_tokentype.types.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\");\n\n case _tokentype.types.braceL:\n return this.parseObj(false, refDestructuringErrors);\n\n case _tokentype.types._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, false);\n\n case _tokentype.types._class:\n return this.parseClass(this.startNode(), false);\n\n case _tokentype.types._new:\n return this.parseNew();\n\n case _tokentype.types.backQuote:\n return this.parseTemplate();\n\n default:\n this.unexpected();\n }\n};\n\npp.parseLiteral = function (value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n this.next();\n return this.finishNode(node, \"Literal\");\n};\n\npp.parseParenExpression = function () {\n this.expect(_tokentype.types.parenL);\n var val = this.parseExpression();\n this.expect(_tokentype.types.parenR);\n return val;\n};\n\npp.parseParenAndDistinguishExpression = function (canBeArrow) {\n var startPos = this.start,\n startLoc = this.startLoc,\n val = undefined;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start,\n innerStartLoc = this.startLoc;\n var exprList = [],\n first = true;\n var refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 },\n spreadStart = undefined,\n innerParenStart = undefined;\n while (this.type !== _tokentype.types.parenR) {\n first ? first = false : this.expect(_tokentype.types.comma);\n if (this.type === _tokentype.types.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRest()));\n break;\n } else {\n if (this.type === _tokentype.types.parenL && !innerParenStart) {\n innerParenStart = this.start;\n }\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.start,\n innerEndLoc = this.startLoc;\n this.expect(_tokentype.types.parenR);\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokentype.types.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, true);\n if (innerParenStart) this.unexpected(innerParenStart);\n return this.parseParenArrowList(startPos, startLoc, exprList);\n }\n\n if (!exprList.length) this.unexpected(this.lastTokStart);\n if (spreadStart) this.unexpected(spreadStart);\n this.checkExpressionErrors(refDestructuringErrors, true);\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\");\n } else {\n return val;\n }\n};\n\npp.parseParenItem = function (item) {\n return item;\n};\n\npp.parseParenArrowList = function (startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList);\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp.parseNew = function () {\n var node = this.startNode();\n var meta = this.parseIdent(true);\n if (this.options.ecmaVersion >= 6 && this.eat(_tokentype.types.dot)) {\n node.meta = meta;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\") this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\");\n if (!this.inFunction) this.raiseRecoverable(node.start, \"new.target can only be used in functions\");\n return this.finishNode(node, \"MetaProperty\");\n }\n var startPos = this.start,\n startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n if (this.eat(_tokentype.types.parenL)) node.arguments = this.parseExprList(_tokentype.types.parenR, false);else node.arguments = empty;\n return this.finishNode(node, \"NewExpression\");\n};\n\n// Parse template expression.\n\npp.parseTemplateElement = function () {\n var elem = this.startNode();\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, '\\n'),\n cooked: this.value\n };\n this.next();\n elem.tail = this.type === _tokentype.types.backQuote;\n return this.finishNode(elem, \"TemplateElement\");\n};\n\npp.parseTemplate = function () {\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement();\n node.quasis = [curElt];\n while (!curElt.tail) {\n this.expect(_tokentype.types.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(_tokentype.types.braceR);\n node.quasis.push(curElt = this.parseTemplateElement());\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\");\n};\n\n// Parse an object literal or binding pattern.\n\npp.parseObj = function (isPattern, refDestructuringErrors) {\n var node = this.startNode(),\n first = true,\n propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(_tokentype.types.braceR)) {\n if (!first) {\n this.expect(_tokentype.types.comma);\n if (this.afterTrailingComma(_tokentype.types.braceR)) break;\n } else first = false;\n\n var prop = this.startNode(),\n isGenerator = undefined,\n startPos = undefined,\n startLoc = undefined;\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern) isGenerator = this.eat(_tokentype.types.star);\n }\n this.parsePropertyName(prop);\n this.parsePropertyValue(prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors);\n this.checkPropClash(prop, propHash);\n node.properties.push(this.finishNode(prop, \"Property\"));\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\");\n};\n\npp.parsePropertyValue = function (prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors) {\n if (this.eat(_tokentype.types.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === _tokentype.types.parenL) {\n if (isPattern) this.unexpected();\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator);\n } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" && (prop.key.name === \"get\" || prop.key.name === \"set\") && this.type != _tokentype.types.comma && this.type != _tokentype.types.braceR) {\n if (isGenerator || isPattern) this.unexpected();\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\") this.raiseRecoverable(start, \"getter should have no params\");else this.raiseRecoverable(start, \"setter should have exactly one param\");\n }\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\") this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\");\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n prop.kind = \"init\";\n if (isPattern) {\n if (this.keywords.test(prop.key.name) || (this.strict ? this.reservedWordsStrictBind : this.reservedWords).test(prop.key.name) || this.inGenerator && prop.key.name == \"yield\") this.raiseRecoverable(prop.key.start, \"Binding \" + prop.key.name);\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else if (this.type === _tokentype.types.eq && refDestructuringErrors) {\n if (!refDestructuringErrors.shorthandAssign) refDestructuringErrors.shorthandAssign = this.start;\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);\n } else {\n prop.value = prop.key;\n }\n prop.shorthand = true;\n } else this.unexpected();\n};\n\npp.parsePropertyName = function (prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(_tokentype.types.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(_tokentype.types.bracketR);\n return prop.key;\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === _tokentype.types.num || this.type === _tokentype.types.string ? this.parseExprAtom() : this.parseIdent(true);\n};\n\n// Initialize empty function node.\n\npp.initFunction = function (node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) {\n node.generator = false;\n node.expression = false;\n }\n};\n\n// Parse object or class method.\n\npp.parseMethod = function (isGenerator) {\n var node = this.startNode(),\n oldInGen = this.inGenerator;\n this.inGenerator = isGenerator;\n this.initFunction(node);\n this.expect(_tokentype.types.parenL);\n node.params = this.parseBindingList(_tokentype.types.parenR, false, false);\n if (this.options.ecmaVersion >= 6) node.generator = isGenerator;\n this.parseFunctionBody(node, false);\n this.inGenerator = oldInGen;\n return this.finishNode(node, \"FunctionExpression\");\n};\n\n// Parse arrow function expression with given parameters.\n\npp.parseArrowExpression = function (node, params) {\n var oldInGen = this.inGenerator;\n this.inGenerator = false;\n this.initFunction(node);\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true);\n this.inGenerator = oldInGen;\n return this.finishNode(node, \"ArrowFunctionExpression\");\n};\n\n// Parse function body and check parameters.\n\npp.parseFunctionBody = function (node, isArrowFunction) {\n var isExpression = isArrowFunction && this.type !== _tokentype.types.braceL;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n node.expression = true;\n } else {\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldInFunc = this.inFunction,\n oldLabels = this.labels;\n this.inFunction = true;this.labels = [];\n node.body = this.parseBlock(true);\n node.expression = false;\n this.inFunction = oldInFunc;this.labels = oldLabels;\n }\n\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (this.strict || !isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) {\n var oldStrict = this.strict;\n this.strict = true;\n if (node.id) this.checkLVal(node.id, true);\n this.checkParams(node);\n this.strict = oldStrict;\n } else if (isArrowFunction) {\n this.checkParams(node);\n }\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp.checkParams = function (node) {\n var nameHash = {};\n for (var i = 0; i < node.params.length; i++) {\n this.checkLVal(node.params[i], true, nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp.parseExprList = function (close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [],\n first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(_tokentype.types.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) break;\n } else first = false;\n\n var elt = undefined;\n if (allowEmpty && this.type === _tokentype.types.comma) elt = null;else if (this.type === _tokentype.types.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (this.type === _tokentype.types.comma && refDestructuringErrors && !refDestructuringErrors.trailingComma) {\n refDestructuringErrors.trailingComma = this.lastTokStart;\n }\n } else elt = this.parseMaybeAssign(false, refDestructuringErrors);\n elts.push(elt);\n }\n return elts;\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp.parseIdent = function (liberal) {\n var node = this.startNode();\n if (liberal && this.options.allowReserved == \"never\") liberal = false;\n if (this.type === _tokentype.types.name) {\n if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) && (this.options.ecmaVersion >= 6 || this.input.slice(this.start, this.end).indexOf(\"\\\\\") == -1)) this.raiseRecoverable(this.start, \"The keyword '\" + this.value + \"' is reserved\");\n if (!liberal && this.inGenerator && this.value === \"yield\") this.raiseRecoverable(this.start, \"Can not use 'yield' as identifier inside a generator\");\n node.name = this.value;\n } else if (liberal && this.type.keyword) {\n node.name = this.type.keyword;\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"Identifier\");\n};\n\n// Parses yield expression inside generator.\n\npp.parseYield = function () {\n var node = this.startNode();\n this.next();\n if (this.type == _tokentype.types.semi || this.canInsertSemicolon() || this.type != _tokentype.types.star && !this.type.startsExpr) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(_tokentype.types.star);\n node.argument = this.parseMaybeAssign();\n }\n return this.finishNode(node, \"YieldExpression\");\n};\n\n},{\"./state\":10,\"./tokentype\":14}],2:[function(_dereq_,module,exports){\n// Reserved word lists for various dialects of the language\n\n\"use strict\";\n\nexports.__esModule = true;\nexports.isIdentifierStart = isIdentifierStart;\nexports.isIdentifierChar = isIdentifierChar;\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n 7: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\nexports.reservedWords = reservedWords;\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nexports.keywords = keywords;\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nvar nonASCIIidentifierStartChars = \"ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA--zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ\";\nvar nonASCIIidentifierChars = \"‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣣ-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷼-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-꣄꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍--_\";\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 99, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 785, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 287, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 86, 25, 391, 63, 32, 0, 449, 56, 1288, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, 0, 67, 12, 16481, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 1340, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 3, 5761, 10591, 541];\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 10, 2, 4, 9, 83, 11, 168, 11, 6, 9, 7, 3, 57, 0, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 316, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 423, 9, 20855, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 3617, 6, 792618, 239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) return code === 36;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n if (astral === false) return false;\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n if (astral === false) return false;\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\n\n},{}],3:[function(_dereq_,module,exports){\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/ternjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/ternjs/acorn/issues\n//\n// This file defines the main parser interface. The library also comes\n// with a [error-tolerant parser][dammit] and an\n// [abstract syntax tree walker][walk], defined in other files.\n//\n// [dammit]: acorn_loose.js\n// [walk]: util/walk.js\n\n\"use strict\";\n\nexports.__esModule = true;\nexports.parse = parse;\nexports.parseExpressionAt = parseExpressionAt;\nexports.tokenizer = tokenizer;\n\nvar _state = _dereq_(\"./state\");\n\n_dereq_(\"./parseutil\");\n\n_dereq_(\"./statement\");\n\n_dereq_(\"./lval\");\n\n_dereq_(\"./expression\");\n\n_dereq_(\"./location\");\n\nexports.Parser = _state.Parser;\nexports.plugins = _state.plugins;\n\nvar _options = _dereq_(\"./options\");\n\nexports.defaultOptions = _options.defaultOptions;\n\nvar _locutil = _dereq_(\"./locutil\");\n\nexports.Position = _locutil.Position;\nexports.SourceLocation = _locutil.SourceLocation;\nexports.getLineInfo = _locutil.getLineInfo;\n\nvar _node = _dereq_(\"./node\");\n\nexports.Node = _node.Node;\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nexports.TokenType = _tokentype.TokenType;\nexports.tokTypes = _tokentype.types;\n\nvar _tokencontext = _dereq_(\"./tokencontext\");\n\nexports.TokContext = _tokencontext.TokContext;\nexports.tokContexts = _tokencontext.types;\n\nvar _identifier = _dereq_(\"./identifier\");\n\nexports.isIdentifierChar = _identifier.isIdentifierChar;\nexports.isIdentifierStart = _identifier.isIdentifierStart;\n\nvar _tokenize = _dereq_(\"./tokenize\");\n\nexports.Token = _tokenize.Token;\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nexports.isNewLine = _whitespace.isNewLine;\nexports.lineBreak = _whitespace.lineBreak;\nexports.lineBreakG = _whitespace.lineBreakG;\nvar version = \"3.1.0\";\n\nexports.version = version;\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nfunction parse(input, options) {\n return new _state.Parser(options, input).parse();\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n var p = new _state.Parser(options, input, pos);\n p.nextToken();\n return p.parseExpression();\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return new _state.Parser(options, input);\n}\n\n},{\"./expression\":1,\"./identifier\":2,\"./location\":4,\"./locutil\":5,\"./lval\":6,\"./node\":7,\"./options\":8,\"./parseutil\":9,\"./state\":10,\"./statement\":11,\"./tokencontext\":12,\"./tokenize\":13,\"./tokentype\":14,\"./whitespace\":16}],4:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _state = _dereq_(\"./state\");\n\nvar _locutil = _dereq_(\"./locutil\");\n\nvar pp = _state.Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp.raise = function (pos, message) {\n var loc = _locutil.getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos;err.loc = loc;err.raisedAt = this.pos;\n throw err;\n};\n\npp.raiseRecoverable = pp.raise;\n\npp.curPosition = function () {\n if (this.options.locations) {\n return new _locutil.Position(this.curLine, this.pos - this.lineStart);\n }\n};\n\n},{\"./locutil\":5,\"./state\":10}],5:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nexports.getLineInfo = getLineInfo;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = (function () {\n function Position(line, col) {\n _classCallCheck(this, Position);\n\n this.line = line;\n this.column = col;\n }\n\n Position.prototype.offset = function offset(n) {\n return new Position(this.line, this.column + n);\n };\n\n return Position;\n})();\n\nexports.Position = Position;\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n _classCallCheck(this, SourceLocation);\n\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) this.source = p.sourceFile;\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\n;\n\nexports.SourceLocation = SourceLocation;\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n _whitespace.lineBreakG.lastIndex = cur;\n var match = _whitespace.lineBreakG.exec(input);\n if (match && match.index < offset) {\n ++line;\n cur = match.index + match[0].length;\n } else {\n return new Position(line, offset - cur);\n }\n }\n}\n\n},{\"./whitespace\":16}],6:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _state = _dereq_(\"./state\");\n\nvar _util = _dereq_(\"./util\");\n\nvar pp = _state.Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp.toAssignable = function (node, isBinding) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n break;\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n for (var i = 0; i < node.properties.length; i++) {\n var prop = node.properties[i];\n if (prop.kind !== \"init\") this.raise(prop.key.start, \"Object pattern can't contain getter or setter\");\n this.toAssignable(prop.value, isBinding);\n }\n break;\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(node.elements, isBinding);\n break;\n\n case \"AssignmentExpression\":\n if (node.operator === \"=\") {\n node.type = \"AssignmentPattern\";\n delete node.operator;\n // falls through to AssignmentPattern\n } else {\n this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\");\n break;\n }\n\n case \"AssignmentPattern\":\n if (node.right.type === \"YieldExpression\") this.raise(node.right.start, \"Yield expression cannot be a default value\");\n break;\n\n case \"ParenthesizedExpression\":\n node.expression = this.toAssignable(node.expression, isBinding);\n break;\n\n case \"MemberExpression\":\n if (!isBinding) break;\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n }\n return node;\n};\n\n// Convert list of expression atoms to binding list.\n\npp.toAssignableList = function (exprList, isBinding) {\n var end = exprList.length;\n if (end) {\n var last = exprList[end - 1];\n if (last && last.type == \"RestElement\") {\n --end;\n } else if (last && last.type == \"SpreadElement\") {\n last.type = \"RestElement\";\n var arg = last.argument;\n this.toAssignable(arg, isBinding);\n if (arg.type !== \"Identifier\" && arg.type !== \"MemberExpression\" && arg.type !== \"ArrayPattern\") this.unexpected(arg.start);\n --end;\n }\n\n if (isBinding && last.type === \"RestElement\" && last.argument.type !== \"Identifier\") this.unexpected(last.argument.start);\n }\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) this.toAssignable(elt, isBinding);\n }\n return exprList;\n};\n\n// Parses spread element.\n\npp.parseSpread = function (refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\");\n};\n\npp.parseRest = function (allowNonIdent) {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (allowNonIdent) node.argument = this.type === _tokentype.types.name ? this.parseIdent() : this.unexpected();else node.argument = this.type === _tokentype.types.name || this.type === _tokentype.types.bracketL ? this.parseBindingAtom() : this.unexpected();\n\n return this.finishNode(node, \"RestElement\");\n};\n\n// Parses lvalue (assignable) atom.\n\npp.parseBindingAtom = function () {\n if (this.options.ecmaVersion < 6) return this.parseIdent();\n switch (this.type) {\n case _tokentype.types.name:\n return this.parseIdent();\n\n case _tokentype.types.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(_tokentype.types.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\");\n\n case _tokentype.types.braceL:\n return this.parseObj(true);\n\n default:\n this.unexpected();\n }\n};\n\npp.parseBindingList = function (close, allowEmpty, allowTrailingComma, allowNonIdent) {\n var elts = [],\n first = true;\n while (!this.eat(close)) {\n if (first) first = false;else this.expect(_tokentype.types.comma);\n if (allowEmpty && this.type === _tokentype.types.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break;\n } else if (this.type === _tokentype.types.ellipsis) {\n var rest = this.parseRest(allowNonIdent);\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === _tokentype.types.comma) this.raise(this.start, \"Comma is not permitted after the rest element\");\n this.expect(close);\n break;\n } else {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n elts.push(elem);\n }\n }\n return elts;\n};\n\npp.parseBindingListItem = function (param) {\n return param;\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp.parseMaybeDefault = function (startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(_tokentype.types.eq)) return left;\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\");\n};\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n\npp.checkLVal = function (expr, isBinding, checkClashes) {\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name)) this.raiseRecoverable(expr.start, (isBinding ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\");\n if (checkClashes) {\n if (_util.has(checkClashes, expr.name)) this.raiseRecoverable(expr.start, \"Argument name clash\");\n checkClashes[expr.name] = true;\n }\n break;\n\n case \"MemberExpression\":\n if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? \"Binding\" : \"Assigning to\") + \" member expression\");\n break;\n\n case \"ObjectPattern\":\n for (var i = 0; i < expr.properties.length; i++) {\n this.checkLVal(expr.properties[i].value, isBinding, checkClashes);\n }break;\n\n case \"ArrayPattern\":\n for (var i = 0; i < expr.elements.length; i++) {\n var elem = expr.elements[i];\n if (elem) this.checkLVal(elem, isBinding, checkClashes);\n }\n break;\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, isBinding, checkClashes);\n break;\n\n case \"RestElement\":\n this.checkLVal(expr.argument, isBinding, checkClashes);\n break;\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, isBinding, checkClashes);\n break;\n\n default:\n this.raise(expr.start, (isBinding ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\n},{\"./state\":10,\"./tokentype\":14,\"./util\":15}],7:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _state = _dereq_(\"./state\");\n\nvar _locutil = _dereq_(\"./locutil\");\n\nvar Node = function Node(parser, pos, loc) {\n _classCallCheck(this, Node);\n\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations) this.loc = new _locutil.SourceLocation(parser, loc);\n if (parser.options.directSourceFile) this.sourceFile = parser.options.directSourceFile;\n if (parser.options.ranges) this.range = [pos, 0];\n}\n\n// Start an AST node, attaching a start offset.\n\n;\n\nexports.Node = Node;\nvar pp = _state.Parser.prototype;\n\npp.startNode = function () {\n return new Node(this, this.start, this.startLoc);\n};\n\npp.startNodeAt = function (pos, loc) {\n return new Node(this, pos, loc);\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations) node.loc.end = loc;\n if (this.options.ranges) node.range[1] = pos;\n return node;\n}\n\npp.finishNode = function (node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc);\n};\n\n// Finish node at given position\n\npp.finishNodeAt = function (node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc);\n};\n\n},{\"./locutil\":5,\"./state\":10}],8:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nexports.getOptions = getOptions;\n\nvar _util = _dereq_(\"./util\");\n\nvar _locutil = _dereq_(\"./locutil\");\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must\n // be either 3, or 5, or 6. This influences support for strict\n // mode, the set of reserved words, support for getters and\n // setters and other features. The default is 6.\n ecmaVersion: 6,\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // th position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false,\n plugins: {}\n};\n\nexports.defaultOptions = defaultOptions;\n// Interpret and default an options object\n\nfunction getOptions(opts) {\n var options = {};\n for (var opt in defaultOptions) {\n options[opt] = opts && _util.has(opts, opt) ? opts[opt] : defaultOptions[opt];\n }if (options.allowReserved == null) options.allowReserved = options.ecmaVersion < 5;\n\n if (_util.isArray(options.onToken)) {\n (function () {\n var tokens = options.onToken;\n options.onToken = function (token) {\n return tokens.push(token);\n };\n })();\n }\n if (_util.isArray(options.onComment)) options.onComment = pushComment(options, options.onComment);\n\n return options;\n}\n\nfunction pushComment(options, array) {\n return function (block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? 'Block' : 'Line',\n value: text,\n start: start,\n end: end\n };\n if (options.locations) comment.loc = new _locutil.SourceLocation(this, startLoc, endLoc);\n if (options.ranges) comment.range = [start, end];\n array.push(comment);\n };\n}\n\n},{\"./locutil\":5,\"./util\":15}],9:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _state = _dereq_(\"./state\");\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nvar pp = _state.Parser.prototype;\n\n// ## Parser utilities\n\n// Test whether a statement node is the string literal `\"use strict\"`.\n\npp.isUseStrict = function (stmt) {\n return this.options.ecmaVersion >= 5 && stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && stmt.expression.raw.slice(1, -1) === \"use strict\";\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function (type) {\n if (this.type === type) {\n this.next();\n return true;\n } else {\n return false;\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function (name) {\n return this.type === _tokentype.types.name && this.value === name;\n};\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function (name) {\n return this.value === name && this.eat(_tokentype.types.name);\n};\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function (name) {\n if (!this.eatContextual(name)) this.unexpected();\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function () {\n return this.type === _tokentype.types.eof || this.type === _tokentype.types.braceR || _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n};\n\npp.insertSemicolon = function () {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon) this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc);\n return true;\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function () {\n if (!this.eat(_tokentype.types.semi) && !this.insertSemicolon()) this.unexpected();\n};\n\npp.afterTrailingComma = function (tokType) {\n if (this.type == tokType) {\n if (this.options.onTrailingComma) this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc);\n this.next();\n return true;\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function (type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp.unexpected = function (pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\npp.checkPatternErrors = function (refDestructuringErrors, andThrow) {\n var pos = refDestructuringErrors && refDestructuringErrors.trailingComma;\n if (!andThrow) return !!pos;\n if (pos) this.raise(pos, \"Comma is not permitted after the rest element\");\n};\n\npp.checkExpressionErrors = function (refDestructuringErrors, andThrow) {\n var pos = refDestructuringErrors && refDestructuringErrors.shorthandAssign;\n if (!andThrow) return !!pos;\n if (pos) this.raise(pos, \"Shorthand property assignments are valid only in destructuring patterns\");\n};\n\n},{\"./state\":10,\"./tokentype\":14,\"./whitespace\":16}],10:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _identifier = _dereq_(\"./identifier\");\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nvar _options = _dereq_(\"./options\");\n\n// Registered plugins\nvar plugins = {};\n\nexports.plugins = plugins;\nfunction keywordRegexp(words) {\n return new RegExp(\"^(\" + words.replace(/ /g, \"|\") + \")$\");\n}\n\nvar Parser = (function () {\n function Parser(options, input, startPos) {\n _classCallCheck(this, Parser);\n\n this.options = options = _options.getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = keywordRegexp(_identifier.keywords[options.ecmaVersion >= 6 ? 6 : 5]);\n var reserved = options.allowReserved ? \"\" : _identifier.reservedWords[options.ecmaVersion] + (options.sourceType == \"module\" ? \" await\" : \"\");\n this.reservedWords = keywordRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + _identifier.reservedWords.strict;\n this.reservedWordsStrict = keywordRegexp(reservedStrict);\n this.reservedWordsStrictBind = keywordRegexp(reservedStrict + \" \" + _identifier.reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Load plugins\n this.loadPlugins(options.plugins);\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = Math.max(0, this.input.lastIndexOf(\"\\n\", startPos));\n this.curLine = this.input.slice(0, this.lineStart).split(_whitespace.lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = _tokentype.types.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.strict = this.inModule = options.sourceType === \"module\";\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n\n // Flags to track whether we are in a function, a generator.\n this.inFunction = this.inGenerator = false;\n // Labels in scope.\n this.labels = [];\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!') this.skipLineComment(2);\n }\n\n // DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them\n\n Parser.prototype.isKeyword = function isKeyword(word) {\n return this.keywords.test(word);\n };\n\n Parser.prototype.isReservedWord = function isReservedWord(word) {\n return this.reservedWords.test(word);\n };\n\n Parser.prototype.extend = function extend(name, f) {\n this[name] = f(this[name]);\n };\n\n Parser.prototype.loadPlugins = function loadPlugins(pluginConfigs) {\n for (var _name in pluginConfigs) {\n var plugin = plugins[_name];\n if (!plugin) throw new Error(\"Plugin '\" + _name + \"' not found\");\n plugin(this, pluginConfigs[_name]);\n }\n };\n\n Parser.prototype.parse = function parse() {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node);\n };\n\n return Parser;\n})();\n\nexports.Parser = Parser;\n\n},{\"./identifier\":2,\"./options\":8,\"./tokentype\":14,\"./whitespace\":16}],11:[function(_dereq_,module,exports){\n\"use strict\";\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _state = _dereq_(\"./state\");\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nvar _identifier = _dereq_(\"./identifier\");\n\nvar pp = _state.Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp.parseTopLevel = function (node) {\n var first = true;\n if (!node.body) node.body = [];\n while (this.type !== _tokentype.types.eof) {\n var stmt = this.parseStatement(true, true);\n node.body.push(stmt);\n if (first) {\n if (this.isUseStrict(stmt)) this.setStrict(true);\n first = false;\n }\n }\n this.next();\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType;\n }\n return this.finishNode(node, \"Program\");\n};\n\nvar loopLabel = { kind: \"loop\" },\n switchLabel = { kind: \"switch\" };\n\npp.isLet = function () {\n if (this.type !== _tokentype.types.name || this.options.ecmaVersion < 6 || this.value != \"let\") return false;\n _whitespace.skipWhiteSpace.lastIndex = this.pos;\n var skip = _whitespace.skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length,\n nextCh = this.input.charCodeAt(next);\n if (nextCh === 91 || nextCh == 123) return true; // '{' and '['\n if (_identifier.isIdentifierStart(nextCh, true)) {\n for (var pos = next + 1; _identifier.isIdentifierChar(this.input.charCodeAt(pos, true)); ++pos) {}\n var ident = this.input.slice(next, pos);\n if (!this.isKeyword(ident)) return true;\n }\n return false;\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp.parseStatement = function (declaration, topLevel) {\n var starttype = this.type,\n node = this.startNode(),\n kind = undefined;\n\n if (this.isLet()) {\n starttype = _tokentype.types._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case _tokentype.types._break:case _tokentype.types._continue:\n return this.parseBreakContinueStatement(node, starttype.keyword);\n case _tokentype.types._debugger:\n return this.parseDebuggerStatement(node);\n case _tokentype.types._do:\n return this.parseDoStatement(node);\n case _tokentype.types._for:\n return this.parseForStatement(node);\n case _tokentype.types._function:\n if (!declaration && this.options.ecmaVersion >= 6) this.unexpected();\n return this.parseFunctionStatement(node);\n case _tokentype.types._class:\n if (!declaration) this.unexpected();\n return this.parseClass(node, true);\n case _tokentype.types._if:\n return this.parseIfStatement(node);\n case _tokentype.types._return:\n return this.parseReturnStatement(node);\n case _tokentype.types._switch:\n return this.parseSwitchStatement(node);\n case _tokentype.types._throw:\n return this.parseThrowStatement(node);\n case _tokentype.types._try:\n return this.parseTryStatement(node);\n case _tokentype.types._const:case _tokentype.types._var:\n kind = kind || this.value;\n if (!declaration && kind != \"var\") this.unexpected();\n return this.parseVarStatement(node, kind);\n case _tokentype.types._while:\n return this.parseWhileStatement(node);\n case _tokentype.types._with:\n return this.parseWithStatement(node);\n case _tokentype.types.braceL:\n return this.parseBlock();\n case _tokentype.types.semi:\n return this.parseEmptyStatement(node);\n case _tokentype.types._export:\n case _tokentype.types._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel) this.raise(this.start, \"'import' and 'export' may only appear at the top level\");\n if (!this.inModule) this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\");\n }\n return starttype === _tokentype.types._import ? this.parseImport(node) : this.parseExport(node);\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n var maybeName = this.value,\n expr = this.parseExpression();\n if (starttype === _tokentype.types.name && expr.type === \"Identifier\" && this.eat(_tokentype.types.colon)) return this.parseLabeledStatement(node, maybeName, expr);else return this.parseExpressionStatement(node, expr);\n }\n};\n\npp.parseBreakContinueStatement = function (node, keyword) {\n var isBreak = keyword == \"break\";\n this.next();\n if (this.eat(_tokentype.types.semi) || this.insertSemicolon()) node.label = null;else if (this.type !== _tokentype.types.name) this.unexpected();else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n for (var i = 0; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword);\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n};\n\npp.parseDebuggerStatement = function (node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n};\n\npp.parseDoStatement = function (node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(false);\n this.labels.pop();\n this.expect(_tokentype.types._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6) this.eat(_tokentype.types.semi);else this.semicolon();\n return this.finishNode(node, \"DoWhileStatement\");\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp.parseForStatement = function (node) {\n this.next();\n this.labels.push(loopLabel);\n this.expect(_tokentype.types.parenL);\n if (this.type === _tokentype.types.semi) return this.parseFor(node, null);\n var isLet = this.isLet();\n if (this.type === _tokentype.types._var || this.type === _tokentype.types._const || isLet) {\n var _init = this.startNode(),\n kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(_init, true, kind);\n this.finishNode(_init, \"VariableDeclaration\");\n if ((this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\")) && _init.declarations.length === 1 && !(kind !== \"var\" && _init.declarations[0].init)) return this.parseForIn(node, _init);\n return this.parseFor(node, _init);\n }\n var refDestructuringErrors = { shorthandAssign: 0, trailingComma: 0 };\n var init = this.parseExpression(true, refDestructuringErrors);\n if (this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\")) {\n this.checkPatternErrors(refDestructuringErrors, true);\n this.toAssignable(init);\n this.checkLVal(init);\n return this.parseForIn(node, init);\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n return this.parseFor(node, init);\n};\n\npp.parseFunctionStatement = function (node) {\n this.next();\n return this.parseFunction(node, true);\n};\n\npp.parseIfStatement = function (node) {\n this.next();\n node.test = this.parseParenExpression();\n node.consequent = this.parseStatement(false);\n node.alternate = this.eat(_tokentype.types._else) ? this.parseStatement(false) : null;\n return this.finishNode(node, \"IfStatement\");\n};\n\npp.parseReturnStatement = function (node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction) this.raise(this.start, \"'return' outside of function\");\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(_tokentype.types.semi) || this.insertSemicolon()) node.argument = null;else {\n node.argument = this.parseExpression();this.semicolon();\n }\n return this.finishNode(node, \"ReturnStatement\");\n};\n\npp.parseSwitchStatement = function (node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(_tokentype.types.braceL);\n this.labels.push(switchLabel);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n for (var cur, sawDefault = false; this.type != _tokentype.types.braceR;) {\n if (this.type === _tokentype.types._case || this.type === _tokentype.types._default) {\n var isCase = this.type === _tokentype.types._case;\n if (cur) this.finishNode(cur, \"SwitchCase\");\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\");\n sawDefault = true;\n cur.test = null;\n }\n this.expect(_tokentype.types.colon);\n } else {\n if (!cur) this.unexpected();\n cur.consequent.push(this.parseStatement(true));\n }\n }\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n};\n\npp.parseThrowStatement = function (node) {\n this.next();\n if (_whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) this.raise(this.lastTokEnd, \"Illegal newline after throw\");\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty = [];\n\npp.parseTryStatement = function (node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === _tokentype.types._catch) {\n var clause = this.startNode();\n this.next();\n this.expect(_tokentype.types.parenL);\n clause.param = this.parseBindingAtom();\n this.checkLVal(clause.param, true);\n this.expect(_tokentype.types.parenR);\n clause.body = this.parseBlock();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(_tokentype.types._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer) this.raise(node.start, \"Missing catch or finally clause\");\n return this.finishNode(node, \"TryStatement\");\n};\n\npp.parseVarStatement = function (node, kind) {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n};\n\npp.parseWhileStatement = function (node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n};\n\npp.parseWithStatement = function (node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\");\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(false);\n return this.finishNode(node, \"WithStatement\");\n};\n\npp.parseEmptyStatement = function (node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n};\n\npp.parseLabeledStatement = function (node, maybeName, expr) {\n for (var i = 0; i < this.labels.length; ++i) {\n if (this.labels[i].name === maybeName) this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n }var kind = this.type.isLoop ? \"loop\" : this.type === _tokentype.types._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label = this.labels[i];\n if (label.statementStart == node.start) {\n label.statementStart = this.start;\n label.kind = kind;\n } else break;\n }\n this.labels.push({ name: maybeName, kind: kind, statementStart: this.start });\n node.body = this.parseStatement(true);\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n};\n\npp.parseExpressionStatement = function (node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp.parseBlock = function (allowStrict) {\n var node = this.startNode(),\n first = true,\n oldStrict = undefined;\n node.body = [];\n this.expect(_tokentype.types.braceL);\n while (!this.eat(_tokentype.types.braceR)) {\n var stmt = this.parseStatement(true);\n node.body.push(stmt);\n if (first && allowStrict && this.isUseStrict(stmt)) {\n oldStrict = this.strict;\n this.setStrict(this.strict = true);\n }\n first = false;\n }\n if (oldStrict === false) this.setStrict(false);\n return this.finishNode(node, \"BlockStatement\");\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp.parseFor = function (node, init) {\n node.init = init;\n this.expect(_tokentype.types.semi);\n node.test = this.type === _tokentype.types.semi ? null : this.parseExpression();\n this.expect(_tokentype.types.semi);\n node.update = this.type === _tokentype.types.parenR ? null : this.parseExpression();\n this.expect(_tokentype.types.parenR);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp.parseForIn = function (node, init) {\n var type = this.type === _tokentype.types._in ? \"ForInStatement\" : \"ForOfStatement\";\n this.next();\n node.left = init;\n node.right = this.parseExpression();\n this.expect(_tokentype.types.parenR);\n node.body = this.parseStatement(false);\n this.labels.pop();\n return this.finishNode(node, type);\n};\n\n// Parse a list of variable declarations.\n\npp.parseVar = function (node, isFor, kind) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl);\n if (this.eat(_tokentype.types.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (kind === \"const\" && !(this.type === _tokentype.types._in || this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n this.unexpected();\n } else if (decl.id.type != \"Identifier\" && !(isFor && (this.type === _tokentype.types._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(_tokentype.types.comma)) break;\n }\n return node;\n};\n\npp.parseVarId = function (decl) {\n decl.id = this.parseBindingAtom();\n this.checkLVal(decl.id, true);\n};\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseFunction = function (node, isStatement, allowExpressionBody) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6) node.generator = this.eat(_tokentype.types.star);\n var oldInGen = this.inGenerator;\n this.inGenerator = node.generator;\n if (isStatement || this.type === _tokentype.types.name) node.id = this.parseIdent();\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody);\n this.inGenerator = oldInGen;\n return this.finishNode(node, isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\");\n};\n\npp.parseFunctionParams = function (node) {\n this.expect(_tokentype.types.parenL);\n node.params = this.parseBindingList(_tokentype.types.parenR, false, false, true);\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseClass = function (node, isStatement) {\n this.next();\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(_tokentype.types.braceL);\n while (!this.eat(_tokentype.types.braceR)) {\n if (this.eat(_tokentype.types.semi)) continue;\n var method = this.startNode();\n var isGenerator = this.eat(_tokentype.types.star);\n var isMaybeStatic = this.type === _tokentype.types.name && this.value === \"static\";\n this.parsePropertyName(method);\n method[\"static\"] = isMaybeStatic && this.type !== _tokentype.types.parenL;\n if (method[\"static\"]) {\n if (isGenerator) this.unexpected();\n isGenerator = this.eat(_tokentype.types.star);\n this.parsePropertyName(method);\n }\n method.kind = \"method\";\n var isGetSet = false;\n if (!method.computed) {\n var key = method.key;\n\n if (!isGenerator && key.type === \"Identifier\" && this.type !== _tokentype.types.parenL && (key.name === \"get\" || key.name === \"set\")) {\n isGetSet = true;\n method.kind = key.name;\n key = this.parsePropertyName(method);\n }\n if (!method[\"static\"] && (key.type === \"Identifier\" && key.name === \"constructor\" || key.type === \"Literal\" && key.value === \"constructor\")) {\n if (hadConstructor) this.raise(key.start, \"Duplicate constructor in the same class\");\n if (isGetSet) this.raise(key.start, \"Constructor can't have get/set modifier\");\n if (isGenerator) this.raise(key.start, \"Constructor can't be a generator\");\n method.kind = \"constructor\";\n hadConstructor = true;\n }\n }\n this.parseClassMethod(classBody, method, isGenerator);\n if (isGetSet) {\n var paramCount = method.kind === \"get\" ? 0 : 1;\n if (method.value.params.length !== paramCount) {\n var start = method.value.start;\n if (method.kind === \"get\") this.raiseRecoverable(start, \"getter should have no params\");else this.raiseRecoverable(start, \"setter should have exactly one param\");\n }\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\") this.raise(method.value.params[0].start, \"Setter cannot use rest params\");\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\");\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n};\n\npp.parseClassMethod = function (classBody, method, isGenerator) {\n method.value = this.parseMethod(isGenerator);\n classBody.body.push(this.finishNode(method, \"MethodDefinition\"));\n};\n\npp.parseClassId = function (node, isStatement) {\n node.id = this.type === _tokentype.types.name ? this.parseIdent() : isStatement ? this.unexpected() : null;\n};\n\npp.parseClassSuper = function (node) {\n node.superClass = this.eat(_tokentype.types._extends) ? this.parseExprSubscripts() : null;\n};\n\n// Parses module export declaration.\n\npp.parseExport = function (node) {\n this.next();\n // export * from '...'\n if (this.eat(_tokentype.types.star)) {\n this.expectContextual(\"from\");\n node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n if (this.eat(_tokentype.types._default)) {\n // export default ...\n var parens = this.type == _tokentype.types.parenL;\n var expr = this.parseMaybeAssign();\n var needsSemi = true;\n if (!parens && (expr.type == \"FunctionExpression\" || expr.type == \"ClassExpression\")) {\n needsSemi = false;\n if (expr.id) {\n expr.type = expr.type == \"FunctionExpression\" ? \"FunctionDeclaration\" : \"ClassDeclaration\";\n }\n }\n node.declaration = expr;\n if (needsSemi) this.semicolon();\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(true);\n node.specifiers = [];\n node.source = null;\n } else {\n // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers();\n if (this.eatContextual(\"from\")) {\n node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected();\n } else {\n // check for keywords used as local names\n for (var i = 0; i < node.specifiers.length; i++) {\n if (this.keywords.test(node.specifiers[i].local.name) || this.reservedWords.test(node.specifiers[i].local.name)) {\n this.unexpected(node.specifiers[i].local.start);\n }\n }\n\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\");\n};\n\npp.shouldParseExportStatement = function () {\n return this.type.keyword || this.isLet();\n};\n\n// Parses a comma-separated list of module exports.\n\npp.parseExportSpecifiers = function () {\n var nodes = [],\n first = true;\n // export { x, y as z } [from '...']\n this.expect(_tokentype.types.braceL);\n while (!this.eat(_tokentype.types.braceR)) {\n if (!first) {\n this.expect(_tokentype.types.comma);\n if (this.afterTrailingComma(_tokentype.types.braceR)) break;\n } else first = false;\n\n var node = this.startNode();\n node.local = this.parseIdent(this.type === _tokentype.types._default);\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local;\n nodes.push(this.finishNode(node, \"ExportSpecifier\"));\n }\n return nodes;\n};\n\n// Parses import declaration.\n\npp.parseImport = function (node) {\n this.next();\n // import '...'\n if (this.type === _tokentype.types.string) {\n node.specifiers = empty;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === _tokentype.types.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n};\n\n// Parses a comma-separated list of module imports.\n\npp.parseImportSpecifiers = function () {\n var nodes = [],\n first = true;\n if (this.type === _tokentype.types.name) {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLVal(node.local, true);\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"));\n if (!this.eat(_tokentype.types.comma)) return nodes;\n }\n if (this.type === _tokentype.types.star) {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLVal(node.local, true);\n nodes.push(this.finishNode(node, \"ImportNamespaceSpecifier\"));\n return nodes;\n }\n this.expect(_tokentype.types.braceL);\n while (!this.eat(_tokentype.types.braceR)) {\n if (!first) {\n this.expect(_tokentype.types.comma);\n if (this.afterTrailingComma(_tokentype.types.braceR)) break;\n } else first = false;\n\n var node = this.startNode();\n node.imported = this.parseIdent(true);\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n node.local = node.imported;\n if (this.isKeyword(node.local.name)) this.unexpected(node.local.start);\n if (this.reservedWordsStrict.test(node.local.name)) this.raise(node.local.start, \"The keyword '\" + node.local.name + \"' is reserved\");\n }\n this.checkLVal(node.local, true);\n nodes.push(this.finishNode(node, \"ImportSpecifier\"));\n }\n return nodes;\n};\n\n},{\"./identifier\":2,\"./state\":10,\"./tokentype\":14,\"./whitespace\":16}],12:[function(_dereq_,module,exports){\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\"use strict\";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _state = _dereq_(\"./state\");\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override) {\n _classCallCheck(this, TokContext);\n\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n};\n\nexports.TokContext = TokContext;\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", true),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) {\n return p.readTmplToken();\n }),\n f_expr: new TokContext(\"function\", true)\n};\n\nexports.types = types;\nvar pp = _state.Parser.prototype;\n\npp.initialContext = function () {\n return [types.b_stat];\n};\n\npp.braceIsBlock = function (prevType) {\n if (prevType === _tokentype.types.colon) {\n var _parent = this.curContext();\n if (_parent === types.b_stat || _parent === types.b_expr) return !_parent.isExpr;\n }\n if (prevType === _tokentype.types._return) return _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.start));\n if (prevType === _tokentype.types._else || prevType === _tokentype.types.semi || prevType === _tokentype.types.eof || prevType === _tokentype.types.parenR) return true;\n if (prevType == _tokentype.types.braceL) return this.curContext() === types.b_stat;\n return !this.exprAllowed;\n};\n\npp.updateContext = function (prevType) {\n var update = undefined,\n type = this.type;\n if (type.keyword && prevType == _tokentype.types.dot) this.exprAllowed = false;else if (update = type.updateContext) update.call(this, prevType);else this.exprAllowed = type.beforeExpr;\n};\n\n// Token-specific context update code\n\n_tokentype.types.parenR.updateContext = _tokentype.types.braceR.updateContext = function () {\n if (this.context.length == 1) {\n this.exprAllowed = true;\n return;\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext() === types.f_expr) {\n this.context.pop();\n this.exprAllowed = false;\n } else if (out === types.b_tmpl) {\n this.exprAllowed = true;\n } else {\n this.exprAllowed = !out.isExpr;\n }\n};\n\n_tokentype.types.braceL.updateContext = function (prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\n_tokentype.types.dollarBraceL.updateContext = function () {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\n_tokentype.types.parenL.updateContext = function (prevType) {\n var statementParens = prevType === _tokentype.types._if || prevType === _tokentype.types._for || prevType === _tokentype.types._with || prevType === _tokentype.types._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\n_tokentype.types.incDec.updateContext = function () {\n // tokExprAllowed stays unchanged\n};\n\n_tokentype.types._function.updateContext = function (prevType) {\n if (prevType.beforeExpr && prevType !== _tokentype.types.semi && prevType !== _tokentype.types._else && (prevType !== _tokentype.types.colon || this.curContext() !== types.b_stat)) this.context.push(types.f_expr);\n this.exprAllowed = false;\n};\n\n_tokentype.types.backQuote.updateContext = function () {\n if (this.curContext() === types.q_tmpl) this.context.pop();else this.context.push(types.q_tmpl);\n this.exprAllowed = false;\n};\n\n},{\"./state\":10,\"./tokentype\":14,\"./whitespace\":16}],13:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _identifier = _dereq_(\"./identifier\");\n\nvar _tokentype = _dereq_(\"./tokentype\");\n\nvar _state = _dereq_(\"./state\");\n\nvar _locutil = _dereq_(\"./locutil\");\n\nvar _whitespace = _dereq_(\"./whitespace\");\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n _classCallCheck(this, Token);\n\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations) this.loc = new _locutil.SourceLocation(p, p.startLoc, p.endLoc);\n if (p.options.ranges) this.range = [p.start, p.end];\n}\n\n// ## Tokenizer\n\n;\n\nexports.Token = Token;\nvar pp = _state.Parser.prototype;\n\n// Are we running under Rhino?\nvar isRhino = typeof Packages == \"object\" && Object.prototype.toString.call(Packages) == \"[object JavaPackage]\";\n\n// Move to the next token\n\npp.next = function () {\n if (this.options.onToken) this.options.onToken(new Token(this));\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function () {\n this.next();\n return new Token(this);\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\") pp[Symbol.iterator] = function () {\n var self = this;\n return { next: function next() {\n var token = self.getToken();\n return {\n done: token.type === _tokentype.types.eof,\n value: token\n };\n } };\n};\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp.setStrict = function (strict) {\n this.strict = strict;\n if (this.type !== _tokentype.types.num && this.type !== _tokentype.types.string) return;\n this.pos = this.start;\n if (this.options.locations) {\n while (this.pos < this.lineStart) {\n this.lineStart = this.input.lastIndexOf(\"\\n\", this.lineStart - 2) + 1;\n --this.curLine;\n }\n }\n this.nextToken();\n};\n\npp.curContext = function () {\n return this.context[this.context.length - 1];\n};\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function () {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) this.skipSpace();\n\n this.start = this.pos;\n if (this.options.locations) this.startLoc = this.curPosition();\n if (this.pos >= this.input.length) return this.finishToken(_tokentype.types.eof);\n\n if (curContext.override) return curContext.override(this);else this.readToken(this.fullCharCodeAtPos());\n};\n\npp.readToken = function (code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (_identifier.isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */) return this.readWord();\n\n return this.getTokenFromCode(code);\n};\n\npp.fullCharCodeAtPos = function () {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xe000) return code;\n var next = this.input.charCodeAt(this.pos + 1);\n return (code << 10) + next - 0x35fdc00;\n};\n\npp.skipBlockComment = function () {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos,\n end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\");\n this.pos = end + 2;\n if (this.options.locations) {\n _whitespace.lineBreakG.lastIndex = start;\n var match = undefined;\n while ((match = _whitespace.lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine;\n this.lineStart = match.index + match[0].length;\n }\n }\n if (this.options.onComment) this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, startLoc, this.curPosition());\n};\n\npp.skipLineComment = function (startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {\n ++this.pos;\n ch = this.input.charCodeAt(this.pos);\n }\n if (this.options.onComment) this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, startLoc, this.curPosition());\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function () {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32:case 160:\n // ' '\n ++this.pos;\n break;\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10:case 8232:case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break;\n case 47:\n // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42:\n // '*'\n this.skipBlockComment();\n break;\n case 47:\n this.skipLineComment(2);\n break;\n default:\n break loop;\n }\n break;\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && _whitespace.nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop;\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function (type, val) {\n this.end = this.pos;\n if (this.options.locations) this.endLoc = this.curPosition();\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function () {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) return this.readNumber(true);\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) {\n // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(_tokentype.types.ellipsis);\n } else {\n ++this.pos;\n return this.finishToken(_tokentype.types.dot);\n }\n};\n\npp.readToken_slash = function () {\n // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) {\n ++this.pos;return this.readRegexp();\n }\n if (next === 61) return this.finishOp(_tokentype.types.assign, 2);\n return this.finishOp(_tokentype.types.slash, 1);\n};\n\npp.readToken_mult_modulo_exp = function (code) {\n // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? _tokentype.types.star : _tokentype.types.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && next === 42) {\n ++size;\n tokentype = _tokentype.types.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) return this.finishOp(_tokentype.types.assign, size + 1);\n return this.finishOp(tokentype, size);\n};\n\npp.readToken_pipe_amp = function (code) {\n // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) return this.finishOp(code === 124 ? _tokentype.types.logicalOR : _tokentype.types.logicalAND, 2);\n if (next === 61) return this.finishOp(_tokentype.types.assign, 2);\n return this.finishOp(code === 124 ? _tokentype.types.bitwiseOR : _tokentype.types.bitwiseAND, 1);\n};\n\npp.readToken_caret = function () {\n // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) return this.finishOp(_tokentype.types.assign, 2);\n return this.finishOp(_tokentype.types.bitwiseXOR, 1);\n};\n\npp.readToken_plus_min = function (code) {\n // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 && _whitespace.lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken();\n }\n return this.finishOp(_tokentype.types.incDec, 2);\n }\n if (next === 61) return this.finishOp(_tokentype.types.assign, 2);\n return this.finishOp(_tokentype.types.plusMin, 1);\n};\n\npp.readToken_lt_gt = function (code) {\n // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(_tokentype.types.assign, size + 1);\n return this.finishOp(_tokentype.types.bitShift, size);\n }\n if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && this.input.charCodeAt(this.pos + 3) == 45) {\n if (this.inModule) this.unexpected();\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken();\n }\n if (next === 61) size = 2;\n return this.finishOp(_tokentype.types.relational, size);\n};\n\npp.readToken_eq_excl = function (code) {\n // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) return this.finishOp(_tokentype.types.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2);\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) {\n // '=>'\n this.pos += 2;\n return this.finishToken(_tokentype.types.arrow);\n }\n return this.finishOp(code === 61 ? _tokentype.types.eq : _tokentype.types.prefix, 1);\n};\n\npp.getTokenFromCode = function (code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46:\n // '.'\n return this.readToken_dot();\n\n // Punctuation tokens.\n case 40:\n ++this.pos;return this.finishToken(_tokentype.types.parenL);\n case 41:\n ++this.pos;return this.finishToken(_tokentype.types.parenR);\n case 59:\n ++this.pos;return this.finishToken(_tokentype.types.semi);\n case 44:\n ++this.pos;return this.finishToken(_tokentype.types.comma);\n case 91:\n ++this.pos;return this.finishToken(_tokentype.types.bracketL);\n case 93:\n ++this.pos;return this.finishToken(_tokentype.types.bracketR);\n case 123:\n ++this.pos;return this.finishToken(_tokentype.types.braceL);\n case 125:\n ++this.pos;return this.finishToken(_tokentype.types.braceR);\n case 58:\n ++this.pos;return this.finishToken(_tokentype.types.colon);\n case 63:\n ++this.pos;return this.finishToken(_tokentype.types.question);\n\n case 96:\n // '`'\n if (this.options.ecmaVersion < 6) break;\n ++this.pos;\n return this.finishToken(_tokentype.types.backQuote);\n\n case 48:\n // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) return this.readRadixNumber(16); // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8); // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2); // '0b', '0B' - binary number\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:\n // 1-9\n return this.readNumber(false);\n\n // Quotes produce strings.\n case 34:case 39:\n // '\"', \"'\"\n return this.readString(code);\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47:\n // '/'\n return this.readToken_slash();\n\n case 37:case 42:\n // '%*'\n return this.readToken_mult_modulo_exp(code);\n\n case 124:case 38:\n // '|&'\n return this.readToken_pipe_amp(code);\n\n case 94:\n // '^'\n return this.readToken_caret();\n\n case 43:case 45:\n // '+-'\n return this.readToken_plus_min(code);\n\n case 60:case 62:\n // '<>'\n return this.readToken_lt_gt(code);\n\n case 61:case 33:\n // '=!'\n return this.readToken_eq_excl(code);\n\n case 126:\n // '~'\n return this.finishOp(_tokentype.types.prefix, 1);\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function (type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str);\n};\n\n// Parse a regular expression. Some context-awareness is necessary,\n// since a '/' inside a '[]' set does not end the expression.\n\nfunction tryCreateRegexp(src, flags, throwErrorAt, parser) {\n try {\n return new RegExp(src, flags);\n } catch (e) {\n if (throwErrorAt !== undefined) {\n if (e instanceof SyntaxError) parser.raise(throwErrorAt, \"Error parsing regular expression: \" + e.message);\n throw e;\n }\n }\n}\n\nvar regexpUnicodeSupport = !!tryCreateRegexp(\"￿\", \"u\");\n\npp.readRegexp = function () {\n var _this = this;\n\n var escaped = undefined,\n inClass = undefined,\n start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) this.raise(start, \"Unterminated regular expression\");\n var ch = this.input.charAt(this.pos);\n if (_whitespace.lineBreak.test(ch)) this.raise(start, \"Unterminated regular expression\");\n if (!escaped) {\n if (ch === \"[\") inClass = true;else if (ch === \"]\" && inClass) inClass = false;else if (ch === \"/\" && !inClass) break;\n escaped = ch === \"\\\\\";\n } else escaped = false;\n ++this.pos;\n }\n var content = this.input.slice(start, this.pos);\n ++this.pos;\n // Need to use `readWord1` because '\\uXXXX' sequences are allowed\n // here (don't ask).\n var mods = this.readWord1();\n var tmp = content;\n if (mods) {\n var validFlags = /^[gim]*$/;\n if (this.options.ecmaVersion >= 6) validFlags = /^[gimuy]*$/;\n if (!validFlags.test(mods)) this.raise(start, \"Invalid regular expression flag\");\n if (mods.indexOf('u') >= 0 && !regexpUnicodeSupport) {\n // Replace each astral symbol and every Unicode escape sequence that\n // possibly represents an astral symbol or a paired surrogate with a\n // single ASCII symbol to avoid throwing on regular expressions that\n // are only valid in combination with the `/u` flag.\n // Note: replacing with the ASCII symbol `x` might cause false\n // negatives in unlikely scenarios. For example, `[\\u{61}-b]` is a\n // perfectly valid pattern that is equivalent to `[a-b]`, but it would\n // be replaced by `[x-b]` which throws an error.\n tmp = tmp.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g, function (_match, code, offset) {\n code = Number(\"0x\" + code);\n if (code > 0x10FFFF) _this.raise(start + offset + 3, \"Code point out of bounds\");\n return \"x\";\n });\n tmp = tmp.replace(/\\\\u([a-fA-F0-9]{4})|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, \"x\");\n }\n }\n // Detect invalid regular expressions.\n var value = null;\n // Rhino's regular expression parser is flaky and throws uncatchable exceptions,\n // so don't do detection if we are running under Rhino\n if (!isRhino) {\n tryCreateRegexp(tmp, undefined, start, this);\n // Get a regular expression object for this pattern-flag pair, or `null` in\n // case the current environment doesn't support the flags it uses.\n value = tryCreateRegexp(content, mods);\n }\n return this.finishToken(_tokentype.types.regexp, { pattern: content, flags: mods, value: value });\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function (radix, len) {\n var start = this.pos,\n total = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n var code = this.input.charCodeAt(this.pos),\n val = undefined;\n if (code >= 97) val = code - 97 + 10; // a\n else if (code >= 65) val = code - 65 + 10; // A\n else if (code >= 48 && code <= 57) val = code - 48; // 0-9\n else val = Infinity;\n if (val >= radix) break;\n ++this.pos;\n total = total * radix + val;\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null;\n\n return total;\n};\n\npp.readRadixNumber = function (radix) {\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix);\n if (_identifier.isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\");\n return this.finishToken(_tokentype.types.num, val);\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function (startsWithDot) {\n var start = this.pos,\n isFloat = false,\n octal = this.input.charCodeAt(this.pos) === 48;\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\");\n var next = this.input.charCodeAt(this.pos);\n if (next === 46) {\n // '.'\n ++this.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.pos);\n }\n if (next === 69 || next === 101) {\n // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) ++this.pos; // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\");\n isFloat = true;\n }\n if (_identifier.isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\");\n\n var str = this.input.slice(start, this.pos),\n val = undefined;\n if (isFloat) val = parseFloat(str);else if (!octal || str.length === 1) val = parseInt(str, 10);else if (/[89]/.test(str) || this.strict) this.raise(start, \"Invalid number\");else val = parseInt(str, 8);\n return this.finishToken(_tokentype.types.num, val);\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function () {\n var ch = this.input.charCodeAt(this.pos),\n code = undefined;\n\n if (ch === 123) {\n if (this.options.ecmaVersion < 6) this.unexpected();\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) this.raise(codePos, \"Code point out of bounds\");\n } else {\n code = this.readHexChar(4);\n }\n return code;\n};\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) return String.fromCharCode(code);\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00);\n}\n\npp.readString = function (quote) {\n var out = \"\",\n chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated string constant\");\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) break;\n if (ch === 92) {\n // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else {\n if (_whitespace.isNewLine(ch)) this.raise(this.start, \"Unterminated string constant\");\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(_tokentype.types.string, out);\n};\n\n// Reads template string tokens.\n\npp.readTmplToken = function () {\n var out = \"\",\n chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated template\");\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) {\n // '`', '${'\n if (this.pos === this.start && this.type === _tokentype.types.template) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(_tokentype.types.dollarBraceL);\n } else {\n ++this.pos;\n return this.finishToken(_tokentype.types.backQuote);\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(_tokentype.types.template, out);\n }\n if (ch === 92) {\n // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (_whitespace.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos;\n case 10:\n out += \"\\n\";\n break;\n default:\n out += String.fromCharCode(ch);\n break;\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function (inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110:\n return \"\\n\"; // 'n' -> '\\n'\n case 114:\n return \"\\r\"; // 'r' -> '\\r'\n case 120:\n return String.fromCharCode(this.readHexChar(2)); // 'x'\n case 117:\n return codePointToString(this.readCodePoint()); // 'u'\n case 116:\n return \"\\t\"; // 't' -> '\\t'\n case 98:\n return \"\\b\"; // 'b' -> '\\b'\n case 118:\n return \"\\u000b\"; // 'v' -> '\\u000b'\n case 102:\n return \"\\f\"; // 'f' -> '\\f'\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos; // '\\r\\n'\n case 10:\n // ' \\n'\n if (this.options.locations) {\n this.lineStart = this.pos;++this.curLine;\n }\n return \"\";\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n if (octalStr !== \"0\" && (this.strict || inTemplate)) {\n this.raise(this.pos - 2, \"Octal literal in strict mode\");\n }\n this.pos += octalStr.length - 1;\n return String.fromCharCode(octal);\n }\n return String.fromCharCode(ch);\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function (len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) this.raise(codePos, \"Bad character escape sequence\");\n return n;\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function () {\n this.containsEsc = false;\n var word = \"\",\n first = true,\n chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (_identifier.isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) {\n // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) != 117) // \"u\"\n this.raise(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\");\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? _identifier.isIdentifierStart : _identifier.isIdentifierChar)(esc, astral)) this.raise(escStart, \"Invalid Unicode escape\");\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break;\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos);\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function () {\n var word = this.readWord1();\n var type = _tokentype.types.name;\n if ((this.options.ecmaVersion >= 6 || !this.containsEsc) && this.keywords.test(word)) type = _tokentype.keywords[word];\n return this.finishToken(type, word);\n};\n\n},{\"./identifier\":2,\"./locutil\":5,\"./state\":10,\"./tokentype\":14,\"./whitespace\":16}],14:[function(_dereq_,module,exports){\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\n\"use strict\";\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar TokenType = function TokenType(label) {\n var conf = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n _classCallCheck(this, TokenType);\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nexports.TokenType = TokenType;\n\nfunction binop(name, prec) {\n return new TokenType(name, { beforeExpr: true, binop: prec });\n}\nvar beforeExpr = { beforeExpr: true },\n startsExpr = { startsExpr: true };\n\nvar types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", { beforeExpr: true, startsExpr: true }),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", { beforeExpr: true, startsExpr: true }),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", { beforeExpr: true, startsExpr: true }),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", { beforeExpr: true, startsExpr: true }),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", { beforeExpr: true, isAssign: true }),\n assign: new TokenType(\"_=\", { beforeExpr: true, isAssign: true }),\n incDec: new TokenType(\"++/--\", { prefix: true, postfix: true, startsExpr: true }),\n prefix: new TokenType(\"prefix\", { beforeExpr: true, prefix: true, startsExpr: true }),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=\", 6),\n relational: binop(\"</>\", 7),\n bitShift: binop(\"<</>>\", 8),\n plusMin: new TokenType(\"+/-\", { beforeExpr: true, binop: 9, prefix: true, startsExpr: true }),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", { beforeExpr: true })\n};\n\nexports.types = types;\n// Map keyword names to token types.\n\nvar keywords = {};\n\nexports.keywords = keywords;\n// Succinct definitions of keyword token types\nfunction kw(name) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n options.keyword = name;\n keywords[name] = types[\"_\" + name] = new TokenType(name, options);\n}\n\nkw(\"break\");\nkw(\"case\", beforeExpr);\nkw(\"catch\");\nkw(\"continue\");\nkw(\"debugger\");\nkw(\"default\", beforeExpr);\nkw(\"do\", { isLoop: true, beforeExpr: true });\nkw(\"else\", beforeExpr);\nkw(\"finally\");\nkw(\"for\", { isLoop: true });\nkw(\"function\", startsExpr);\nkw(\"if\");\nkw(\"return\", beforeExpr);\nkw(\"switch\");\nkw(\"throw\", beforeExpr);\nkw(\"try\");\nkw(\"var\");\nkw(\"const\");\nkw(\"while\", { isLoop: true });\nkw(\"with\");\nkw(\"new\", { beforeExpr: true, startsExpr: true });\nkw(\"this\", startsExpr);\nkw(\"super\", startsExpr);\nkw(\"class\");\nkw(\"extends\", beforeExpr);\nkw(\"export\");\nkw(\"import\");\nkw(\"null\", startsExpr);\nkw(\"true\", startsExpr);\nkw(\"false\", startsExpr);\nkw(\"in\", { beforeExpr: true, binop: 7 });\nkw(\"instanceof\", { beforeExpr: true, binop: 7 });\nkw(\"typeof\", { beforeExpr: true, prefix: true, startsExpr: true });\nkw(\"void\", { beforeExpr: true, prefix: true, startsExpr: true });\nkw(\"delete\", { beforeExpr: true, prefix: true, startsExpr: true });\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nexports.isArray = isArray;\nexports.has = has;\n\nfunction isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n}\n\n// Checks if an object has a property.\n\nfunction has(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName);\n}\n\n},{}],16:[function(_dereq_,module,exports){\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\n\"use strict\";\n\nexports.__esModule = true;\nexports.isNewLine = isNewLine;\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nexports.lineBreak = lineBreak;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nexports.lineBreakG = lineBreakG;\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code == 0x2029;\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nexports.nonASCIIwhitespace = nonASCIIwhitespace;\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nexports.skipWhiteSpace = skipWhiteSpace;\n\n},{}]},{},[3])(3)\n});","module.exports = {\n quot: '\\u0022',\n amp: '&',\n apos: '\\u0027',\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\\u00A1',\n cent: '\\u00A2',\n pound: '\\u00A3',\n curren: '\\u00A4',\n yen: '\\u00A5',\n brvbar: '\\u00A6',\n sect: '\\u00A7',\n uml: '\\u00A8',\n copy: '\\u00A9',\n ordf: '\\u00AA',\n laquo: '\\u00AB',\n not: '\\u00AC',\n shy: '\\u00AD',\n reg: '\\u00AE',\n macr: '\\u00AF',\n deg: '\\u00B0',\n plusmn: '\\u00B1',\n sup2: '\\u00B2',\n sup3: '\\u00B3',\n acute: '\\u00B4',\n micro: '\\u00B5',\n para: '\\u00B6',\n middot: '\\u00B7',\n cedil: '\\u00B8',\n sup1: '\\u00B9',\n ordm: '\\u00BA',\n raquo: '\\u00BB',\n frac14: '\\u00BC',\n frac12: '\\u00BD',\n frac34: '\\u00BE',\n iquest: '\\u00BF',\n Agrave: '\\u00C0',\n Aacute: '\\u00C1',\n Acirc: '\\u00C2',\n Atilde: '\\u00C3',\n Auml: '\\u00C4',\n Aring: '\\u00C5',\n AElig: '\\u00C6',\n Ccedil: '\\u00C7',\n Egrave: '\\u00C8',\n Eacute: '\\u00C9',\n Ecirc: '\\u00CA',\n Euml: '\\u00CB',\n Igrave: '\\u00CC',\n Iacute: '\\u00CD',\n Icirc: '\\u00CE',\n Iuml: '\\u00CF',\n ETH: '\\u00D0',\n Ntilde: '\\u00D1',\n Ograve: '\\u00D2',\n Oacute: '\\u00D3',\n Ocirc: '\\u00D4',\n Otilde: '\\u00D5',\n Ouml: '\\u00D6',\n times: '\\u00D7',\n Oslash: '\\u00D8',\n Ugrave: '\\u00D9',\n Uacute: '\\u00DA',\n Ucirc: '\\u00DB',\n Uuml: '\\u00DC',\n Yacute: '\\u00DD',\n THORN: '\\u00DE',\n szlig: '\\u00DF',\n agrave: '\\u00E0',\n aacute: '\\u00E1',\n acirc: '\\u00E2',\n atilde: '\\u00E3',\n auml: '\\u00E4',\n aring: '\\u00E5',\n aelig: '\\u00E6',\n ccedil: '\\u00E7',\n egrave: '\\u00E8',\n eacute: '\\u00E9',\n ecirc: '\\u00EA',\n euml: '\\u00EB',\n igrave: '\\u00EC',\n iacute: '\\u00ED',\n icirc: '\\u00EE',\n iuml: '\\u00EF',\n eth: '\\u00F0',\n ntilde: '\\u00F1',\n ograve: '\\u00F2',\n oacute: '\\u00F3',\n ocirc: '\\u00F4',\n otilde: '\\u00F5',\n ouml: '\\u00F6',\n divide: '\\u00F7',\n oslash: '\\u00F8',\n ugrave: '\\u00F9',\n uacute: '\\u00FA',\n ucirc: '\\u00FB',\n uuml: '\\u00FC',\n yacute: '\\u00FD',\n thorn: '\\u00FE',\n yuml: '\\u00FF',\n OElig: '\\u0152',\n oelig: '\\u0153',\n Scaron: '\\u0160',\n scaron: '\\u0161',\n Yuml: '\\u0178',\n fnof: '\\u0192',\n circ: '\\u02C6',\n tilde: '\\u02DC',\n Alpha: '\\u0391',\n Beta: '\\u0392',\n Gamma: '\\u0393',\n Delta: '\\u0394',\n Epsilon: '\\u0395',\n Zeta: '\\u0396',\n Eta: '\\u0397',\n Theta: '\\u0398',\n Iota: '\\u0399',\n Kappa: '\\u039A',\n Lambda: '\\u039B',\n Mu: '\\u039C',\n Nu: '\\u039D',\n Xi: '\\u039E',\n Omicron: '\\u039F',\n Pi: '\\u03A0',\n Rho: '\\u03A1',\n Sigma: '\\u03A3',\n Tau: '\\u03A4',\n Upsilon: '\\u03A5',\n Phi: '\\u03A6',\n Chi: '\\u03A7',\n Psi: '\\u03A8',\n Omega: '\\u03A9',\n alpha: '\\u03B1',\n beta: '\\u03B2',\n gamma: '\\u03B3',\n delta: '\\u03B4',\n epsilon: '\\u03B5',\n zeta: '\\u03B6',\n eta: '\\u03B7',\n theta: '\\u03B8',\n iota: '\\u03B9',\n kappa: '\\u03BA',\n lambda: '\\u03BB',\n mu: '\\u03BC',\n nu: '\\u03BD',\n xi: '\\u03BE',\n omicron: '\\u03BF',\n pi: '\\u03C0',\n rho: '\\u03C1',\n sigmaf: '\\u03C2',\n sigma: '\\u03C3',\n tau: '\\u03C4',\n upsilon: '\\u03C5',\n phi: '\\u03C6',\n chi: '\\u03C7',\n psi: '\\u03C8',\n omega: '\\u03C9',\n thetasym: '\\u03D1',\n upsih: '\\u03D2',\n piv: '\\u03D6',\n ensp: '\\u2002',\n emsp: '\\u2003',\n thinsp: '\\u2009',\n zwnj: '\\u200C',\n zwj: '\\u200D',\n lrm: '\\u200E',\n rlm: '\\u200F',\n ndash: '\\u2013',\n mdash: '\\u2014',\n lsquo: '\\u2018',\n rsquo: '\\u2019',\n sbquo: '\\u201A',\n ldquo: '\\u201C',\n rdquo: '\\u201D',\n bdquo: '\\u201E',\n dagger: '\\u2020',\n Dagger: '\\u2021',\n bull: '\\u2022',\n hellip: '\\u2026',\n permil: '\\u2030',\n prime: '\\u2032',\n Prime: '\\u2033',\n lsaquo: '\\u2039',\n rsaquo: '\\u203A',\n oline: '\\u203E',\n frasl: '\\u2044',\n euro: '\\u20AC',\n image: '\\u2111',\n weierp: '\\u2118',\n real: '\\u211C',\n trade: '\\u2122',\n alefsym: '\\u2135',\n larr: '\\u2190',\n uarr: '\\u2191',\n rarr: '\\u2192',\n darr: '\\u2193',\n harr: '\\u2194',\n crarr: '\\u21B5',\n lArr: '\\u21D0',\n uArr: '\\u21D1',\n rArr: '\\u21D2',\n dArr: '\\u21D3',\n hArr: '\\u21D4',\n forall: '\\u2200',\n part: '\\u2202',\n exist: '\\u2203',\n empty: '\\u2205',\n nabla: '\\u2207',\n isin: '\\u2208',\n notin: '\\u2209',\n ni: '\\u220B',\n prod: '\\u220F',\n sum: '\\u2211',\n minus: '\\u2212',\n lowast: '\\u2217',\n radic: '\\u221A',\n prop: '\\u221D',\n infin: '\\u221E',\n ang: '\\u2220',\n and: '\\u2227',\n or: '\\u2228',\n cap: '\\u2229',\n cup: '\\u222A',\n 'int': '\\u222B',\n there4: '\\u2234',\n sim: '\\u223C',\n cong: '\\u2245',\n asymp: '\\u2248',\n ne: '\\u2260',\n equiv: '\\u2261',\n le: '\\u2264',\n ge: '\\u2265',\n sub: '\\u2282',\n sup: '\\u2283',\n nsub: '\\u2284',\n sube: '\\u2286',\n supe: '\\u2287',\n oplus: '\\u2295',\n otimes: '\\u2297',\n perp: '\\u22A5',\n sdot: '\\u22C5',\n lceil: '\\u2308',\n rceil: '\\u2309',\n lfloor: '\\u230A',\n rfloor: '\\u230B',\n lang: '\\u2329',\n rang: '\\u232A',\n loz: '\\u25CA',\n spades: '\\u2660',\n clubs: '\\u2663',\n hearts: '\\u2665',\n diams: '\\u2666'\n};\n","'use strict';\n\nvar XHTMLEntities = require('./xhtml');\n\nvar hexNumber = /^[\\da-fA-F]+$/;\nvar decimalNumber = /^\\d+$/;\n\nmodule.exports = function(acorn) {\n var tt = acorn.tokTypes;\n var tc = acorn.tokContexts;\n\n tc.j_oTag = new acorn.TokContext('<tag', false);\n tc.j_cTag = new acorn.TokContext('</tag', false);\n tc.j_expr = new acorn.TokContext('<tag>...</tag>', true, true);\n\n tt.jsxName = new acorn.TokenType('jsxName');\n tt.jsxText = new acorn.TokenType('jsxText', {beforeExpr: true});\n tt.jsxTagStart = new acorn.TokenType('jsxTagStart');\n tt.jsxTagEnd = new acorn.TokenType('jsxTagEnd');\n\n tt.jsxTagStart.updateContext = function() {\n this.context.push(tc.j_expr); // treat as beginning of JSX expression\n this.context.push(tc.j_oTag); // start opening tag context\n this.exprAllowed = false;\n };\n tt.jsxTagEnd.updateContext = function(prevType) {\n var out = this.context.pop();\n if (out === tc.j_oTag && prevType === tt.slash || out === tc.j_cTag) {\n this.context.pop();\n this.exprAllowed = this.curContext() === tc.j_expr;\n } else {\n this.exprAllowed = true;\n }\n };\n\n var pp = acorn.Parser.prototype;\n\n // Reads inline JSX contents token.\n\n pp.jsx_readToken = function() {\n var out = '', chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length)\n this.raise(this.start, 'Unterminated JSX contents');\n var ch = this.input.charCodeAt(this.pos);\n\n switch (ch) {\n case 60: // '<'\n case 123: // '{'\n if (this.pos === this.start) {\n if (ch === 60 && this.exprAllowed) {\n ++this.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return this.getTokenFromCode(ch);\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(tt.jsxText, out);\n\n case 38: // '&'\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readEntity();\n chunkStart = this.pos;\n break;\n\n default:\n if (acorn.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readNewLine(true);\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n }\n };\n\n pp.jsx_readNewLine = function(normalizeCRLF) {\n var ch = this.input.charCodeAt(this.pos);\n var out;\n ++this.pos;\n if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n ++this.pos;\n out = normalizeCRLF ? '\\n' : '\\r\\n';\n } else {\n out = String.fromCharCode(ch);\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n\n return out;\n };\n\n pp.jsx_readString = function(quote) {\n var out = '', chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length)\n this.raise(this.start, 'Unterminated string constant');\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) break;\n if (ch === 38) { // '&'\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readEntity();\n chunkStart = this.pos;\n } else if (acorn.isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n out += this.jsx_readNewLine(false);\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(tt.string, out);\n };\n\n pp.jsx_readEntity = function() {\n var str = '', count = 0, entity;\n var ch = this.input[this.pos];\n if (ch !== '&')\n this.raise(this.pos, 'Entity must start with an ampersand');\n var startPos = ++this.pos;\n while (this.pos < this.input.length && count++ < 10) {\n ch = this.input[this.pos++];\n if (ch === ';') {\n if (str[0] === '#') {\n if (str[1] === 'x') {\n str = str.substr(2);\n if (hexNumber.test(str))\n entity = String.fromCharCode(parseInt(str, 16));\n } else {\n str = str.substr(1);\n if (decimalNumber.test(str))\n entity = String.fromCharCode(parseInt(str, 10));\n }\n } else {\n entity = XHTMLEntities[str];\n }\n break;\n }\n str += ch;\n }\n if (!entity) {\n this.pos = startPos;\n return '&';\n }\n return entity;\n };\n\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can't contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n pp.jsx_readWord = function() {\n var ch, start = this.pos;\n do {\n ch = this.input.charCodeAt(++this.pos);\n } while (acorn.isIdentifierChar(ch) || ch === 45); // '-'\n return this.finishToken(tt.jsxName, this.input.slice(start, this.pos));\n };\n\n // Transforms JSX element name to string.\n\n function getQualifiedJSXName(object) {\n if (object.type === 'JSXIdentifier')\n return object.name;\n\n if (object.type === 'JSXNamespacedName')\n return object.namespace.name + ':' + object.name.name;\n\n if (object.type === 'JSXMemberExpression')\n return getQualifiedJSXName(object.object) + '.' +\n getQualifiedJSXName(object.property);\n }\n\n // Parse next token as JSX identifier\n\n pp.jsx_parseIdentifier = function() {\n var node = this.startNode();\n if (this.type === tt.jsxName)\n node.name = this.value;\n else if (this.type.keyword)\n node.name = this.type.keyword;\n else\n this.unexpected();\n this.next();\n return this.finishNode(node, 'JSXIdentifier');\n };\n\n // Parse namespaced identifier.\n\n pp.jsx_parseNamespacedName = function() {\n var startPos = this.start, startLoc = this.startLoc;\n var name = this.jsx_parseIdentifier();\n if (!this.options.plugins.jsx.allowNamespaces || !this.eat(tt.colon)) return name;\n var node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsx_parseIdentifier();\n return this.finishNode(node, 'JSXNamespacedName');\n };\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n pp.jsx_parseElementName = function() {\n var startPos = this.start, startLoc = this.startLoc;\n var node = this.jsx_parseNamespacedName();\n if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !this.options.plugins.jsx.allowNamespacedObjects) {\n this.unexpected();\n }\n while (this.eat(tt.dot)) {\n var newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsx_parseIdentifier();\n node = this.finishNode(newNode, 'JSXMemberExpression');\n }\n return node;\n };\n\n // Parses any type of JSX attribute value.\n\n pp.jsx_parseAttributeValue = function() {\n switch (this.type) {\n case tt.braceL:\n var node = this.jsx_parseExpressionContainer();\n if (node.expression.type === 'JSXEmptyExpression')\n this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression');\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom();\n\n default:\n this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text');\n }\n };\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n pp.jsx_parseEmptyExpression = function() {\n var node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);\n return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc);\n };\n\n // Parses JSX expression enclosed into curly brackets.\n\n\n pp.jsx_parseExpressionContainer = function() {\n var node = this.startNode();\n this.next();\n node.expression = this.type === tt.braceR\n ? this.jsx_parseEmptyExpression()\n : this.parseExpression();\n this.expect(tt.braceR);\n return this.finishNode(node, 'JSXExpressionContainer');\n };\n\n // Parses following JSX attribute name-value pair.\n\n pp.jsx_parseAttribute = function() {\n var node = this.startNode();\n if (this.eat(tt.braceL)) {\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssign();\n this.expect(tt.braceR);\n return this.finishNode(node, 'JSXSpreadAttribute');\n }\n node.name = this.jsx_parseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null;\n return this.finishNode(node, 'JSXAttribute');\n };\n\n // Parses JSX opening tag starting after '<'.\n\n pp.jsx_parseOpeningElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n node.attributes = [];\n node.name = this.jsx_parseElementName();\n while (this.type !== tt.slash && this.type !== tt.jsxTagEnd)\n node.attributes.push(this.jsx_parseAttribute());\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, 'JSXOpeningElement');\n };\n\n // Parses JSX closing tag starting after '</'.\n\n pp.jsx_parseClosingElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n node.name = this.jsx_parseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, 'JSXClosingElement');\n };\n\n // Parses entire JSX element, including it's opening tag\n // (starting after '<'), attributes, contents and closing tag.\n\n pp.jsx_parseElementAt = function(startPos, startLoc) {\n var node = this.startNodeAt(startPos, startLoc);\n var children = [];\n var openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc);\n var closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.type) {\n case tt.jsxTagStart:\n startPos = this.start; startLoc = this.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);\n break contents;\n }\n children.push(this.jsx_parseElementAt(startPos, startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseExprAtom());\n break;\n\n case tt.braceL:\n children.push(this.jsx_parseExpressionContainer());\n break;\n\n default:\n this.unexpected();\n }\n }\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(\n closingElement.start,\n 'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>');\n }\n }\n\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n node.children = children;\n if (this.type === tt.relational && this.value === \"<\") {\n this.raise(this.start, \"Adjacent JSX elements must be wrapped in an enclosing tag\");\n }\n return this.finishNode(node, 'JSXElement');\n };\n\n // Parses entire JSX element from current position.\n\n pp.jsx_parseElement = function() {\n var startPos = this.start, startLoc = this.startLoc;\n this.next();\n return this.jsx_parseElementAt(startPos, startLoc);\n };\n\n acorn.plugins.jsx = function(instance, opts) {\n if (!opts) {\n return;\n }\n\n if (typeof opts !== 'object') {\n opts = {};\n }\n\n instance.options.plugins.jsx = {\n allowNamespaces: opts.allowNamespaces !== false,\n allowNamespacedObjects: !!opts.allowNamespacedObjects\n };\n\n instance.extend('parseExprAtom', function(inner) {\n return function(refShortHandDefaultPos) {\n if (this.type === tt.jsxText)\n return this.parseLiteral(this.value);\n else if (this.type === tt.jsxTagStart)\n return this.jsx_parseElement();\n else\n return inner.call(this, refShortHandDefaultPos);\n };\n });\n\n instance.extend('readToken', function(inner) {\n return function(code) {\n var context = this.curContext();\n\n if (context === tc.j_expr) return this.jsx_readToken();\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (acorn.isIdentifierStart(code)) return this.jsx_readWord();\n\n if (code == 62) {\n ++this.pos;\n return this.finishToken(tt.jsxTagEnd);\n }\n\n if ((code === 34 || code === 39) && context == tc.j_oTag)\n return this.jsx_readString(code);\n }\n\n if (code === 60 && this.exprAllowed) {\n ++this.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return inner.call(this, code);\n };\n });\n\n instance.extend('updateContext', function(inner) {\n return function(prevType) {\n if (this.type == tt.braceL) {\n var curContext = this.curContext();\n if (curContext == tc.j_oTag) this.context.push(tc.b_expr);\n else if (curContext == tc.j_expr) this.context.push(tc.b_tmpl);\n else inner.call(this, prevType);\n this.exprAllowed = true;\n } else if (this.type === tt.slash && prevType === tt.jsxTagStart) {\n this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n this.context.push(tc.j_cTag); // reconsider as closing tag context\n this.exprAllowed = false;\n } else {\n return inner.call(this, prevType);\n }\n };\n });\n };\n\n return acorn;\n};\n","'use strict';\n\nmodule.exports = function(acorn) {\n var tt = acorn.tokTypes;\n var pp = acorn.Parser.prototype;\n\n // this is the same parseObj that acorn has with...\n function parseObj(isPattern, refDestructuringErrors) {\n let node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let prop = this.startNode(), isGenerator, startPos, startLoc\n if (this.options.ecmaVersion >= 6) {\n // ...the spread logic borrowed from babylon :)\n if (this.type === tt.ellipsis) {\n prop = this.parseSpread()\n prop.type = isPattern ? \"RestProperty\" : \"SpreadProperty\"\n node.properties.push(prop)\n continue\n }\n\n prop.method = false\n prop.shorthand = false\n if (isPattern || refDestructuringErrors) {\n startPos = this.start\n startLoc = this.startLoc\n }\n if (!isPattern)\n isGenerator = this.eat(tt.star)\n }\n this.parsePropertyName(prop)\n this.parsePropertyValue(prop, isPattern, isGenerator, startPos, startLoc, refDestructuringErrors)\n this.checkPropClash(prop, propHash)\n node.properties.push(this.finishNode(prop, \"Property\"))\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n }\n\n acorn.plugins.objectSpread = function objectSpreadPlugin(instance) {\n pp.parseObj = parseObj;\n };\n\n return acorn;\n};\n","var charToInteger = {};\nvar integerToChar = {};\n\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split( '' ).forEach( function ( char, i ) {\n\tcharToInteger[ char ] = i;\n\tintegerToChar[ i ] = char;\n});\n\nexport function decode ( string ) {\n\tvar result = [],\n\t\tlen = string.length,\n\t\ti,\n\t\thasContinuationBit,\n\t\tshift = 0,\n\t\tvalue = 0,\n\t\tinteger,\n\t\tshouldNegate;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tinteger = charToInteger[ string[i] ];\n\n\t\tif ( integer === undefined ) {\n\t\t\tthrow new Error( 'Invalid character (' + string[i] + ')' );\n\t\t}\n\n\t\thasContinuationBit = integer & 32;\n\n\t\tinteger &= 31;\n\t\tvalue += integer << shift;\n\n\t\tif ( hasContinuationBit ) {\n\t\t\tshift += 5;\n\t\t} else {\n\t\t\tshouldNegate = value & 1;\n\t\t\tvalue >>= 1;\n\n\t\t\tresult.push( shouldNegate ? -value : value );\n\n\t\t\t// reset\n\t\t\tvalue = shift = 0;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function encode ( value ) {\n\tvar result, i;\n\n\tif ( typeof value === 'number' ) {\n\t\tresult = encodeInteger( value );\n\t} else {\n\t\tresult = '';\n\t\tfor ( i = 0; i < value.length; i += 1 ) {\n\t\t\tresult += encodeInteger( value[i] );\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction encodeInteger ( num ) {\n\tvar result = '', clamped;\n\n\tif ( num < 0 ) {\n\t\tnum = ( -num << 1 ) | 1;\n\t} else {\n\t\tnum <<= 1;\n\t}\n\n\tdo {\n\t\tclamped = num & 31;\n\t\tnum >>= 5;\n\n\t\tif ( num > 0 ) {\n\t\t\tclamped |= 32;\n\t\t}\n\n\t\tresult += integerToChar[ clamped ];\n\t} while ( num > 0 );\n\n\treturn result;\n}\n","import { encode } from 'vlq';\n\nfunction Chunk ( start, end, content ) {\n\tthis.start = start;\n\tthis.end = end;\n\tthis.original = content;\n\n\tthis.intro = '';\n\tthis.outro = '';\n\n\tthis.content = content;\n\tthis.storeName = false;\n\tthis.edited = false;\n\n\t// we make these non-enumerable, for sanity while debugging\n\tObject.defineProperties( this, {\n\t\tprevious: { writable: true, value: null },\n\t\tnext: { writable: true, value: null }\n\t});\n}\n\nChunk.prototype = {\n\tappend: function append ( content ) {\n\t\tthis.outro += content;\n\t},\n\n\tclone: function clone () {\n\t\tvar chunk = new Chunk( this.start, this.end, this.original );\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t},\n\n\tcontains: function contains ( index ) {\n\t\treturn this.start < index && index < this.end;\n\t},\n\n\teachNext: function eachNext ( fn ) {\n\t\tvar chunk = this;\n\t\twhile ( chunk ) {\n\t\t\tfn( chunk );\n\t\t\tchunk = chunk.next;\n\t\t}\n\t},\n\n\teachPrevious: function eachPrevious ( fn ) {\n\t\tvar chunk = this;\n\t\twhile ( chunk ) {\n\t\t\tfn( chunk );\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t},\n\n\tedit: function edit ( content, storeName ) {\n\t\tthis.content = content;\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t},\n\n\tprepend: function prepend ( content ) {\n\t\tthis.intro = content + this.intro;\n\t},\n\n\tsplit: function split ( index ) {\n\t\tvar sliceIndex = index - this.start;\n\n\t\tvar originalBefore = this.original.slice( 0, sliceIndex );\n\t\tvar originalAfter = this.original.slice( sliceIndex );\n\n\t\tthis.original = originalBefore;\n\n\t\tvar newChunk = new Chunk( index, this.end, originalAfter );\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif ( this.edited ) {\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit( '', false );\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif ( newChunk.next ) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t},\n\n\ttoString: function toString () {\n\t\treturn this.intro + this.content + this.outro;\n\t},\n\n\ttrimEnd: function trimEnd ( rx ) {\n\t\tthis.outro = this.outro.replace( rx, '' );\n\t\tif ( this.outro.length ) return true;\n\n\t\tvar trimmed = this.content.replace( rx, '' );\n\n\t\tif ( trimmed.length ) {\n\t\t\tif ( trimmed !== this.content ) {\n\t\t\t\tthis.split( this.start + trimmed.length ).edit( '', false );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit( '', false );\n\n\t\t\tthis.intro = this.intro.replace( rx, '' );\n\t\t\tif ( this.intro.length ) return true;\n\t\t}\n\t},\n\n\ttrimStart: function trimStart ( rx ) {\n\t\tthis.intro = this.intro.replace( rx, '' );\n\t\tif ( this.intro.length ) return true;\n\n\t\tvar trimmed = this.content.replace( rx, '' );\n\n\t\tif ( trimmed.length ) {\n\t\t\tif ( trimmed !== this.content ) {\n\t\t\t\tthis.split( this.end - trimmed.length );\n\t\t\t\tthis.edit( '', false );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit( '', false );\n\n\t\t\tthis.outro = this.outro.replace( rx, '' );\n\t\t\tif ( this.outro.length ) return true;\n\t\t}\n\t}\n};\n\nvar _btoa;\n\nif ( typeof window !== 'undefined' && typeof window.btoa === 'function' ) {\n\t_btoa = window.btoa;\n} else if ( typeof Buffer === 'function' ) {\n\t_btoa = function ( str ) { return new Buffer( str ).toString( 'base64' ); };\n} else {\n\t_btoa = function () {\n\t\tthrow new Error( 'Unsupported environment: `window.btoa` or `Buffer` should be supported.' );\n\t};\n}\n\nvar btoa = _btoa;\n\nfunction SourceMap ( properties ) {\n\tthis.version = 3;\n\n\tthis.file = properties.file;\n\tthis.sources = properties.sources;\n\tthis.sourcesContent = properties.sourcesContent;\n\tthis.names = properties.names;\n\tthis.mappings = properties.mappings;\n}\n\nSourceMap.prototype = {\n\ttoString: function toString () {\n\t\treturn JSON.stringify( this );\n\t},\n\n\ttoUrl: function toUrl () {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa( this.toString() );\n\t}\n};\n\nfunction guessIndent ( code ) {\n\tvar lines = code.split( '\\n' );\n\n\tvar tabbed = lines.filter( function ( line ) { return /^\\t+/.test( line ); } );\n\tvar spaced = lines.filter( function ( line ) { return /^ {2,}/.test( line ); } );\n\n\tif ( tabbed.length === 0 && spaced.length === 0 ) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif ( tabbed.length >= spaced.length ) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tvar min = spaced.reduce( function ( previous, current ) {\n\t\tvar numSpaces = /^ +/.exec( current )[0].length;\n\t\treturn Math.min( numSpaces, previous );\n\t}, Infinity );\n\n\treturn new Array( min + 1 ).join( ' ' );\n}\n\nfunction getLocator ( source ) {\n\tvar originalLines = source.split( '\\n' );\n\n\tvar start = 0;\n\tvar lineRanges = originalLines.map( function ( line, i ) {\n\t\tvar end = start + line.length + 1;\n\t\tvar range = { start: start, end: end, line: i };\n\n\t\tstart = end;\n\t\treturn range;\n\t});\n\n\tvar i = 0;\n\n\tfunction rangeContains ( range, index ) {\n\t\treturn range.start <= index && index < range.end;\n\t}\n\n\tfunction getLocation ( range, index ) {\n\t\treturn { line: range.line, column: index - range.start };\n\t}\n\n\treturn function locate ( index ) {\n\t\tvar range = lineRanges[i];\n\n\t\tvar d = index >= range.end ? 1 : -1;\n\n\t\twhile ( range ) {\n\t\t\tif ( rangeContains( range, index ) ) return getLocation( range, index );\n\n\t\t\ti += d;\n\t\t\trange = lineRanges[i];\n\t\t}\n\t};\n}\n\nfunction encodeMappings ( original, intro, chunk, hires, sourcemapLocations, sourceIndex, offsets, names ) {\n\tvar rawLines = [];\n\n\tvar generatedCodeLine = intro.split( '\\n' ).length - 1;\n\tvar rawSegments = rawLines[ generatedCodeLine ] = [];\n\n\tvar generatedCodeColumn = 0;\n\n\tvar locate = getLocator( original );\n\n\tfunction addEdit ( content, original, loc, nameIndex, i ) {\n\t\tif ( i || content.length ) {\n\t\t\trawSegments.push({\n\t\t\t\tgeneratedCodeLine: generatedCodeLine,\n\t\t\t\tgeneratedCodeColumn: generatedCodeColumn,\n\t\t\t\tsourceCodeLine: loc.line,\n\t\t\t\tsourceCodeColumn: loc.column,\n\t\t\t\tsourceCodeName: nameIndex,\n\t\t\t\tsourceIndex: sourceIndex\n\t\t\t});\n\t\t}\n\n\t\tvar lines = content.split( '\\n' );\n\t\tvar lastLine = lines.pop();\n\n\t\tif ( lines.length ) {\n\t\t\tgeneratedCodeLine += lines.length;\n\t\t\trawLines[ generatedCodeLine ] = rawSegments = [];\n\t\t\tgeneratedCodeColumn = lastLine.length;\n\t\t} else {\n\t\t\tgeneratedCodeColumn += lastLine.length;\n\t\t}\n\n\t\tlines = original.split( '\\n' );\n\t\tlastLine = lines.pop();\n\n\t\tif ( lines.length ) {\n\t\t\tloc.line += lines.length;\n\t\t\tloc.column = lastLine.length;\n\t\t} else {\n\t\t\tloc.column += lastLine.length;\n\t\t}\n\t}\n\n\tfunction addUneditedChunk ( chunk, loc ) {\n\t\tvar originalCharIndex = chunk.start;\n\t\tvar first = true;\n\n\t\twhile ( originalCharIndex < chunk.end ) {\n\t\t\tif ( hires || first || sourcemapLocations[ originalCharIndex ] ) {\n\t\t\t\trawSegments.push({\n\t\t\t\t\tgeneratedCodeLine: generatedCodeLine,\n\t\t\t\t\tgeneratedCodeColumn: generatedCodeColumn,\n\t\t\t\t\tsourceCodeLine: loc.line,\n\t\t\t\t\tsourceCodeColumn: loc.column,\n\t\t\t\t\tsourceCodeName: -1,\n\t\t\t\t\tsourceIndex: sourceIndex\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( original[ originalCharIndex ] === '\\n' ) {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tgeneratedCodeLine += 1;\n\t\t\t\trawLines[ generatedCodeLine ] = rawSegments = [];\n\t\t\t\tgeneratedCodeColumn = 0;\n\t\t\t} else {\n\t\t\t\tloc.column += 1;\n\t\t\t\tgeneratedCodeColumn += 1;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t\tfirst = false;\n\t\t}\n\t}\n\n\twhile ( chunk ) {\n\t\tvar loc = locate( chunk.start );\n\n\t\tif ( chunk.intro.length ) {\n\t\t\taddEdit( chunk.intro, '', loc, -1, !!chunk.previous );\n\t\t}\n\n\t\tif ( chunk.edited ) {\n\t\t\taddEdit( chunk.content, chunk.original, loc, chunk.storeName ? names.indexOf( chunk.original ) : -1, !!chunk.previous );\n\t\t} else {\n\t\t\taddUneditedChunk( chunk, loc );\n\t\t}\n\n\t\tif ( chunk.outro.length ) {\n\t\t\taddEdit( chunk.outro, '', loc, -1, !!chunk.previous );\n\t\t}\n\n\t\tvar nextChunk = chunk.next;\n\t\tchunk = nextChunk;\n\t}\n\n\toffsets.sourceIndex = offsets.sourceIndex || 0;\n\toffsets.sourceCodeLine = offsets.sourceCodeLine || 0;\n\toffsets.sourceCodeColumn = offsets.sourceCodeColumn || 0;\n\toffsets.sourceCodeName = offsets.sourceCodeName || 0;\n\n\tvar encoded = rawLines.map( function ( segments ) {\n\t\tvar generatedCodeColumn = 0;\n\n\t\treturn segments.map( function ( segment ) {\n\t\t\tvar arr = [\n\t\t\t\tsegment.generatedCodeColumn - generatedCodeColumn,\n\t\t\t\tsegment.sourceIndex - offsets.sourceIndex,\n\t\t\t\tsegment.sourceCodeLine - offsets.sourceCodeLine,\n\t\t\t\tsegment.sourceCodeColumn - offsets.sourceCodeColumn\n\t\t\t];\n\n\t\t\tgeneratedCodeColumn = segment.generatedCodeColumn;\n\t\t\toffsets.sourceIndex = segment.sourceIndex;\n\t\t\toffsets.sourceCodeLine = segment.sourceCodeLine;\n\t\t\toffsets.sourceCodeColumn = segment.sourceCodeColumn;\n\n\t\t\tif ( ~segment.sourceCodeName ) {\n\t\t\t\tarr.push( segment.sourceCodeName - offsets.sourceCodeName );\n\t\t\t\toffsets.sourceCodeName = segment.sourceCodeName;\n\t\t\t}\n\n\t\t\treturn encode( arr );\n\t\t}).join( ',' );\n\t}).join( ';' );\n\n\treturn encoded;\n}\n\nfunction getRelativePath ( from, to ) {\n\tvar fromParts = from.split( /[\\/\\\\]/ );\n\tvar toParts = to.split( /[\\/\\\\]/ );\n\n\tfromParts.pop(); // get dirname\n\n\twhile ( fromParts[0] === toParts[0] ) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif ( fromParts.length ) {\n\t\tvar i = fromParts.length;\n\t\twhile ( i-- ) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat( toParts ).join( '/' );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isObject ( thing ) {\n\treturn toString.call( thing ) === '[object Object]';\n}\n\nfunction MagicString ( string, options ) {\n\tif ( options === void 0 ) options = {};\n\n\tvar chunk = new Chunk( 0, string.length, string );\n\n\tObject.defineProperties( this, {\n\t\toriginal: { writable: true, value: string },\n\t\toutro: { writable: true, value: '' },\n\t\tintro: { writable: true, value: '' },\n\t\tfirstChunk: { writable: true, value: chunk },\n\t\tlastChunk: { writable: true, value: chunk },\n\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\tbyStart: { writable: true, value: {} },\n\t\tbyEnd: { writable: true, value: {} },\n\t\tfilename: { writable: true, value: options.filename },\n\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\tsourcemapLocations: { writable: true, value: {} },\n\t\tstoredNames: { writable: true, value: {} },\n\t\tindentStr: { writable: true, value: guessIndent( string ) }\n\t});\n\n\tif ( false ) {}\n\n\tthis.byStart[ 0 ] = chunk;\n\tthis.byEnd[ string.length ] = chunk;\n}\n\nMagicString.prototype = {\n\taddSourcemapLocation: function addSourcemapLocation ( char ) {\n\t\tthis.sourcemapLocations[ char ] = true;\n\t},\n\n\tappend: function append ( content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'outro content must be a string' );\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t},\n\n\tclone: function clone () {\n\t\tvar cloned = new MagicString( this.original, { filename: this.filename });\n\n\t\tvar originalChunk = this.firstChunk;\n\t\tvar clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\n\t\twhile ( originalChunk ) {\n\t\t\tcloned.byStart[ clonedChunk.start ] = clonedChunk;\n\t\t\tcloned.byEnd[ clonedChunk.end ] = clonedChunk;\n\n\t\t\tvar nextOriginalChunk = originalChunk.next;\n\t\t\tvar nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif ( nextClonedChunk ) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif ( this.indentExclusionRanges ) {\n\t\t\tcloned.indentExclusionRanges = typeof this.indentExclusionRanges[0] === 'number' ?\n\t\t\t\t[ this.indentExclusionRanges[0], this.indentExclusionRanges[1] ] :\n\t\t\t\tthis.indentExclusionRanges.map( function ( range ) { return [ range.start, range.end ]; } );\n\t\t}\n\n\t\tObject.keys( this.sourcemapLocations ).forEach( function ( loc ) {\n\t\t\tcloned.sourcemapLocations[ loc ] = true;\n\t\t});\n\n\t\treturn cloned;\n\t},\n\n\tgenerateMap: function generateMap ( options ) {\n\t\toptions = options || {};\n\n\t\tvar names = Object.keys( this.storedNames );\n\n\t\tif ( false ) {}\n\t\tvar map = new SourceMap({\n\t\t\tfile: ( options.file ? options.file.split( /[\\/\\\\]/ ).pop() : null ),\n\t\t\tsources: [ options.source ? getRelativePath( options.file || '', options.source ) : null ],\n\t\t\tsourcesContent: options.includeContent ? [ this.original ] : [ null ],\n\t\t\tnames: names,\n\t\t\tmappings: this.getMappings( options.hires, 0, {}, names )\n\t\t});\n\t\tif ( false ) {}\n\n\t\treturn map;\n\t},\n\n\tgetIndentString: function getIndentString () {\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t},\n\n\tgetMappings: function getMappings ( hires, sourceIndex, offsets, names ) {\n\t\treturn encodeMappings( this.original, this.intro, this.firstChunk, hires, this.sourcemapLocations, sourceIndex, offsets, names );\n\t},\n\n\tindent: function indent ( indentStr, options ) {\n\t\tvar this$1 = this;\n\n\t\tvar pattern = /^[^\\r\\n]/gm;\n\n\t\tif ( isObject( indentStr ) ) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tindentStr = indentStr !== undefined ? indentStr : ( this.indentStr || '\\t' );\n\n\t\tif ( indentStr === '' ) return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tvar isExcluded = {};\n\n\t\tif ( options.exclude ) {\n\t\t\tvar exclusions = typeof options.exclude[0] === 'number' ? [ options.exclude ] : options.exclude;\n\t\t\texclusions.forEach( function ( exclusion ) {\n\t\t\t\tfor ( var i = exclusion[0]; i < exclusion[1]; i += 1 ) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tvar shouldIndentNextCharacter = options.indentStart !== false;\n\t\tvar replacer = function ( match ) {\n\t\t\tif ( shouldIndentNextCharacter ) return (\"\" + indentStr + match);\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace( pattern, replacer );\n\n\t\tvar charIndex = 0;\n\n\t\tvar chunk = this.firstChunk;\n\n\t\twhile ( chunk ) {\n\t\t\tvar end = chunk.end;\n\n\t\t\tif ( chunk.edited ) {\n\t\t\t\tif ( !isExcluded[ charIndex ] ) {\n\t\t\t\t\tchunk.content = chunk.content.replace( pattern, replacer );\n\n\t\t\t\t\tif ( chunk.content.length ) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[ chunk.content.length - 1 ] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile ( charIndex < end ) {\n\t\t\t\t\tif ( !isExcluded[ charIndex ] ) {\n\t\t\t\t\t\tvar char = this$1.original[ charIndex ];\n\n\t\t\t\t\t\tif ( char === '\\n' ) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if ( char !== '\\r' && shouldIndentNextCharacter ) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif ( charIndex === chunk.start ) {\n\t\t\t\t\t\t\t\tchunk.prepend( indentStr );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar rhs = chunk.split( charIndex );\n\t\t\t\t\t\t\t\trhs.prepend( indentStr );\n\n\t\t\t\t\t\t\t\tthis$1.byStart[ charIndex ] = rhs;\n\t\t\t\t\t\t\t\tthis$1.byEnd[ charIndex ] = chunk;\n\n\t\t\t\t\t\t\t\tchunk = rhs;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace( pattern, replacer );\n\n\t\treturn this;\n\t},\n\n\tinsert: function insert () {\n\t\tthrow new Error( 'magicString.insert(...) is deprecated. Use insertRight(...) or insertLeft(...)' );\n\t},\n\n\tinsertLeft: function insertLeft ( index, content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'inserted content must be a string' );\n\n\t\tif ( false ) {}\n\n\t\tthis._split( index );\n\n\t\tvar chunk = this.byEnd[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.append( content );\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif ( false ) {}\n\t\treturn this;\n\t},\n\n\tinsertRight: function insertRight ( index, content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'inserted content must be a string' );\n\n\t\tif ( false ) {}\n\n\t\tthis._split( index );\n\n\t\tvar chunk = this.byStart[ index ];\n\n\t\tif ( chunk ) {\n\t\t\tchunk.prepend( content );\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif ( false ) {}\n\t\treturn this;\n\t},\n\n\tmove: function move ( start, end, index ) {\n\t\tif ( index >= start && index <= end ) throw new Error( 'Cannot move a selection inside itself' );\n\n\t\tif ( false ) {}\n\n\t\tthis._split( start );\n\t\tthis._split( end );\n\t\tthis._split( index );\n\n\t\tvar first = this.byStart[ start ];\n\t\tvar last = this.byEnd[ end ];\n\n\t\tvar oldLeft = first.previous;\n\t\tvar oldRight = last.next;\n\n\t\tvar newRight = this.byStart[ index ];\n\t\tif ( !newRight && last === this.lastChunk ) return this;\n\t\tvar newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif ( oldLeft ) oldLeft.next = oldRight;\n\t\tif ( oldRight ) oldRight.previous = oldLeft;\n\n\t\tif ( newLeft ) newLeft.next = first;\n\t\tif ( newRight ) newRight.previous = last;\n\n\t\tif ( !first.previous ) this.firstChunk = last.next;\n\t\tif ( !last.next ) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight;\n\n\t\tif ( !newLeft ) this.firstChunk = first;\n\t\tif ( !newRight ) this.lastChunk = last;\n\n\t\tif ( false ) {}\n\t\treturn this;\n\t},\n\n\toverwrite: function overwrite ( start, end, content, storeName ) {\n\t\tvar this$1 = this;\n\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'replacement content must be a string' );\n\n\t\twhile ( start < 0 ) start += this$1.original.length;\n\t\twhile ( end < 0 ) end += this$1.original.length;\n\n\t\tif ( end > this.original.length ) throw new Error( 'end is out of bounds' );\n\t\tif ( start === end ) throw new Error( 'Cannot overwrite a zero-length range use insertLeft or insertRight instead' );\n\n\t\tif ( false ) {}\n\n\t\tthis._split( start );\n\t\tthis._split( end );\n\n\t\tif ( storeName ) {\n\t\t\tvar original = this.original.slice( start, end );\n\t\t\tthis.storedNames[ original ] = true;\n\t\t}\n\n\t\tvar first = this.byStart[ start ];\n\t\tvar last = this.byEnd[ end ];\n\n\t\tif ( first ) {\n\t\t\tfirst.edit( content, storeName );\n\n\t\t\tif ( first !== last ) {\n\t\t\t\tfirst.outro = '';\n\n\t\t\t\tvar chunk = first.next;\n\t\t\t\twhile ( chunk !== last ) {\n\t\t\t\t\tchunk.edit( '', false );\n\t\t\t\t\tchunk.intro = chunk.outro = '';\n\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tchunk.edit( '', false );\n\t\t\t\tchunk.intro = '';\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\t// must be inserting at the end\n\t\t\tvar newChunk = new Chunk( start, end, '' ).edit( content, storeName );\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif ( false ) {}\n\t\treturn this;\n\t},\n\n\tprepend: function prepend ( content ) {\n\t\tif ( typeof content !== 'string' ) throw new TypeError( 'outro content must be a string' );\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t},\n\n\tremove: function remove ( start, end ) {\n\t\tvar this$1 = this;\n\n\t\twhile ( start < 0 ) start += this$1.original.length;\n\t\twhile ( end < 0 ) end += this$1.original.length;\n\n\t\tif ( start === end ) return this;\n\n\t\tif ( start < 0 || end > this.original.length ) throw new Error( 'Character is out of bounds' );\n\t\tif ( start > end ) throw new Error( 'end must be greater than start' );\n\n\t\treturn this.overwrite( start, end, '', false );\n\t},\n\n\tslice: function slice ( start, end ) {\n\t\tvar this$1 = this;\n\t\tif ( start === void 0 ) start = 0;\n\t\tif ( end === void 0 ) end = this.original.length;\n\n\t\twhile ( start < 0 ) start += this$1.original.length;\n\t\twhile ( end < 0 ) end += this$1.original.length;\n\n\t\tvar result = '';\n\n\t\t// find start chunk\n\t\tvar chunk = this.firstChunk;\n\t\twhile ( chunk && ( chunk.start > start || chunk.end <= start ) ) {\n\n\t\t\t// found end chunk before start\n\t\t\tif ( chunk.start < end && chunk.end >= end ) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif ( chunk && chunk.edited && chunk.start !== start ) throw new Error((\"Cannot use replaced character \" + start + \" as slice start anchor.\"));\n\n\t\tvar startChunk = chunk;\n\t\twhile ( chunk ) {\n\t\t\tif ( chunk.intro && ( startChunk !== chunk || chunk.start === start ) ) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tvar containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif ( containsEnd && chunk.edited && chunk.end !== end ) throw new Error((\"Cannot use replaced character \" + end + \" as slice end anchor.\"));\n\n\t\t\tvar sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tvar sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice( sliceStart, sliceEnd );\n\n\t\t\tif ( chunk.outro && ( !containsEnd || chunk.end === end ) ) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif ( containsEnd ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t// TODO deprecate this? not really very useful\n\tsnip: function snip ( start, end ) {\n\t\tvar clone = this.clone();\n\t\tclone.remove( 0, start );\n\t\tclone.remove( end, clone.original.length );\n\n\t\treturn clone;\n\t},\n\n\t_split: function _split ( index ) {\n\t\tvar this$1 = this;\n\n\t\tif ( this.byStart[ index ] || this.byEnd[ index ] ) return;\n\n\t\tif ( false ) {}\n\n\t\tvar chunk = this.lastSearchedChunk;\n\t\tvar searchForward = index > chunk.end;\n\n\t\twhile ( true ) {\n\t\t\tif ( chunk.contains( index ) ) return this$1._splitChunk( chunk, index );\n\n\t\t\tchunk = searchForward ?\n\t\t\t\tthis$1.byStart[ chunk.end ] :\n\t\t\t\tthis$1.byEnd[ chunk.start ];\n\t\t}\n\t},\n\n\t_splitChunk: function _splitChunk ( chunk, index ) {\n\t\tif ( chunk.edited && chunk.content.length ) { // zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tvar loc = getLocator( this.original )( index );\n\t\t\tthrow new Error( (\"Cannot split a chunk that has already been edited (\" + (loc.line) + \":\" + (loc.column) + \" \\\"\" + (chunk.original) + \"\\\")\") );\n\t\t}\n\n\t\tvar newChunk = chunk.split( index );\n\n\t\tthis.byEnd[ index ] = chunk;\n\t\tthis.byStart[ index ] = newChunk;\n\t\tthis.byEnd[ newChunk.end ] = newChunk;\n\n\t\tif ( chunk === this.lastChunk ) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif ( false ) {}\n\t\treturn true;\n\t},\n\n\ttoString: function toString () {\n\t\tvar str = this.intro;\n\n\t\tvar chunk = this.firstChunk;\n\t\twhile ( chunk ) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t},\n\n\ttrimLines: function trimLines () {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t},\n\n\ttrim: function trim ( charType ) {\n\t\treturn this.trimStart( charType ).trimEnd( charType );\n\t},\n\n\ttrimEnd: function trimEnd ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( ( charType || '\\\\s' ) + '+$' );\n\n\t\tthis.outro = this.outro.replace( rx, '' );\n\t\tif ( this.outro.length ) return this;\n\n\t\tvar chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tvar end = chunk.end;\n\t\t\tvar aborted = chunk.trimEnd( rx );\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif ( chunk.end !== end ) {\n\t\t\t\tthis$1.lastChunk = chunk.next;\n\n\t\t\t\tthis$1.byEnd[ chunk.end ] = chunk;\n\t\t\t\tthis$1.byStart[ chunk.next.start ] = chunk.next;\n\t\t\t}\n\n\t\t\tif ( aborted ) return this$1;\n\t\t\tchunk = chunk.previous;\n\t\t} while ( chunk );\n\n\t\treturn this;\n\t},\n\n\ttrimStart: function trimStart ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( '^' + ( charType || '\\\\s' ) + '+' );\n\n\t\tthis.intro = this.intro.replace( rx, '' );\n\t\tif ( this.intro.length ) return this;\n\n\t\tvar chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tvar end = chunk.end;\n\t\t\tvar aborted = chunk.trimStart( rx );\n\n\t\t\tif ( chunk.end !== end ) {\n\t\t\t\t// special case...\n\t\t\t\tif ( chunk === this$1.lastChunk ) this$1.lastChunk = chunk.next;\n\n\t\t\t\tthis$1.byEnd[ chunk.end ] = chunk;\n\t\t\t\tthis$1.byStart[ chunk.next.start ] = chunk.next;\n\t\t\t}\n\n\t\t\tif ( aborted ) return this$1;\n\t\t\tchunk = chunk.next;\n\t\t} while ( chunk );\n\n\t\treturn this;\n\t}\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nfunction Bundle ( options ) {\n\tif ( options === void 0 ) options = {};\n\n\tthis.intro = options.intro || '';\n\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\n\tthis.sources = [];\n\n\tthis.uniqueSources = [];\n\tthis.uniqueSourceIndexByFilename = {};\n}\n\nBundle.prototype = {\n\taddSource: function addSource ( source ) {\n\t\tif ( source instanceof MagicString ) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator\n\t\t\t});\n\t\t}\n\n\t\tif ( !isObject( source ) || !source.content ) {\n\t\t\tthrow new Error( 'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`' );\n\t\t}\n\n\t\t[ 'filename', 'indentExclusionRanges', 'separator' ].forEach( function ( option ) {\n\t\t\tif ( !hasOwnProp.call( source, option ) ) source[ option ] = source.content[ option ];\n\t\t});\n\n\t\tif ( source.separator === undefined ) { // TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif ( source.filename ) {\n\t\t\tif ( !hasOwnProp.call( this.uniqueSourceIndexByFilename, source.filename ) ) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[ source.filename ] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tvar uniqueSource = this.uniqueSources[ this.uniqueSourceIndexByFilename[ source.filename ] ];\n\t\t\t\tif ( source.content.original !== uniqueSource.content ) {\n\t\t\t\t\tthrow new Error( (\"Illegal source: same filename (\" + (source.filename) + \"), different contents\") );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push( source );\n\t\treturn this;\n\t},\n\n\tappend: function append ( str, options ) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString( str ),\n\t\t\tseparator: ( options && options.separator ) || ''\n\t\t});\n\n\t\treturn this;\n\t},\n\n\tclone: function clone () {\n\t\tvar bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator\n\t\t});\n\n\t\tthis.sources.forEach( function ( source ) {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t},\n\n\tgenerateMap: function generateMap ( options ) {\n\t\tvar this$1 = this;\n\n\t\tvar offsets = {};\n\n\t\tvar names = [];\n\t\tthis.sources.forEach( function ( source ) {\n\t\t\tObject.keys( source.content.storedNames ).forEach( function ( name ) {\n\t\t\t\tif ( !~names.indexOf( name ) ) names.push( name );\n\t\t\t});\n\t\t});\n\n\t\tvar encoded = (\n\t\t\tgetSemis( this.intro ) +\n\t\t\tthis.sources.map( function ( source, i ) {\n\t\t\t\tvar prefix = ( i > 0 ) ? ( getSemis( source.separator ) || ',' ) : '';\n\t\t\t\tvar mappings;\n\n\t\t\t\t// we don't bother encoding sources without a filename\n\t\t\t\tif ( !source.filename ) {\n\t\t\t\t\tmappings = getSemis( source.content.toString() );\n\t\t\t\t} else {\n\t\t\t\t\tvar sourceIndex = this$1.uniqueSourceIndexByFilename[ source.filename ];\n\t\t\t\t\tmappings = source.content.getMappings( options.hires, sourceIndex, offsets, names );\n\t\t\t\t}\n\n\t\t\t\treturn prefix + mappings;\n\t\t\t}).join( '' )\n\t\t);\n\n\t\treturn new SourceMap({\n\t\t\tfile: ( options.file ? options.file.split( /[\\/\\\\]/ ).pop() : null ),\n\t\t\tsources: this.uniqueSources.map( function ( source ) {\n\t\t\t\treturn options.file ? getRelativePath( options.file, source.filename ) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map( function ( source ) {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames: names,\n\t\t\tmappings: encoded\n\t\t});\n\t},\n\n\tgetIndentString: function getIndentString () {\n\t\tvar indentStringCounts = {};\n\n\t\tthis.sources.forEach( function ( source ) {\n\t\t\tvar indentStr = source.content.indentStr;\n\n\t\t\tif ( indentStr === null ) return;\n\n\t\t\tif ( !indentStringCounts[ indentStr ] ) indentStringCounts[ indentStr ] = 0;\n\t\t\tindentStringCounts[ indentStr ] += 1;\n\t\t});\n\n\t\treturn ( Object.keys( indentStringCounts ).sort( function ( a, b ) {\n\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t})[0] ) || '\\t';\n\t},\n\n\tindent: function indent ( indentStr ) {\n\t\tvar this$1 = this;\n\n\t\tif ( !arguments.length ) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif ( indentStr === '' ) return this; // noop\n\n\t\tvar trailingNewline = !this.intro || this.intro.slice( -1 ) === '\\n';\n\n\t\tthis.sources.forEach( function ( source, i ) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar indentStart = trailingNewline || ( i > 0 && /\\r?\\n$/.test( separator ) );\n\n\t\t\tsource.content.indent( indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart: indentStart//: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\t// TODO this is a very slow way to determine this\n\t\t\ttrailingNewline = source.content.toString().slice( 0, -1 ) === '\\n';\n\t\t});\n\n\t\tif ( this.intro ) {\n\t\t\tthis.intro = indentStr + this.intro.replace( /^[^\\n]/gm, function ( match, index ) {\n\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tprepend: function prepend ( str ) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t},\n\n\ttoString: function toString () {\n\t\tvar this$1 = this;\n\n\t\tvar body = this.sources.map( function ( source, i ) {\n\t\t\tvar separator = source.separator !== undefined ? source.separator : this$1.separator;\n\t\t\tvar str = ( i > 0 ? separator : '' ) + source.content.toString();\n\n\t\t\treturn str;\n\t\t}).join( '' );\n\n\t\treturn this.intro + body;\n\t},\n\n\ttrimLines: function trimLines () {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t},\n\n\ttrim: function trim ( charType ) {\n\t\treturn this.trimStart( charType ).trimEnd( charType );\n\t},\n\n\ttrimStart: function trimStart ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( '^' + ( charType || '\\\\s' ) + '+' );\n\t\tthis.intro = this.intro.replace( rx, '' );\n\n\t\tif ( !this.intro ) {\n\t\t\tvar source;\n\t\t\tvar i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this$1.sources[i];\n\n\t\t\t\tif ( !source ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tsource.content.trimStart( charType );\n\t\t\t\ti += 1;\n\t\t\t} while ( source.content.toString() === '' ); // TODO faster way to determine non-empty source?\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttrimEnd: function trimEnd ( charType ) {\n\t\tvar this$1 = this;\n\n\t\tvar rx = new RegExp( ( charType || '\\\\s' ) + '+$' );\n\n\t\tvar source;\n\t\tvar i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this$1.sources[i];\n\n\t\t\tif ( !source ) {\n\t\t\t\tthis$1.intro = this$1.intro.replace( rx, '' );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tsource.content.trimEnd( charType );\n\t\t\ti -= 1;\n\t\t} while ( source.content.toString() === '' ); // TODO faster way to determine non-empty source?\n\n\t\treturn this;\n\t}\n};\n\nfunction getSemis ( str ) {\n\treturn new Array( str.split( '\\n' ).length ).join( ';' );\n}\n\nMagicString.Bundle = Bundle;\n\nexport default MagicString;\n//# sourceMappingURL=magic-string.es6.js.map","export default {\n\tProgram: [ 'body' ],\n\tLiteral: []\n};\n","import wrap from './wrap.js';\nimport keys from './keys.js';\n\n// used for debugging, without the noise created by\n// circular references\nfunction toJSON ( node ) {\n\tvar obj = {};\n\n\tObject.keys( node ).forEach( key => {\n\t\tif ( key === 'parent' || key === 'program' || key === 'keys' || key === '__wrapped' ) return;\n\n\t\tif ( Array.isArray( node[ key ] ) ) {\n\t\t\tobj[ key ] = node[ key ].map( toJSON );\n\t\t} else if ( node[ key ] && node[ key ].toJSON ) {\n\t\t\tobj[ key ] = node[ key ].toJSON();\n\t\t} else {\n\t\t\tobj[ key ] = node[ key ];\n\t\t}\n\t});\n\n\treturn obj;\n}\n\nexport default class Node {\n\tconstructor ( raw, parent ) {\n\t\traw.parent = parent;\n\t\traw.program = parent.program || parent;\n\t\traw.depth = parent.depth + 1;\n\t\traw.keys = keys[ raw.type ];\n\t\traw.indentation = undefined;\n\n\t\tfor ( const key of keys[ raw.type ] ) {\n\t\t\twrap( raw[ key ], raw );\n\t\t}\n\n\t\traw.program.magicString.addSourcemapLocation( raw.start );\n\t\traw.program.magicString.addSourcemapLocation( raw.end );\n\t}\n\n\tancestor ( level ) {\n\t\tlet node = this;\n\t\twhile ( level-- ) {\n\t\t\tnode = node.parent;\n\t\t\tif ( !node ) return null;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tcontains ( node ) {\n\t\twhile ( node ) {\n\t\t\tif ( node === this ) return true;\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfindLexicalBoundary () {\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindNearest ( type ) {\n\t\tif ( typeof type === 'string' ) type = new RegExp( `^${type}$` );\n\t\tif ( type.test( this.type ) ) return this;\n\t\treturn this.parent.findNearest( type );\n\t}\n\n\tfindScope ( functionScope ) {\n\t\treturn this.parent.findScope( functionScope );\n\t}\n\n\tgetIndentation () {\n\t\treturn this.parent.getIndentation();\n\t}\n\n\tinitialise ( transforms ) {\n\t\tfor ( var key of this.keys ) {\n\t\t\tconst value = this[ key ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tvalue.forEach( node => node && node.initialise( transforms ) );\n\t\t\t} else if ( value && typeof value === 'object' ) {\n\t\t\t\tvalue.initialise( transforms );\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON () {\n\t\treturn toJSON( this );\n\t}\n\n\ttoString () {\n\t\treturn this.program.magicString.original.slice( this.start, this.end );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tfor ( const key of this.keys ) {\n\t\t\tconst value = this[ key ];\n\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\tvalue.forEach( node => node && node.transpile( code, transforms ) );\n\t\t\t} else if ( value && typeof value === 'object' ) {\n\t\t\t\tvalue.transpile( code, transforms );\n\t\t\t}\n\t\t}\n\t}\n}\n","export function isArguments ( node ) {\n\treturn node.type === 'Identifier' && node.name === 'arguments';\n}\n\nexport default function spread ( code, elements, start, argumentsArrayAlias ) {\n\tlet i = elements.length;\n\tlet firstSpreadIndex = -1;\n\n\twhile ( i-- ) {\n\t\tconst element = elements[i];\n\t\tif ( element && element.type === 'SpreadElement' ) {\n\t\t\tif ( isArguments( element.argument ) ) {\n\t\t\t\tcode.overwrite( element.argument.start, element.argument.end, argumentsArrayAlias );\n\t\t\t}\n\n\t\t\tfirstSpreadIndex = i;\n\t\t}\n\t}\n\n\tif ( firstSpreadIndex === -1 ) return false; // false indicates no spread elements\n\n\tlet element = elements[ firstSpreadIndex ];\n\tconst previousElement = elements[ firstSpreadIndex - 1 ];\n\n\tif ( !previousElement ) {\n\t\tcode.remove( start, element.start );\n\t\tcode.overwrite( element.end, elements[1].start, '.concat( ' );\n\t} else {\n\t\tcode.overwrite( previousElement.end, element.start, ' ].concat( ' );\n\t}\n\n\tfor ( i = firstSpreadIndex; i < elements.length; i += 1 ) {\n\t\telement = elements[i];\n\n\t\tif ( element ) {\n\t\t\tif ( element.type === 'SpreadElement' ) {\n\t\t\t\tcode.remove( element.start, element.argument.start );\n\t\t\t} else {\n\t\t\t\tcode.insertRight( element.start, '[' );\n\t\t\t\tcode.insertLeft( element.end, ']' );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true; // true indicates some spread elements\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\n\nexport default class ArrayExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.spreadRest && this.elements.length ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.elements.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst element = this.elements[i];\n\t\t\t\tif ( element && element.type === 'SpreadElement' && isArguments( element.argument ) ) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.spreadRest ) {\n\t\t\tif ( this.elements.length === 1 ) {\n\t\t\t\tconst element = this.elements[0];\n\n\t\t\t\tif ( element && element.type === 'SpreadElement' ) {\n\t\t\t\t\t// special case [ ...arguments ]\n\t\t\t\t\tif ( isArguments( element.argument ) ) {\n\t\t\t\t\t\tcode.overwrite( this.start, this.end, `[].concat( ${this.argumentsArrayAlias} )` ); // TODO if this is the only use of argsArray, don't bother concating\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite( this.start, element.argument.start, '[].concat( ' );\n\t\t\t\t\t\tcode.overwrite( element.end, this.end, ' )' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tconst hasSpreadElements = spread( code, this.elements, this.start, this.argumentsArrayAlias );\n\n\t\t\t\tif ( hasSpreadElements ) {\n\t\t\t\t\tcode.overwrite( this.end - 1, this.end, ')' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ArrowFunctionExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.body.createScope();\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.arrow ) {\n\t\t\t// remove arrow\n\t\t\tlet charIndex = this.body.start;\n\t\t\twhile ( code.original[ charIndex ] !== '=' ) {\n\t\t\t\tcharIndex -= 1;\n\t\t\t}\n\t\t\tcode.remove( charIndex, this.body.start );\n\n\t\t\t// wrap naked parameter\n\t\t\tif ( this.params.length === 1 && this.start === this.params[0].start ) {\n\t\t\t\tcode.insertRight( this.params[0].start, '(' );\n\t\t\t\tcode.insertLeft( this.params[0].end, ')' );\n\t\t\t}\n\n\t\t\t// add function\n\t\t\tcode.insertRight( this.start, 'function ' );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","export default function locate ( source, index ) {\n\tvar lines = source.split( '\\n' );\n\tvar len = lines.length;\n\n\tvar lineStart = 0;\n\tvar i;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tvar line = lines[i];\n\t\tvar lineEnd = lineStart + line.length + 1; // +1 for newline\n\n\t\tif ( lineEnd > index ) {\n\t\t\treturn { line: i + 1, column: index - lineStart, char: i };\n\t\t}\n\n\t\tlineStart = lineEnd;\n\t}\n\n\tthrow new Error( 'Could not determine location of character' );\n}\n","function pad ( num, len ) {\n\tlet result = String( num );\n\treturn result + repeat( ' ', len - result.length );\n}\n\nfunction repeat ( str, times ) {\n\tlet result = '';\n\twhile ( times-- ) result += str;\n\treturn result;\n}\n\nexport default function getSnippet ( source, loc, length = 1 ) {\n\tconst first = Math.max( loc.line - 5, 0 );\n\tconst last = loc.line;\n\n\tconst numDigits = String( last ).length;\n\n\tconst lines = source.split( '\\n' ).slice( first, last );\n\n\tconst lastLine = lines[ lines.length - 1 ];\n\tconst offset = lastLine.slice( 0, loc.column ).replace( /\\t/g, ' ' ).length;\n\n\tlet snippet = lines\n\t\t.map( ( line, i ) => `${pad( i + first + 1, numDigits )} : ${line.replace( /\\t/g, ' ')}` )\n\t\t.join( '\\n' );\n\n\tsnippet += '\\n' + repeat( ' ', numDigits + 3 + offset ) + repeat( '^', length );\n\n\treturn snippet;\n}\n","import locate from './locate.js';\nimport getSnippet from './getSnippet.js';\n\nexport default class CompileError extends Error {\n\tconstructor ( node, message ) {\n\t\tsuper();\n\n\t\tconst source = node.program.magicString.original;\n\t\tconst loc = locate( source, node.start );\n\n\t\tthis.name = 'CompileError';\n\t\tthis.message = message + ` (${loc.line}:${loc.column})`;\n\n\t\tthis.stack = new Error().stack.replace( new RegExp( `.+new ${this.name}.+\\\\n`, 'm' ), '' );\n\n\t\tthis.loc = loc;\n\t\tthis.snippet = getSnippet( source, loc, node.end - node.start );\n\t}\n\n\ttoString () {\n\t\treturn `${this.name}: ${this.message}\\n${this.snippet}`;\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class AssignmentExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.left.type === 'Identifier' ) {\n\t\t\tconst declaration = this.findScope( false ).findDeclaration( this.left.name );\n\t\t\tif ( declaration && declaration.kind === 'const' ) {\n\t\t\t\tthrow new CompileError( this.left, `${this.left.name} is read-only` );\n\t\t\t}\n\n\t\t\t// special case https://gitlab.com/Rich-Harris/buble/issues/11\n\t\t\tconst statement = declaration && declaration.node.ancestor( 3 );\n\t\t\tif ( statement && statement.type === 'ForStatement' && statement.body.contains( this ) ) {\n\t\t\t\tstatement.reassigned[ this.left.name ] = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( /Pattern/.test( this.left.type ) ) {\n\t\t\tthrow new CompileError( this.left, 'Destructuring assignments are not currently supported. Coming soon!' );\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.operator === '**=' && transforms.exponentiation ) {\n\t\t\tconst scope = this.findScope( false );\n\t\t\tconst getAlias = name => {\n\t\t\t\tconst declaration = scope.findDeclaration( name );\n\t\t\t\treturn declaration ? declaration.name : name;\n\t\t\t};\n\n\t\t\t// first, the easy part `**=` -> `=`\n\t\t\tlet charIndex = this.left.end;\n\t\t\twhile ( code.original[ charIndex ] !== '*' ) charIndex += 1;\n\t\t\tcode.remove( charIndex, charIndex + 2 );\n\n\t\t\t// how we do the next part depends on a number of factors whether\n\t\t\t// this is a top-level statement, and whether we're updating a\n\t\t\t// simple or complex reference\n\t\t\tlet base;\n\n\t\t\tlet left = this.left;\n\t\t\twhile ( left.type === 'ParenthesizedExpression' ) left = left.expression;\n\n\t\t\tif ( left.type === 'Identifier' ) {\n\t\t\t\tbase = getAlias( left.name );\n\t\t\t} else if ( left.type === 'MemberExpression' ) {\n\t\t\t\tlet object;\n\t\t\t\tlet needsObjectVar = false;\n\t\t\t\tlet property;\n\t\t\t\tlet needsPropertyVar = false;\n\n\t\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\t\tconst i0 = statement.getIndentation();\n\n\t\t\t\tif ( left.property.type === 'Identifier' ) {\n\t\t\t\t\tproperty = left.computed ? getAlias( left.property.name ) : left.property.name;\n\t\t\t\t} else {\n\t\t\t\t\tproperty = scope.createIdentifier( 'property' );\n\t\t\t\t\tneedsPropertyVar = true;\n\t\t\t\t}\n\n\t\t\t\tif ( left.object.type === 'Identifier' ) {\n\t\t\t\t\tobject = getAlias( left.object.name );\n\t\t\t\t} else {\n\t\t\t\t\tobject = scope.createIdentifier( 'object' );\n\t\t\t\t\tneedsObjectVar = true;\n\t\t\t\t}\n\n\t\t\t\tif ( left.start === statement.start ) {\n\t\t\t\t\tif ( needsObjectVar && needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( statement.start, `var ${object} = ` );\n\t\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `;\\n${i0}var ${property} = ` );\n\t\t\t\t\t\tcode.overwrite( left.property.end, left.end, `;\\n${i0}${object}[${property}]` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsObjectVar ) {\n\t\t\t\t\t\tcode.insertRight( statement.start, `var ${object} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.object.end, `;\\n${i0}` );\n\t\t\t\t\t\tcode.insertLeft( left.object.end, object );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( left.property.start, `var ${property} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.property.end, `;\\n${i0}` );\n\t\t\t\t\t\tcode.move( left.property.start, left.property.end, this.start );\n\n\t\t\t\t\t\tcode.insertLeft( left.object.end, `[${property}]` );\n\t\t\t\t\t\tcode.remove( left.object.end, left.property.start );\n\t\t\t\t\t\tcode.remove( left.property.end, left.end );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tlet declarators = [];\n\t\t\t\t\tif ( needsObjectVar ) declarators.push( object );\n\t\t\t\t\tif ( needsPropertyVar ) declarators.push( property );\n\t\t\t\t\tcode.insertRight( statement.start, `var ${declarators.join( ', ' )};\\n${i0}` );\n\n\t\t\t\t\tif ( needsObjectVar && needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( left.start, `( ${object} = ` );\n\t\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `, ${property} = ` );\n\t\t\t\t\t\tcode.overwrite( left.property.end, left.end, `, ${object}[${property}]` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsObjectVar ) {\n\t\t\t\t\t\tcode.insertRight( left.start, `( ${object} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.object.end, `, ${object}` );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if ( needsPropertyVar ) {\n\t\t\t\t\t\tcode.insertRight( left.property.start, `( ${property} = ` );\n\t\t\t\t\t\tcode.insertLeft( left.property.end, `, ` );\n\t\t\t\t\t\tcode.move( left.property.start, left.property.end, left.start );\n\n\t\t\t\t\t\tcode.overwrite( left.object.end, left.property.start, `[${property}]` );\n\t\t\t\t\t\tcode.remove( left.property.end, left.end );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.insertLeft( this.end, ` )` );\n\t\t\t\t}\n\n\t\t\t\tbase = object + ( left.computed || needsPropertyVar ? `[${property}]` : `.${property}` );\n\t\t\t}\n\n\t\t\tcode.insertRight( this.right.start, `Math.pow( ${base}, ` );\n\t\t\tcode.insertLeft( this.right.end, ` )` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class BinaryExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( this.operator === '**' && transforms.exponentiation ) {\n\t\t\tcode.insertRight( this.start, `Math.pow( ` );\n\t\t\tcode.overwrite( this.left.end, this.right.start, `, ` );\n\t\t\tcode.insertLeft( this.end, ` )` );\n\t\t}\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class BreakStatement extends Node {\n\tinitialise ( transforms ) {\n\t\tconst loop = this.findNearest( /(?:For(?:In)?|While)Statement/ );\n\t\tconst switchCase = this.findNearest( 'SwitchCase' );\n\n\t\tif ( loop && ( !switchCase || loop.depth > switchCase.depth ) ) {\n\t\t\tloop.canBreak = true;\n\t\t\tthis.loop = loop;\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.loop && this.loop.shouldRewriteAsFunction ) {\n\t\t\tif ( this.label ) throw new CompileError( this, 'Labels are not currently supported in a loop with locally-scoped variables' );\n\t\t\tcode.overwrite( this.start, this.start + 5, `return 'break'` );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments } from '../../utils/spread.js';\n\nexport default class CallExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.spreadRest && this.arguments.length > 1 ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif ( arg.type === 'SpreadElement' && isArguments( arg.argument ) ) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.spreadRest && this.arguments.length ) {\n\t\t\tlet hasSpreadElements = false;\n\t\t\tlet context;\n\n\t\t\tconst firstArgument = this.arguments[0];\n\n\t\t\tif ( this.arguments.length === 1 ) {\n\t\t\t\tif ( firstArgument.type === 'SpreadElement' ) {\n\t\t\t\t\tcode.remove( firstArgument.start, firstArgument.argument.start );\n\t\t\t\t\thasSpreadElements = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thasSpreadElements = spread( code, this.arguments, firstArgument.start, this.argumentsArrayAlias );\n\t\t\t}\n\n\t\t\tif ( hasSpreadElements ) {\n\t\t\t\tif ( this.callee.type === 'MemberExpression' ) {\n\t\t\t\t\tif ( this.callee.object.type === 'Identifier' ) {\n\t\t\t\t\t\tcontext = this.callee.object.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst statement = this.callee.object;\n\t\t\t\t\t\tconst i0 = statement.getIndentation();\n\t\t\t\t\t\tcontext = this.findScope( true ).createIdentifier( 'ref' );\n\t\t\t\t\t\tcode.insertRight( statement.start, `var ${context} = ` );\n\t\t\t\t\t\tcode.insertLeft( statement.end, `;\\n${i0}${context}` );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext = 'void 0';\n\t\t\t\t}\n\n\t\t\t\tcode.insertLeft( this.callee.end, '.apply' );\n\n\t\t\t\t// we need to handle `super()` different, because `SuperClass.call.apply`\n\t\t\t\t// isn't very helpful\n\t\t\t\tconst isSuper = this.callee.type === 'Super';\n\n\t\t\t\tif ( isSuper ) {\n\t\t\t\t\tthis.callee.noCall = true; // bit hacky...\n\n\t\t\t\t\tif ( this.arguments.length > 1 ) {\n\t\t\t\t\t\tif ( firstArgument.type !== 'SpreadElement' ) {\n\t\t\t\t\t\t\tcode.insertRight( firstArgument.start, `[ ` );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode.insertLeft( this.arguments[ this.arguments.length - 1 ].end, ' )' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse if ( this.arguments.length === 1 ) {\n\t\t\t\t\tcode.insertRight( firstArgument.start, `${context}, ` );\n\t\t\t\t} else {\n\t\t\t\t\tif ( firstArgument.type === 'SpreadElement' ) {\n\t\t\t\t\t\tcode.insertRight( firstArgument.start, `${context}, ` );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.insertRight( firstArgument.start, `${context}, [ ` );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.insertLeft( this.arguments[ this.arguments.length - 1 ].end, ' )' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","export function findIndex ( array, fn ) {\n\tfor ( let i = 0; i < array.length; i += 1 ) {\n\t\tif ( fn( array[i], i ) ) return i;\n\t}\n\n\treturn -1;\n}\n\nexport function find ( array, fn ) {\n\treturn array[ findIndex( array, fn ) ];\n}\n","let reserved = Object.create( null );\n'do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof'.split( ' ' )\n\t.forEach( word => reserved[ word ] = true );\n\nexport default reserved;\n","import Node from '../Node.js';\nimport { findIndex } from '../../utils/array.js';\nimport reserved from '../../utils/reserved.js';\n\n// TODO this code is pretty wild, tidy it up\nexport default class ClassBody extends Node {\n\ttranspile ( code, transforms, inFunctionExpression, superName ) {\n\t\tif ( transforms.classes ) {\n\t\t\tconst name = this.parent.name;\n\n\t\t\tconst indentStr = code.getIndentString();\n\t\t\tconst i0 = this.getIndentation() + ( inFunctionExpression ? indentStr : '' );\n\t\t\tconst i1 = i0 + indentStr;\n\n\t\t\tconst constructorIndex = findIndex( this.body, node => node.kind === 'constructor' );\n\t\t\tconst constructor = this.body[ constructorIndex ];\n\n\t\t\tlet introBlock = '';\n\t\t\tlet outroBlock = '';\n\n\t\t\tif ( this.body.length ) {\n\t\t\t\tcode.remove( this.start, this.body[0].start );\n\t\t\t\tcode.remove( this.body[ this.body.length - 1 ].end, this.end );\n\t\t\t} else {\n\t\t\t\tcode.remove( this.start, this.end );\n\t\t\t}\n\n\t\t\tif ( constructor ) {\n\t\t\t\tconstructor.value.body.isConstructorBody = true;\n\n\t\t\t\tconst previousMethod = this.body[ constructorIndex - 1 ];\n\t\t\t\tconst nextMethod = this.body[ constructorIndex + 1 ];\n\n\t\t\t\t// ensure constructor is first\n\t\t\t\tif ( constructorIndex > 0 ) {\n\t\t\t\t\tcode.remove( previousMethod.end, constructor.start );\n\t\t\t\t\tcode.move( constructor.start, nextMethod ? nextMethod.start : this.end - 1, this.body[0].start );\n\t\t\t\t}\n\n\t\t\t\tif ( !inFunctionExpression ) code.insertLeft( constructor.end, ';' );\n\t\t\t}\n\n\t\t\tif ( this.parent.superClass ) {\n\t\t\t\tlet inheritanceBlock = `if ( ${superName} ) ${name}.__proto__ = ${superName};\\n${i0}${name}.prototype = Object.create( ${superName} && ${superName}.prototype );\\n${i0}${name}.prototype.constructor = ${name};`;\n\n\t\t\t\tif ( constructor ) {\n\t\t\t\t\tintroBlock += `\\n\\n${i0}` + inheritanceBlock;\n\t\t\t\t} else {\n\t\t\t\t\tconst fn = `function ${name} () {` + ( superName ?\n\t\t\t\t\t\t`\\n${i1}${superName}.apply(this, arguments);\\n${i0}}` :\n\t\t\t\t\t\t`}` ) + ( inFunctionExpression ? '' : ';' ) + ( this.body.length ? `\\n\\n${i0}` : '' );\n\n\t\t\t\t\tinheritanceBlock = fn + inheritanceBlock;\n\t\t\t\t\tintroBlock += inheritanceBlock + `\\n\\n${i0}`;\n\t\t\t\t}\n\t\t\t} else if ( !constructor ) {\n\t\t\t\tlet fn = `function ${name} () {}`;\n\t\t\t\tif ( this.parent.type === 'ClassDeclaration' ) fn += ';';\n\t\t\t\tif ( this.body.length ) fn += `\\n\\n${i0}`;\n\n\t\t\t\tintroBlock += fn;\n\t\t\t}\n\n\t\t\tconst scope = this.findScope( false );\n\n\t\t\tlet prototypeGettersAndSetters = [];\n\t\t\tlet staticGettersAndSetters = [];\n\t\t\tlet prototypeAccessors;\n\t\t\tlet staticAccessors;\n\n\t\t\tthis.body.forEach( ( method, i ) => {\n\t\t\t\tif ( method.kind === 'constructor' ) {\n\t\t\t\t\tcode.overwrite( method.key.start, method.key.end, `function ${name}` );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( method.static ) code.remove( method.start, method.start + 7 );\n\n\t\t\t\tconst isAccessor = method.kind !== 'method';\n\t\t\t\tlet lhs;\n\n\t\t\t\tlet methodName = method.key.name;\n\t\t\t\tif ( scope.contains( methodName ) || reserved[ methodName ] ) methodName = scope.createIdentifier( methodName );\n\n\t\t\t\tif ( isAccessor ) {\n\t\t\t\t\tif ( method.computed ) {\n\t\t\t\t\t\tthrow new Error( 'Computed accessor properties are not currently supported' );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.remove( method.start, method.key.start );\n\n\t\t\t\t\tif ( method.static ) {\n\t\t\t\t\t\tif ( !~staticGettersAndSetters.indexOf( method.key.name ) ) staticGettersAndSetters.push( method.key.name );\n\t\t\t\t\t\tif ( !staticAccessors ) staticAccessors = scope.createIdentifier( 'staticAccessors' );\n\n\t\t\t\t\t\tlhs = `${staticAccessors}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( !~prototypeGettersAndSetters.indexOf( method.key.name ) ) prototypeGettersAndSetters.push( method.key.name );\n\t\t\t\t\t\tif ( !prototypeAccessors ) prototypeAccessors = scope.createIdentifier( 'prototypeAccessors' );\n\n\t\t\t\t\t\tlhs = `${prototypeAccessors}`;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlhs = method.static ?\n\t\t\t\t\t\t`${name}` :\n\t\t\t\t\t\t`${name}.prototype`;\n\t\t\t\t}\n\n\t\t\t\tif ( !method.computed ) lhs += '.';\n\n\t\t\t\tconst insertNewlines = ( constructorIndex > 0 && i === constructorIndex + 1 ) ||\n\t\t\t\t ( i === 0 && constructorIndex === this.body.length - 1 );\n\n\t\t\t\tif ( insertNewlines ) lhs = `\\n\\n${i0}${lhs}`;\n\n\t\t\t\tlet c = method.key.end;\n\t\t\t\tif ( method.computed ) {\n\t\t\t\t\twhile ( code.original[c] !== ']' ) c += 1;\n\t\t\t\t\tc += 1;\n\t\t\t\t}\n\n\t\t\t\tcode.insertRight( method.start, lhs );\n\n\t\t\t\tconst rhs = ( isAccessor ? `.${method.kind}` : '' ) + ` = function` + ( method.value.generator ? '* ' : ' ' ) + ( method.computed || isAccessor ? '' : `${methodName} ` );\n\t\t\t\tcode.remove( c, method.value.start );\n\t\t\t\tcode.insertRight( method.value.start, rhs );\n\t\t\t\tcode.insertLeft( method.end, ';' );\n\n\t\t\t\tif ( method.value.generator ) code.remove( method.start, method.key.start );\n\t\t\t});\n\n\t\t\tif ( prototypeGettersAndSetters.length || staticGettersAndSetters.length ) {\n\t\t\t\tlet intro = [];\n\t\t\t\tlet outro = [];\n\n\t\t\t\tif ( prototypeGettersAndSetters.length ) {\n\t\t\t\t\tintro.push( `var ${prototypeAccessors} = { ${prototypeGettersAndSetters.map( name => `${name}: {}` ).join( ',' )} };` );\n\t\t\t\t\toutro.push( `Object.defineProperties( ${name}.prototype, ${prototypeAccessors} );` );\n\t\t\t\t}\n\n\t\t\t\tif ( staticGettersAndSetters.length ) {\n\t\t\t\t\tintro.push( `var ${staticAccessors} = { ${staticGettersAndSetters.map( name => `${name}: {}` ).join( ',' )} };` );\n\t\t\t\t\toutro.push( `Object.defineProperties( ${name}, ${staticAccessors} );` );\n\t\t\t\t}\n\n\t\t\t\tif ( constructor ) introBlock += `\\n\\n${i0}`;\n\t\t\t\tintroBlock += intro.join( `\\n${i0}` );\n\t\t\t\tif ( !constructor ) introBlock += `\\n\\n${i0}`;\n\n\t\t\t\toutroBlock += `\\n\\n${i0}` + outro.join( `\\n${i0}` );\n\t\t\t}\n\n\t\t\tif ( constructor ) {\n\t\t\t\tcode.insertLeft( constructor.end, introBlock );\n\t\t\t} else {\n\t\t\t\tcode.insertRight( this.start, introBlock );\n\t\t\t}\n\n\t\t\tcode.insertLeft( this.end, outroBlock );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","// TODO this function is slightly flawed it works on the original string,\n// not its current edited state.\n// That's not a problem for the way that it's currently used, but it could\n// be in future...\nexport default function deindent ( node, code ) {\n\tconst start = node.start;\n\tconst end = node.end;\n\n\tconst indentStr = code.getIndentString();\n\tconst pattern = new RegExp( indentStr + '\\\\S', 'g' );\n\n\tif ( code.original.slice( start - indentStr.length, start ) === indentStr ) {\n\t\tcode.remove( start - indentStr.length, start );\n\t}\n\n\tconst slice = code.original.slice( start, end );\n\tlet match;\n\twhile ( match = pattern.exec( slice ) ) {\n\t\tif ( !node.program.indentExclusions[ match.index ] ) code.remove( start + match.index, start + match.index + indentStr.length );\n\t}\n}\n","import Node from '../Node.js';\nimport deindent from '../../utils/deindent.js';\n\nexport default class ClassDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.name = this.id.name;\n\t\tthis.findScope( true ).addDeclaration( this.id, 'class' );\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tif ( !this.superClass ) deindent( this.body, code );\n\n\t\t\tconst superName = this.superClass && ( this.superClass.name || 'superclass' );\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\t// if this is an export default statement, we have to move the export to\n\t\t\t// after the declaration, because `export default var Foo = ...` is illegal\n\t\t\tconst syntheticDefaultExport = this.parent.type === 'ExportDefaultDeclaration' ?\n\t\t\t\t`\\n\\n${i0}export default ${this.id.name};` :\n\t\t\t\t'';\n\n\t\t\tif ( syntheticDefaultExport ) code.remove( this.parent.start, this.start );\n\n\t\t\tcode.overwrite( this.start, this.id.start, 'var ' );\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tif ( this.superClass.end === this.body.start ) {\n\t\t\t\t\tcode.remove( this.id.end, this.superClass.start );\n\t\t\t\t\tcode.insertLeft( this.id.end, ` = (function (${superName}) {\\n${i1}` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite( this.id.end, this.superClass.start, ' = ' );\n\t\t\t\t\tcode.overwrite( this.superClass.end, this.body.start, `(function (${superName}) {\\n${i1}` );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( this.id.end === this.body.start ) {\n\t\t\t\t\tcode.insertLeft( this.id.end, ' = ' );\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite( this.id.end, this.body.start, ' = ' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.body.transpile( code, transforms, !!this.superClass, superName );\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tcode.insertLeft( this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}(` );\n\t\t\t\tcode.move( this.superClass.start, this.superClass.end, this.end );\n\t\t\t\tcode.insertRight( this.end, `));${syntheticDefaultExport}` );\n\t\t\t} else if ( syntheticDefaultExport ) {\n\t\t\t\tcode.insertRight( this.end, syntheticDefaultExport );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.body.transpile( code, transforms, false, null );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ClassExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.name = this.id ? this.id.name :\n\t\t this.parent.type === 'VariableDeclarator' ? this.parent.id.name :\n\t\t this.parent.type === 'AssignmentExpression' ? this.parent.left.name :\n\t\t this.findScope( true ).createIdentifier( 'anonymous' );\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tconst superName = this.superClass && ( this.superClass.name || 'superclass' );\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tcode.remove( this.start, this.superClass.start );\n\t\t\t\tcode.remove( this.superClass.end, this.body.start );\n\t\t\t\tcode.insertLeft( this.start, `(function (${superName}) {\\n${i1}` );\n\t\t\t} else {\n\t\t\t\tcode.overwrite( this.start, this.body.start, `(function () {\\n${i1}` );\n\t\t\t}\n\n\t\t\tthis.body.transpile( code, transforms, true, superName );\n\n\t\t\tconst outro = `\\n\\n${i1}return ${this.name};\\n${i0}}(`;\n\n\t\t\tif ( this.superClass ) {\n\t\t\t\tcode.insertLeft( this.end, outro );\n\t\t\t\tcode.move( this.superClass.start, this.superClass.end, this.end );\n\t\t\t\tcode.insertRight( this.end, '))' );\n\t\t\t} else {\n\t\t\t\tcode.insertLeft( this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}())` );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.body.transpile( code, transforms, false );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ContinueStatement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tconst loop = this.findNearest( /(?:For(?:In|Of)?|While)Statement/ );\n\t\tif ( loop.shouldRewriteAsFunction ) {\n\t\t\tif ( this.label ) throw new CompileError( this, 'Labels are not currently supported in a loop with locally-scoped variables' );\n\t\t\tcode.overwrite( this.start, this.start + 8, 'return' );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportDefaultDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.moduleExport ) throw new CompileError( this, 'export is not supported' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportNamedDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.moduleExport ) throw new CompileError( this, 'export is not supported' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","export default function extractNames ( node ) {\n\tconst names = [];\n\textractors[ node.type ]( names, node );\n\treturn names;\n}\n\nconst extractors = {\n\tIdentifier ( names, node ) {\n\t\tnames.push( node );\n\t},\n\n\tObjectPattern ( names, node ) {\n\t\tfor ( const prop of node.properties ) {\n\t\t\textractors[ prop.value.type ]( names, prop.value );\n\t\t}\n\t},\n\n\tArrayPattern ( names, node ) {\n\t\tfor ( const element of node.elements ) {\n\t\t\tif ( element ) extractors[ element.type ]( names, element );\n\t\t}\n\t},\n\n\tRestElement ( names, node ) {\n\t\textractors[ node.argument.type ]( names, node.argument );\n\t},\n\n\tAssignmentPattern ( names, node ) {\n\t\textractors[ node.left.type ]( names, node.left );\n\t}\n};\n","import Node from '../../Node.js';\nimport extractNames from '../../extractNames.js';\n\nexport default class LoopStatement extends Node {\n\tfindScope ( functionScope ) {\n\t\treturn functionScope || !this.createdScope ? this.parent.findScope( functionScope ) : this.body.scope;\n\t}\n\n\tinitialise ( transforms ) {\n\t\tthis.body.createScope();\n\t\tthis.createdScope = true;\n\n\t\t// this is populated as and when reassignments occur\n\t\tthis.reassigned = Object.create( null );\n\t\tthis.aliases = Object.create( null );\n\n\t\tsuper.initialise( transforms );\n\n\t\tif ( transforms.letConst ) {\n\t\t\t// see if any block-scoped declarations are referenced\n\t\t\t// inside function expressions\n\t\t\tconst names = Object.keys( this.body.scope.declarations );\n\n\t\t\tlet i = names.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst name = names[i];\n\t\t\t\tconst declaration = this.body.scope.declarations[ name ];\n\n\t\t\t\tlet j = declaration.instances.length;\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\tconst instance = declaration.instances[j];\n\t\t\t\t\tconst nearestFunctionExpression = instance.findNearest( /Function/ );\n\n\t\t\t\t\tif ( nearestFunctionExpression && nearestFunctionExpression.depth > this.depth ) {\n\t\t\t\t\t\tthis.shouldRewriteAsFunction = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( this.shouldRewriteAsFunction ) break;\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.shouldRewriteAsFunction ) {\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tconst argString = this.args ? ` ${this.args.join( ', ' )} ` : '';\n\t\t\tconst paramString = this.params ? ` ${this.params.join( ', ' )} ` : '';\n\n\t\t\tconst functionScope = this.findScope( true );\n\t\t\tconst loop = functionScope.createIdentifier( 'loop' );\n\n\t\t\tconst before = `var ${loop} = function (${paramString}) ` + ( this.body.synthetic ? `{\\n${i0}${code.getIndentString()}` : '' );\n\t\t\tconst after = ( this.body.synthetic ? `\\n${i0}}` : '' ) + `;\\n\\n${i0}`;\n\n\t\t\tcode.insertRight( this.body.start, before );\n\t\t\tcode.insertLeft( this.body.end, after );\n\t\t\tcode.move( this.start, this.body.start, this.body.end );\n\n\t\t\tif ( this.canBreak || this.canReturn ) {\n\t\t\t\tconst returned = functionScope.createIdentifier( 'returned' );\n\n\t\t\t\tlet insert = `{\\n${i1}var ${returned} = ${loop}(${argString});\\n`;\n\t\t\t\tif ( this.canBreak ) insert += `\\n${i1}if ( ${returned} === 'break' ) break;`;\n\t\t\t\tif ( this.canReturn ) insert += `\\n${i1}if ( ${returned} ) return returned.v;`;\n\t\t\t\tinsert += `\\n${i0}}`;\n\n\t\t\t\tcode.insertRight( this.body.end, insert );\n\t\t\t} else {\n\t\t\t\tconst callExpression = `${loop}(${argString});`;\n\n\t\t\t\tif ( this.type === 'DoWhileStatement' ) {\n\t\t\t\t\tcode.overwrite( this.start, this.body.start, `do {\\n${i1}${callExpression}\\n${i0}}` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.insertRight( this.body.end, callExpression );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForStatement extends LoopStatement {\n\tfindScope ( functionScope ) {\n\t\treturn functionScope || !this.createdScope ? this.parent.findScope( functionScope ) : this.body.scope;\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst i1 = this.getIndentation() + code.getIndentString();\n\n\t\tif ( this.shouldRewriteAsFunction ) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names = this.init.type === 'VariableDeclaration' ?\n\t\t\t\t[].concat.apply( [], this.init.declarations.map( declarator => extractNames( declarator.id ) ) ) :\n\t\t\t\t[];\n\n\t\t\tconst aliases = this.aliases;\n\n\t\t\tthis.args = names.map( name => name in this.aliases ? this.aliases[ name ].outer : name );\n\t\t\tthis.params = names.map( name => name in this.aliases ? this.aliases[ name ].inner : name );\n\n\t\t\tconst updates = Object.keys( this.reassigned )\n\t\t\t\t.map( name => `${aliases[ name ].outer} = ${aliases[ name ].inner};` );\n\n\t\t\tif ( updates.length ) {\n\t\t\t\tif ( this.body.synthetic ) {\n\t\t\t\t\tcode.insertLeft( this.body.body[0].end, `; ${updates.join(` `)}` );\n\t\t\t\t} else {\n\t\t\t\t\tconst lastStatement = this.body.body[ this.body.body.length - 1 ];\n\t\t\t\t\tcode.insertLeft( lastStatement.end, `\\n\\n${i1}${updates.join(`\\n${i1}`)}` );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForInStatement extends LoopStatement {\n\tfindScope ( functionScope ) {\n\t\treturn functionScope || !this.createdScope ? this.parent.findScope( functionScope ) : this.body.scope;\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.shouldRewriteAsFunction ) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names = this.left.type === 'VariableDeclaration' ?\n\t\t\t\t[].concat.apply( [], this.left.declarations.map( declarator => extractNames( declarator.id ) ) ) :\n\t\t\t\t[];\n\n\t\t\tthis.args = names.map( name => name in this.aliases ? this.aliases[ name ].outer : name );\n\t\t\tthis.params = names.map( name => name in this.aliases ? this.aliases[ name ].inner : name );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ForOfStatement extends LoopStatement {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.forOf && !transforms.dangerousForOf ) throw new CompileError( this, 'for...of statements are not supported. Use `transforms: { forOf: false }` to skip transformation and disable this error, or `transforms: { dangerousForOf: true }` if you know what you\\'re doing' );\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( !transforms.dangerousForOf ) {\n\t\t\tsuper.transpile( code, transforms );\n\t\t\treturn;\n\t\t}\n\n\t\t// edge case (#80)\n\t\tif ( !this.body.body[0] ) {\n\t\t\tif ( this.left.type === 'VariableDeclaration' && this.left.kind === 'var' ) {\n\t\t\t\tcode.remove( this.start, this.left.start );\n\t\t\t\tcode.insertLeft( this.left.end, ';' );\n\t\t\t\tcode.remove( this.left.end, this.end );\n\t\t\t} else {\n\t\t\t\tcode.remove( this.start, this.end );\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = this.findScope( true );\n\t\tconst i0 = this.getIndentation();\n\t\tconst i1 = i0 + code.getIndentString();\n\n\t\tconst key = scope.createIdentifier( 'i' );\n\t\tconst list = scope.createIdentifier( 'list' );\n\n\t\tif ( this.body.synthetic ) {\n\t\t\tcode.insertRight( this.left.start, `{\\n${i1}` );\n\t\t\tcode.insertLeft( this.body.body[0].end, `\\n${i0}}` );\n\t\t}\n\n\t\tconst bodyStart = this.body.body[0].start;\n\n\t\tcode.remove( this.left.end, this.right.start );\n\t\tcode.move( this.left.start, this.left.end, bodyStart );\n\t\tcode.insertLeft( this.left.end, ` = ${list}[${key}];\\n\\n${i1}` );\n\n\t\tcode.insertRight( this.right.start, `var ${key} = 0, ${list} = ` );\n\t\tcode.insertLeft( this.right.end, `; ${key} < ${list}.length; ${key} += 1` );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class FunctionDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.generator && transforms.generator ) {\n\t\t\tthrow new CompileError( this, 'Generators are not supported' );\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tthis.findScope( true ).addDeclaration( this.id, 'function' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class FunctionExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.generator && transforms.generator ) {\n\t\t\tthrow new CompileError( this, 'Generators are not supported' );\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tif ( this.id ) {\n\t\t\t// function expression IDs belong to the child scope...\n\t\t\tthis.body.scope.addDeclaration( this.id, 'function' );\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n}\n","export default function isReference ( node, parent ) {\n\tif ( node.type === 'MemberExpression' ) {\n\t\treturn !node.computed && isReference( node.object, node );\n\t}\n\n\tif ( node.type === 'Identifier' ) {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement \n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif ( !parent ) return true;\n\n\t\tif ( /(Function|Class)Expression/.test( parent.type ) ) return false;\n\n\t\tif ( parent.type === 'VariableDeclarator' ) return node === parent.init;\n\n\t\t// TODO is this right?\n\t\tif ( parent.type === 'MemberExpression' || parent.type === 'MethodDefinition' ) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\tif ( parent.type === 'ArrayPattern' ) return false;\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif ( parent.type === 'Property' ) {\n\t\t\tif ( parent.parent.type === 'ObjectPattern' ) return false;\n\t\t\treturn parent.computed || node === parent.value;\n\t\t}\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif ( parent.type === 'MethodDefinition' ) return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif ( parent.type === 'ExportSpecifier' && node !== parent.local ) return false;\n\n\t\treturn true;\n\t}\n}\n","import Node from '../Node.js';\nimport isReference from '../../utils/isReference.js';\n\nexport default class Identifier extends Node {\n\tfindScope ( functionScope ) {\n\t\tif ( this.parent.params && ~this.parent.params.indexOf( this ) ) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\tif ( this.parent.type === 'FunctionExpression' && this === this.parent.id ) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\treturn this.parent.findScope( functionScope\t);\n\t}\n\n\tinitialise ( transforms ) {\n\t\tif ( transforms.arrow && isReference( this, this.parent ) ) {\n\t\t\tif ( this.name === 'arguments' && !this.findScope( false ).contains( this.name ) ) {\n\t\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\t\tconst arrowFunction = this.findNearest( 'ArrowFunctionExpression' );\n\t\t\t\tconst loop = this.findNearest( /(?:For(?:In|Of)?|While)Statement/ );\n\n\t\t\t\tif ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth ) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\n\t\t\t\tif ( loop && loop.body.contains( this ) && loop.depth > lexicalBoundary.depth ) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.findScope( false ).addReference( this );\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.alias ) {\n\t\t\tcode.overwrite( this.start, this.end, this.alias, true );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ImportDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.moduleImport ) throw new CompileError( this, 'import is not supported' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportDefaultSpecifier extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.findScope( true ).addDeclaration( this.local, 'import' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportSpecifier extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.findScope( true ).addDeclaration( this.local, 'import' );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nconst IS_DATA_ATTRIBUTE = /-/;\n\nexport default class JSXAttribute extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( this.value ) {\n\t\t\tcode.overwrite( this.name.end, this.value.start, ': ' );\n\t\t} else {\n\t\t\t// tag without value\n\t\t\tcode.overwrite( this.name.start, this.name.end, `${this.name.name}: true`)\n\t\t}\n\n\t\tif ( IS_DATA_ATTRIBUTE.test( this.name.name ) ) {\n\t\t\tcode.overwrite( this.name.start, this.name.end, `'${this.name.name}'` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nfunction containsNewLine ( node ) {\n\treturn node.type === 'Literal' && !/\\S/.test( node.value ) && /\\n/.test( node.value );\n}\n\nexport default class JSXClosingElement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tlet spaceBeforeParen = true;\n\n\t\tconst lastChild = this.parent.children[ this.parent.children.length - 1 ];\n\n\t\t// omit space before closing paren if\n\t\t// a) this is on a separate line, or\n\t\t// b) there are no children but there are attributes\n\t\tif ( ( lastChild && containsNewLine( lastChild ) ) || ( this.parent.openingElement.attributes.length ) ) {\n\t\t\tspaceBeforeParen = false;\n\t\t}\n\n\t\tcode.overwrite( this.start, this.end, spaceBeforeParen ? ' )' : ')' );\n\t}\n}\n","import Node from '../Node.js';\n\nfunction normalise ( str, removeTrailingWhitespace ) {\n\tif ( removeTrailingWhitespace && /\\n/.test( str ) ) {\n\t\tstr = str.replace( /\\s+$/, '' );\n\t}\n\n\tstr = str\n\t\t.replace( /^\\n\\r?\\s+/, '' ) // remove leading newline + space\n\t\t.replace( /\\s*\\n\\r?\\s*/gm, ' ' ); // replace newlines with spaces\n\n\t// TODO prefer single quotes?\n\treturn JSON.stringify( str );\n}\n\nexport default class JSXElement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tconst children = this.children.filter( child => {\n\t\t\tif ( child.type !== 'Literal' ) return true;\n\n\t\t\t// remove whitespace-only literals, unless on a single line\n\t\t\treturn /\\S/.test( child.value ) || !/\\n/.test( child.value );\n\t\t});\n\n\t\tif ( children.length ) {\n\t\t\tlet c = this.openingElement.end;\n\n\t\t\tlet i;\n\t\t\tfor ( i = 0; i < children.length; i += 1 ) {\n\t\t\t\tconst child = children[i];\n\n\t\t\t\tconst tail = code.original[ c ] === '\\n' && child.type !== 'Literal' ? '' : ' ';\n\t\t\t\tcode.insertLeft( c, `,${tail}` );\n\n\t\t\t\tif ( child.type === 'Literal' ) {\n\t\t\t\t\tconst str = normalise( child.value, i === children.length - 1 );\n\t\t\t\t\tcode.overwrite( child.start, child.end, str );\n\t\t\t\t}\n\n\t\t\t\tc = child.end;\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXExpressionContainer extends Node {\n\ttranspile ( code, transforms ) {\n\t\tcode.remove( this.start, this.expression.start );\n\t\tcode.remove( this.expression.end, this.end );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXOpeningElement extends Node {\n\ttranspile ( code, transforms ) {\n\t\tcode.overwrite( this.start, this.name.start, `${this.program.jsx}( ` );\n\n\t\tconst html = this.name.type === 'JSXIdentifier' && this.name.name[0] === this.name.name[0].toLowerCase();\n\t\tif ( html ) code.insertRight( this.name.start, `'` );\n\n\t\tconst len = this.attributes.length;\n\t\tlet c = this.name.end;\n\n\t\tif ( len ) {\n\t\t\tlet i;\n\n\t\t\tlet hasSpread = false;\n\t\t\tfor ( i = 0; i < len; i += 1 ) {\n\t\t\t\tif ( this.attributes[i].type === 'JSXSpreadAttribute' ) {\n\t\t\t\t\thasSpread = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc = this.attributes[0].end;\n\n\t\t\tfor ( i = 0; i < len; i += 1 ) {\n\t\t\t\tconst attr = this.attributes[i];\n\n\t\t\t\tif ( i > 0 ) {\n\t\t\t\t\tcode.overwrite( c, attr.start, ', ' );\n\t\t\t\t}\n\n\t\t\t\tif ( hasSpread && attr.type !== 'JSXSpreadAttribute' ) {\n\t\t\t\t\tconst lastAttr = this.attributes[ i - 1 ];\n\t\t\t\t\tconst nextAttr = this.attributes[ i + 1 ];\n\n\t\t\t\t\tif ( !lastAttr || lastAttr.type === 'JSXSpreadAttribute' ) {\n\t\t\t\t\t\tcode.insertRight( attr.start, '{ ' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !nextAttr || nextAttr.type === 'JSXSpreadAttribute' ) {\n\t\t\t\t\t\tcode.insertLeft( attr.end, ' }' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tc = attr.end;\n\t\t\t}\n\n\t\t\tlet after;\n\t\t\tlet before;\n\t\t\tif ( hasSpread ) {\n\t\t\t\tif ( len === 1 ) {\n\t\t\t\t\tbefore = html ? `',` : ',';\n\t\t\t\t} else {\n\t\t\t\t\tbefore = html ? `', ${this.program.objectAssign}({},` : `, ${this.program.objectAssign}({},`;\n\t\t\t\t\tafter = ')';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbefore = html ? `', {` : ', {';\n\t\t\t\tafter = ' }';\n\t\t\t}\n\n\t\t\tcode.insertRight( this.name.end, before );\n\n\t\t\tif ( after ) {\n\t\t\t\tcode.insertLeft( this.attributes[ len - 1 ].end, after );\n\t\t\t}\n\t\t} else {\n\t\t\tcode.insertLeft( this.name.end, html ? `', null` : `, null` );\n\t\t\tc = this.name.end;\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\n\t\tif ( this.selfClosing ) {\n\t\t\tcode.overwrite( c, this.end, this.attributes.length ? `)` : ` )` );\n\t\t} else {\n\t\t\tcode.remove( c, this.end );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXSpreadAttribute extends Node {\n\ttranspile ( code, transforms ) {\n\t\tcode.remove( this.start, this.argument.start );\n\t\tcode.remove( this.argument.end, this.end );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","/*! https://mths.be/regenerate v1.3.1 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js/io.js or Browserified code,\n\t// and use it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar ERRORS = {\n\t\t'rangeOrder': 'A range\\u2019s `stop` value must be greater than or equal ' +\n\t\t\t'to the `start` value.',\n\t\t'codePointRange': 'Invalid code point value. Code points range from ' +\n\t\t\t'U+000000 to U+10FFFF.'\n\t};\n\n\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-pairs\n\tvar HIGH_SURROGATE_MIN = 0xD800;\n\tvar HIGH_SURROGATE_MAX = 0xDBFF;\n\tvar LOW_SURROGATE_MIN = 0xDC00;\n\tvar LOW_SURROGATE_MAX = 0xDFFF;\n\n\t// In Regenerate output, `\\0` is never preceded by `\\` because we sort by\n\t// code point value, so lets keep this regular expression simple.\n\tvar regexNull = /\\\\x00([^0123456789]|$)/g;\n\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar extend = function(destination, source) {\n\t\tvar key;\n\t\tfor (key in source) {\n\t\t\tif (hasOwnProperty.call(source, key)) {\n\t\t\t\tdestination[key] = source[key];\n\t\t\t}\n\t\t}\n\t\treturn destination;\n\t};\n\n\tvar forEach = function(array, callback) {\n\t\tvar index = -1;\n\t\tvar length = array.length;\n\t\twhile (++index < length) {\n\t\t\tcallback(array[index], index);\n\t\t}\n\t};\n\n\tvar toString = object.toString;\n\tvar isArray = function(value) {\n\t\treturn toString.call(value) == '[object Array]';\n\t};\n\tvar isNumber = function(value) {\n\t\treturn typeof value == 'number' ||\n\t\t\ttoString.call(value) == '[object Number]';\n\t};\n\n\t// This assumes that `number` is a positive integer that `toString()`s nicely\n\t// (which is the case for all code point values).\n\tvar zeroes = '0000';\n\tvar pad = function(number, totalCharacters) {\n\t\tvar string = String(number);\n\t\treturn string.length < totalCharacters\n\t\t\t? (zeroes + string).slice(-totalCharacters)\n\t\t\t: string;\n\t};\n\n\tvar hex = function(number) {\n\t\treturn Number(number).toString(16).toUpperCase();\n\t};\n\n\tvar slice = [].slice;\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar dataFromCodePoints = function(codePoints) {\n\t\tvar index = -1;\n\t\tvar length = codePoints.length;\n\t\tvar max = length - 1;\n\t\tvar result = [];\n\t\tvar isStart = true;\n\t\tvar tmp;\n\t\tvar previous = 0;\n\t\twhile (++index < length) {\n\t\t\ttmp = codePoints[index];\n\t\t\tif (isStart) {\n\t\t\t\tresult.push(tmp);\n\t\t\t\tprevious = tmp;\n\t\t\t\tisStart = false;\n\t\t\t} else {\n\t\t\t\tif (tmp == previous + 1) {\n\t\t\t\t\tif (index != max) {\n\t\t\t\t\t\tprevious = tmp;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tisStart = true;\n\t\t\t\t\t\tresult.push(tmp + 1);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// End the previous range and start a new one.\n\t\t\t\t\tresult.push(previous + 1, tmp);\n\t\t\t\t\tprevious = tmp;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!isStart) {\n\t\t\tresult.push(tmp + 1);\n\t\t}\n\t\treturn result;\n\t};\n\n\tvar dataRemove = function(data, codePoint) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\t// Modify this pair.\n\t\t\t\tif (codePoint == start) {\n\t\t\t\t\tif (end == start + 1) {\n\t\t\t\t\t\t// Just remove `start` and `end`.\n\t\t\t\t\t\tdata.splice(index, 2);\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Just replace `start` with a new value.\n\t\t\t\t\t\tdata[index] = codePoint + 1;\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t}\n\t\t\t\t} else if (codePoint == end - 1) {\n\t\t\t\t\t// Just replace `end` with a new value.\n\t\t\t\t\tdata[index + 1] = codePoint;\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\t// Replace `[start, end]` with `[startA, endA, startB, endB]`.\n\t\t\t\t\tdata.splice(index, 2, start, codePoint, codePoint + 1, end);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataRemoveRange = function(data, rangeStart, rangeEnd) {\n\t\tif (rangeEnd < rangeStart) {\n\t\t\tthrow Error(ERRORS.rangeOrder);\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\twhile (index < data.length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n\t\t\t// Exit as soon as no more matching pairs can be found.\n\t\t\tif (start > rangeEnd) {\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if this range pair is equal to, or forms a subset of, the range\n\t\t\t// to be removed.\n\t\t\t// E.g. we have `[0, 11, 40, 51]` and want to remove 0-10 → `[40, 51]`.\n\t\t\t// E.g. we have `[40, 51]` and want to remove 0-100 → `[]`.\n\t\t\tif (rangeStart <= start && rangeEnd >= end) {\n\t\t\t\t// Remove this pair.\n\t\t\t\tdata.splice(index, 2);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check if both `rangeStart` and `rangeEnd` are within the bounds of\n\t\t\t// this pair.\n\t\t\t// E.g. we have `[0, 11]` and want to remove 4-6 → `[0, 4, 7, 11]`.\n\t\t\tif (rangeStart >= start && rangeEnd < end) {\n\t\t\t\tif (rangeStart == start) {\n\t\t\t\t\t// Replace `[start, end]` with `[startB, endB]`.\n\t\t\t\t\tdata[index] = rangeEnd + 1;\n\t\t\t\t\tdata[index + 1] = end + 1;\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\t// Replace `[start, end]` with `[startA, endA, startB, endB]`.\n\t\t\t\tdata.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if only `rangeStart` is within the bounds of this pair.\n\t\t\t// E.g. we have `[0, 11]` and want to remove 4-20 → `[0, 4]`.\n\t\t\tif (rangeStart >= start && rangeStart <= end) {\n\t\t\t\t// Replace `end` with `rangeStart`.\n\t\t\t\tdata[index + 1] = rangeStart;\n\t\t\t\t// Note: we cannot `return` just yet, in case any following pairs still\n\t\t\t\t// contain matching code points.\n\t\t\t\t// E.g. we have `[0, 11, 14, 31]` and want to remove 4-20\n\t\t\t\t// → `[0, 4, 21, 31]`.\n\t\t\t}\n\n\t\t\t// Check if only `rangeEnd` is within the bounds of this pair.\n\t\t\t// E.g. we have `[14, 31]` and want to remove 4-20 → `[21, 31]`.\n\t\t\telse if (rangeEnd >= start && rangeEnd <= end) {\n\t\t\t\t// Just replace `start`.\n\t\t\t\tdata[index] = rangeEnd + 1;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\t var dataAdd = function(data, codePoint) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar lastIndex = null;\n\t\tvar length = data.length;\n\t\tif (codePoint < 0x0 || codePoint > 0x10FFFF) {\n\t\t\tthrow RangeError(ERRORS.codePointRange);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\n\t\t\t// Check if the code point is already in the set.\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tif (codePoint == start - 1) {\n\t\t\t\t// Just replace `start` with a new value.\n\t\t\t\tdata[index] = codePoint;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// At this point, if `start` is `greater` than `codePoint`, insert a new\n\t\t\t// `[start, end]` pair before the current pair, or after the current pair\n\t\t\t// if there is a known `lastIndex`.\n\t\t\tif (start > codePoint) {\n\t\t\t\tdata.splice(\n\t\t\t\t\tlastIndex != null ? lastIndex + 2 : 0,\n\t\t\t\t\t0,\n\t\t\t\t\tcodePoint,\n\t\t\t\t\tcodePoint + 1\n\t\t\t\t);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\tif (codePoint == end) {\n\t\t\t\t// Check if adding this code point causes two separate ranges to become\n\t\t\t\t// a single range, e.g. `dataAdd([0, 4, 5, 10], 4)` → `[0, 10]`.\n\t\t\t\tif (codePoint + 1 == data[index + 2]) {\n\t\t\t\t\tdata.splice(index, 4, start, data[index + 3]);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\t// Else, just replace `end` with a new value.\n\t\t\t\tdata[index + 1] = codePoint + 1;\n\t\t\t\treturn data;\n\t\t\t}\n\t\t\tlastIndex = index;\n\t\t\tindex += 2;\n\t\t}\n\t\t// The loop has finished; add the new pair to the end of the data set.\n\t\tdata.push(codePoint, codePoint + 1);\n\t\treturn data;\n\t};\n\n\tvar dataAddData = function(dataA, dataB) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar data = dataA.slice();\n\t\tvar length = dataB.length;\n\t\twhile (index < length) {\n\t\t\tstart = dataB[index];\n\t\t\tend = dataB[index + 1] - 1;\n\t\t\tif (start == end) {\n\t\t\t\tdata = dataAdd(data, start);\n\t\t\t} else {\n\t\t\t\tdata = dataAddRange(data, start, end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataRemoveData = function(dataA, dataB) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar data = dataA.slice();\n\t\tvar length = dataB.length;\n\t\twhile (index < length) {\n\t\t\tstart = dataB[index];\n\t\t\tend = dataB[index + 1] - 1;\n\t\t\tif (start == end) {\n\t\t\t\tdata = dataRemove(data, start);\n\t\t\t} else {\n\t\t\t\tdata = dataRemoveRange(data, start, end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataAddRange = function(data, rangeStart, rangeEnd) {\n\t\tif (rangeEnd < rangeStart) {\n\t\t\tthrow Error(ERRORS.rangeOrder);\n\t\t}\n\t\tif (\n\t\t\trangeStart < 0x0 || rangeStart > 0x10FFFF ||\n\t\t\trangeEnd < 0x0 || rangeEnd > 0x10FFFF\n\t\t) {\n\t\t\tthrow RangeError(ERRORS.codePointRange);\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar added = false;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\n\t\t\tif (added) {\n\t\t\t\t// The range has already been added to the set; at this point, we just\n\t\t\t\t// need to get rid of the following ranges in case they overlap.\n\n\t\t\t\t// Check if this range can be combined with the previous range.\n\t\t\t\tif (start == rangeEnd + 1) {\n\t\t\t\t\tdata.splice(index - 1, 2);\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Exit as soon as no more possibly overlapping pairs can be found.\n\t\t\t\tif (start > rangeEnd) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// E.g. `[0, 11, 12, 16]` and weve added 5-15, so we now have\n\t\t\t\t// `[0, 16, 12, 16]`. Remove the `12,16` part, as it lies within the\n\t\t\t\t// `0,16` range that was previously added.\n\t\t\t\tif (start >= rangeStart && start <= rangeEnd) {\n\t\t\t\t\t// `start` lies within the range that was previously added.\n\n\t\t\t\t\tif (end > rangeStart && end - 1 <= rangeEnd) {\n\t\t\t\t\t\t// `end` lies within the range that was previously added as well,\n\t\t\t\t\t\t// so remove this pair.\n\t\t\t\t\t\tdata.splice(index, 2);\n\t\t\t\t\t\tindex -= 2;\n\t\t\t\t\t\t// Note: we cannot `return` just yet, as there may still be other\n\t\t\t\t\t\t// overlapping pairs.\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// `start` lies within the range that was previously added, but\n\t\t\t\t\t\t// `end` doesnt. E.g. `[0, 11, 12, 31]` and weve added 5-15, so\n\t\t\t\t\t\t// now we have `[0, 16, 12, 31]`. This must be written as `[0, 31]`.\n\t\t\t\t\t\t// Remove the previously added `end` and the current `start`.\n\t\t\t\t\t\tdata.splice(index - 1, 2);\n\t\t\t\t\t\tindex -= 2;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: we cannot return yet.\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\telse if (start == rangeEnd + 1) {\n\t\t\t\tdata[index] = rangeStart;\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Check if a new pair must be inserted *before* the current one.\n\t\t\telse if (start > rangeEnd) {\n\t\t\t\tdata.splice(index, 0, rangeStart, rangeEnd + 1);\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\telse if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) {\n\t\t\t\t// The new range lies entirely within an existing range pair. No action\n\t\t\t\t// needed.\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\telse if (\n\t\t\t\t// E.g. `[0, 11]` and you add 5-15 → `[0, 16]`.\n\t\t\t\t(rangeStart >= start && rangeStart < end) ||\n\t\t\t\t// E.g. `[0, 3]` and you add 3-6 → `[0, 7]`.\n\t\t\t\tend == rangeStart\n\t\t\t) {\n\t\t\t\t// Replace `end` with the new value.\n\t\t\t\tdata[index + 1] = rangeEnd + 1;\n\t\t\t\t// Make sure the next range pair doesnt overlap, e.g. `[0, 11, 12, 14]`\n\t\t\t\t// and you add 5-15 → `[0, 16]`, i.e. remove the `12,14` part.\n\t\t\t\tadded = true;\n\t\t\t\t// Note: we cannot `return` just yet.\n\t\t\t}\n\n\t\t\telse if (rangeStart <= start && rangeEnd + 1 >= end) {\n\t\t\t\t// The new range is a superset of the old range.\n\t\t\t\tdata[index] = rangeStart;\n\t\t\t\tdata[index + 1] = rangeEnd + 1;\n\t\t\t\tadded = true;\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\t// The loop has finished without doing anything; add the new pair to the end\n\t\t// of the data set.\n\t\tif (!added) {\n\t\t\tdata.push(rangeStart, rangeEnd + 1);\n\t\t}\n\t\treturn data;\n\t};\n\n\tvar dataContains = function(data, codePoint) {\n\t\tvar index = 0;\n\t\tvar length = data.length;\n\t\t// Exit early if `codePoint` is not within `data`s overall range.\n\t\tvar start = data[index];\n\t\tvar end = data[length - 1];\n\t\tif (length >= 2) {\n\t\t\tif (codePoint < start || codePoint > end) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\tif (codePoint >= start && codePoint < end) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn false;\n\t};\n\n\tvar dataIntersection = function(data, codePoints) {\n\t\tvar index = 0;\n\t\tvar length = codePoints.length;\n\t\tvar codePoint;\n\t\tvar result = [];\n\t\twhile (index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tif (dataContains(data, codePoint)) {\n\t\t\t\tresult.push(codePoint);\n\t\t\t}\n\t\t\t++index;\n\t\t}\n\t\treturn dataFromCodePoints(result);\n\t};\n\n\tvar dataIsEmpty = function(data) {\n\t\treturn !data.length;\n\t};\n\n\tvar dataIsSingleton = function(data) {\n\t\t// Check if the set only represents a single code point.\n\t\treturn data.length == 2 && data[0] + 1 == data[1];\n\t};\n\n\tvar dataToArray = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar result = [];\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1];\n\t\t\twhile (start < end) {\n\t\t\t\tresult.push(start);\n\t\t\t\t++start;\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\tvar floor = Math.floor;\n\tvar highSurrogate = function(codePoint) {\n\t\treturn parseInt(\n\t\t\tfloor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN,\n\t\t\t10\n\t\t);\n\t};\n\n\tvar lowSurrogate = function(codePoint) {\n\t\treturn parseInt(\n\t\t\t(codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN,\n\t\t\t10\n\t\t);\n\t};\n\n\tvar stringFromCharCode = String.fromCharCode;\n\tvar codePointToString = function(codePoint) {\n\t\tvar string;\n\t\t// https://mathiasbynens.be/notes/javascript-escapes#single\n\t\t// Note: the `\\b` escape sequence for U+0008 BACKSPACE in strings has a\n\t\t// different meaning in regular expressions (word boundary), so it cannot\n\t\t// be used here.\n\t\tif (codePoint == 0x09) {\n\t\t\tstring = '\\\\t';\n\t\t}\n\t\t// Note: IE < 9 treats `'\\v'` as `'v'`, so avoid using it.\n\t\t// else if (codePoint == 0x0B) {\n\t\t// \tstring = '\\\\v';\n\t\t// }\n\t\telse if (codePoint == 0x0A) {\n\t\t\tstring = '\\\\n';\n\t\t}\n\t\telse if (codePoint == 0x0C) {\n\t\t\tstring = '\\\\f';\n\t\t}\n\t\telse if (codePoint == 0x0D) {\n\t\t\tstring = '\\\\r';\n\t\t}\n\t\telse if (codePoint == 0x5C) {\n\t\t\tstring = '\\\\\\\\';\n\t\t}\n\t\telse if (\n\t\t\tcodePoint == 0x24 ||\n\t\t\t(codePoint >= 0x28 && codePoint <= 0x2B) ||\n\t\t\tcodePoint == 0x2D || codePoint == 0x2E || codePoint == 0x3F ||\n\t\t\t(codePoint >= 0x5B && codePoint <= 0x5E) ||\n\t\t\t(codePoint >= 0x7B && codePoint <= 0x7D)\n\t\t) {\n\t\t\t// The code point maps to an unsafe printable ASCII character;\n\t\t\t// backslash-escape it. Heres the list of those symbols:\n\t\t\t//\n\t\t\t// $()*+-.?[\\]^{|}\n\t\t\t//\n\t\t\t// See #7 for more info.\n\t\t\tstring = '\\\\' + stringFromCharCode(codePoint);\n\t\t}\n\t\telse if (codePoint >= 0x20 && codePoint <= 0x7E) {\n\t\t\t// The code point maps to one of these printable ASCII symbols\n\t\t\t// (including the space character):\n\t\t\t//\n\t\t\t// !\"#%&',/0123456789:;<=>@ABCDEFGHIJKLMNO\n\t\t\t// PQRSTUVWXYZ_`abcdefghijklmnopqrstuvwxyz~\n\t\t\t//\n\t\t\t// These can safely be used directly.\n\t\t\tstring = stringFromCharCode(codePoint);\n\t\t}\n\t\telse if (codePoint <= 0xFF) {\n\t\t\t// https://mathiasbynens.be/notes/javascript-escapes#hexadecimal\n\t\t\tstring = '\\\\x' + pad(hex(codePoint), 2);\n\t\t}\n\t\telse { // `codePoint <= 0xFFFF` holds true.\n\t\t\t// https://mathiasbynens.be/notes/javascript-escapes#unicode\n\t\t\tstring = '\\\\u' + pad(hex(codePoint), 4);\n\t\t}\n\n\t\t// Theres no need to account for astral symbols / surrogate pairs here,\n\t\t// since `codePointToString` is private and only used for BMP code points.\n\t\t// But if thats what you need, just add an `else` block with this code:\n\t\t//\n\t\t// string = '\\\\u' + pad(hex(highSurrogate(codePoint)), 4)\n\t\t// \t+ '\\\\u' + pad(hex(lowSurrogate(codePoint)), 4);\n\n\t\treturn string;\n\t};\n\n\tvar codePointToStringUnicode = function(codePoint) {\n\t\tif (codePoint <= 0xFFFF) {\n\t\t\treturn codePointToString(codePoint);\n\t\t}\n\t\treturn '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\n\t};\n\n\tvar symbolToCodePoint = function(symbol) {\n\t\tvar length = symbol.length;\n\t\tvar first = symbol.charCodeAt(0);\n\t\tvar second;\n\t\tif (\n\t\t\tfirst >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX &&\n\t\t\tlength > 1 // There is a next code unit.\n\t\t) {\n\t\t\t// `first` is a high surrogate, and there is a next character. Assume\n\t\t\t// its a low surrogate (else its invalid usage of Regenerate anyway).\n\t\t\tsecond = symbol.charCodeAt(1);\n\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\treturn (first - HIGH_SURROGATE_MIN) * 0x400 +\n\t\t\t\tsecond - LOW_SURROGATE_MIN + 0x10000;\n\t\t}\n\t\treturn first;\n\t};\n\n\tvar createBMPCharacterClasses = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar result = '';\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\tif (dataIsSingleton(data)) {\n\t\t\treturn codePointToString(data[0]);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\t\t\tif (start == end) {\n\t\t\t\tresult += codePointToString(start);\n\t\t\t} else if (start + 1 == end) {\n\t\t\t\tresult += codePointToString(start) + codePointToString(end);\n\t\t\t} else {\n\t\t\t\tresult += codePointToString(start) + '-' + codePointToString(end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn '[' + result + ']';\n\t};\n\n\tvar createUnicodeCharacterClasses = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar result = '';\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\tif (dataIsSingleton(data)) {\n\t\t\treturn codePointToStringUnicode(data[0]);\n\t\t}\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\t\t\tif (start == end) {\n\t\t\t\tresult += codePointToStringUnicode(start);\n\t\t\t} else if (start + 1 == end) {\n\t\t\t\tresult += codePointToStringUnicode(start) + codePointToStringUnicode(end);\n\t\t\t} else {\n\t\t\t\tresult += codePointToStringUnicode(start) + '-' + codePointToStringUnicode(end);\n\t\t\t}\n\t\t\tindex += 2;\n\t\t}\n\t\treturn '[' + result + ']';\n\t};\n\n\tvar splitAtBMP = function(data) {\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar loneHighSurrogates = [];\n\t\tvar loneLowSurrogates = [];\n\t\tvar bmp = [];\n\t\tvar astral = [];\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar length = data.length;\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1; // Note: the `- 1` makes `end` inclusive.\n\n\t\t\tif (start < HIGH_SURROGATE_MIN) {\n\n\t\t\t\t// The range starts and ends before the high surrogate range.\n\t\t\t\t// E.g. (0, 0x10).\n\t\t\t\tif (end < HIGH_SURROGATE_MIN) {\n\t\t\t\t\tbmp.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends within it.\n\t\t\t\t// E.g. (0, 0xD855).\n\t\t\t\tif (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends in the low\n\t\t\t\t// surrogate range. E.g. (0, 0xDCFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts before the high surrogate range and ends after the\n\t\t\t\t// low surrogate range. E.g. (0, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tbmp.push(start, HIGH_SURROGATE_MIN);\n\t\t\t\t\tloneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) {\n\n\t\t\t\t// The range starts and ends in the high surrogate range.\n\t\t\t\t// E.g. (0xD855, 0xD866).\n\t\t\t\tif (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the high surrogate range and ends in the low\n\t\t\t\t// surrogate range. E.g. (0xD855, 0xDCFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the high surrogate range and ends after the low\n\t\t\t\t// surrogate range. E.g. (0xD855, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);\n\t\t\t\t\tloneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) {\n\n\t\t\t\t// The range starts and ends in the low surrogate range.\n\t\t\t\t// E.g. (0xDCFF, 0xDDFF).\n\t\t\t\tif (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneLowSurrogates.push(start, end + 1);\n\t\t\t\t}\n\n\t\t\t\t// The range starts in the low surrogate range and ends after the low\n\t\t\t\t// surrogate range. E.g. (0xDCFF, 0x10FFFF).\n\t\t\t\tif (end > LOW_SURROGATE_MAX) {\n\t\t\t\t\tloneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1);\n\t\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);\n\t\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) {\n\n\t\t\t\t// The range starts and ends after the low surrogate range.\n\t\t\t\t// E.g. (0xFFAA, 0x10FFFF).\n\t\t\t\tif (end <= 0xFFFF) {\n\t\t\t\t\tbmp.push(start, end + 1);\n\t\t\t\t} else {\n\t\t\t\t\tbmp.push(start, 0xFFFF + 1);\n\t\t\t\t\tastral.push(0xFFFF + 1, end + 1);\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// The range starts and ends in the astral range.\n\t\t\t\tastral.push(start, end + 1);\n\n\t\t\t}\n\n\t\t\tindex += 2;\n\t\t}\n\t\treturn {\n\t\t\t'loneHighSurrogates': loneHighSurrogates,\n\t\t\t'loneLowSurrogates': loneLowSurrogates,\n\t\t\t'bmp': bmp,\n\t\t\t'astral': astral\n\t\t};\n\t};\n\n\tvar optimizeSurrogateMappings = function(surrogateMappings) {\n\t\tvar result = [];\n\t\tvar tmpLow = [];\n\t\tvar addLow = false;\n\t\tvar mapping;\n\t\tvar nextMapping;\n\t\tvar highSurrogates;\n\t\tvar lowSurrogates;\n\t\tvar nextHighSurrogates;\n\t\tvar nextLowSurrogates;\n\t\tvar index = -1;\n\t\tvar length = surrogateMappings.length;\n\t\twhile (++index < length) {\n\t\t\tmapping = surrogateMappings[index];\n\t\t\tnextMapping = surrogateMappings[index + 1];\n\t\t\tif (!nextMapping) {\n\t\t\t\tresult.push(mapping);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\thighSurrogates = mapping[0];\n\t\t\tlowSurrogates = mapping[1];\n\t\t\tnextHighSurrogates = nextMapping[0];\n\t\t\tnextLowSurrogates = nextMapping[1];\n\n\t\t\t// Check for identical high surrogate ranges.\n\t\t\ttmpLow = lowSurrogates;\n\t\t\twhile (\n\t\t\t\tnextHighSurrogates &&\n\t\t\t\thighSurrogates[0] == nextHighSurrogates[0] &&\n\t\t\t\thighSurrogates[1] == nextHighSurrogates[1]\n\t\t\t) {\n\t\t\t\t// Merge with the next item.\n\t\t\t\tif (dataIsSingleton(nextLowSurrogates)) {\n\t\t\t\t\ttmpLow = dataAdd(tmpLow, nextLowSurrogates[0]);\n\t\t\t\t} else {\n\t\t\t\t\ttmpLow = dataAddRange(\n\t\t\t\t\t\ttmpLow,\n\t\t\t\t\t\tnextLowSurrogates[0],\n\t\t\t\t\t\tnextLowSurrogates[1] - 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t\tmapping = surrogateMappings[index];\n\t\t\t\thighSurrogates = mapping[0];\n\t\t\t\tlowSurrogates = mapping[1];\n\t\t\t\tnextMapping = surrogateMappings[index + 1];\n\t\t\t\tnextHighSurrogates = nextMapping && nextMapping[0];\n\t\t\t\tnextLowSurrogates = nextMapping && nextMapping[1];\n\t\t\t\taddLow = true;\n\t\t\t}\n\t\t\tresult.push([\n\t\t\t\thighSurrogates,\n\t\t\t\taddLow ? tmpLow : lowSurrogates\n\t\t\t]);\n\t\t\taddLow = false;\n\t\t}\n\t\treturn optimizeByLowSurrogates(result);\n\t};\n\n\tvar optimizeByLowSurrogates = function(surrogateMappings) {\n\t\tif (surrogateMappings.length == 1) {\n\t\t\treturn surrogateMappings;\n\t\t}\n\t\tvar index = -1;\n\t\tvar innerIndex = -1;\n\t\twhile (++index < surrogateMappings.length) {\n\t\t\tvar mapping = surrogateMappings[index];\n\t\t\tvar lowSurrogates = mapping[1];\n\t\t\tvar lowSurrogateStart = lowSurrogates[0];\n\t\t\tvar lowSurrogateEnd = lowSurrogates[1];\n\t\t\tinnerIndex = index; // Note: the loop starts at the next index.\n\t\t\twhile (++innerIndex < surrogateMappings.length) {\n\t\t\t\tvar otherMapping = surrogateMappings[innerIndex];\n\t\t\t\tvar otherLowSurrogates = otherMapping[1];\n\t\t\t\tvar otherLowSurrogateStart = otherLowSurrogates[0];\n\t\t\t\tvar otherLowSurrogateEnd = otherLowSurrogates[1];\n\t\t\t\tif (\n\t\t\t\t\tlowSurrogateStart == otherLowSurrogateStart &&\n\t\t\t\t\tlowSurrogateEnd == otherLowSurrogateEnd\n\t\t\t\t) {\n\t\t\t\t\t// Add the code points in the other item to this one.\n\t\t\t\t\tif (dataIsSingleton(otherMapping[0])) {\n\t\t\t\t\t\tmapping[0] = dataAdd(mapping[0], otherMapping[0][0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmapping[0] = dataAddRange(\n\t\t\t\t\t\t\tmapping[0],\n\t\t\t\t\t\t\totherMapping[0][0],\n\t\t\t\t\t\t\totherMapping[0][1] - 1\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Remove the other, now redundant, item.\n\t\t\t\t\tsurrogateMappings.splice(innerIndex, 1);\n\t\t\t\t\t--innerIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn surrogateMappings;\n\t};\n\n\tvar surrogateSet = function(data) {\n\t\t// Exit early if `data` is an empty set.\n\t\tif (!data.length) {\n\t\t\treturn [];\n\t\t}\n\n\t\t// Iterate over the data per `(start, end)` pair.\n\t\tvar index = 0;\n\t\tvar start;\n\t\tvar end;\n\t\tvar startHigh;\n\t\tvar startLow;\n\t\tvar prevStartHigh = 0;\n\t\tvar prevEndHigh = 0;\n\t\tvar tmpLow = [];\n\t\tvar endHigh;\n\t\tvar endLow;\n\t\tvar surrogateMappings = [];\n\t\tvar length = data.length;\n\t\tvar dataHigh = [];\n\t\twhile (index < length) {\n\t\t\tstart = data[index];\n\t\t\tend = data[index + 1] - 1;\n\n\t\t\tstartHigh = highSurrogate(start);\n\t\t\tstartLow = lowSurrogate(start);\n\t\t\tendHigh = highSurrogate(end);\n\t\t\tendLow = lowSurrogate(end);\n\n\t\t\tvar startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN;\n\t\t\tvar endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX;\n\t\t\tvar complete = false;\n\n\t\t\t// Append the previous high-surrogate-to-low-surrogate mappings.\n\t\t\t// Step 1: `(startHigh, startLow)` to `(startHigh, LOW_SURROGATE_MAX)`.\n\t\t\tif (\n\t\t\t\tstartHigh == endHigh ||\n\t\t\t\tstartsWithLowestLowSurrogate && endsWithHighestLowSurrogate\n\t\t\t) {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[startHigh, endHigh + 1],\n\t\t\t\t\t[startLow, endLow + 1]\n\t\t\t\t]);\n\t\t\t\tcomplete = true;\n\t\t\t} else {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[startHigh, startHigh + 1],\n\t\t\t\t\t[startLow, LOW_SURROGATE_MAX + 1]\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\t// Step 2: `(startHigh + 1, LOW_SURROGATE_MIN)` to\n\t\t\t// `(endHigh - 1, LOW_SURROGATE_MAX)`.\n\t\t\tif (!complete && startHigh + 1 < endHigh) {\n\t\t\t\tif (endsWithHighestLowSurrogate) {\n\t\t\t\t\t// Combine step 2 and step 3.\n\t\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t\t[startHigh + 1, endHigh + 1],\n\t\t\t\t\t\t[LOW_SURROGATE_MIN, endLow + 1]\n\t\t\t\t\t]);\n\t\t\t\t\tcomplete = true;\n\t\t\t\t} else {\n\t\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t\t[startHigh + 1, endHigh],\n\t\t\t\t\t\t[LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1]\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Step 3. `(endHigh, LOW_SURROGATE_MIN)` to `(endHigh, endLow)`.\n\t\t\tif (!complete) {\n\t\t\t\tsurrogateMappings.push([\n\t\t\t\t\t[endHigh, endHigh + 1],\n\t\t\t\t\t[LOW_SURROGATE_MIN, endLow + 1]\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\tprevStartHigh = startHigh;\n\t\t\tprevEndHigh = endHigh;\n\n\t\t\tindex += 2;\n\t\t}\n\n\t\t// The format of `surrogateMappings` is as follows:\n\t\t//\n\t\t// [ surrogateMapping1, surrogateMapping2 ]\n\t\t//\n\t\t// i.e.:\n\t\t//\n\t\t// [\n\t\t// [ highSurrogates1, lowSurrogates1 ],\n\t\t// [ highSurrogates2, lowSurrogates2 ]\n\t\t// ]\n\t\treturn optimizeSurrogateMappings(surrogateMappings);\n\t};\n\n\tvar createSurrogateCharacterClasses = function(surrogateMappings) {\n\t\tvar result = [];\n\t\tforEach(surrogateMappings, function(surrogateMapping) {\n\t\t\tvar highSurrogates = surrogateMapping[0];\n\t\t\tvar lowSurrogates = surrogateMapping[1];\n\t\t\tresult.push(\n\t\t\t\tcreateBMPCharacterClasses(highSurrogates) +\n\t\t\t\tcreateBMPCharacterClasses(lowSurrogates)\n\t\t\t);\n\t\t});\n\t\treturn result.join('|');\n\t};\n\n\tvar createCharacterClassesFromData = function(data, bmpOnly, hasUnicodeFlag) {\n\t\tif (hasUnicodeFlag) {\n\t\t\treturn createUnicodeCharacterClasses(data);\n\t\t}\n\t\tvar result = [];\n\n\t\tvar parts = splitAtBMP(data);\n\t\tvar loneHighSurrogates = parts.loneHighSurrogates;\n\t\tvar loneLowSurrogates = parts.loneLowSurrogates;\n\t\tvar bmp = parts.bmp;\n\t\tvar astral = parts.astral;\n\t\tvar hasAstral = !dataIsEmpty(parts.astral);\n\t\tvar hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates);\n\t\tvar hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates);\n\n\t\tvar surrogateMappings = surrogateSet(astral);\n\n\t\tif (bmpOnly) {\n\t\t\tbmp = dataAddData(bmp, loneHighSurrogates);\n\t\t\thasLoneHighSurrogates = false;\n\t\t\tbmp = dataAddData(bmp, loneLowSurrogates);\n\t\t\thasLoneLowSurrogates = false;\n\t\t}\n\n\t\tif (!dataIsEmpty(bmp)) {\n\t\t\t// The data set contains BMP code points that are not high surrogates\n\t\t\t// needed for astral code points in the set.\n\t\t\tresult.push(createBMPCharacterClasses(bmp));\n\t\t}\n\t\tif (surrogateMappings.length) {\n\t\t\t// The data set contains astral code points; append character classes\n\t\t\t// based on their surrogate pairs.\n\t\t\tresult.push(createSurrogateCharacterClasses(surrogateMappings));\n\t\t}\n\t\t// https://gist.github.com/mathiasbynens/bbe7f870208abcfec860\n\t\tif (hasLoneHighSurrogates) {\n\t\t\tresult.push(\n\t\t\t\tcreateBMPCharacterClasses(loneHighSurrogates) +\n\t\t\t\t// Make sure the high surrogates arent part of a surrogate pair.\n\t\t\t\t'(?![\\\\uDC00-\\\\uDFFF])'\n\t\t\t);\n\t\t}\n\t\tif (hasLoneLowSurrogates) {\n\t\t\tresult.push(\n\t\t\t\t// It is not possible to accurately assert the low surrogates arent\n\t\t\t\t// part of a surrogate pair, since JavaScript regular expressions do\n\t\t\t\t// not support lookbehind.\n\t\t\t\t'(?:[^\\\\uD800-\\\\uDBFF]|^)' +\n\t\t\t\tcreateBMPCharacterClasses(loneLowSurrogates)\n\t\t\t);\n\t\t}\n\t\treturn result.join('|');\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\t// `regenerate` can be used as a constructor (and new methods can be added to\n\t// its prototype) but also as a regular function, the latter of which is the\n\t// documented and most common usage. For that reason, its not capitalized.\n\tvar regenerate = function(value) {\n\t\tif (arguments.length > 1) {\n\t\t\tvalue = slice.call(arguments);\n\t\t}\n\t\tif (this instanceof regenerate) {\n\t\t\tthis.data = [];\n\t\t\treturn value ? this.add(value) : this;\n\t\t}\n\t\treturn (new regenerate).add(value);\n\t};\n\n\tregenerate.version = '1.3.1';\n\n\tvar proto = regenerate.prototype;\n\textend(proto, {\n\t\t'add': function(value) {\n\t\t\tvar $this = this;\n\t\t\tif (value == null) {\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (value instanceof regenerate) {\n\t\t\t\t// Allow passing other Regenerate instances.\n\t\t\t\t$this.data = dataAddData($this.data, value.data);\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvalue = slice.call(arguments);\n\t\t\t}\n\t\t\tif (isArray(value)) {\n\t\t\t\tforEach(value, function(item) {\n\t\t\t\t\t$this.add(item);\n\t\t\t\t});\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\t$this.data = dataAdd(\n\t\t\t\t$this.data,\n\t\t\t\tisNumber(value) ? value : symbolToCodePoint(value)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'remove': function(value) {\n\t\t\tvar $this = this;\n\t\t\tif (value == null) {\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (value instanceof regenerate) {\n\t\t\t\t// Allow passing other Regenerate instances.\n\t\t\t\t$this.data = dataRemoveData($this.data, value.data);\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tvalue = slice.call(arguments);\n\t\t\t}\n\t\t\tif (isArray(value)) {\n\t\t\t\tforEach(value, function(item) {\n\t\t\t\t\t$this.remove(item);\n\t\t\t\t});\n\t\t\t\treturn $this;\n\t\t\t}\n\t\t\t$this.data = dataRemove(\n\t\t\t\t$this.data,\n\t\t\t\tisNumber(value) ? value : symbolToCodePoint(value)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'addRange': function(start, end) {\n\t\t\tvar $this = this;\n\t\t\t$this.data = dataAddRange($this.data,\n\t\t\t\tisNumber(start) ? start : symbolToCodePoint(start),\n\t\t\t\tisNumber(end) ? end : symbolToCodePoint(end)\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'removeRange': function(start, end) {\n\t\t\tvar $this = this;\n\t\t\tvar startCodePoint = isNumber(start) ? start : symbolToCodePoint(start);\n\t\t\tvar endCodePoint = isNumber(end) ? end : symbolToCodePoint(end);\n\t\t\t$this.data = dataRemoveRange(\n\t\t\t\t$this.data,\n\t\t\t\tstartCodePoint,\n\t\t\t\tendCodePoint\n\t\t\t);\n\t\t\treturn $this;\n\t\t},\n\t\t'intersection': function(argument) {\n\t\t\tvar $this = this;\n\t\t\t// Allow passing other Regenerate instances.\n\t\t\t// TODO: Optimize this by writing and using `dataIntersectionData()`.\n\t\t\tvar array = argument instanceof regenerate ?\n\t\t\t\tdataToArray(argument.data) :\n\t\t\t\targument;\n\t\t\t$this.data = dataIntersection($this.data, array);\n\t\t\treturn $this;\n\t\t},\n\t\t'contains': function(codePoint) {\n\t\t\treturn dataContains(\n\t\t\t\tthis.data,\n\t\t\t\tisNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint)\n\t\t\t);\n\t\t},\n\t\t'clone': function() {\n\t\t\tvar set = new regenerate;\n\t\t\tset.data = this.data.slice(0);\n\t\t\treturn set;\n\t\t},\n\t\t'toString': function(options) {\n\t\t\tvar result = createCharacterClassesFromData(\n\t\t\t\tthis.data,\n\t\t\t\toptions ? options.bmpOnly : false,\n\t\t\t\toptions ? options.hasUnicodeFlag : false\n\t\t\t);\n\t\t\tif (!result) {\n\t\t\t\t// For an empty set, return something that can be inserted `/here/` to\n\t\t\t\t// form a valid regular expression. Avoid `(?:)` since that matches the\n\t\t\t\t// empty string.\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\t// Use `\\0` instead of `\\x00` where possible.\n\t\t\treturn result.replace(regexNull, '\\\\0$1');\n\t\t},\n\t\t'toRegExp': function(flags) {\n\t\t\tvar pattern = this.toString(\n\t\t\t\tflags && flags.indexOf('u') != -1 ?\n\t\t\t\t\t{ 'hasUnicodeFlag': true } :\n\t\t\t\t\tnull\n\t\t\t);\n\t\t\treturn RegExp(pattern, flags || '');\n\t\t},\n\t\t'valueOf': function() { // Note: `valueOf` is aliased as `toArray`.\n\t\t\treturn dataToArray(this.data);\n\t\t}\n\t});\n\n\tproto.toArray = proto.valueOf;\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn regenerate;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = regenerate;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfreeExports.regenerate = regenerate;\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.regenerate = regenerate;\n\t}\n\n}(this));\n","// Generated using `npm run build`. Do not edit.\n'use strict';\n\nconst regenerate = require('regenerate');\n\nexports.REGULAR = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0xFFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0xFFFF)],\n\t['w', regenerate(0x5F)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0xFFFF)]\n]);\n\nexports.UNICODE = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x10FFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0x10FFFF)],\n\t['w', regenerate(0x5F)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0x10FFFF)]\n]);\n\nexports.UNICODE_IGNORE_CASE = new Map([\n\t['d', regenerate()\n\t\t.addRange(0x30, 0x39)],\n\t['D', regenerate()\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x10FFFF)],\n\t['s', regenerate(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF)\n\t\t.addRange(0x9, 0xD)\n\t\t.addRange(0x2000, 0x200A)\n\t\t.addRange(0x2028, 0x2029)],\n\t['S', regenerate()\n\t\t.addRange(0x0, 0x8)\n\t\t.addRange(0xE, 0x1F)\n\t\t.addRange(0x21, 0x9F)\n\t\t.addRange(0xA1, 0x167F)\n\t\t.addRange(0x1681, 0x1FFF)\n\t\t.addRange(0x200B, 0x2027)\n\t\t.addRange(0x202A, 0x202E)\n\t\t.addRange(0x2030, 0x205E)\n\t\t.addRange(0x2060, 0x2FFF)\n\t\t.addRange(0x3001, 0xFEFE)\n\t\t.addRange(0xFF00, 0x10FFFF)],\n\t['w', regenerate(0x5F, 0x17F, 0x212A)\n\t\t.addRange(0x30, 0x39)\n\t\t.addRange(0x41, 0x5A)\n\t\t.addRange(0x61, 0x7A)],\n\t['W', regenerate(0x4B, 0x53, 0x60)\n\t\t.addRange(0x0, 0x2F)\n\t\t.addRange(0x3A, 0x40)\n\t\t.addRange(0x5B, 0x5E)\n\t\t.addRange(0x7B, 0x10FFFF)]\n]);\n","module.exports = new Map([\n\t[0x4B, 0x212A],\n\t[0x53, 0x17F],\n\t[0x6B, 0x212A],\n\t[0x73, 0x17F],\n\t[0xB5, 0x39C],\n\t[0xC5, 0x212B],\n\t[0xDF, 0x1E9E],\n\t[0xE5, 0x212B],\n\t[0x17F, 0x53],\n\t[0x1C4, 0x1C5],\n\t[0x1C5, 0x1C4],\n\t[0x1C7, 0x1C8],\n\t[0x1C8, 0x1C7],\n\t[0x1CA, 0x1CB],\n\t[0x1CB, 0x1CA],\n\t[0x1F1, 0x1F2],\n\t[0x1F2, 0x1F1],\n\t[0x29D, 0xA7B2],\n\t[0x345, 0x1FBE],\n\t[0x392, 0x3D0],\n\t[0x395, 0x3F5],\n\t[0x398, 0x3F4],\n\t[0x399, 0x1FBE],\n\t[0x39A, 0x3F0],\n\t[0x39C, 0xB5],\n\t[0x3A0, 0x3D6],\n\t[0x3A1, 0x3F1],\n\t[0x3A3, 0x3C2],\n\t[0x3A6, 0x3D5],\n\t[0x3A9, 0x2126],\n\t[0x3B8, 0x3F4],\n\t[0x3C2, 0x3A3],\n\t[0x3C9, 0x2126],\n\t[0x3D0, 0x392],\n\t[0x3D1, 0x3F4],\n\t[0x3D5, 0x3A6],\n\t[0x3D6, 0x3A0],\n\t[0x3F0, 0x39A],\n\t[0x3F1, 0x3A1],\n\t[0x3F4, [\n\t\t0x398,\n\t\t0x3D1,\n\t\t0x3B8\n\t]],\n\t[0x3F5, 0x395],\n\t[0x13A0, 0xAB70],\n\t[0x13A1, 0xAB71],\n\t[0x13A2, 0xAB72],\n\t[0x13A3, 0xAB73],\n\t[0x13A4, 0xAB74],\n\t[0x13A5, 0xAB75],\n\t[0x13A6, 0xAB76],\n\t[0x13A7, 0xAB77],\n\t[0x13A8, 0xAB78],\n\t[0x13A9, 0xAB79],\n\t[0x13AA, 0xAB7A],\n\t[0x13AB, 0xAB7B],\n\t[0x13AC, 0xAB7C],\n\t[0x13AD, 0xAB7D],\n\t[0x13AE, 0xAB7E],\n\t[0x13AF, 0xAB7F],\n\t[0x13B0, 0xAB80],\n\t[0x13B1, 0xAB81],\n\t[0x13B2, 0xAB82],\n\t[0x13B3, 0xAB83],\n\t[0x13B4, 0xAB84],\n\t[0x13B5, 0xAB85],\n\t[0x13B6, 0xAB86],\n\t[0x13B7, 0xAB87],\n\t[0x13B8, 0xAB88],\n\t[0x13B9, 0xAB89],\n\t[0x13BA, 0xAB8A],\n\t[0x13BB, 0xAB8B],\n\t[0x13BC, 0xAB8C],\n\t[0x13BD, 0xAB8D],\n\t[0x13BE, 0xAB8E],\n\t[0x13BF, 0xAB8F],\n\t[0x13C0, 0xAB90],\n\t[0x13C1, 0xAB91],\n\t[0x13C2, 0xAB92],\n\t[0x13C3, 0xAB93],\n\t[0x13C4, 0xAB94],\n\t[0x13C5, 0xAB95],\n\t[0x13C6, 0xAB96],\n\t[0x13C7, 0xAB97],\n\t[0x13C8, 0xAB98],\n\t[0x13C9, 0xAB99],\n\t[0x13CA, 0xAB9A],\n\t[0x13CB, 0xAB9B],\n\t[0x13CC, 0xAB9C],\n\t[0x13CD, 0xAB9D],\n\t[0x13CE, 0xAB9E],\n\t[0x13CF, 0xAB9F],\n\t[0x13D0, 0xABA0],\n\t[0x13D1, 0xABA1],\n\t[0x13D2, 0xABA2],\n\t[0x13D3, 0xABA3],\n\t[0x13D4, 0xABA4],\n\t[0x13D5, 0xABA5],\n\t[0x13D6, 0xABA6],\n\t[0x13D7, 0xABA7],\n\t[0x13D8, 0xABA8],\n\t[0x13D9, 0xABA9],\n\t[0x13DA, 0xABAA],\n\t[0x13DB, 0xABAB],\n\t[0x13DC, 0xABAC],\n\t[0x13DD, 0xABAD],\n\t[0x13DE, 0xABAE],\n\t[0x13DF, 0xABAF],\n\t[0x13E0, 0xABB0],\n\t[0x13E1, 0xABB1],\n\t[0x13E2, 0xABB2],\n\t[0x13E3, 0xABB3],\n\t[0x13E4, 0xABB4],\n\t[0x13E5, 0xABB5],\n\t[0x13E6, 0xABB6],\n\t[0x13E7, 0xABB7],\n\t[0x13E8, 0xABB8],\n\t[0x13E9, 0xABB9],\n\t[0x13EA, 0xABBA],\n\t[0x13EB, 0xABBB],\n\t[0x13EC, 0xABBC],\n\t[0x13ED, 0xABBD],\n\t[0x13EE, 0xABBE],\n\t[0x13EF, 0xABBF],\n\t[0x13F0, 0x13F8],\n\t[0x13F1, 0x13F9],\n\t[0x13F2, 0x13FA],\n\t[0x13F3, 0x13FB],\n\t[0x13F4, 0x13FC],\n\t[0x13F5, 0x13FD],\n\t[0x13F8, 0x13F0],\n\t[0x13F9, 0x13F1],\n\t[0x13FA, 0x13F2],\n\t[0x13FB, 0x13F3],\n\t[0x13FC, 0x13F4],\n\t[0x13FD, 0x13F5],\n\t[0x1E60, 0x1E9B],\n\t[0x1E9B, 0x1E60],\n\t[0x1E9E, 0xDF],\n\t[0x1F80, 0x1F88],\n\t[0x1F81, 0x1F89],\n\t[0x1F82, 0x1F8A],\n\t[0x1F83, 0x1F8B],\n\t[0x1F84, 0x1F8C],\n\t[0x1F85, 0x1F8D],\n\t[0x1F86, 0x1F8E],\n\t[0x1F87, 0x1F8F],\n\t[0x1F88, 0x1F80],\n\t[0x1F89, 0x1F81],\n\t[0x1F8A, 0x1F82],\n\t[0x1F8B, 0x1F83],\n\t[0x1F8C, 0x1F84],\n\t[0x1F8D, 0x1F85],\n\t[0x1F8E, 0x1F86],\n\t[0x1F8F, 0x1F87],\n\t[0x1F90, 0x1F98],\n\t[0x1F91, 0x1F99],\n\t[0x1F92, 0x1F9A],\n\t[0x1F93, 0x1F9B],\n\t[0x1F94, 0x1F9C],\n\t[0x1F95, 0x1F9D],\n\t[0x1F96, 0x1F9E],\n\t[0x1F97, 0x1F9F],\n\t[0x1F98, 0x1F90],\n\t[0x1F99, 0x1F91],\n\t[0x1F9A, 0x1F92],\n\t[0x1F9B, 0x1F93],\n\t[0x1F9C, 0x1F94],\n\t[0x1F9D, 0x1F95],\n\t[0x1F9E, 0x1F96],\n\t[0x1F9F, 0x1F97],\n\t[0x1FA0, 0x1FA8],\n\t[0x1FA1, 0x1FA9],\n\t[0x1FA2, 0x1FAA],\n\t[0x1FA3, 0x1FAB],\n\t[0x1FA4, 0x1FAC],\n\t[0x1FA5, 0x1FAD],\n\t[0x1FA6, 0x1FAE],\n\t[0x1FA7, 0x1FAF],\n\t[0x1FA8, 0x1FA0],\n\t[0x1FA9, 0x1FA1],\n\t[0x1FAA, 0x1FA2],\n\t[0x1FAB, 0x1FA3],\n\t[0x1FAC, 0x1FA4],\n\t[0x1FAD, 0x1FA5],\n\t[0x1FAE, 0x1FA6],\n\t[0x1FAF, 0x1FA7],\n\t[0x1FB3, 0x1FBC],\n\t[0x1FBC, 0x1FB3],\n\t[0x1FBE, [\n\t\t0x345,\n\t\t0x399\n\t]],\n\t[0x1FC3, 0x1FCC],\n\t[0x1FCC, 0x1FC3],\n\t[0x1FF3, 0x1FFC],\n\t[0x1FFC, 0x1FF3],\n\t[0x2126, [\n\t\t0x3A9,\n\t\t0x3C9\n\t]],\n\t[0x212A, 0x4B],\n\t[0x212B, [\n\t\t0xC5,\n\t\t0xE5\n\t]],\n\t[0xA7B2, 0x29D],\n\t[0xA7B3, 0xAB53],\n\t[0xA7B4, 0xA7B5],\n\t[0xA7B5, 0xA7B4],\n\t[0xA7B6, 0xA7B7],\n\t[0xA7B7, 0xA7B6],\n\t[0xAB53, 0xA7B3],\n\t[0xAB70, 0x13A0],\n\t[0xAB71, 0x13A1],\n\t[0xAB72, 0x13A2],\n\t[0xAB73, 0x13A3],\n\t[0xAB74, 0x13A4],\n\t[0xAB75, 0x13A5],\n\t[0xAB76, 0x13A6],\n\t[0xAB77, 0x13A7],\n\t[0xAB78, 0x13A8],\n\t[0xAB79, 0x13A9],\n\t[0xAB7A, 0x13AA],\n\t[0xAB7B, 0x13AB],\n\t[0xAB7C, 0x13AC],\n\t[0xAB7D, 0x13AD],\n\t[0xAB7E, 0x13AE],\n\t[0xAB7F, 0x13AF],\n\t[0xAB80, 0x13B0],\n\t[0xAB81, 0x13B1],\n\t[0xAB82, 0x13B2],\n\t[0xAB83, 0x13B3],\n\t[0xAB84, 0x13B4],\n\t[0xAB85, 0x13B5],\n\t[0xAB86, 0x13B6],\n\t[0xAB87, 0x13B7],\n\t[0xAB88, 0x13B8],\n\t[0xAB89, 0x13B9],\n\t[0xAB8A, 0x13BA],\n\t[0xAB8B, 0x13BB],\n\t[0xAB8C, 0x13BC],\n\t[0xAB8D, 0x13BD],\n\t[0xAB8E, 0x13BE],\n\t[0xAB8F, 0x13BF],\n\t[0xAB90, 0x13C0],\n\t[0xAB91, 0x13C1],\n\t[0xAB92, 0x13C2],\n\t[0xAB93, 0x13C3],\n\t[0xAB94, 0x13C4],\n\t[0xAB95, 0x13C5],\n\t[0xAB96, 0x13C6],\n\t[0xAB97, 0x13C7],\n\t[0xAB98, 0x13C8],\n\t[0xAB99, 0x13C9],\n\t[0xAB9A, 0x13CA],\n\t[0xAB9B, 0x13CB],\n\t[0xAB9C, 0x13CC],\n\t[0xAB9D, 0x13CD],\n\t[0xAB9E, 0x13CE],\n\t[0xAB9F, 0x13CF],\n\t[0xABA0, 0x13D0],\n\t[0xABA1, 0x13D1],\n\t[0xABA2, 0x13D2],\n\t[0xABA3, 0x13D3],\n\t[0xABA4, 0x13D4],\n\t[0xABA5, 0x13D5],\n\t[0xABA6, 0x13D6],\n\t[0xABA7, 0x13D7],\n\t[0xABA8, 0x13D8],\n\t[0xABA9, 0x13D9],\n\t[0xABAA, 0x13DA],\n\t[0xABAB, 0x13DB],\n\t[0xABAC, 0x13DC],\n\t[0xABAD, 0x13DD],\n\t[0xABAE, 0x13DE],\n\t[0xABAF, 0x13DF],\n\t[0xABB0, 0x13E0],\n\t[0xABB1, 0x13E1],\n\t[0xABB2, 0x13E2],\n\t[0xABB3, 0x13E3],\n\t[0xABB4, 0x13E4],\n\t[0xABB5, 0x13E5],\n\t[0xABB6, 0x13E6],\n\t[0xABB7, 0x13E7],\n\t[0xABB8, 0x13E8],\n\t[0xABB9, 0x13E9],\n\t[0xABBA, 0x13EA],\n\t[0xABBB, 0x13EB],\n\t[0xABBC, 0x13EC],\n\t[0xABBD, 0x13ED],\n\t[0xABBE, 0x13EE],\n\t[0xABBF, 0x13EF],\n\t[0x10400, 0x10428],\n\t[0x10401, 0x10429],\n\t[0x10402, 0x1042A],\n\t[0x10403, 0x1042B],\n\t[0x10404, 0x1042C],\n\t[0x10405, 0x1042D],\n\t[0x10406, 0x1042E],\n\t[0x10407, 0x1042F],\n\t[0x10408, 0x10430],\n\t[0x10409, 0x10431],\n\t[0x1040A, 0x10432],\n\t[0x1040B, 0x10433],\n\t[0x1040C, 0x10434],\n\t[0x1040D, 0x10435],\n\t[0x1040E, 0x10436],\n\t[0x1040F, 0x10437],\n\t[0x10410, 0x10438],\n\t[0x10411, 0x10439],\n\t[0x10412, 0x1043A],\n\t[0x10413, 0x1043B],\n\t[0x10414, 0x1043C],\n\t[0x10415, 0x1043D],\n\t[0x10416, 0x1043E],\n\t[0x10417, 0x1043F],\n\t[0x10418, 0x10440],\n\t[0x10419, 0x10441],\n\t[0x1041A, 0x10442],\n\t[0x1041B, 0x10443],\n\t[0x1041C, 0x10444],\n\t[0x1041D, 0x10445],\n\t[0x1041E, 0x10446],\n\t[0x1041F, 0x10447],\n\t[0x10420, 0x10448],\n\t[0x10421, 0x10449],\n\t[0x10422, 0x1044A],\n\t[0x10423, 0x1044B],\n\t[0x10424, 0x1044C],\n\t[0x10425, 0x1044D],\n\t[0x10426, 0x1044E],\n\t[0x10427, 0x1044F],\n\t[0x10428, 0x10400],\n\t[0x10429, 0x10401],\n\t[0x1042A, 0x10402],\n\t[0x1042B, 0x10403],\n\t[0x1042C, 0x10404],\n\t[0x1042D, 0x10405],\n\t[0x1042E, 0x10406],\n\t[0x1042F, 0x10407],\n\t[0x10430, 0x10408],\n\t[0x10431, 0x10409],\n\t[0x10432, 0x1040A],\n\t[0x10433, 0x1040B],\n\t[0x10434, 0x1040C],\n\t[0x10435, 0x1040D],\n\t[0x10436, 0x1040E],\n\t[0x10437, 0x1040F],\n\t[0x10438, 0x10410],\n\t[0x10439, 0x10411],\n\t[0x1043A, 0x10412],\n\t[0x1043B, 0x10413],\n\t[0x1043C, 0x10414],\n\t[0x1043D, 0x10415],\n\t[0x1043E, 0x10416],\n\t[0x1043F, 0x10417],\n\t[0x10440, 0x10418],\n\t[0x10441, 0x10419],\n\t[0x10442, 0x1041A],\n\t[0x10443, 0x1041B],\n\t[0x10444, 0x1041C],\n\t[0x10445, 0x1041D],\n\t[0x10446, 0x1041E],\n\t[0x10447, 0x1041F],\n\t[0x10448, 0x10420],\n\t[0x10449, 0x10421],\n\t[0x1044A, 0x10422],\n\t[0x1044B, 0x10423],\n\t[0x1044C, 0x10424],\n\t[0x1044D, 0x10425],\n\t[0x1044E, 0x10426],\n\t[0x1044F, 0x10427],\n\t[0x10C80, 0x10CC0],\n\t[0x10C81, 0x10CC1],\n\t[0x10C82, 0x10CC2],\n\t[0x10C83, 0x10CC3],\n\t[0x10C84, 0x10CC4],\n\t[0x10C85, 0x10CC5],\n\t[0x10C86, 0x10CC6],\n\t[0x10C87, 0x10CC7],\n\t[0x10C88, 0x10CC8],\n\t[0x10C89, 0x10CC9],\n\t[0x10C8A, 0x10CCA],\n\t[0x10C8B, 0x10CCB],\n\t[0x10C8C, 0x10CCC],\n\t[0x10C8D, 0x10CCD],\n\t[0x10C8E, 0x10CCE],\n\t[0x10C8F, 0x10CCF],\n\t[0x10C90, 0x10CD0],\n\t[0x10C91, 0x10CD1],\n\t[0x10C92, 0x10CD2],\n\t[0x10C93, 0x10CD3],\n\t[0x10C94, 0x10CD4],\n\t[0x10C95, 0x10CD5],\n\t[0x10C96, 0x10CD6],\n\t[0x10C97, 0x10CD7],\n\t[0x10C98, 0x10CD8],\n\t[0x10C99, 0x10CD9],\n\t[0x10C9A, 0x10CDA],\n\t[0x10C9B, 0x10CDB],\n\t[0x10C9C, 0x10CDC],\n\t[0x10C9D, 0x10CDD],\n\t[0x10C9E, 0x10CDE],\n\t[0x10C9F, 0x10CDF],\n\t[0x10CA0, 0x10CE0],\n\t[0x10CA1, 0x10CE1],\n\t[0x10CA2, 0x10CE2],\n\t[0x10CA3, 0x10CE3],\n\t[0x10CA4, 0x10CE4],\n\t[0x10CA5, 0x10CE5],\n\t[0x10CA6, 0x10CE6],\n\t[0x10CA7, 0x10CE7],\n\t[0x10CA8, 0x10CE8],\n\t[0x10CA9, 0x10CE9],\n\t[0x10CAA, 0x10CEA],\n\t[0x10CAB, 0x10CEB],\n\t[0x10CAC, 0x10CEC],\n\t[0x10CAD, 0x10CED],\n\t[0x10CAE, 0x10CEE],\n\t[0x10CAF, 0x10CEF],\n\t[0x10CB0, 0x10CF0],\n\t[0x10CB1, 0x10CF1],\n\t[0x10CB2, 0x10CF2],\n\t[0x10CC0, 0x10C80],\n\t[0x10CC1, 0x10C81],\n\t[0x10CC2, 0x10C82],\n\t[0x10CC3, 0x10C83],\n\t[0x10CC4, 0x10C84],\n\t[0x10CC5, 0x10C85],\n\t[0x10CC6, 0x10C86],\n\t[0x10CC7, 0x10C87],\n\t[0x10CC8, 0x10C88],\n\t[0x10CC9, 0x10C89],\n\t[0x10CCA, 0x10C8A],\n\t[0x10CCB, 0x10C8B],\n\t[0x10CCC, 0x10C8C],\n\t[0x10CCD, 0x10C8D],\n\t[0x10CCE, 0x10C8E],\n\t[0x10CCF, 0x10C8F],\n\t[0x10CD0, 0x10C90],\n\t[0x10CD1, 0x10C91],\n\t[0x10CD2, 0x10C92],\n\t[0x10CD3, 0x10C93],\n\t[0x10CD4, 0x10C94],\n\t[0x10CD5, 0x10C95],\n\t[0x10CD6, 0x10C96],\n\t[0x10CD7, 0x10C97],\n\t[0x10CD8, 0x10C98],\n\t[0x10CD9, 0x10C99],\n\t[0x10CDA, 0x10C9A],\n\t[0x10CDB, 0x10C9B],\n\t[0x10CDC, 0x10C9C],\n\t[0x10CDD, 0x10C9D],\n\t[0x10CDE, 0x10C9E],\n\t[0x10CDF, 0x10C9F],\n\t[0x10CE0, 0x10CA0],\n\t[0x10CE1, 0x10CA1],\n\t[0x10CE2, 0x10CA2],\n\t[0x10CE3, 0x10CA3],\n\t[0x10CE4, 0x10CA4],\n\t[0x10CE5, 0x10CA5],\n\t[0x10CE6, 0x10CA6],\n\t[0x10CE7, 0x10CA7],\n\t[0x10CE8, 0x10CA8],\n\t[0x10CE9, 0x10CA9],\n\t[0x10CEA, 0x10CAA],\n\t[0x10CEB, 0x10CAB],\n\t[0x10CEC, 0x10CAC],\n\t[0x10CED, 0x10CAD],\n\t[0x10CEE, 0x10CAE],\n\t[0x10CEF, 0x10CAF],\n\t[0x10CF0, 0x10CB0],\n\t[0x10CF1, 0x10CB1],\n\t[0x10CF2, 0x10CB2],\n\t[0x118A0, 0x118C0],\n\t[0x118A1, 0x118C1],\n\t[0x118A2, 0x118C2],\n\t[0x118A3, 0x118C3],\n\t[0x118A4, 0x118C4],\n\t[0x118A5, 0x118C5],\n\t[0x118A6, 0x118C6],\n\t[0x118A7, 0x118C7],\n\t[0x118A8, 0x118C8],\n\t[0x118A9, 0x118C9],\n\t[0x118AA, 0x118CA],\n\t[0x118AB, 0x118CB],\n\t[0x118AC, 0x118CC],\n\t[0x118AD, 0x118CD],\n\t[0x118AE, 0x118CE],\n\t[0x118AF, 0x118CF],\n\t[0x118B0, 0x118D0],\n\t[0x118B1, 0x118D1],\n\t[0x118B2, 0x118D2],\n\t[0x118B3, 0x118D3],\n\t[0x118B4, 0x118D4],\n\t[0x118B5, 0x118D5],\n\t[0x118B6, 0x118D6],\n\t[0x118B7, 0x118D7],\n\t[0x118B8, 0x118D8],\n\t[0x118B9, 0x118D9],\n\t[0x118BA, 0x118DA],\n\t[0x118BB, 0x118DB],\n\t[0x118BC, 0x118DC],\n\t[0x118BD, 0x118DD],\n\t[0x118BE, 0x118DE],\n\t[0x118BF, 0x118DF],\n\t[0x118C0, 0x118A0],\n\t[0x118C1, 0x118A1],\n\t[0x118C2, 0x118A2],\n\t[0x118C3, 0x118A3],\n\t[0x118C4, 0x118A4],\n\t[0x118C5, 0x118A5],\n\t[0x118C6, 0x118A6],\n\t[0x118C7, 0x118A7],\n\t[0x118C8, 0x118A8],\n\t[0x118C9, 0x118A9],\n\t[0x118CA, 0x118AA],\n\t[0x118CB, 0x118AB],\n\t[0x118CC, 0x118AC],\n\t[0x118CD, 0x118AD],\n\t[0x118CE, 0x118AE],\n\t[0x118CF, 0x118AF],\n\t[0x118D0, 0x118B0],\n\t[0x118D1, 0x118B1],\n\t[0x118D2, 0x118B2],\n\t[0x118D3, 0x118B3],\n\t[0x118D4, 0x118B4],\n\t[0x118D5, 0x118B5],\n\t[0x118D6, 0x118B6],\n\t[0x118D7, 0x118B7],\n\t[0x118D8, 0x118B8],\n\t[0x118D9, 0x118B9],\n\t[0x118DA, 0x118BA],\n\t[0x118DB, 0x118BB],\n\t[0x118DC, 0x118BC],\n\t[0x118DD, 0x118BD],\n\t[0x118DE, 0x118BE],\n\t[0x118DF, 0x118BF]\n]);\n","module.exports = [\n\t'Bidi_Class',\n\t'Bidi_Paired_Bracket_Type',\n\t'Binary_Property',\n\t'Block',\n\t'General_Category',\n\t'Script',\n\t'Script_Extensions'\n];\n","module.exports = {\n\t'aliasToProperty': new Map([\n\t\t['cjkaccountingnumeric', 'kAccountingNumeric'],\n\t\t['kaccountingnumeric', 'kAccountingNumeric'],\n\t\t['cjkothernumeric', 'kOtherNumeric'],\n\t\t['kothernumeric', 'kOtherNumeric'],\n\t\t['cjkprimarynumeric', 'kPrimaryNumeric'],\n\t\t['kprimarynumeric', 'kPrimaryNumeric'],\n\t\t['nv', 'Numeric_Value'],\n\t\t['numericvalue', 'Numeric_Value'],\n\t\t['cf', 'Case_Folding'],\n\t\t['casefolding', 'Case_Folding'],\n\t\t['cjkcompatibilityvariant', 'kCompatibilityVariant'],\n\t\t['kcompatibilityvariant', 'kCompatibilityVariant'],\n\t\t['dm', 'Decomposition_Mapping'],\n\t\t['decompositionmapping', 'Decomposition_Mapping'],\n\t\t['fcnfkc', 'FC_NFKC_Closure'],\n\t\t['fcnfkcclosure', 'FC_NFKC_Closure'],\n\t\t['lc', 'Lowercase_Mapping'],\n\t\t['lowercasemapping', 'Lowercase_Mapping'],\n\t\t['nfkccf', 'NFKC_Casefold'],\n\t\t['nfkccasefold', 'NFKC_Casefold'],\n\t\t['scf', 'Simple_Case_Folding'],\n\t\t['simplecasefolding', 'Simple_Case_Folding'],\n\t\t['sfc', 'Simple_Case_Folding'],\n\t\t['slc', 'Simple_Lowercase_Mapping'],\n\t\t['simplelowercasemapping', 'Simple_Lowercase_Mapping'],\n\t\t['stc', 'Simple_Titlecase_Mapping'],\n\t\t['simpletitlecasemapping', 'Simple_Titlecase_Mapping'],\n\t\t['suc', 'Simple_Uppercase_Mapping'],\n\t\t['simpleuppercasemapping', 'Simple_Uppercase_Mapping'],\n\t\t['tc', 'Titlecase_Mapping'],\n\t\t['titlecasemapping', 'Titlecase_Mapping'],\n\t\t['uc', 'Uppercase_Mapping'],\n\t\t['uppercasemapping', 'Uppercase_Mapping'],\n\t\t['bmg', 'Bidi_Mirroring_Glyph'],\n\t\t['bidimirroringglyph', 'Bidi_Mirroring_Glyph'],\n\t\t['bpb', 'Bidi_Paired_Bracket'],\n\t\t['bidipairedbracket', 'Bidi_Paired_Bracket'],\n\t\t['cjkiicore', 'kIICore'],\n\t\t['kiicore', 'kIICore'],\n\t\t['cjkirggsource', 'kIRG_GSource'],\n\t\t['kirggsource', 'kIRG_GSource'],\n\t\t['cjkirghsource', 'kIRG_HSource'],\n\t\t['kirghsource', 'kIRG_HSource'],\n\t\t['cjkirgjsource', 'kIRG_JSource'],\n\t\t['kirgjsource', 'kIRG_JSource'],\n\t\t['cjkirgkpsource', 'kIRG_KPSource'],\n\t\t['kirgkpsource', 'kIRG_KPSource'],\n\t\t['cjkirgksource', 'kIRG_KSource'],\n\t\t['kirgksource', 'kIRG_KSource'],\n\t\t['cjkirgmsource', 'kIRG_MSource'],\n\t\t['kirgmsource', 'kIRG_MSource'],\n\t\t['cjkirgtsource', 'kIRG_TSource'],\n\t\t['kirgtsource', 'kIRG_TSource'],\n\t\t['cjkirgusource', 'kIRG_USource'],\n\t\t['kirgusource', 'kIRG_USource'],\n\t\t['cjkirgvsource', 'kIRG_VSource'],\n\t\t['kirgvsource', 'kIRG_VSource'],\n\t\t['cjkrsunicode', 'kRSUnicode'],\n\t\t['krsunicode', 'kRSUnicode'],\n\t\t['unicoderadicalstroke', 'kRSUnicode'],\n\t\t['urs', 'kRSUnicode'],\n\t\t['isc', 'ISO_Comment'],\n\t\t['isocomment', 'ISO_Comment'],\n\t\t['jsn', 'Jamo_Short_Name'],\n\t\t['jamoshortname', 'Jamo_Short_Name'],\n\t\t['na', 'Name'],\n\t\t['name', 'Name'],\n\t\t['na1', 'Unicode_1_Name'],\n\t\t['unicode1name', 'Unicode_1_Name'],\n\t\t['namealias', 'Name_Alias'],\n\t\t['scx', 'Script_Extensions'],\n\t\t['scriptextensions', 'Script_Extensions'],\n\t\t['age', 'Age'],\n\t\t['blk', 'Block'],\n\t\t['block', 'Block'],\n\t\t['sc', 'Script'],\n\t\t['script', 'Script'],\n\t\t['bc', 'Bidi_Class'],\n\t\t['bidiclass', 'Bidi_Class'],\n\t\t['bpt', 'Bidi_Paired_Bracket_Type'],\n\t\t['bidipairedbrackettype', 'Bidi_Paired_Bracket_Type'],\n\t\t['ccc', 'Canonical_Combining_Class'],\n\t\t['canonicalcombiningclass', 'Canonical_Combining_Class'],\n\t\t['dt', 'Decomposition_Type'],\n\t\t['decompositiontype', 'Decomposition_Type'],\n\t\t['ea', 'East_Asian_Width'],\n\t\t['eastasianwidth', 'East_Asian_Width'],\n\t\t['gc', 'General_Category'],\n\t\t['generalcategory', 'General_Category'],\n\t\t['gcb', 'Grapheme_Cluster_Break'],\n\t\t['graphemeclusterbreak', 'Grapheme_Cluster_Break'],\n\t\t['hst', 'Hangul_Syllable_Type'],\n\t\t['hangulsyllabletype', 'Hangul_Syllable_Type'],\n\t\t['inpc', 'Indic_Positional_Category'],\n\t\t['indicpositionalcategory', 'Indic_Positional_Category'],\n\t\t['insc', 'Indic_Syllabic_Category'],\n\t\t['indicsyllabiccategory', 'Indic_Syllabic_Category'],\n\t\t['jg', 'Joining_Group'],\n\t\t['joininggroup', 'Joining_Group'],\n\t\t['jt', 'Joining_Type'],\n\t\t['joiningtype', 'Joining_Type'],\n\t\t['lb', 'Line_Break'],\n\t\t['linebreak', 'Line_Break'],\n\t\t['nfcqc', 'NFC_Quick_Check'],\n\t\t['nfcquickcheck', 'NFC_Quick_Check'],\n\t\t['nfdqc', 'NFD_Quick_Check'],\n\t\t['nfdquickcheck', 'NFD_Quick_Check'],\n\t\t['nfkcqc', 'NFKC_Quick_Check'],\n\t\t['nfkcquickcheck', 'NFKC_Quick_Check'],\n\t\t['nfkdqc', 'NFKD_Quick_Check'],\n\t\t['nfkdquickcheck', 'NFKD_Quick_Check'],\n\t\t['nt', 'Numeric_Type'],\n\t\t['numerictype', 'Numeric_Type'],\n\t\t['sb', 'Sentence_Break'],\n\t\t['sentencebreak', 'Sentence_Break'],\n\t\t['wb', 'Word_Break'],\n\t\t['wordbreak', 'Word_Break'],\n\t\t['ahex', 'ASCII_Hex_Digit'],\n\t\t['asciihexdigit', 'ASCII_Hex_Digit'],\n\t\t['alpha', 'Alphabetic'],\n\t\t['alphabetic', 'Alphabetic'],\n\t\t['bidic', 'Bidi_Control'],\n\t\t['bidicontrol', 'Bidi_Control'],\n\t\t['bidim', 'Bidi_Mirrored'],\n\t\t['bidimirrored', 'Bidi_Mirrored'],\n\t\t['cased', 'Cased'],\n\t\t['ce', 'Composition_Exclusion'],\n\t\t['compositionexclusion', 'Composition_Exclusion'],\n\t\t['ci', 'Case_Ignorable'],\n\t\t['caseignorable', 'Case_Ignorable'],\n\t\t['compex', 'Full_Composition_Exclusion'],\n\t\t['fullcompositionexclusion', 'Full_Composition_Exclusion'],\n\t\t['cwcf', 'Changes_When_Casefolded'],\n\t\t['changeswhencasefolded', 'Changes_When_Casefolded'],\n\t\t['cwcm', 'Changes_When_Casemapped'],\n\t\t['changeswhencasemapped', 'Changes_When_Casemapped'],\n\t\t['cwkcf', 'Changes_When_NFKC_Casefolded'],\n\t\t['changeswhennfkccasefolded', 'Changes_When_NFKC_Casefolded'],\n\t\t['cwl', 'Changes_When_Lowercased'],\n\t\t['changeswhenlowercased', 'Changes_When_Lowercased'],\n\t\t['cwt', 'Changes_When_Titlecased'],\n\t\t['changeswhentitlecased', 'Changes_When_Titlecased'],\n\t\t['cwu', 'Changes_When_Uppercased'],\n\t\t['changeswhenuppercased', 'Changes_When_Uppercased'],\n\t\t['dash', 'Dash'],\n\t\t['dep', 'Deprecated'],\n\t\t['deprecated', 'Deprecated'],\n\t\t['di', 'Default_Ignorable_Code_Point'],\n\t\t['defaultignorablecodepoint', 'Default_Ignorable_Code_Point'],\n\t\t['dia', 'Diacritic'],\n\t\t['diacritic', 'Diacritic'],\n\t\t['ext', 'Extender'],\n\t\t['extender', 'Extender'],\n\t\t['grbase', 'Grapheme_Base'],\n\t\t['graphemebase', 'Grapheme_Base'],\n\t\t['grext', 'Grapheme_Extend'],\n\t\t['graphemeextend', 'Grapheme_Extend'],\n\t\t['grlink', 'Grapheme_Link'],\n\t\t['graphemelink', 'Grapheme_Link'],\n\t\t['hex', 'Hex_Digit'],\n\t\t['hexdigit', 'Hex_Digit'],\n\t\t['hyphen', 'Hyphen'],\n\t\t['idc', 'ID_Continue'],\n\t\t['idcontinue', 'ID_Continue'],\n\t\t['ideo', 'Ideographic'],\n\t\t['ideographic', 'Ideographic'],\n\t\t['ids', 'ID_Start'],\n\t\t['idstart', 'ID_Start'],\n\t\t['idsb', 'IDS_Binary_Operator'],\n\t\t['idsbinaryoperator', 'IDS_Binary_Operator'],\n\t\t['idst', 'IDS_Trinary_Operator'],\n\t\t['idstrinaryoperator', 'IDS_Trinary_Operator'],\n\t\t['joinc', 'Join_Control'],\n\t\t['joincontrol', 'Join_Control'],\n\t\t['loe', 'Logical_Order_Exception'],\n\t\t['logicalorderexception', 'Logical_Order_Exception'],\n\t\t['lower', 'Lowercase'],\n\t\t['lowercase', 'Lowercase'],\n\t\t['math', 'Math'],\n\t\t['nchar', 'Noncharacter_Code_Point'],\n\t\t['noncharactercodepoint', 'Noncharacter_Code_Point'],\n\t\t['oalpha', 'Other_Alphabetic'],\n\t\t['otheralphabetic', 'Other_Alphabetic'],\n\t\t['odi', 'Other_Default_Ignorable_Code_Point'],\n\t\t['otherdefaultignorablecodepoint', 'Other_Default_Ignorable_Code_Point'],\n\t\t['ogrext', 'Other_Grapheme_Extend'],\n\t\t['othergraphemeextend', 'Other_Grapheme_Extend'],\n\t\t['oidc', 'Other_ID_Continue'],\n\t\t['otheridcontinue', 'Other_ID_Continue'],\n\t\t['oids', 'Other_ID_Start'],\n\t\t['otheridstart', 'Other_ID_Start'],\n\t\t['olower', 'Other_Lowercase'],\n\t\t['otherlowercase', 'Other_Lowercase'],\n\t\t['omath', 'Other_Math'],\n\t\t['othermath', 'Other_Math'],\n\t\t['oupper', 'Other_Uppercase'],\n\t\t['otheruppercase', 'Other_Uppercase'],\n\t\t['patsyn', 'Pattern_Syntax'],\n\t\t['patternsyntax', 'Pattern_Syntax'],\n\t\t['patws', 'Pattern_White_Space'],\n\t\t['patternwhitespace', 'Pattern_White_Space'],\n\t\t['pcm', 'Prepended_Concatenation_Mark'],\n\t\t['prependedconcatenationmark', 'Prepended_Concatenation_Mark'],\n\t\t['qmark', 'Quotation_Mark'],\n\t\t['quotationmark', 'Quotation_Mark'],\n\t\t['radical', 'Radical'],\n\t\t['sd', 'Soft_Dotted'],\n\t\t['softdotted', 'Soft_Dotted'],\n\t\t['sterm', 'Sentence_Terminal'],\n\t\t['sentenceterminal', 'Sentence_Terminal'],\n\t\t['term', 'Terminal_Punctuation'],\n\t\t['terminalpunctuation', 'Terminal_Punctuation'],\n\t\t['uideo', 'Unified_Ideograph'],\n\t\t['unifiedideograph', 'Unified_Ideograph'],\n\t\t['upper', 'Uppercase'],\n\t\t['uppercase', 'Uppercase'],\n\t\t['vs', 'Variation_Selector'],\n\t\t['variationselector', 'Variation_Selector'],\n\t\t['wspace', 'White_Space'],\n\t\t['whitespace', 'White_Space'],\n\t\t['space', 'White_Space'],\n\t\t['xidc', 'XID_Continue'],\n\t\t['xidcontinue', 'XID_Continue'],\n\t\t['xids', 'XID_Start'],\n\t\t['xidstart', 'XID_Start'],\n\t\t['xonfc', 'Expands_On_NFC'],\n\t\t['expandsonnfc', 'Expands_On_NFC'],\n\t\t['xonfd', 'Expands_On_NFD'],\n\t\t['expandsonnfd', 'Expands_On_NFD'],\n\t\t['xonfkc', 'Expands_On_NFKC'],\n\t\t['expandsonnfkc', 'Expands_On_NFKC'],\n\t\t['xonfkd', 'Expands_On_NFKD'],\n\t\t['expandsonnfkd', 'Expands_On_NFKD'],\n\t\t['ascii', 'ASCII'],\n\t\t['any', 'Any'],\n\t\t['assigned', 'Assigned']\n\t]),\n\t'propertyToValueAliases': new Map([\n\t\t['Jamo_Short_Name', new Map([\n\t\t\t['a', 'A'],\n\t\t\t['ae', 'AE'],\n\t\t\t['b', 'B'],\n\t\t\t['bb', 'BB'],\n\t\t\t['bs', 'BS'],\n\t\t\t['c', 'C'],\n\t\t\t['d', 'D'],\n\t\t\t['dd', 'DD'],\n\t\t\t['e', 'E'],\n\t\t\t['eo', 'EO'],\n\t\t\t['eu', 'EU'],\n\t\t\t['g', 'G'],\n\t\t\t['gg', 'GG'],\n\t\t\t['gs', 'GS'],\n\t\t\t['h', 'H'],\n\t\t\t['i', 'I'],\n\t\t\t['j', 'J'],\n\t\t\t['jj', 'JJ'],\n\t\t\t['k', 'K'],\n\t\t\t['l', 'L'],\n\t\t\t['lb', 'LB'],\n\t\t\t['lg', 'LG'],\n\t\t\t['lh', 'LH'],\n\t\t\t['lm', 'LM'],\n\t\t\t['lp', 'LP'],\n\t\t\t['ls', 'LS'],\n\t\t\t['lt', 'LT'],\n\t\t\t['m', 'M'],\n\t\t\t['n', 'N'],\n\t\t\t['ng', 'NG'],\n\t\t\t['nh', 'NH'],\n\t\t\t['nj', 'NJ'],\n\t\t\t['o', 'O'],\n\t\t\t['oe', 'OE'],\n\t\t\t['p', 'P'],\n\t\t\t['r', 'R'],\n\t\t\t['s', 'S'],\n\t\t\t['ss', 'SS'],\n\t\t\t['t', 'T'],\n\t\t\t['u', 'U'],\n\t\t\t['wa', 'WA'],\n\t\t\t['wae', 'WAE'],\n\t\t\t['we', 'WE'],\n\t\t\t['weo', 'WEO'],\n\t\t\t['wi', 'WI'],\n\t\t\t['ya', 'YA'],\n\t\t\t['yae', 'YAE'],\n\t\t\t['ye', 'YE'],\n\t\t\t['yeo', 'YEO'],\n\t\t\t['yi', 'YI'],\n\t\t\t['yo', 'YO'],\n\t\t\t['yu', 'YU']\n\t\t])],\n\t\t['Age', new Map([\n\t\t\t['1.1', 'V1_1'],\n\t\t\t['v11', 'V1_1'],\n\t\t\t['2.0', 'V2_0'],\n\t\t\t['v20', 'V2_0'],\n\t\t\t['2.1', 'V2_1'],\n\t\t\t['v21', 'V2_1'],\n\t\t\t['3.0', 'V3_0'],\n\t\t\t['v30', 'V3_0'],\n\t\t\t['3.1', 'V3_1'],\n\t\t\t['v31', 'V3_1'],\n\t\t\t['3.2', 'V3_2'],\n\t\t\t['v32', 'V3_2'],\n\t\t\t['4.0', 'V4_0'],\n\t\t\t['v40', 'V4_0'],\n\t\t\t['4.1', 'V4_1'],\n\t\t\t['v41', 'V4_1'],\n\t\t\t['5.0', 'V5_0'],\n\t\t\t['v50', 'V5_0'],\n\t\t\t['5.1', 'V5_1'],\n\t\t\t['v51', 'V5_1'],\n\t\t\t['5.2', 'V5_2'],\n\t\t\t['v52', 'V5_2'],\n\t\t\t['6.0', 'V6_0'],\n\t\t\t['v60', 'V6_0'],\n\t\t\t['6.1', 'V6_1'],\n\t\t\t['v61', 'V6_1'],\n\t\t\t['6.2', 'V6_2'],\n\t\t\t['v62', 'V6_2'],\n\t\t\t['6.3', 'V6_3'],\n\t\t\t['v63', 'V6_3'],\n\t\t\t['7.0', 'V7_0'],\n\t\t\t['v70', 'V7_0'],\n\t\t\t['8.0', 'V8_0'],\n\t\t\t['v80', 'V8_0'],\n\t\t\t['9.0', 'V9_0'],\n\t\t\t['v90', 'V9_0'],\n\t\t\t['na', 'Unassigned'],\n\t\t\t['unassigned', 'Unassigned']\n\t\t])],\n\t\t['Block', new Map([\n\t\t\t['adlam', 'Adlam'],\n\t\t\t['aegeannumbers', 'Aegean_Numbers'],\n\t\t\t['ahom', 'Ahom'],\n\t\t\t['alchemical', 'Alchemical_Symbols'],\n\t\t\t['alchemicalsymbols', 'Alchemical_Symbols'],\n\t\t\t['alphabeticpf', 'Alphabetic_Presentation_Forms'],\n\t\t\t['alphabeticpresentationforms', 'Alphabetic_Presentation_Forms'],\n\t\t\t['anatolianhieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t\t['ancientgreekmusic', 'Ancient_Greek_Musical_Notation'],\n\t\t\t['ancientgreekmusicalnotation', 'Ancient_Greek_Musical_Notation'],\n\t\t\t['ancientgreeknumbers', 'Ancient_Greek_Numbers'],\n\t\t\t['ancientsymbols', 'Ancient_Symbols'],\n\t\t\t['arabic', 'Arabic'],\n\t\t\t['arabicexta', 'Arabic_Extended_A'],\n\t\t\t['arabicextendeda', 'Arabic_Extended_A'],\n\t\t\t['arabicmath', 'Arabic_Mathematical_Alphabetic_Symbols'],\n\t\t\t['arabicmathematicalalphabeticsymbols', 'Arabic_Mathematical_Alphabetic_Symbols'],\n\t\t\t['arabicpfa', 'Arabic_Presentation_Forms_A'],\n\t\t\t['arabicpresentationformsa', 'Arabic_Presentation_Forms_A'],\n\t\t\t['arabicpfb', 'Arabic_Presentation_Forms_B'],\n\t\t\t['arabicpresentationformsb', 'Arabic_Presentation_Forms_B'],\n\t\t\t['arabicsup', 'Arabic_Supplement'],\n\t\t\t['arabicsupplement', 'Arabic_Supplement'],\n\t\t\t['armenian', 'Armenian'],\n\t\t\t['arrows', 'Arrows'],\n\t\t\t['ascii', 'Basic_Latin'],\n\t\t\t['basiclatin', 'Basic_Latin'],\n\t\t\t['avestan', 'Avestan'],\n\t\t\t['balinese', 'Balinese'],\n\t\t\t['bamum', 'Bamum'],\n\t\t\t['bamumsup', 'Bamum_Supplement'],\n\t\t\t['bamumsupplement', 'Bamum_Supplement'],\n\t\t\t['bassavah', 'Bassa_Vah'],\n\t\t\t['batak', 'Batak'],\n\t\t\t['bengali', 'Bengali'],\n\t\t\t['bhaiksuki', 'Bhaiksuki'],\n\t\t\t['blockelements', 'Block_Elements'],\n\t\t\t['bopomofo', 'Bopomofo'],\n\t\t\t['bopomofoext', 'Bopomofo_Extended'],\n\t\t\t['bopomofoextended', 'Bopomofo_Extended'],\n\t\t\t['boxdrawing', 'Box_Drawing'],\n\t\t\t['brahmi', 'Brahmi'],\n\t\t\t['braille', 'Braille_Patterns'],\n\t\t\t['braillepatterns', 'Braille_Patterns'],\n\t\t\t['buginese', 'Buginese'],\n\t\t\t['buhid', 'Buhid'],\n\t\t\t['byzantinemusic', 'Byzantine_Musical_Symbols'],\n\t\t\t['byzantinemusicalsymbols', 'Byzantine_Musical_Symbols'],\n\t\t\t['carian', 'Carian'],\n\t\t\t['caucasianalbanian', 'Caucasian_Albanian'],\n\t\t\t['chakma', 'Chakma'],\n\t\t\t['cham', 'Cham'],\n\t\t\t['cherokee', 'Cherokee'],\n\t\t\t['cherokeesup', 'Cherokee_Supplement'],\n\t\t\t['cherokeesupplement', 'Cherokee_Supplement'],\n\t\t\t['cjk', 'CJK_Unified_Ideographs'],\n\t\t\t['cjkunifiedideographs', 'CJK_Unified_Ideographs'],\n\t\t\t['cjkcompat', 'CJK_Compatibility'],\n\t\t\t['cjkcompatibility', 'CJK_Compatibility'],\n\t\t\t['cjkcompatforms', 'CJK_Compatibility_Forms'],\n\t\t\t['cjkcompatibilityforms', 'CJK_Compatibility_Forms'],\n\t\t\t['cjkcompatideographs', 'CJK_Compatibility_Ideographs'],\n\t\t\t['cjkcompatibilityideographs', 'CJK_Compatibility_Ideographs'],\n\t\t\t['cjkcompatideographssup', 'CJK_Compatibility_Ideographs_Supplement'],\n\t\t\t['cjkcompatibilityideographssupplement', 'CJK_Compatibility_Ideographs_Supplement'],\n\t\t\t['cjkexta', 'CJK_Unified_Ideographs_Extension_A'],\n\t\t\t['cjkunifiedideographsextensiona', 'CJK_Unified_Ideographs_Extension_A'],\n\t\t\t['cjkextb', 'CJK_Unified_Ideographs_Extension_B'],\n\t\t\t['cjkunifiedideographsextensionb', 'CJK_Unified_Ideographs_Extension_B'],\n\t\t\t['cjkextc', 'CJK_Unified_Ideographs_Extension_C'],\n\t\t\t['cjkunifiedideographsextensionc', 'CJK_Unified_Ideographs_Extension_C'],\n\t\t\t['cjkextd', 'CJK_Unified_Ideographs_Extension_D'],\n\t\t\t['cjkunifiedideographsextensiond', 'CJK_Unified_Ideographs_Extension_D'],\n\t\t\t['cjkexte', 'CJK_Unified_Ideographs_Extension_E'],\n\t\t\t['cjkunifiedideographsextensione', 'CJK_Unified_Ideographs_Extension_E'],\n\t\t\t['cjkradicalssup', 'CJK_Radicals_Supplement'],\n\t\t\t['cjkradicalssupplement', 'CJK_Radicals_Supplement'],\n\t\t\t['cjkstrokes', 'CJK_Strokes'],\n\t\t\t['cjksymbols', 'CJK_Symbols_And_Punctuation'],\n\t\t\t['cjksymbolsandpunctuation', 'CJK_Symbols_And_Punctuation'],\n\t\t\t['compatjamo', 'Hangul_Compatibility_Jamo'],\n\t\t\t['hangulcompatibilityjamo', 'Hangul_Compatibility_Jamo'],\n\t\t\t['controlpictures', 'Control_Pictures'],\n\t\t\t['coptic', 'Coptic'],\n\t\t\t['copticepactnumbers', 'Coptic_Epact_Numbers'],\n\t\t\t['countingrod', 'Counting_Rod_Numerals'],\n\t\t\t['countingrodnumerals', 'Counting_Rod_Numerals'],\n\t\t\t['cuneiform', 'Cuneiform'],\n\t\t\t['cuneiformnumbers', 'Cuneiform_Numbers_And_Punctuation'],\n\t\t\t['cuneiformnumbersandpunctuation', 'Cuneiform_Numbers_And_Punctuation'],\n\t\t\t['currencysymbols', 'Currency_Symbols'],\n\t\t\t['cypriotsyllabary', 'Cypriot_Syllabary'],\n\t\t\t['cyrillic', 'Cyrillic'],\n\t\t\t['cyrillicexta', 'Cyrillic_Extended_A'],\n\t\t\t['cyrillicextendeda', 'Cyrillic_Extended_A'],\n\t\t\t['cyrillicextb', 'Cyrillic_Extended_B'],\n\t\t\t['cyrillicextendedb', 'Cyrillic_Extended_B'],\n\t\t\t['cyrillicextc', 'Cyrillic_Extended_C'],\n\t\t\t['cyrillicextendedc', 'Cyrillic_Extended_C'],\n\t\t\t['cyrillicsup', 'Cyrillic_Supplement'],\n\t\t\t['cyrillicsupplement', 'Cyrillic_Supplement'],\n\t\t\t['cyrillicsupplementary', 'Cyrillic_Supplement'],\n\t\t\t['deseret', 'Deseret'],\n\t\t\t['devanagari', 'Devanagari'],\n\t\t\t['devanagariext', 'Devanagari_Extended'],\n\t\t\t['devanagariextended', 'Devanagari_Extended'],\n\t\t\t['diacriticals', 'Combining_Diacritical_Marks'],\n\t\t\t['combiningdiacriticalmarks', 'Combining_Diacritical_Marks'],\n\t\t\t['diacriticalsext', 'Combining_Diacritical_Marks_Extended'],\n\t\t\t['combiningdiacriticalmarksextended', 'Combining_Diacritical_Marks_Extended'],\n\t\t\t['diacriticalsforsymbols', 'Combining_Diacritical_Marks_For_Symbols'],\n\t\t\t['combiningdiacriticalmarksforsymbols', 'Combining_Diacritical_Marks_For_Symbols'],\n\t\t\t['combiningmarksforsymbols', 'Combining_Diacritical_Marks_For_Symbols'],\n\t\t\t['diacriticalssup', 'Combining_Diacritical_Marks_Supplement'],\n\t\t\t['combiningdiacriticalmarkssupplement', 'Combining_Diacritical_Marks_Supplement'],\n\t\t\t['dingbats', 'Dingbats'],\n\t\t\t['domino', 'Domino_Tiles'],\n\t\t\t['dominotiles', 'Domino_Tiles'],\n\t\t\t['duployan', 'Duployan'],\n\t\t\t['earlydynasticcuneiform', 'Early_Dynastic_Cuneiform'],\n\t\t\t['egyptianhieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t\t['elbasan', 'Elbasan'],\n\t\t\t['emoticons', 'Emoticons'],\n\t\t\t['enclosedalphanum', 'Enclosed_Alphanumerics'],\n\t\t\t['enclosedalphanumerics', 'Enclosed_Alphanumerics'],\n\t\t\t['enclosedalphanumsup', 'Enclosed_Alphanumeric_Supplement'],\n\t\t\t['enclosedalphanumericsupplement', 'Enclosed_Alphanumeric_Supplement'],\n\t\t\t['enclosedcjk', 'Enclosed_CJK_Letters_And_Months'],\n\t\t\t['enclosedcjklettersandmonths', 'Enclosed_CJK_Letters_And_Months'],\n\t\t\t['enclosedideographicsup', 'Enclosed_Ideographic_Supplement'],\n\t\t\t['enclosedideographicsupplement', 'Enclosed_Ideographic_Supplement'],\n\t\t\t['ethiopic', 'Ethiopic'],\n\t\t\t['ethiopicext', 'Ethiopic_Extended'],\n\t\t\t['ethiopicextended', 'Ethiopic_Extended'],\n\t\t\t['ethiopicexta', 'Ethiopic_Extended_A'],\n\t\t\t['ethiopicextendeda', 'Ethiopic_Extended_A'],\n\t\t\t['ethiopicsup', 'Ethiopic_Supplement'],\n\t\t\t['ethiopicsupplement', 'Ethiopic_Supplement'],\n\t\t\t['geometricshapes', 'Geometric_Shapes'],\n\t\t\t['geometricshapesext', 'Geometric_Shapes_Extended'],\n\t\t\t['geometricshapesextended', 'Geometric_Shapes_Extended'],\n\t\t\t['georgian', 'Georgian'],\n\t\t\t['georgiansup', 'Georgian_Supplement'],\n\t\t\t['georgiansupplement', 'Georgian_Supplement'],\n\t\t\t['glagolitic', 'Glagolitic'],\n\t\t\t['glagoliticsup', 'Glagolitic_Supplement'],\n\t\t\t['glagoliticsupplement', 'Glagolitic_Supplement'],\n\t\t\t['gothic', 'Gothic'],\n\t\t\t['grantha', 'Grantha'],\n\t\t\t['greek', 'Greek_And_Coptic'],\n\t\t\t['greekandcoptic', 'Greek_And_Coptic'],\n\t\t\t['greekext', 'Greek_Extended'],\n\t\t\t['greekextended', 'Greek_Extended'],\n\t\t\t['gujarati', 'Gujarati'],\n\t\t\t['gurmukhi', 'Gurmukhi'],\n\t\t\t['halfandfullforms', 'Halfwidth_And_Fullwidth_Forms'],\n\t\t\t['halfwidthandfullwidthforms', 'Halfwidth_And_Fullwidth_Forms'],\n\t\t\t['halfmarks', 'Combining_Half_Marks'],\n\t\t\t['combininghalfmarks', 'Combining_Half_Marks'],\n\t\t\t['hangul', 'Hangul_Syllables'],\n\t\t\t['hangulsyllables', 'Hangul_Syllables'],\n\t\t\t['hanunoo', 'Hanunoo'],\n\t\t\t['hatran', 'Hatran'],\n\t\t\t['hebrew', 'Hebrew'],\n\t\t\t['highpusurrogates', 'High_Private_Use_Surrogates'],\n\t\t\t['highprivateusesurrogates', 'High_Private_Use_Surrogates'],\n\t\t\t['highsurrogates', 'High_Surrogates'],\n\t\t\t['hiragana', 'Hiragana'],\n\t\t\t['idc', 'Ideographic_Description_Characters'],\n\t\t\t['ideographicdescriptioncharacters', 'Ideographic_Description_Characters'],\n\t\t\t['ideographicsymbols', 'Ideographic_Symbols_And_Punctuation'],\n\t\t\t['ideographicsymbolsandpunctuation', 'Ideographic_Symbols_And_Punctuation'],\n\t\t\t['imperialaramaic', 'Imperial_Aramaic'],\n\t\t\t['indicnumberforms', 'Common_Indic_Number_Forms'],\n\t\t\t['commonindicnumberforms', 'Common_Indic_Number_Forms'],\n\t\t\t['inscriptionalpahlavi', 'Inscriptional_Pahlavi'],\n\t\t\t['inscriptionalparthian', 'Inscriptional_Parthian'],\n\t\t\t['ipaext', 'IPA_Extensions'],\n\t\t\t['ipaextensions', 'IPA_Extensions'],\n\t\t\t['jamo', 'Hangul_Jamo'],\n\t\t\t['hanguljamo', 'Hangul_Jamo'],\n\t\t\t['jamoexta', 'Hangul_Jamo_Extended_A'],\n\t\t\t['hanguljamoextendeda', 'Hangul_Jamo_Extended_A'],\n\t\t\t['jamoextb', 'Hangul_Jamo_Extended_B'],\n\t\t\t['hanguljamoextendedb', 'Hangul_Jamo_Extended_B'],\n\t\t\t['javanese', 'Javanese'],\n\t\t\t['kaithi', 'Kaithi'],\n\t\t\t['kanasup', 'Kana_Supplement'],\n\t\t\t['kanasupplement', 'Kana_Supplement'],\n\t\t\t['kanbun', 'Kanbun'],\n\t\t\t['kangxi', 'Kangxi_Radicals'],\n\t\t\t['kangxiradicals', 'Kangxi_Radicals'],\n\t\t\t['kannada', 'Kannada'],\n\t\t\t['katakana', 'Katakana'],\n\t\t\t['katakanaext', 'Katakana_Phonetic_Extensions'],\n\t\t\t['katakanaphoneticextensions', 'Katakana_Phonetic_Extensions'],\n\t\t\t['kayahli', 'Kayah_Li'],\n\t\t\t['kharoshthi', 'Kharoshthi'],\n\t\t\t['khmer', 'Khmer'],\n\t\t\t['khmersymbols', 'Khmer_Symbols'],\n\t\t\t['khojki', 'Khojki'],\n\t\t\t['khudawadi', 'Khudawadi'],\n\t\t\t['lao', 'Lao'],\n\t\t\t['latin1sup', 'Latin_1_Supplement'],\n\t\t\t['latin1supplement', 'Latin_1_Supplement'],\n\t\t\t['latin1', 'Latin_1_Supplement'],\n\t\t\t['latinexta', 'Latin_Extended_A'],\n\t\t\t['latinextendeda', 'Latin_Extended_A'],\n\t\t\t['latinextadditional', 'Latin_Extended_Additional'],\n\t\t\t['latinextendedadditional', 'Latin_Extended_Additional'],\n\t\t\t['latinextb', 'Latin_Extended_B'],\n\t\t\t['latinextendedb', 'Latin_Extended_B'],\n\t\t\t['latinextc', 'Latin_Extended_C'],\n\t\t\t['latinextendedc', 'Latin_Extended_C'],\n\t\t\t['latinextd', 'Latin_Extended_D'],\n\t\t\t['latinextendedd', 'Latin_Extended_D'],\n\t\t\t['latinexte', 'Latin_Extended_E'],\n\t\t\t['latinextendede', 'Latin_Extended_E'],\n\t\t\t['lepcha', 'Lepcha'],\n\t\t\t['letterlikesymbols', 'Letterlike_Symbols'],\n\t\t\t['limbu', 'Limbu'],\n\t\t\t['lineara', 'Linear_A'],\n\t\t\t['linearbideograms', 'Linear_B_Ideograms'],\n\t\t\t['linearbsyllabary', 'Linear_B_Syllabary'],\n\t\t\t['lisu', 'Lisu'],\n\t\t\t['lowsurrogates', 'Low_Surrogates'],\n\t\t\t['lycian', 'Lycian'],\n\t\t\t['lydian', 'Lydian'],\n\t\t\t['mahajani', 'Mahajani'],\n\t\t\t['mahjong', 'Mahjong_Tiles'],\n\t\t\t['mahjongtiles', 'Mahjong_Tiles'],\n\t\t\t['malayalam', 'Malayalam'],\n\t\t\t['mandaic', 'Mandaic'],\n\t\t\t['manichaean', 'Manichaean'],\n\t\t\t['marchen', 'Marchen'],\n\t\t\t['mathalphanum', 'Mathematical_Alphanumeric_Symbols'],\n\t\t\t['mathematicalalphanumericsymbols', 'Mathematical_Alphanumeric_Symbols'],\n\t\t\t['mathoperators', 'Mathematical_Operators'],\n\t\t\t['mathematicaloperators', 'Mathematical_Operators'],\n\t\t\t['meeteimayek', 'Meetei_Mayek'],\n\t\t\t['meeteimayekext', 'Meetei_Mayek_Extensions'],\n\t\t\t['meeteimayekextensions', 'Meetei_Mayek_Extensions'],\n\t\t\t['mendekikakui', 'Mende_Kikakui'],\n\t\t\t['meroiticcursive', 'Meroitic_Cursive'],\n\t\t\t['meroitichieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t\t['miao', 'Miao'],\n\t\t\t['miscarrows', 'Miscellaneous_Symbols_And_Arrows'],\n\t\t\t['miscellaneoussymbolsandarrows', 'Miscellaneous_Symbols_And_Arrows'],\n\t\t\t['miscmathsymbolsa', 'Miscellaneous_Mathematical_Symbols_A'],\n\t\t\t['miscellaneousmathematicalsymbolsa', 'Miscellaneous_Mathematical_Symbols_A'],\n\t\t\t['miscmathsymbolsb', 'Miscellaneous_Mathematical_Symbols_B'],\n\t\t\t['miscellaneousmathematicalsymbolsb', 'Miscellaneous_Mathematical_Symbols_B'],\n\t\t\t['miscpictographs', 'Miscellaneous_Symbols_And_Pictographs'],\n\t\t\t['miscellaneoussymbolsandpictographs', 'Miscellaneous_Symbols_And_Pictographs'],\n\t\t\t['miscsymbols', 'Miscellaneous_Symbols'],\n\t\t\t['miscellaneoussymbols', 'Miscellaneous_Symbols'],\n\t\t\t['misctechnical', 'Miscellaneous_Technical'],\n\t\t\t['miscellaneoustechnical', 'Miscellaneous_Technical'],\n\t\t\t['modi', 'Modi'],\n\t\t\t['modifierletters', 'Spacing_Modifier_Letters'],\n\t\t\t['spacingmodifierletters', 'Spacing_Modifier_Letters'],\n\t\t\t['modifiertoneletters', 'Modifier_Tone_Letters'],\n\t\t\t['mongolian', 'Mongolian'],\n\t\t\t['mongoliansup', 'Mongolian_Supplement'],\n\t\t\t['mongoliansupplement', 'Mongolian_Supplement'],\n\t\t\t['mro', 'Mro'],\n\t\t\t['multani', 'Multani'],\n\t\t\t['music', 'Musical_Symbols'],\n\t\t\t['musicalsymbols', 'Musical_Symbols'],\n\t\t\t['myanmar', 'Myanmar'],\n\t\t\t['myanmarexta', 'Myanmar_Extended_A'],\n\t\t\t['myanmarextendeda', 'Myanmar_Extended_A'],\n\t\t\t['myanmarextb', 'Myanmar_Extended_B'],\n\t\t\t['myanmarextendedb', 'Myanmar_Extended_B'],\n\t\t\t['nabataean', 'Nabataean'],\n\t\t\t['nb', 'No_Block'],\n\t\t\t['noblock', 'No_Block'],\n\t\t\t['newtailue', 'New_Tai_Lue'],\n\t\t\t['newa', 'Newa'],\n\t\t\t['nko', 'NKo'],\n\t\t\t['numberforms', 'Number_Forms'],\n\t\t\t['ocr', 'Optical_Character_Recognition'],\n\t\t\t['opticalcharacterrecognition', 'Optical_Character_Recognition'],\n\t\t\t['ogham', 'Ogham'],\n\t\t\t['olchiki', 'Ol_Chiki'],\n\t\t\t['oldhungarian', 'Old_Hungarian'],\n\t\t\t['olditalic', 'Old_Italic'],\n\t\t\t['oldnortharabian', 'Old_North_Arabian'],\n\t\t\t['oldpermic', 'Old_Permic'],\n\t\t\t['oldpersian', 'Old_Persian'],\n\t\t\t['oldsoutharabian', 'Old_South_Arabian'],\n\t\t\t['oldturkic', 'Old_Turkic'],\n\t\t\t['oriya', 'Oriya'],\n\t\t\t['ornamentaldingbats', 'Ornamental_Dingbats'],\n\t\t\t['osage', 'Osage'],\n\t\t\t['osmanya', 'Osmanya'],\n\t\t\t['pahawhhmong', 'Pahawh_Hmong'],\n\t\t\t['palmyrene', 'Palmyrene'],\n\t\t\t['paucinhau', 'Pau_Cin_Hau'],\n\t\t\t['phagspa', 'Phags_Pa'],\n\t\t\t['phaistos', 'Phaistos_Disc'],\n\t\t\t['phaistosdisc', 'Phaistos_Disc'],\n\t\t\t['phoenician', 'Phoenician'],\n\t\t\t['phoneticext', 'Phonetic_Extensions'],\n\t\t\t['phoneticextensions', 'Phonetic_Extensions'],\n\t\t\t['phoneticextsup', 'Phonetic_Extensions_Supplement'],\n\t\t\t['phoneticextensionssupplement', 'Phonetic_Extensions_Supplement'],\n\t\t\t['playingcards', 'Playing_Cards'],\n\t\t\t['psalterpahlavi', 'Psalter_Pahlavi'],\n\t\t\t['pua', 'Private_Use_Area'],\n\t\t\t['privateusearea', 'Private_Use_Area'],\n\t\t\t['privateuse', 'Private_Use_Area'],\n\t\t\t['punctuation', 'General_Punctuation'],\n\t\t\t['generalpunctuation', 'General_Punctuation'],\n\t\t\t['rejang', 'Rejang'],\n\t\t\t['rumi', 'Rumi_Numeral_Symbols'],\n\t\t\t['ruminumeralsymbols', 'Rumi_Numeral_Symbols'],\n\t\t\t['runic', 'Runic'],\n\t\t\t['samaritan', 'Samaritan'],\n\t\t\t['saurashtra', 'Saurashtra'],\n\t\t\t['sharada', 'Sharada'],\n\t\t\t['shavian', 'Shavian'],\n\t\t\t['shorthandformatcontrols', 'Shorthand_Format_Controls'],\n\t\t\t['siddham', 'Siddham'],\n\t\t\t['sinhala', 'Sinhala'],\n\t\t\t['sinhalaarchaicnumbers', 'Sinhala_Archaic_Numbers'],\n\t\t\t['smallforms', 'Small_Form_Variants'],\n\t\t\t['smallformvariants', 'Small_Form_Variants'],\n\t\t\t['sorasompeng', 'Sora_Sompeng'],\n\t\t\t['specials', 'Specials'],\n\t\t\t['sundanese', 'Sundanese'],\n\t\t\t['sundanesesup', 'Sundanese_Supplement'],\n\t\t\t['sundanesesupplement', 'Sundanese_Supplement'],\n\t\t\t['suparrowsa', 'Supplemental_Arrows_A'],\n\t\t\t['supplementalarrowsa', 'Supplemental_Arrows_A'],\n\t\t\t['suparrowsb', 'Supplemental_Arrows_B'],\n\t\t\t['supplementalarrowsb', 'Supplemental_Arrows_B'],\n\t\t\t['suparrowsc', 'Supplemental_Arrows_C'],\n\t\t\t['supplementalarrowsc', 'Supplemental_Arrows_C'],\n\t\t\t['supmathoperators', 'Supplemental_Mathematical_Operators'],\n\t\t\t['supplementalmathematicaloperators', 'Supplemental_Mathematical_Operators'],\n\t\t\t['suppuaa', 'Supplementary_Private_Use_Area_A'],\n\t\t\t['supplementaryprivateuseareaa', 'Supplementary_Private_Use_Area_A'],\n\t\t\t['suppuab', 'Supplementary_Private_Use_Area_B'],\n\t\t\t['supplementaryprivateuseareab', 'Supplementary_Private_Use_Area_B'],\n\t\t\t['suppunctuation', 'Supplemental_Punctuation'],\n\t\t\t['supplementalpunctuation', 'Supplemental_Punctuation'],\n\t\t\t['supsymbolsandpictographs', 'Supplemental_Symbols_And_Pictographs'],\n\t\t\t['supplementalsymbolsandpictographs', 'Supplemental_Symbols_And_Pictographs'],\n\t\t\t['superandsub', 'Superscripts_And_Subscripts'],\n\t\t\t['superscriptsandsubscripts', 'Superscripts_And_Subscripts'],\n\t\t\t['suttonsignwriting', 'Sutton_SignWriting'],\n\t\t\t['sylotinagri', 'Syloti_Nagri'],\n\t\t\t['syriac', 'Syriac'],\n\t\t\t['tagalog', 'Tagalog'],\n\t\t\t['tagbanwa', 'Tagbanwa'],\n\t\t\t['tags', 'Tags'],\n\t\t\t['taile', 'Tai_Le'],\n\t\t\t['taitham', 'Tai_Tham'],\n\t\t\t['taiviet', 'Tai_Viet'],\n\t\t\t['taixuanjing', 'Tai_Xuan_Jing_Symbols'],\n\t\t\t['taixuanjingsymbols', 'Tai_Xuan_Jing_Symbols'],\n\t\t\t['takri', 'Takri'],\n\t\t\t['tamil', 'Tamil'],\n\t\t\t['tangut', 'Tangut'],\n\t\t\t['tangutcomponents', 'Tangut_Components'],\n\t\t\t['telugu', 'Telugu'],\n\t\t\t['thaana', 'Thaana'],\n\t\t\t['thai', 'Thai'],\n\t\t\t['tibetan', 'Tibetan'],\n\t\t\t['tifinagh', 'Tifinagh'],\n\t\t\t['tirhuta', 'Tirhuta'],\n\t\t\t['transportandmap', 'Transport_And_Map_Symbols'],\n\t\t\t['transportandmapsymbols', 'Transport_And_Map_Symbols'],\n\t\t\t['ucas', 'Unified_Canadian_Aboriginal_Syllabics'],\n\t\t\t['unifiedcanadianaboriginalsyllabics', 'Unified_Canadian_Aboriginal_Syllabics'],\n\t\t\t['canadiansyllabics', 'Unified_Canadian_Aboriginal_Syllabics'],\n\t\t\t['ucasext', 'Unified_Canadian_Aboriginal_Syllabics_Extended'],\n\t\t\t['unifiedcanadianaboriginalsyllabicsextended', 'Unified_Canadian_Aboriginal_Syllabics_Extended'],\n\t\t\t['ugaritic', 'Ugaritic'],\n\t\t\t['vai', 'Vai'],\n\t\t\t['vedicext', 'Vedic_Extensions'],\n\t\t\t['vedicextensions', 'Vedic_Extensions'],\n\t\t\t['verticalforms', 'Vertical_Forms'],\n\t\t\t['vs', 'Variation_Selectors'],\n\t\t\t['variationselectors', 'Variation_Selectors'],\n\t\t\t['vssup', 'Variation_Selectors_Supplement'],\n\t\t\t['variationselectorssupplement', 'Variation_Selectors_Supplement'],\n\t\t\t['warangciti', 'Warang_Citi'],\n\t\t\t['yiradicals', 'Yi_Radicals'],\n\t\t\t['yisyllables', 'Yi_Syllables'],\n\t\t\t['yijing', 'Yijing_Hexagram_Symbols'],\n\t\t\t['yijinghexagramsymbols', 'Yijing_Hexagram_Symbols']\n\t\t])],\n\t\t['Script', new Map([\n\t\t\t['adlm', 'Adlam'],\n\t\t\t['adlam', 'Adlam'],\n\t\t\t['aghb', 'Caucasian_Albanian'],\n\t\t\t['caucasianalbanian', 'Caucasian_Albanian'],\n\t\t\t['ahom', 'Ahom'],\n\t\t\t['arab', 'Arabic'],\n\t\t\t['arabic', 'Arabic'],\n\t\t\t['armi', 'Imperial_Aramaic'],\n\t\t\t['imperialaramaic', 'Imperial_Aramaic'],\n\t\t\t['armn', 'Armenian'],\n\t\t\t['armenian', 'Armenian'],\n\t\t\t['avst', 'Avestan'],\n\t\t\t['avestan', 'Avestan'],\n\t\t\t['bali', 'Balinese'],\n\t\t\t['balinese', 'Balinese'],\n\t\t\t['bamu', 'Bamum'],\n\t\t\t['bamum', 'Bamum'],\n\t\t\t['bass', 'Bassa_Vah'],\n\t\t\t['bassavah', 'Bassa_Vah'],\n\t\t\t['batk', 'Batak'],\n\t\t\t['batak', 'Batak'],\n\t\t\t['beng', 'Bengali'],\n\t\t\t['bengali', 'Bengali'],\n\t\t\t['bhks', 'Bhaiksuki'],\n\t\t\t['bhaiksuki', 'Bhaiksuki'],\n\t\t\t['bopo', 'Bopomofo'],\n\t\t\t['bopomofo', 'Bopomofo'],\n\t\t\t['brah', 'Brahmi'],\n\t\t\t['brahmi', 'Brahmi'],\n\t\t\t['brai', 'Braille'],\n\t\t\t['braille', 'Braille'],\n\t\t\t['bugi', 'Buginese'],\n\t\t\t['buginese', 'Buginese'],\n\t\t\t['buhd', 'Buhid'],\n\t\t\t['buhid', 'Buhid'],\n\t\t\t['cakm', 'Chakma'],\n\t\t\t['chakma', 'Chakma'],\n\t\t\t['cans', 'Canadian_Aboriginal'],\n\t\t\t['canadianaboriginal', 'Canadian_Aboriginal'],\n\t\t\t['cari', 'Carian'],\n\t\t\t['carian', 'Carian'],\n\t\t\t['cham', 'Cham'],\n\t\t\t['cher', 'Cherokee'],\n\t\t\t['cherokee', 'Cherokee'],\n\t\t\t['copt', 'Coptic'],\n\t\t\t['coptic', 'Coptic'],\n\t\t\t['qaac', 'Coptic'],\n\t\t\t['cprt', 'Cypriot'],\n\t\t\t['cypriot', 'Cypriot'],\n\t\t\t['cyrl', 'Cyrillic'],\n\t\t\t['cyrillic', 'Cyrillic'],\n\t\t\t['deva', 'Devanagari'],\n\t\t\t['devanagari', 'Devanagari'],\n\t\t\t['dsrt', 'Deseret'],\n\t\t\t['deseret', 'Deseret'],\n\t\t\t['dupl', 'Duployan'],\n\t\t\t['duployan', 'Duployan'],\n\t\t\t['egyp', 'Egyptian_Hieroglyphs'],\n\t\t\t['egyptianhieroglyphs', 'Egyptian_Hieroglyphs'],\n\t\t\t['elba', 'Elbasan'],\n\t\t\t['elbasan', 'Elbasan'],\n\t\t\t['ethi', 'Ethiopic'],\n\t\t\t['ethiopic', 'Ethiopic'],\n\t\t\t['geor', 'Georgian'],\n\t\t\t['georgian', 'Georgian'],\n\t\t\t['glag', 'Glagolitic'],\n\t\t\t['glagolitic', 'Glagolitic'],\n\t\t\t['goth', 'Gothic'],\n\t\t\t['gothic', 'Gothic'],\n\t\t\t['gran', 'Grantha'],\n\t\t\t['grantha', 'Grantha'],\n\t\t\t['grek', 'Greek'],\n\t\t\t['greek', 'Greek'],\n\t\t\t['gujr', 'Gujarati'],\n\t\t\t['gujarati', 'Gujarati'],\n\t\t\t['guru', 'Gurmukhi'],\n\t\t\t['gurmukhi', 'Gurmukhi'],\n\t\t\t['hang', 'Hangul'],\n\t\t\t['hangul', 'Hangul'],\n\t\t\t['hani', 'Han'],\n\t\t\t['han', 'Han'],\n\t\t\t['hano', 'Hanunoo'],\n\t\t\t['hanunoo', 'Hanunoo'],\n\t\t\t['hatr', 'Hatran'],\n\t\t\t['hatran', 'Hatran'],\n\t\t\t['hebr', 'Hebrew'],\n\t\t\t['hebrew', 'Hebrew'],\n\t\t\t['hira', 'Hiragana'],\n\t\t\t['hiragana', 'Hiragana'],\n\t\t\t['hluw', 'Anatolian_Hieroglyphs'],\n\t\t\t['anatolianhieroglyphs', 'Anatolian_Hieroglyphs'],\n\t\t\t['hmng', 'Pahawh_Hmong'],\n\t\t\t['pahawhhmong', 'Pahawh_Hmong'],\n\t\t\t['hrkt', 'Katakana_Or_Hiragana'],\n\t\t\t['katakanaorhiragana', 'Katakana_Or_Hiragana'],\n\t\t\t['hung', 'Old_Hungarian'],\n\t\t\t['oldhungarian', 'Old_Hungarian'],\n\t\t\t['ital', 'Old_Italic'],\n\t\t\t['olditalic', 'Old_Italic'],\n\t\t\t['java', 'Javanese'],\n\t\t\t['javanese', 'Javanese'],\n\t\t\t['kali', 'Kayah_Li'],\n\t\t\t['kayahli', 'Kayah_Li'],\n\t\t\t['kana', 'Katakana'],\n\t\t\t['katakana', 'Katakana'],\n\t\t\t['khar', 'Kharoshthi'],\n\t\t\t['kharoshthi', 'Kharoshthi'],\n\t\t\t['khmr', 'Khmer'],\n\t\t\t['khmer', 'Khmer'],\n\t\t\t['khoj', 'Khojki'],\n\t\t\t['khojki', 'Khojki'],\n\t\t\t['knda', 'Kannada'],\n\t\t\t['kannada', 'Kannada'],\n\t\t\t['kthi', 'Kaithi'],\n\t\t\t['kaithi', 'Kaithi'],\n\t\t\t['lana', 'Tai_Tham'],\n\t\t\t['taitham', 'Tai_Tham'],\n\t\t\t['laoo', 'Lao'],\n\t\t\t['lao', 'Lao'],\n\t\t\t['latn', 'Latin'],\n\t\t\t['latin', 'Latin'],\n\t\t\t['lepc', 'Lepcha'],\n\t\t\t['lepcha', 'Lepcha'],\n\t\t\t['limb', 'Limbu'],\n\t\t\t['limbu', 'Limbu'],\n\t\t\t['lina', 'Linear_A'],\n\t\t\t['lineara', 'Linear_A'],\n\t\t\t['linb', 'Linear_B'],\n\t\t\t['linearb', 'Linear_B'],\n\t\t\t['lisu', 'Lisu'],\n\t\t\t['lyci', 'Lycian'],\n\t\t\t['lycian', 'Lycian'],\n\t\t\t['lydi', 'Lydian'],\n\t\t\t['lydian', 'Lydian'],\n\t\t\t['mahj', 'Mahajani'],\n\t\t\t['mahajani', 'Mahajani'],\n\t\t\t['mand', 'Mandaic'],\n\t\t\t['mandaic', 'Mandaic'],\n\t\t\t['mani', 'Manichaean'],\n\t\t\t['manichaean', 'Manichaean'],\n\t\t\t['marc', 'Marchen'],\n\t\t\t['marchen', 'Marchen'],\n\t\t\t['mend', 'Mende_Kikakui'],\n\t\t\t['mendekikakui', 'Mende_Kikakui'],\n\t\t\t['merc', 'Meroitic_Cursive'],\n\t\t\t['meroiticcursive', 'Meroitic_Cursive'],\n\t\t\t['mero', 'Meroitic_Hieroglyphs'],\n\t\t\t['meroitichieroglyphs', 'Meroitic_Hieroglyphs'],\n\t\t\t['mlym', 'Malayalam'],\n\t\t\t['malayalam', 'Malayalam'],\n\t\t\t['modi', 'Modi'],\n\t\t\t['mong', 'Mongolian'],\n\t\t\t['mongolian', 'Mongolian'],\n\t\t\t['mroo', 'Mro'],\n\t\t\t['mro', 'Mro'],\n\t\t\t['mtei', 'Meetei_Mayek'],\n\t\t\t['meeteimayek', 'Meetei_Mayek'],\n\t\t\t['mult', 'Multani'],\n\t\t\t['multani', 'Multani'],\n\t\t\t['mymr', 'Myanmar'],\n\t\t\t['myanmar', 'Myanmar'],\n\t\t\t['narb', 'Old_North_Arabian'],\n\t\t\t['oldnortharabian', 'Old_North_Arabian'],\n\t\t\t['nbat', 'Nabataean'],\n\t\t\t['nabataean', 'Nabataean'],\n\t\t\t['newa', 'Newa'],\n\t\t\t['nkoo', 'Nko'],\n\t\t\t['nko', 'Nko'],\n\t\t\t['ogam', 'Ogham'],\n\t\t\t['ogham', 'Ogham'],\n\t\t\t['olck', 'Ol_Chiki'],\n\t\t\t['olchiki', 'Ol_Chiki'],\n\t\t\t['orkh', 'Old_Turkic'],\n\t\t\t['oldturkic', 'Old_Turkic'],\n\t\t\t['orya', 'Oriya'],\n\t\t\t['oriya', 'Oriya'],\n\t\t\t['osge', 'Osage'],\n\t\t\t['osage', 'Osage'],\n\t\t\t['osma', 'Osmanya'],\n\t\t\t['osmanya', 'Osmanya'],\n\t\t\t['palm', 'Palmyrene'],\n\t\t\t['palmyrene', 'Palmyrene'],\n\t\t\t['pauc', 'Pau_Cin_Hau'],\n\t\t\t['paucinhau', 'Pau_Cin_Hau'],\n\t\t\t['perm', 'Old_Permic'],\n\t\t\t['oldpermic', 'Old_Permic'],\n\t\t\t['phag', 'Phags_Pa'],\n\t\t\t['phagspa', 'Phags_Pa'],\n\t\t\t['phli', 'Inscriptional_Pahlavi'],\n\t\t\t['inscriptionalpahlavi', 'Inscriptional_Pahlavi'],\n\t\t\t['phlp', 'Psalter_Pahlavi'],\n\t\t\t['psalterpahlavi', 'Psalter_Pahlavi'],\n\t\t\t['phnx', 'Phoenician'],\n\t\t\t['phoenician', 'Phoenician'],\n\t\t\t['plrd', 'Miao'],\n\t\t\t['miao', 'Miao'],\n\t\t\t['prti', 'Inscriptional_Parthian'],\n\t\t\t['inscriptionalparthian', 'Inscriptional_Parthian'],\n\t\t\t['rjng', 'Rejang'],\n\t\t\t['rejang', 'Rejang'],\n\t\t\t['runr', 'Runic'],\n\t\t\t['runic', 'Runic'],\n\t\t\t['samr', 'Samaritan'],\n\t\t\t['samaritan', 'Samaritan'],\n\t\t\t['sarb', 'Old_South_Arabian'],\n\t\t\t['oldsoutharabian', 'Old_South_Arabian'],\n\t\t\t['saur', 'Saurashtra'],\n\t\t\t['saurashtra', 'Saurashtra'],\n\t\t\t['sgnw', 'SignWriting'],\n\t\t\t['signwriting', 'SignWriting'],\n\t\t\t['shaw', 'Shavian'],\n\t\t\t['shavian', 'Shavian'],\n\t\t\t['shrd', 'Sharada'],\n\t\t\t['sharada', 'Sharada'],\n\t\t\t['sidd', 'Siddham'],\n\t\t\t['siddham', 'Siddham'],\n\t\t\t['sind', 'Khudawadi'],\n\t\t\t['khudawadi', 'Khudawadi'],\n\t\t\t['sinh', 'Sinhala'],\n\t\t\t['sinhala', 'Sinhala'],\n\t\t\t['sora', 'Sora_Sompeng'],\n\t\t\t['sorasompeng', 'Sora_Sompeng'],\n\t\t\t['sund', 'Sundanese'],\n\t\t\t['sundanese', 'Sundanese'],\n\t\t\t['sylo', 'Syloti_Nagri'],\n\t\t\t['sylotinagri', 'Syloti_Nagri'],\n\t\t\t['syrc', 'Syriac'],\n\t\t\t['syriac', 'Syriac'],\n\t\t\t['tagb', 'Tagbanwa'],\n\t\t\t['tagbanwa', 'Tagbanwa'],\n\t\t\t['takr', 'Takri'],\n\t\t\t['takri', 'Takri'],\n\t\t\t['tale', 'Tai_Le'],\n\t\t\t['taile', 'Tai_Le'],\n\t\t\t['talu', 'New_Tai_Lue'],\n\t\t\t['newtailue', 'New_Tai_Lue'],\n\t\t\t['taml', 'Tamil'],\n\t\t\t['tamil', 'Tamil'],\n\t\t\t['tang', 'Tangut'],\n\t\t\t['tangut', 'Tangut'],\n\t\t\t['tavt', 'Tai_Viet'],\n\t\t\t['taiviet', 'Tai_Viet'],\n\t\t\t['telu', 'Telugu'],\n\t\t\t['telugu', 'Telugu'],\n\t\t\t['tfng', 'Tifinagh'],\n\t\t\t['tifinagh', 'Tifinagh'],\n\t\t\t['tglg', 'Tagalog'],\n\t\t\t['tagalog', 'Tagalog'],\n\t\t\t['thaa', 'Thaana'],\n\t\t\t['thaana', 'Thaana'],\n\t\t\t['thai', 'Thai'],\n\t\t\t['tibt', 'Tibetan'],\n\t\t\t['tibetan', 'Tibetan'],\n\t\t\t['tirh', 'Tirhuta'],\n\t\t\t['tirhuta', 'Tirhuta'],\n\t\t\t['ugar', 'Ugaritic'],\n\t\t\t['ugaritic', 'Ugaritic'],\n\t\t\t['vaii', 'Vai'],\n\t\t\t['vai', 'Vai'],\n\t\t\t['wara', 'Warang_Citi'],\n\t\t\t['warangciti', 'Warang_Citi'],\n\t\t\t['xpeo', 'Old_Persian'],\n\t\t\t['oldpersian', 'Old_Persian'],\n\t\t\t['xsux', 'Cuneiform'],\n\t\t\t['cuneiform', 'Cuneiform'],\n\t\t\t['yiii', 'Yi'],\n\t\t\t['yi', 'Yi'],\n\t\t\t['zinh', 'Inherited'],\n\t\t\t['inherited', 'Inherited'],\n\t\t\t['qaai', 'Inherited'],\n\t\t\t['zyyy', 'Common'],\n\t\t\t['common', 'Common'],\n\t\t\t['zzzz', 'Unknown'],\n\t\t\t['unknown', 'Unknown']\n\t\t])],\n\t\t['Bidi_Class', new Map([\n\t\t\t['al', 'Arabic_Letter'],\n\t\t\t['arabicletter', 'Arabic_Letter'],\n\t\t\t['an', 'Arabic_Number'],\n\t\t\t['arabicnumber', 'Arabic_Number'],\n\t\t\t['b', 'Paragraph_Separator'],\n\t\t\t['paragraphseparator', 'Paragraph_Separator'],\n\t\t\t['bn', 'Boundary_Neutral'],\n\t\t\t['boundaryneutral', 'Boundary_Neutral'],\n\t\t\t['cs', 'Common_Separator'],\n\t\t\t['commonseparator', 'Common_Separator'],\n\t\t\t['en', 'European_Number'],\n\t\t\t['europeannumber', 'European_Number'],\n\t\t\t['es', 'European_Separator'],\n\t\t\t['europeanseparator', 'European_Separator'],\n\t\t\t['et', 'European_Terminator'],\n\t\t\t['europeanterminator', 'European_Terminator'],\n\t\t\t['fsi', 'First_Strong_Isolate'],\n\t\t\t['firststrongisolate', 'First_Strong_Isolate'],\n\t\t\t['l', 'Left_To_Right'],\n\t\t\t['lefttoright', 'Left_To_Right'],\n\t\t\t['lre', 'Left_To_Right_Embedding'],\n\t\t\t['lefttorightembedding', 'Left_To_Right_Embedding'],\n\t\t\t['lri', 'Left_To_Right_Isolate'],\n\t\t\t['lefttorightisolate', 'Left_To_Right_Isolate'],\n\t\t\t['lro', 'Left_To_Right_Override'],\n\t\t\t['lefttorightoverride', 'Left_To_Right_Override'],\n\t\t\t['nsm', 'Nonspacing_Mark'],\n\t\t\t['nonspacingmark', 'Nonspacing_Mark'],\n\t\t\t['on', 'Other_Neutral'],\n\t\t\t['otherneutral', 'Other_Neutral'],\n\t\t\t['pdf', 'Pop_Directional_Format'],\n\t\t\t['popdirectionalformat', 'Pop_Directional_Format'],\n\t\t\t['pdi', 'Pop_Directional_Isolate'],\n\t\t\t['popdirectionalisolate', 'Pop_Directional_Isolate'],\n\t\t\t['r', 'Right_To_Left'],\n\t\t\t['righttoleft', 'Right_To_Left'],\n\t\t\t['rle', 'Right_To_Left_Embedding'],\n\t\t\t['righttoleftembedding', 'Right_To_Left_Embedding'],\n\t\t\t['rli', 'Right_To_Left_Isolate'],\n\t\t\t['righttoleftisolate', 'Right_To_Left_Isolate'],\n\t\t\t['rlo', 'Right_To_Left_Override'],\n\t\t\t['righttoleftoverride', 'Right_To_Left_Override'],\n\t\t\t['s', 'Segment_Separator'],\n\t\t\t['segmentseparator', 'Segment_Separator'],\n\t\t\t['ws', 'White_Space'],\n\t\t\t['whitespace', 'White_Space']\n\t\t])],\n\t\t['Bidi_Paired_Bracket_Type', new Map([\n\t\t\t['c', 'Close'],\n\t\t\t['close', 'Close'],\n\t\t\t['n', 'None'],\n\t\t\t['none', 'None'],\n\t\t\t['o', 'Open'],\n\t\t\t['open', 'Open']\n\t\t])],\n\t\t['Canonical_Combining_Class', new Map([\n\t\t\t['nr', 'Not_Reordered'],\n\t\t\t['notreordered', 'Not_Reordered'],\n\t\t\t['ov', 'Overlay'],\n\t\t\t['overlay', 'Overlay'],\n\t\t\t['nk', 'Nukta'],\n\t\t\t['nukta', 'Nukta'],\n\t\t\t['kv', 'Kana_Voicing'],\n\t\t\t['kanavoicing', 'Kana_Voicing'],\n\t\t\t['vr', 'Virama'],\n\t\t\t['virama', 'Virama'],\n\t\t\t['ccc10', 'CCC10'],\n\t\t\t['ccc11', 'CCC11'],\n\t\t\t['ccc12', 'CCC12'],\n\t\t\t['ccc13', 'CCC13'],\n\t\t\t['ccc14', 'CCC14'],\n\t\t\t['ccc15', 'CCC15'],\n\t\t\t['ccc16', 'CCC16'],\n\t\t\t['ccc17', 'CCC17'],\n\t\t\t['ccc18', 'CCC18'],\n\t\t\t['ccc19', 'CCC19'],\n\t\t\t['ccc20', 'CCC20'],\n\t\t\t['ccc21', 'CCC21'],\n\t\t\t['ccc22', 'CCC22'],\n\t\t\t['ccc23', 'CCC23'],\n\t\t\t['ccc24', 'CCC24'],\n\t\t\t['ccc25', 'CCC25'],\n\t\t\t['ccc26', 'CCC26'],\n\t\t\t['ccc27', 'CCC27'],\n\t\t\t['ccc28', 'CCC28'],\n\t\t\t['ccc29', 'CCC29'],\n\t\t\t['ccc30', 'CCC30'],\n\t\t\t['ccc31', 'CCC31'],\n\t\t\t['ccc32', 'CCC32'],\n\t\t\t['ccc33', 'CCC33'],\n\t\t\t['ccc34', 'CCC34'],\n\t\t\t['ccc35', 'CCC35'],\n\t\t\t['ccc36', 'CCC36'],\n\t\t\t['ccc84', 'CCC84'],\n\t\t\t['ccc91', 'CCC91'],\n\t\t\t['ccc103', 'CCC103'],\n\t\t\t['ccc107', 'CCC107'],\n\t\t\t['ccc118', 'CCC118'],\n\t\t\t['ccc122', 'CCC122'],\n\t\t\t['ccc129', 'CCC129'],\n\t\t\t['ccc130', 'CCC130'],\n\t\t\t['ccc132', 'CCC132'],\n\t\t\t['ccc133', 'CCC133'],\n\t\t\t['atbl', 'Attached_Below_Left'],\n\t\t\t['attachedbelowleft', 'Attached_Below_Left'],\n\t\t\t['atb', 'Attached_Below'],\n\t\t\t['attachedbelow', 'Attached_Below'],\n\t\t\t['ata', 'Attached_Above'],\n\t\t\t['attachedabove', 'Attached_Above'],\n\t\t\t['atar', 'Attached_Above_Right'],\n\t\t\t['attachedaboveright', 'Attached_Above_Right'],\n\t\t\t['bl', 'Below_Left'],\n\t\t\t['belowleft', 'Below_Left'],\n\t\t\t['b', 'Below'],\n\t\t\t['below', 'Below'],\n\t\t\t['br', 'Below_Right'],\n\t\t\t['belowright', 'Below_Right'],\n\t\t\t['l', 'Left'],\n\t\t\t['left', 'Left'],\n\t\t\t['r', 'Right'],\n\t\t\t['right', 'Right'],\n\t\t\t['al', 'Above_Left'],\n\t\t\t['aboveleft', 'Above_Left'],\n\t\t\t['a', 'Above'],\n\t\t\t['above', 'Above'],\n\t\t\t['ar', 'Above_Right'],\n\t\t\t['aboveright', 'Above_Right'],\n\t\t\t['db', 'Double_Below'],\n\t\t\t['doublebelow', 'Double_Below'],\n\t\t\t['da', 'Double_Above'],\n\t\t\t['doubleabove', 'Double_Above'],\n\t\t\t['is', 'Iota_Subscript'],\n\t\t\t['iotasubscript', 'Iota_Subscript']\n\t\t])],\n\t\t['Decomposition_Type', new Map([\n\t\t\t['can', 'Canonical'],\n\t\t\t['canonical', 'Canonical'],\n\t\t\t['com', 'Compat'],\n\t\t\t['compat', 'Compat'],\n\t\t\t['enc', 'Circle'],\n\t\t\t['circle', 'Circle'],\n\t\t\t['fin', 'Final'],\n\t\t\t['final', 'Final'],\n\t\t\t['font', 'Font'],\n\t\t\t['fra', 'Fraction'],\n\t\t\t['fraction', 'Fraction'],\n\t\t\t['init', 'Initial'],\n\t\t\t['initial', 'Initial'],\n\t\t\t['iso', 'Isolated'],\n\t\t\t['isolated', 'Isolated'],\n\t\t\t['med', 'Medial'],\n\t\t\t['medial', 'Medial'],\n\t\t\t['nar', 'Narrow'],\n\t\t\t['narrow', 'Narrow'],\n\t\t\t['nb', 'Nobreak'],\n\t\t\t['nobreak', 'Nobreak'],\n\t\t\t['none', 'None'],\n\t\t\t['sml', 'Small'],\n\t\t\t['small', 'Small'],\n\t\t\t['sqr', 'Square'],\n\t\t\t['square', 'Square'],\n\t\t\t['sub', 'Sub'],\n\t\t\t['sup', 'Super'],\n\t\t\t['super', 'Super'],\n\t\t\t['vert', 'Vertical'],\n\t\t\t['vertical', 'Vertical'],\n\t\t\t['wide', 'Wide']\n\t\t])],\n\t\t['East_Asian_Width', new Map([\n\t\t\t['a', 'Ambiguous'],\n\t\t\t['ambiguous', 'Ambiguous'],\n\t\t\t['f', 'Fullwidth'],\n\t\t\t['fullwidth', 'Fullwidth'],\n\t\t\t['h', 'Halfwidth'],\n\t\t\t['halfwidth', 'Halfwidth'],\n\t\t\t['n', 'Neutral'],\n\t\t\t['neutral', 'Neutral'],\n\t\t\t['na', 'Narrow'],\n\t\t\t['narrow', 'Narrow'],\n\t\t\t['w', 'Wide'],\n\t\t\t['wide', 'Wide']\n\t\t])],\n\t\t['General_Category', new Map([\n\t\t\t['c', 'Other'],\n\t\t\t['other', 'Other'],\n\t\t\t['cc', 'Control'],\n\t\t\t['control', 'Control'],\n\t\t\t['cntrl', 'Control'],\n\t\t\t['cf', 'Format'],\n\t\t\t['format', 'Format'],\n\t\t\t['cn', 'Unassigned'],\n\t\t\t['unassigned', 'Unassigned'],\n\t\t\t['co', 'Private_Use'],\n\t\t\t['privateuse', 'Private_Use'],\n\t\t\t['cs', 'Surrogate'],\n\t\t\t['surrogate', 'Surrogate'],\n\t\t\t['l', 'Letter'],\n\t\t\t['letter', 'Letter'],\n\t\t\t['lc', 'Cased_Letter'],\n\t\t\t['casedletter', 'Cased_Letter'],\n\t\t\t['ll', 'Lowercase_Letter'],\n\t\t\t['lowercaseletter', 'Lowercase_Letter'],\n\t\t\t['lm', 'Modifier_Letter'],\n\t\t\t['modifierletter', 'Modifier_Letter'],\n\t\t\t['lo', 'Other_Letter'],\n\t\t\t['otherletter', 'Other_Letter'],\n\t\t\t['lt', 'Titlecase_Letter'],\n\t\t\t['titlecaseletter', 'Titlecase_Letter'],\n\t\t\t['lu', 'Uppercase_Letter'],\n\t\t\t['uppercaseletter', 'Uppercase_Letter'],\n\t\t\t['m', 'Mark'],\n\t\t\t['mark', 'Mark'],\n\t\t\t['combiningmark', 'Mark'],\n\t\t\t['mc', 'Spacing_Mark'],\n\t\t\t['spacingmark', 'Spacing_Mark'],\n\t\t\t['me', 'Enclosing_Mark'],\n\t\t\t['enclosingmark', 'Enclosing_Mark'],\n\t\t\t['mn', 'Nonspacing_Mark'],\n\t\t\t['nonspacingmark', 'Nonspacing_Mark'],\n\t\t\t['n', 'Number'],\n\t\t\t['number', 'Number'],\n\t\t\t['nd', 'Decimal_Number'],\n\t\t\t['decimalnumber', 'Decimal_Number'],\n\t\t\t['digit', 'Decimal_Number'],\n\t\t\t['nl', 'Letter_Number'],\n\t\t\t['letternumber', 'Letter_Number'],\n\t\t\t['no', 'Other_Number'],\n\t\t\t['othernumber', 'Other_Number'],\n\t\t\t['p', 'Punctuation'],\n\t\t\t['punctuation', 'Punctuation'],\n\t\t\t['punct', 'Punctuation'],\n\t\t\t['pc', 'Connector_Punctuation'],\n\t\t\t['connectorpunctuation', 'Connector_Punctuation'],\n\t\t\t['pd', 'Dash_Punctuation'],\n\t\t\t['dashpunctuation', 'Dash_Punctuation'],\n\t\t\t['pe', 'Close_Punctuation'],\n\t\t\t['closepunctuation', 'Close_Punctuation'],\n\t\t\t['pf', 'Final_Punctuation'],\n\t\t\t['finalpunctuation', 'Final_Punctuation'],\n\t\t\t['pi', 'Initial_Punctuation'],\n\t\t\t['initialpunctuation', 'Initial_Punctuation'],\n\t\t\t['po', 'Other_Punctuation'],\n\t\t\t['otherpunctuation', 'Other_Punctuation'],\n\t\t\t['ps', 'Open_Punctuation'],\n\t\t\t['openpunctuation', 'Open_Punctuation'],\n\t\t\t['s', 'Symbol'],\n\t\t\t['symbol', 'Symbol'],\n\t\t\t['sc', 'Currency_Symbol'],\n\t\t\t['currencysymbol', 'Currency_Symbol'],\n\t\t\t['sk', 'Modifier_Symbol'],\n\t\t\t['modifiersymbol', 'Modifier_Symbol'],\n\t\t\t['sm', 'Math_Symbol'],\n\t\t\t['mathsymbol', 'Math_Symbol'],\n\t\t\t['so', 'Other_Symbol'],\n\t\t\t['othersymbol', 'Other_Symbol'],\n\t\t\t['z', 'Separator'],\n\t\t\t['separator', 'Separator'],\n\t\t\t['zl', 'Line_Separator'],\n\t\t\t['lineseparator', 'Line_Separator'],\n\t\t\t['zp', 'Paragraph_Separator'],\n\t\t\t['paragraphseparator', 'Paragraph_Separator'],\n\t\t\t['zs', 'Space_Separator'],\n\t\t\t['spaceseparator', 'Space_Separator']\n\t\t])],\n\t\t['Grapheme_Cluster_Break', new Map([\n\t\t\t['cn', 'Control'],\n\t\t\t['control', 'Control'],\n\t\t\t['cr', 'CR'],\n\t\t\t['eb', 'E_Base'],\n\t\t\t['ebase', 'E_Base'],\n\t\t\t['ebg', 'E_Base_GAZ'],\n\t\t\t['ebasegaz', 'E_Base_GAZ'],\n\t\t\t['em', 'E_Modifier'],\n\t\t\t['emodifier', 'E_Modifier'],\n\t\t\t['ex', 'Extend'],\n\t\t\t['extend', 'Extend'],\n\t\t\t['gaz', 'Glue_After_Zwj'],\n\t\t\t['glueafterzwj', 'Glue_After_Zwj'],\n\t\t\t['l', 'L'],\n\t\t\t['lf', 'LF'],\n\t\t\t['lv', 'LV'],\n\t\t\t['lvt', 'LVT'],\n\t\t\t['pp', 'Prepend'],\n\t\t\t['prepend', 'Prepend'],\n\t\t\t['ri', 'Regional_Indicator'],\n\t\t\t['regionalindicator', 'Regional_Indicator'],\n\t\t\t['sm', 'SpacingMark'],\n\t\t\t['spacingmark', 'SpacingMark'],\n\t\t\t['t', 'T'],\n\t\t\t['v', 'V'],\n\t\t\t['xx', 'Other'],\n\t\t\t['other', 'Other'],\n\t\t\t['zwj', 'ZWJ']\n\t\t])],\n\t\t['Hangul_Syllable_Type', new Map([\n\t\t\t['l', 'Leading_Jamo'],\n\t\t\t['leadingjamo', 'Leading_Jamo'],\n\t\t\t['lv', 'LV_Syllable'],\n\t\t\t['lvsyllable', 'LV_Syllable'],\n\t\t\t['lvt', 'LVT_Syllable'],\n\t\t\t['lvtsyllable', 'LVT_Syllable'],\n\t\t\t['na', 'Not_Applicable'],\n\t\t\t['notapplicable', 'Not_Applicable'],\n\t\t\t['t', 'Trailing_Jamo'],\n\t\t\t['trailingjamo', 'Trailing_Jamo'],\n\t\t\t['v', 'Vowel_Jamo'],\n\t\t\t['voweljamo', 'Vowel_Jamo']\n\t\t])],\n\t\t['Indic_Positional_Category', new Map([\n\t\t\t['bottom', 'Bottom'],\n\t\t\t['bottomandright', 'Bottom_And_Right'],\n\t\t\t['left', 'Left'],\n\t\t\t['leftandright', 'Left_And_Right'],\n\t\t\t['na', 'NA'],\n\t\t\t['overstruck', 'Overstruck'],\n\t\t\t['right', 'Right'],\n\t\t\t['top', 'Top'],\n\t\t\t['topandbottom', 'Top_And_Bottom'],\n\t\t\t['topandbottomandright', 'Top_And_Bottom_And_Right'],\n\t\t\t['topandleft', 'Top_And_Left'],\n\t\t\t['topandleftandright', 'Top_And_Left_And_Right'],\n\t\t\t['topandright', 'Top_And_Right'],\n\t\t\t['visualorderleft', 'Visual_Order_Left']\n\t\t])],\n\t\t['Indic_Syllabic_Category', new Map([\n\t\t\t['avagraha', 'Avagraha'],\n\t\t\t['bindu', 'Bindu'],\n\t\t\t['brahmijoiningnumber', 'Brahmi_Joining_Number'],\n\t\t\t['cantillationmark', 'Cantillation_Mark'],\n\t\t\t['consonant', 'Consonant'],\n\t\t\t['consonantdead', 'Consonant_Dead'],\n\t\t\t['consonantfinal', 'Consonant_Final'],\n\t\t\t['consonantheadletter', 'Consonant_Head_Letter'],\n\t\t\t['consonantkiller', 'Consonant_Killer'],\n\t\t\t['consonantmedial', 'Consonant_Medial'],\n\t\t\t['consonantplaceholder', 'Consonant_Placeholder'],\n\t\t\t['consonantprecedingrepha', 'Consonant_Preceding_Repha'],\n\t\t\t['consonantprefixed', 'Consonant_Prefixed'],\n\t\t\t['consonantsubjoined', 'Consonant_Subjoined'],\n\t\t\t['consonantsucceedingrepha', 'Consonant_Succeeding_Repha'],\n\t\t\t['consonantwithstacker', 'Consonant_With_Stacker'],\n\t\t\t['geminationmark', 'Gemination_Mark'],\n\t\t\t['invisiblestacker', 'Invisible_Stacker'],\n\t\t\t['joiner', 'Joiner'],\n\t\t\t['modifyingletter', 'Modifying_Letter'],\n\t\t\t['nonjoiner', 'Non_Joiner'],\n\t\t\t['nukta', 'Nukta'],\n\t\t\t['number', 'Number'],\n\t\t\t['numberjoiner', 'Number_Joiner'],\n\t\t\t['other', 'Other'],\n\t\t\t['purekiller', 'Pure_Killer'],\n\t\t\t['registershifter', 'Register_Shifter'],\n\t\t\t['syllablemodifier', 'Syllable_Modifier'],\n\t\t\t['toneletter', 'Tone_Letter'],\n\t\t\t['tonemark', 'Tone_Mark'],\n\t\t\t['virama', 'Virama'],\n\t\t\t['visarga', 'Visarga'],\n\t\t\t['vowel', 'Vowel'],\n\t\t\t['voweldependent', 'Vowel_Dependent'],\n\t\t\t['vowelindependent', 'Vowel_Independent']\n\t\t])],\n\t\t['Joining_Group', new Map([\n\t\t\t['africanfeh', 'African_Feh'],\n\t\t\t['africannoon', 'African_Noon'],\n\t\t\t['africanqaf', 'African_Qaf'],\n\t\t\t['ain', 'Ain'],\n\t\t\t['alaph', 'Alaph'],\n\t\t\t['alef', 'Alef'],\n\t\t\t['beh', 'Beh'],\n\t\t\t['beth', 'Beth'],\n\t\t\t['burushaskiyehbarree', 'Burushaski_Yeh_Barree'],\n\t\t\t['dal', 'Dal'],\n\t\t\t['dalathrish', 'Dalath_Rish'],\n\t\t\t['e', 'E'],\n\t\t\t['farsiyeh', 'Farsi_Yeh'],\n\t\t\t['fe', 'Fe'],\n\t\t\t['feh', 'Feh'],\n\t\t\t['finalsemkath', 'Final_Semkath'],\n\t\t\t['gaf', 'Gaf'],\n\t\t\t['gamal', 'Gamal'],\n\t\t\t['hah', 'Hah'],\n\t\t\t['he', 'He'],\n\t\t\t['heh', 'Heh'],\n\t\t\t['hehgoal', 'Heh_Goal'],\n\t\t\t['heth', 'Heth'],\n\t\t\t['kaf', 'Kaf'],\n\t\t\t['kaph', 'Kaph'],\n\t\t\t['khaph', 'Khaph'],\n\t\t\t['knottedheh', 'Knotted_Heh'],\n\t\t\t['lam', 'Lam'],\n\t\t\t['lamadh', 'Lamadh'],\n\t\t\t['manichaeanaleph', 'Manichaean_Aleph'],\n\t\t\t['manichaeanayin', 'Manichaean_Ayin'],\n\t\t\t['manichaeanbeth', 'Manichaean_Beth'],\n\t\t\t['manichaeandaleth', 'Manichaean_Daleth'],\n\t\t\t['manichaeandhamedh', 'Manichaean_Dhamedh'],\n\t\t\t['manichaeanfive', 'Manichaean_Five'],\n\t\t\t['manichaeangimel', 'Manichaean_Gimel'],\n\t\t\t['manichaeanheth', 'Manichaean_Heth'],\n\t\t\t['manichaeanhundred', 'Manichaean_Hundred'],\n\t\t\t['manichaeankaph', 'Manichaean_Kaph'],\n\t\t\t['manichaeanlamedh', 'Manichaean_Lamedh'],\n\t\t\t['manichaeanmem', 'Manichaean_Mem'],\n\t\t\t['manichaeannun', 'Manichaean_Nun'],\n\t\t\t['manichaeanone', 'Manichaean_One'],\n\t\t\t['manichaeanpe', 'Manichaean_Pe'],\n\t\t\t['manichaeanqoph', 'Manichaean_Qoph'],\n\t\t\t['manichaeanresh', 'Manichaean_Resh'],\n\t\t\t['manichaeansadhe', 'Manichaean_Sadhe'],\n\t\t\t['manichaeansamekh', 'Manichaean_Samekh'],\n\t\t\t['manichaeantaw', 'Manichaean_Taw'],\n\t\t\t['manichaeanten', 'Manichaean_Ten'],\n\t\t\t['manichaeanteth', 'Manichaean_Teth'],\n\t\t\t['manichaeanthamedh', 'Manichaean_Thamedh'],\n\t\t\t['manichaeantwenty', 'Manichaean_Twenty'],\n\t\t\t['manichaeanwaw', 'Manichaean_Waw'],\n\t\t\t['manichaeanyodh', 'Manichaean_Yodh'],\n\t\t\t['manichaeanzayin', 'Manichaean_Zayin'],\n\t\t\t['meem', 'Meem'],\n\t\t\t['mim', 'Mim'],\n\t\t\t['nojoininggroup', 'No_Joining_Group'],\n\t\t\t['noon', 'Noon'],\n\t\t\t['nun', 'Nun'],\n\t\t\t['nya', 'Nya'],\n\t\t\t['pe', 'Pe'],\n\t\t\t['qaf', 'Qaf'],\n\t\t\t['qaph', 'Qaph'],\n\t\t\t['reh', 'Reh'],\n\t\t\t['reversedpe', 'Reversed_Pe'],\n\t\t\t['rohingyayeh', 'Rohingya_Yeh'],\n\t\t\t['sad', 'Sad'],\n\t\t\t['sadhe', 'Sadhe'],\n\t\t\t['seen', 'Seen'],\n\t\t\t['semkath', 'Semkath'],\n\t\t\t['shin', 'Shin'],\n\t\t\t['straightwaw', 'Straight_Waw'],\n\t\t\t['swashkaf', 'Swash_Kaf'],\n\t\t\t['syriacwaw', 'Syriac_Waw'],\n\t\t\t['tah', 'Tah'],\n\t\t\t['taw', 'Taw'],\n\t\t\t['tehmarbuta', 'Teh_Marbuta'],\n\t\t\t['tehmarbutagoal', 'Hamza_On_Heh_Goal'],\n\t\t\t['hamzaonhehgoal', 'Hamza_On_Heh_Goal'],\n\t\t\t['teth', 'Teth'],\n\t\t\t['waw', 'Waw'],\n\t\t\t['yeh', 'Yeh'],\n\t\t\t['yehbarree', 'Yeh_Barree'],\n\t\t\t['yehwithtail', 'Yeh_With_Tail'],\n\t\t\t['yudh', 'Yudh'],\n\t\t\t['yudhhe', 'Yudh_He'],\n\t\t\t['zain', 'Zain'],\n\t\t\t['zhain', 'Zhain']\n\t\t])],\n\t\t['Joining_Type', new Map([\n\t\t\t['c', 'Join_Causing'],\n\t\t\t['joincausing', 'Join_Causing'],\n\t\t\t['d', 'Dual_Joining'],\n\t\t\t['dualjoining', 'Dual_Joining'],\n\t\t\t['l', 'Left_Joining'],\n\t\t\t['leftjoining', 'Left_Joining'],\n\t\t\t['r', 'Right_Joining'],\n\t\t\t['rightjoining', 'Right_Joining'],\n\t\t\t['t', 'Transparent'],\n\t\t\t['transparent', 'Transparent'],\n\t\t\t['u', 'Non_Joining'],\n\t\t\t['nonjoining', 'Non_Joining']\n\t\t])],\n\t\t['Line_Break', new Map([\n\t\t\t['ai', 'Ambiguous'],\n\t\t\t['ambiguous', 'Ambiguous'],\n\t\t\t['al', 'Alphabetic'],\n\t\t\t['alphabetic', 'Alphabetic'],\n\t\t\t['b2', 'Break_Both'],\n\t\t\t['breakboth', 'Break_Both'],\n\t\t\t['ba', 'Break_After'],\n\t\t\t['breakafter', 'Break_After'],\n\t\t\t['bb', 'Break_Before'],\n\t\t\t['breakbefore', 'Break_Before'],\n\t\t\t['bk', 'Mandatory_Break'],\n\t\t\t['mandatorybreak', 'Mandatory_Break'],\n\t\t\t['cb', 'Contingent_Break'],\n\t\t\t['contingentbreak', 'Contingent_Break'],\n\t\t\t['cj', 'Conditional_Japanese_Starter'],\n\t\t\t['conditionaljapanesestarter', 'Conditional_Japanese_Starter'],\n\t\t\t['cl', 'Close_Punctuation'],\n\t\t\t['closepunctuation', 'Close_Punctuation'],\n\t\t\t['cm', 'Combining_Mark'],\n\t\t\t['combiningmark', 'Combining_Mark'],\n\t\t\t['cp', 'Close_Parenthesis'],\n\t\t\t['closeparenthesis', 'Close_Parenthesis'],\n\t\t\t['cr', 'Carriage_Return'],\n\t\t\t['carriagereturn', 'Carriage_Return'],\n\t\t\t['eb', 'E_Base'],\n\t\t\t['ebase', 'E_Base'],\n\t\t\t['em', 'E_Modifier'],\n\t\t\t['emodifier', 'E_Modifier'],\n\t\t\t['ex', 'Exclamation'],\n\t\t\t['exclamation', 'Exclamation'],\n\t\t\t['gl', 'Glue'],\n\t\t\t['glue', 'Glue'],\n\t\t\t['h2', 'H2'],\n\t\t\t['h3', 'H3'],\n\t\t\t['hl', 'Hebrew_Letter'],\n\t\t\t['hebrewletter', 'Hebrew_Letter'],\n\t\t\t['hy', 'Hyphen'],\n\t\t\t['hyphen', 'Hyphen'],\n\t\t\t['id', 'Ideographic'],\n\t\t\t['ideographic', 'Ideographic'],\n\t\t\t['in', 'Inseparable'],\n\t\t\t['inseparable', 'Inseparable'],\n\t\t\t['inseperable', 'Inseparable'],\n\t\t\t['is', 'Infix_Numeric'],\n\t\t\t['infixnumeric', 'Infix_Numeric'],\n\t\t\t['jl', 'JL'],\n\t\t\t['jt', 'JT'],\n\t\t\t['jv', 'JV'],\n\t\t\t['lf', 'Line_Feed'],\n\t\t\t['linefeed', 'Line_Feed'],\n\t\t\t['nl', 'Next_Line'],\n\t\t\t['nextline', 'Next_Line'],\n\t\t\t['ns', 'Nonstarter'],\n\t\t\t['nonstarter', 'Nonstarter'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric'],\n\t\t\t['op', 'Open_Punctuation'],\n\t\t\t['openpunctuation', 'Open_Punctuation'],\n\t\t\t['po', 'Postfix_Numeric'],\n\t\t\t['postfixnumeric', 'Postfix_Numeric'],\n\t\t\t['pr', 'Prefix_Numeric'],\n\t\t\t['prefixnumeric', 'Prefix_Numeric'],\n\t\t\t['qu', 'Quotation'],\n\t\t\t['quotation', 'Quotation'],\n\t\t\t['ri', 'Regional_Indicator'],\n\t\t\t['regionalindicator', 'Regional_Indicator'],\n\t\t\t['sa', 'Complex_Context'],\n\t\t\t['complexcontext', 'Complex_Context'],\n\t\t\t['sg', 'Surrogate'],\n\t\t\t['surrogate', 'Surrogate'],\n\t\t\t['sp', 'Space'],\n\t\t\t['space', 'Space'],\n\t\t\t['sy', 'Break_Symbols'],\n\t\t\t['breaksymbols', 'Break_Symbols'],\n\t\t\t['wj', 'Word_Joiner'],\n\t\t\t['wordjoiner', 'Word_Joiner'],\n\t\t\t['xx', 'Unknown'],\n\t\t\t['unknown', 'Unknown'],\n\t\t\t['zw', 'ZWSpace'],\n\t\t\t['zwspace', 'ZWSpace'],\n\t\t\t['zwj', 'ZWJ']\n\t\t])],\n\t\t['NFC_Quick_Check', new Map([\n\t\t\t['m', 'Maybe'],\n\t\t\t['maybe', 'Maybe'],\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['NFD_Quick_Check', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['NFKC_Quick_Check', new Map([\n\t\t\t['m', 'Maybe'],\n\t\t\t['maybe', 'Maybe'],\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['NFKD_Quick_Check', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes']\n\t\t])],\n\t\t['Numeric_Type', new Map([\n\t\t\t['de', 'Decimal'],\n\t\t\t['decimal', 'Decimal'],\n\t\t\t['di', 'Digit'],\n\t\t\t['digit', 'Digit'],\n\t\t\t['none', 'None'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric']\n\t\t])],\n\t\t['Sentence_Break', new Map([\n\t\t\t['at', 'ATerm'],\n\t\t\t['aterm', 'ATerm'],\n\t\t\t['cl', 'Close'],\n\t\t\t['close', 'Close'],\n\t\t\t['cr', 'CR'],\n\t\t\t['ex', 'Extend'],\n\t\t\t['extend', 'Extend'],\n\t\t\t['fo', 'Format'],\n\t\t\t['format', 'Format'],\n\t\t\t['le', 'OLetter'],\n\t\t\t['oletter', 'OLetter'],\n\t\t\t['lf', 'LF'],\n\t\t\t['lo', 'Lower'],\n\t\t\t['lower', 'Lower'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric'],\n\t\t\t['sc', 'SContinue'],\n\t\t\t['scontinue', 'SContinue'],\n\t\t\t['se', 'Sep'],\n\t\t\t['sep', 'Sep'],\n\t\t\t['sp', 'Sp'],\n\t\t\t['st', 'STerm'],\n\t\t\t['sterm', 'STerm'],\n\t\t\t['up', 'Upper'],\n\t\t\t['upper', 'Upper'],\n\t\t\t['xx', 'Other'],\n\t\t\t['other', 'Other']\n\t\t])],\n\t\t['Word_Break', new Map([\n\t\t\t['cr', 'CR'],\n\t\t\t['dq', 'Double_Quote'],\n\t\t\t['doublequote', 'Double_Quote'],\n\t\t\t['eb', 'E_Base'],\n\t\t\t['ebase', 'E_Base'],\n\t\t\t['ebg', 'E_Base_GAZ'],\n\t\t\t['ebasegaz', 'E_Base_GAZ'],\n\t\t\t['em', 'E_Modifier'],\n\t\t\t['emodifier', 'E_Modifier'],\n\t\t\t['ex', 'ExtendNumLet'],\n\t\t\t['extendnumlet', 'ExtendNumLet'],\n\t\t\t['extend', 'Extend'],\n\t\t\t['fo', 'Format'],\n\t\t\t['format', 'Format'],\n\t\t\t['gaz', 'Glue_After_Zwj'],\n\t\t\t['glueafterzwj', 'Glue_After_Zwj'],\n\t\t\t['hl', 'Hebrew_Letter'],\n\t\t\t['hebrewletter', 'Hebrew_Letter'],\n\t\t\t['ka', 'Katakana'],\n\t\t\t['katakana', 'Katakana'],\n\t\t\t['le', 'ALetter'],\n\t\t\t['aletter', 'ALetter'],\n\t\t\t['lf', 'LF'],\n\t\t\t['mb', 'MidNumLet'],\n\t\t\t['midnumlet', 'MidNumLet'],\n\t\t\t['ml', 'MidLetter'],\n\t\t\t['midletter', 'MidLetter'],\n\t\t\t['mn', 'MidNum'],\n\t\t\t['midnum', 'MidNum'],\n\t\t\t['nl', 'Newline'],\n\t\t\t['newline', 'Newline'],\n\t\t\t['nu', 'Numeric'],\n\t\t\t['numeric', 'Numeric'],\n\t\t\t['ri', 'Regional_Indicator'],\n\t\t\t['regionalindicator', 'Regional_Indicator'],\n\t\t\t['sq', 'Single_Quote'],\n\t\t\t['singlequote', 'Single_Quote'],\n\t\t\t['xx', 'Other'],\n\t\t\t['other', 'Other'],\n\t\t\t['zwj', 'ZWJ']\n\t\t])],\n\t\t['ASCII_Hex_Digit', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Alphabetic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Bidi_Control', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Bidi_Mirrored', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Cased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Composition_Exclusion', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Case_Ignorable', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Full_Composition_Exclusion', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Casefolded', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Casemapped', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_NFKC_Casefolded', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Lowercased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Titlecased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Changes_When_Uppercased', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Dash', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Deprecated', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Default_Ignorable_Code_Point', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Diacritic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Extender', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Grapheme_Base', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Grapheme_Extend', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Grapheme_Link', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Hex_Digit', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Hyphen', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['ID_Continue', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Ideographic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['ID_Start', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['IDS_Binary_Operator', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['IDS_Trinary_Operator', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Join_Control', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Logical_Order_Exception', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Lowercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Math', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Noncharacter_Code_Point', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Alphabetic', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Default_Ignorable_Code_Point', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Grapheme_Extend', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_ID_Continue', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_ID_Start', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Lowercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Math', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Other_Uppercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Pattern_Syntax', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Pattern_White_Space', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Prepended_Concatenation_Mark', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Quotation_Mark', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Radical', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Soft_Dotted', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Sentence_Terminal', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Terminal_Punctuation', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Unified_Ideograph', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Uppercase', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Variation_Selector', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['White_Space', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['XID_Continue', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['XID_Start', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFC', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFD', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFKC', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])],\n\t\t['Expands_On_NFKD', new Map([\n\t\t\t['n', 'No'],\n\t\t\t['no', 'No'],\n\t\t\t['f', 'No'],\n\t\t\t['false', 'No'],\n\t\t\t['y', 'Yes'],\n\t\t\t['yes', 'Yes'],\n\t\t\t['t', 'Yes'],\n\t\t\t['true', 'Yes']\n\t\t])]\n\t])\n};\n","'use strict';\n\nconst mappings = require('./data/mappings.js');\nconst aliasToProperty = mappings.aliasToProperty;\nconst propertyToValueAliases = mappings.propertyToValueAliases;\n\nconst normalize = function(string) {\n\tconst normalized = string\n\t\t// Remove case distinctions.\n\t\t.toLowerCase()\n\t\t// Remove whitespace.\n\t\t.replace(/\\s/g, '')\n\t\t// Remove `-` and `_`.\n\t\t.replace(/[-_]/g, '');\n\treturn normalized;\n};\n\nconst matchLoosely = function(property, value) {\n\tconst normalizedProperty = normalize(property);\n\tconst canonicalProperty = aliasToProperty.get(normalizedProperty);\n\tif (!canonicalProperty) {\n\t\tthrow new Error(`Unknown property: ${ property }`);\n\t}\n\tconst aliasToValue = propertyToValueAliases.get(\n\t\tcanonicalProperty == 'Script_Extensions' ? 'Script' : canonicalProperty\n\t);\n\tconst result = {\n\t\t'property': canonicalProperty\n\t};\n\tif (value) {\n\t\tconst normalizedValue = normalize(value);\n\t\tconst canonicalValue = aliasToValue.get(normalizedValue);\n\t\tif (canonicalValue) {\n\t\t\tresult.value = canonicalValue;\n\t\t}\n\t}\n\treturn result;\n};\n\nmodule.exports = matchLoosely;\n","// regjsparser\n//\n// ==================================================================\n//\n// See ECMA-262 Standard: 15.10.1\n//\n// NOTE: The ECMA-262 standard uses the term \"Assertion\" for /^/. Here the\n// term \"Anchor\" is used.\n//\n// Pattern ::\n// Disjunction\n//\n// Disjunction ::\n// Alternative\n// Alternative | Disjunction\n//\n// Alternative ::\n// [empty]\n// Alternative Term\n//\n// Term ::\n// Anchor\n// Atom\n// Atom Quantifier\n//\n// Anchor ::\n// ^\n// $\n// \\ b\n// \\ B\n// ( ? = Disjunction )\n// ( ? ! Disjunction )\n//\n// Quantifier ::\n// QuantifierPrefix\n// QuantifierPrefix ?\n//\n// QuantifierPrefix ::\n// *\n// +\n// ?\n// { DecimalDigits }\n// { DecimalDigits , }\n// { DecimalDigits , DecimalDigits }\n//\n// Atom ::\n// PatternCharacter\n// .\n// \\ AtomEscape\n// CharacterClass\n// ( Disjunction )\n// ( ? : Disjunction )\n//\n// PatternCharacter ::\n// SourceCharacter but not any of: ^ $ \\ . * + ? ( ) [ ] { } |\n//\n// AtomEscape ::\n// DecimalEscape\n// CharacterEscape\n// CharacterClassEscape\n//\n// CharacterEscape[U] ::\n// ControlEscape\n// c ControlLetter\n// HexEscapeSequence\n// RegExpUnicodeEscapeSequence[?U] (ES6)\n// IdentityEscape[?U]\n//\n// ControlEscape ::\n// one of f n r t v\n// ControlLetter ::\n// one of\n// a b c d e f g h i j k l m n o p q r s t u v w x y z\n// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n//\n// IdentityEscape ::\n// SourceCharacter but not IdentifierPart\n// <ZWJ>\n// <ZWNJ>\n//\n// DecimalEscape ::\n// DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n//\n// CharacterClassEscape ::\n// one of d D s S w W\n//\n// CharacterClass ::\n// [ [lookahead ∉ {^}] ClassRanges ]\n// [ ^ ClassRanges ]\n//\n// ClassRanges ::\n// [empty]\n// NonemptyClassRanges\n//\n// NonemptyClassRanges ::\n// ClassAtom\n// ClassAtom NonemptyClassRangesNoDash\n// ClassAtom - ClassAtom ClassRanges\n//\n// NonemptyClassRangesNoDash ::\n// ClassAtom\n// ClassAtomNoDash NonemptyClassRangesNoDash\n// ClassAtomNoDash - ClassAtom ClassRanges\n//\n// ClassAtom ::\n// -\n// ClassAtomNoDash\n//\n// ClassAtomNoDash ::\n// SourceCharacter but not one of \\ or ] or -\n// \\ ClassEscape\n//\n// ClassEscape ::\n// DecimalEscape\n// b\n// CharacterEscape\n// CharacterClassEscape\n\n(function() {\n\n function parse(str, flags, features) {\n if (!features) {\n features = {};\n }\n function addRaw(node) {\n node.raw = str.substring(node.range[0], node.range[1]);\n return node;\n }\n\n function updateRawStart(node, start) {\n node.range[0] = start;\n return addRaw(node);\n }\n\n function createAnchor(kind, rawLength) {\n return addRaw({\n type: 'anchor',\n kind: kind,\n range: [\n pos - rawLength,\n pos\n ]\n });\n }\n\n function createValue(kind, codePoint, from, to) {\n return addRaw({\n type: 'value',\n kind: kind,\n codePoint: codePoint,\n range: [from, to]\n });\n }\n\n function createEscaped(kind, codePoint, value, fromOffset) {\n fromOffset = fromOffset || 0;\n return createValue(kind, codePoint, pos - (value.length + fromOffset), pos);\n }\n\n function createCharacter(matches) {\n var _char = matches[0];\n var first = _char.charCodeAt(0);\n if (hasUnicodeFlag) {\n var second;\n if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) {\n second = lookahead().charCodeAt(0);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n pos++;\n return createValue(\n 'symbol',\n (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000,\n pos - 2, pos);\n }\n }\n }\n return createValue('symbol', first, pos - 1, pos);\n }\n\n function createDisjunction(alternatives, from, to) {\n return addRaw({\n type: 'disjunction',\n body: alternatives,\n range: [\n from,\n to\n ]\n });\n }\n\n function createDot() {\n return addRaw({\n type: 'dot',\n range: [\n pos - 1,\n pos\n ]\n });\n }\n\n function createCharacterClassEscape(value) {\n return addRaw({\n type: 'characterClassEscape',\n value: value,\n range: [\n pos - 2,\n pos\n ]\n });\n }\n\n function createReference(matchIndex) {\n return addRaw({\n type: 'reference',\n matchIndex: parseInt(matchIndex, 10),\n range: [\n pos - 1 - matchIndex.length,\n pos\n ]\n });\n }\n\n function createGroup(behavior, disjunction, from, to) {\n return addRaw({\n type: 'group',\n behavior: behavior,\n body: disjunction,\n range: [\n from,\n to\n ]\n });\n }\n\n function createQuantifier(min, max, from, to) {\n if (to == null) {\n from = pos - 1;\n to = pos;\n }\n\n return addRaw({\n type: 'quantifier',\n min: min,\n max: max,\n greedy: true,\n body: null, // set later on\n range: [\n from,\n to\n ]\n });\n }\n\n function createAlternative(terms, from, to) {\n return addRaw({\n type: 'alternative',\n body: terms,\n range: [\n from,\n to\n ]\n });\n }\n\n function createCharacterClass(classRanges, negative, from, to) {\n return addRaw({\n type: 'characterClass',\n body: classRanges,\n negative: negative,\n range: [\n from,\n to\n ]\n });\n }\n\n function createClassRange(min, max, from, to) {\n // See 15.10.2.15:\n if (min.codePoint > max.codePoint) {\n bail('invalid range in character class', min.raw + '-' + max.raw, from, to);\n }\n\n return addRaw({\n type: 'characterClassRange',\n min: min,\n max: max,\n range: [\n from,\n to\n ]\n });\n }\n\n function flattenBody(body) {\n if (body.type === 'alternative') {\n return body.body;\n } else {\n return [body];\n }\n }\n\n function isEmpty(obj) {\n return obj.type === 'empty';\n }\n\n function incr(amount) {\n amount = (amount || 1);\n var res = str.substring(pos, pos + amount);\n pos += (amount || 1);\n return res;\n }\n\n function skip(value) {\n if (!match(value)) {\n bail('character', value);\n }\n }\n\n function match(value) {\n if (str.indexOf(value, pos) === pos) {\n return incr(value.length);\n }\n }\n\n function lookahead() {\n return str[pos];\n }\n\n function current(value) {\n return str.indexOf(value, pos) === pos;\n }\n\n function next(value) {\n return str[pos + 1] === value;\n }\n\n function matchReg(regExp) {\n var subStr = str.substring(pos);\n var res = subStr.match(regExp);\n if (res) {\n res.range = [];\n res.range[0] = pos;\n incr(res[0].length);\n res.range[1] = pos;\n }\n return res;\n }\n\n function parseDisjunction() {\n // Disjunction ::\n // Alternative\n // Alternative | Disjunction\n var res = [], from = pos;\n res.push(parseAlternative());\n\n while (match('|')) {\n res.push(parseAlternative());\n }\n\n if (res.length === 1) {\n return res[0];\n }\n\n return createDisjunction(res, from, pos);\n }\n\n function parseAlternative() {\n var res = [], from = pos;\n var term;\n\n // Alternative ::\n // [empty]\n // Alternative Term\n while (term = parseTerm()) {\n res.push(term);\n }\n\n if (res.length === 1) {\n return res[0];\n }\n\n return createAlternative(res, from, pos);\n }\n\n function parseTerm() {\n // Term ::\n // Anchor\n // Atom\n // Atom Quantifier\n\n if (pos >= str.length || current('|') || current(')')) {\n return null; /* Means: The term is empty */\n }\n\n var anchor = parseAnchor();\n\n if (anchor) {\n return anchor;\n }\n\n var atom = parseAtom();\n if (!atom) {\n bail('Expected atom');\n }\n var quantifier = parseQuantifier() || false;\n if (quantifier) {\n quantifier.body = flattenBody(atom);\n // The quantifier contains the atom. Therefore, the beginning of the\n // quantifier range is given by the beginning of the atom.\n updateRawStart(quantifier, atom.range[0]);\n return quantifier;\n }\n return atom;\n }\n\n function parseGroup(matchA, typeA, matchB, typeB) {\n var type = null, from = pos;\n\n if (match(matchA)) {\n type = typeA;\n } else if (match(matchB)) {\n type = typeB;\n } else {\n return false;\n }\n\n var body = parseDisjunction();\n if (!body) {\n bail('Expected disjunction');\n }\n skip(')');\n var group = createGroup(type, flattenBody(body), from, pos);\n\n if (type == 'normal') {\n // Keep track of the number of closed groups. This is required for\n // parseDecimalEscape(). In case the string is parsed a second time the\n // value already holds the total count and no incrementation is required.\n if (firstIteration) {\n closedCaptureCounter++;\n }\n }\n return group;\n }\n\n function parseAnchor() {\n // Anchor ::\n // ^\n // $\n // \\ b\n // \\ B\n // ( ? = Disjunction )\n // ( ? ! Disjunction )\n var res, from = pos;\n\n if (match('^')) {\n return createAnchor('start', 1 /* rawLength */);\n } else if (match('$')) {\n return createAnchor('end', 1 /* rawLength */);\n } else if (match('\\\\b')) {\n return createAnchor('boundary', 2 /* rawLength */);\n } else if (match('\\\\B')) {\n return createAnchor('not-boundary', 2 /* rawLength */);\n } else {\n return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead');\n }\n }\n\n function parseQuantifier() {\n // Quantifier ::\n // QuantifierPrefix\n // QuantifierPrefix ?\n //\n // QuantifierPrefix ::\n // *\n // +\n // ?\n // { DecimalDigits }\n // { DecimalDigits , }\n // { DecimalDigits , DecimalDigits }\n\n var res, from = pos;\n var quantifier;\n var min, max;\n\n if (match('*')) {\n quantifier = createQuantifier(0);\n }\n else if (match('+')) {\n quantifier = createQuantifier(1);\n }\n else if (match('?')) {\n quantifier = createQuantifier(0, 1);\n }\n else if (res = matchReg(/^\\{([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, min, res.range[0], res.range[1]);\n }\n else if (res = matchReg(/^\\{([0-9]+),\\}/)) {\n min = parseInt(res[1], 10);\n quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]);\n }\n else if (res = matchReg(/^\\{([0-9]+),([0-9]+)\\}/)) {\n min = parseInt(res[1], 10);\n max = parseInt(res[2], 10);\n if (min > max) {\n bail('numbers out of order in {} quantifier', '', from, pos);\n }\n quantifier = createQuantifier(min, max, res.range[0], res.range[1]);\n }\n\n if (quantifier) {\n if (match('?')) {\n quantifier.greedy = false;\n quantifier.range[1] += 1;\n }\n }\n\n return quantifier;\n }\n\n function parseAtom() {\n // Atom ::\n // PatternCharacter\n // .\n // \\ AtomEscape\n // CharacterClass\n // ( Disjunction )\n // ( ? : Disjunction )\n\n var res;\n\n // jviereck: allow ']', '}' here as well to be compatible with browser's\n // implementations: ']'.match(/]/);\n // if (res = matchReg(/^[^^$\\\\.*+?()[\\]{}|]/)) {\n if (res = matchReg(/^[^^$\\\\.*+?(){[|]/)) {\n // PatternCharacter\n return createCharacter(res);\n }\n else if (match('.')) {\n // .\n return createDot();\n }\n else if (match('\\\\')) {\n // \\ AtomEscape\n res = parseAtomEscape();\n if (!res) {\n bail('atomEscape');\n }\n return res;\n }\n else if (res = parseCharacterClass()) {\n return res;\n }\n else {\n // ( Disjunction )\n // ( ? : Disjunction )\n return parseGroup('(?:', 'ignore', '(', 'normal');\n }\n }\n\n function parseUnicodeSurrogatePairEscape(firstEscape) {\n if (hasUnicodeFlag) {\n var first, second;\n if (firstEscape.kind == 'unicodeEscape' &&\n (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF &&\n current('\\\\') && next('u') ) {\n var prevPos = pos;\n pos++;\n var secondEscape = parseClassEscape();\n if (secondEscape.kind == 'unicodeEscape' &&\n (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) {\n // Unicode surrogate pair\n firstEscape.range[1] = secondEscape.range[1];\n firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n firstEscape.type = 'value';\n firstEscape.kind = 'unicodeCodePointEscape';\n addRaw(firstEscape);\n }\n else {\n pos = prevPos;\n }\n }\n }\n return firstEscape;\n }\n\n function parseClassEscape() {\n return parseAtomEscape(true);\n }\n\n function parseAtomEscape(insideCharacterClass) {\n // AtomEscape ::\n // DecimalEscape\n // CharacterEscape\n // CharacterClassEscape\n\n var res, from = pos;\n\n res = parseDecimalEscape();\n if (res) {\n return res;\n }\n\n // For ClassEscape\n if (insideCharacterClass) {\n if (match('b')) {\n // 15.10.2.19\n // The production ClassEscape :: b evaluates by returning the\n // CharSet containing the one character <BS> (Unicode value 0008).\n return createEscaped('singleEscape', 0x0008, '\\\\b');\n } else if (match('B')) {\n bail('\\\\B not possible inside of CharacterClass', '', from);\n }\n }\n\n res = parseCharacterEscape();\n\n return res;\n }\n\n\n function parseDecimalEscape() {\n // DecimalEscape ::\n // DecimalIntegerLiteral [lookahead ∉ DecimalDigit]\n // CharacterClassEscape :: one of d D s S w W\n\n var res, match;\n\n if (res = matchReg(/^(?!0)\\d+/)) {\n match = res[0];\n var refIdx = parseInt(res[0], 10);\n if (refIdx <= closedCaptureCounter) {\n // If the number is smaller than the normal-groups found so\n // far, then it is a reference...\n return createReference(res[0]);\n } else {\n // ... otherwise it needs to be interpreted as a octal (if the\n // number is in an octal format). If it is NOT octal format,\n // then the slash is ignored and the number is matched later\n // as normal characters.\n\n // Recall the negative decision to decide if the input must be parsed\n // a second time with the total normal-groups.\n backrefDenied.push(refIdx);\n\n // Reset the position again, as maybe only parts of the previous\n // matched numbers are actual octal numbers. E.g. in '019' only\n // the '01' should be matched.\n incr(-res[0].length);\n if (res = matchReg(/^[0-7]{1,3}/)) {\n return createEscaped('octal', parseInt(res[0], 8), res[0], 1);\n } else {\n // If we end up here, we have a case like /\\91/. Then the\n // first slash is to be ignored and the 9 & 1 to be treated\n // like ordinary characters. Create a character for the\n // first number only here - other number-characters\n // (if available) will be matched later.\n res = createCharacter(matchReg(/^[89]/));\n return updateRawStart(res, res.range[0] - 1);\n }\n }\n }\n // Only allow octal numbers in the following. All matched numbers start\n // with a zero (if the do not, the previous if-branch is executed).\n // If the number is not octal format and starts with zero (e.g. `091`)\n // then only the zeros `0` is treated here and the `91` are ordinary\n // characters.\n // Example:\n // /\\091/.exec('\\091')[0].length === 3\n else if (res = matchReg(/^[0-7]{1,3}/)) {\n match = res[0];\n if (/^0{1,3}$/.test(match)) {\n // If they are all zeros, then only take the first one.\n return createEscaped('null', 0x0000, '0', match.length + 1);\n } else {\n return createEscaped('octal', parseInt(match, 8), match, 1);\n }\n } else if (res = matchReg(/^[dDsSwW]/)) {\n return createCharacterClassEscape(res[0]);\n }\n return false;\n }\n\n function parseCharacterEscape() {\n // CharacterEscape ::\n // ControlEscape\n // c ControlLetter\n // HexEscapeSequence\n // UnicodeEscapeSequence\n // IdentityEscape\n\n var res;\n if (res = matchReg(/^[fnrtv]/)) {\n // ControlEscape\n var codePoint = 0;\n switch (res[0]) {\n case 't': codePoint = 0x009; break;\n case 'n': codePoint = 0x00A; break;\n case 'v': codePoint = 0x00B; break;\n case 'f': codePoint = 0x00C; break;\n case 'r': codePoint = 0x00D; break;\n }\n return createEscaped('singleEscape', codePoint, '\\\\' + res[0]);\n } else if (res = matchReg(/^c([a-zA-Z])/)) {\n // c ControlLetter\n return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2);\n } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) {\n // HexEscapeSequence\n return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2);\n } else if (res = matchReg(/^u([0-9a-fA-F]{4})/)) {\n // UnicodeEscapeSequence\n return parseUnicodeSurrogatePairEscape(\n createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2)\n );\n } else if (hasUnicodeFlag && (res = matchReg(/^u\\{([0-9a-fA-F]+)\\}/))) {\n // RegExpUnicodeEscapeSequence (ES6 Unicode code point escape)\n return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4);\n } else if (features.unicodePropertyEscape && hasUnicodeFlag && (res = matchReg(/^([pP])\\{([^\\}]+)\\}/))) {\n // https://github.com/jviereck/regjsparser/issues/77\n return addRaw({\n type: 'unicodePropertyEscape',\n negative: res[1] === 'P',\n value: res[2],\n range: [res.range[0] - 1, res.range[1]],\n raw: res[0]\n });\n } else {\n // IdentityEscape\n return parseIdentityEscape();\n }\n }\n\n // Taken from the Esprima parser.\n function isIdentifierPart(ch) {\n // Generated by `tools/generate-identifier-regex.js`.\n var NonAsciiIdentifierPart = new RegExp('[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B2\\u08E4-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58\\u0C59\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D60-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA69D\\uA69F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2D\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]');\n\n return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <= 122) || // a..z\n (ch >= 48 && ch <= 57) || // 0..9\n (ch === 92) || // \\ (backslash)\n ((ch >= 0x80) && NonAsciiIdentifierPart.test(String.fromCharCode(ch)));\n }\n\n function parseIdentityEscape() {\n // IdentityEscape ::\n // SourceCharacter but not IdentifierPart\n // <ZWJ>\n // <ZWNJ>\n\n var ZWJ = '\\u200C';\n var ZWNJ = '\\u200D';\n\n var tmp;\n\n if (!isIdentifierPart(lookahead())) {\n tmp = incr();\n return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1);\n }\n\n if (match(ZWJ)) {\n // <ZWJ>\n return createEscaped('identifier', 0x200C, ZWJ);\n } else if (match(ZWNJ)) {\n // <ZWNJ>\n return createEscaped('identifier', 0x200D, ZWNJ);\n }\n\n return null;\n }\n\n function parseCharacterClass() {\n // CharacterClass ::\n // [ [lookahead ∉ {^}] ClassRanges ]\n // [ ^ ClassRanges ]\n\n var res, from = pos;\n if (res = matchReg(/^\\[\\^/)) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, true, from, pos);\n } else if (match('[')) {\n res = parseClassRanges();\n skip(']');\n return createCharacterClass(res, false, from, pos);\n }\n\n return null;\n }\n\n function parseClassRanges() {\n // ClassRanges ::\n // [empty]\n // NonemptyClassRanges\n\n var res;\n if (current(']')) {\n // Empty array means nothing insinde of the ClassRange.\n return [];\n } else {\n res = parseNonemptyClassRanges();\n if (!res) {\n bail('nonEmptyClassRanges');\n }\n return res;\n }\n }\n\n function parseHelperClassRanges(atom) {\n var from, to, res;\n if (current('-') && !next(']')) {\n // ClassAtom - ClassAtom ClassRanges\n skip('-');\n\n res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n to = pos;\n var classRanges = parseClassRanges();\n if (!classRanges) {\n bail('classRanges');\n }\n from = atom.range[0];\n if (classRanges.type === 'empty') {\n return [createClassRange(atom, res, from, to)];\n }\n return [createClassRange(atom, res, from, to)].concat(classRanges);\n }\n\n res = parseNonemptyClassRangesNoDash();\n if (!res) {\n bail('nonEmptyClassRangesNoDash');\n }\n\n return [atom].concat(res);\n }\n\n function parseNonemptyClassRanges() {\n // NonemptyClassRanges ::\n // ClassAtom\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n\n var atom = parseClassAtom();\n if (!atom) {\n bail('classAtom');\n }\n\n if (current(']')) {\n // ClassAtom\n return [atom];\n }\n\n // ClassAtom NonemptyClassRangesNoDash\n // ClassAtom - ClassAtom ClassRanges\n return parseHelperClassRanges(atom);\n }\n\n function parseNonemptyClassRangesNoDash() {\n // NonemptyClassRangesNoDash ::\n // ClassAtom\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n\n var res = parseClassAtom();\n if (!res) {\n bail('classAtom');\n }\n if (current(']')) {\n // ClassAtom\n return res;\n }\n\n // ClassAtomNoDash NonemptyClassRangesNoDash\n // ClassAtomNoDash - ClassAtom ClassRanges\n return parseHelperClassRanges(res);\n }\n\n function parseClassAtom() {\n // ClassAtom ::\n // -\n // ClassAtomNoDash\n if (match('-')) {\n return createCharacter('-');\n } else {\n return parseClassAtomNoDash();\n }\n }\n\n function parseClassAtomNoDash() {\n // ClassAtomNoDash ::\n // SourceCharacter but not one of \\ or ] or -\n // \\ ClassEscape\n\n var res;\n if (res = matchReg(/^[^\\\\\\]-]/)) {\n return createCharacter(res[0]);\n } else if (match('\\\\')) {\n res = parseClassEscape();\n if (!res) {\n bail('classEscape');\n }\n\n return parseUnicodeSurrogatePairEscape(res);\n }\n }\n\n function bail(message, details, from, to) {\n from = from == null ? pos : from;\n to = to == null ? from : to;\n\n var contextStart = Math.max(0, from - 10);\n var contextEnd = Math.min(to + 10, str.length);\n\n // Output a bit of context and a line pointing to where our error is.\n //\n // We are assuming that there are no actual newlines in the content as this is a regular expression.\n var context = ' ' + str.substring(contextStart, contextEnd);\n var pointer = ' ' + new Array(from - contextStart + 1).join(' ') + '^';\n\n throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\\n' + context + '\\n' + pointer);\n }\n\n var backrefDenied = [];\n var closedCaptureCounter = 0;\n var firstIteration = true;\n var hasUnicodeFlag = (flags || \"\").indexOf(\"u\") !== -1;\n var pos = 0;\n\n // Convert the input to a string and treat the empty string special.\n str = String(str);\n if (str === '') {\n str = '(?:)';\n }\n\n var result = parseDisjunction();\n\n if (result.range[1] !== str.length) {\n bail('Could not parse entire input - got stuck', '', result.range[1]);\n }\n\n // The spec requires to interpret the `\\2` in `/\\2()()/` as backreference.\n // As the parser collects the number of capture groups as the string is\n // parsed it is impossible to make these decisions at the point when the\n // `\\2` is handled. In case the local decision turns out to be wrong after\n // the parsing has finished, the input string is parsed a second time with\n // the total number of capture groups set.\n //\n // SEE: https://github.com/jviereck/regjsparser/issues/70\n for (var i = 0; i < backrefDenied.length; i++) {\n if (backrefDenied[i] <= closedCaptureCounter) {\n // Parse the input a second time.\n pos = 0;\n firstIteration = false;\n return parseDisjunction();\n }\n }\n\n return result;\n }\n\n var regjsparser = {\n parse: parse\n };\n\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = regjsparser;\n } else {\n window.regjsparser = regjsparser;\n }\n\n}());\n","/*!\r\n * regjsgen 0.3.0\r\n * Copyright 2014-2016 Benjamin Tan <https://demoneaux.github.io/>\r\n * Available under MIT license <https://github.com/demoneaux/regjsgen/blob/master/LICENSE>\r\n */\r\n;(function() {\r\n 'use strict';\r\n\r\n // Used to determine if values are of the language type `Object`.\r\n var objectTypes = {\r\n 'function': true,\r\n 'object': true\r\n };\r\n\r\n // Used as a reference to the global object.\r\n var root = (objectTypes[typeof window] && window) || this;\r\n\r\n // Detect free variable `exports`.\r\n var freeExports = objectTypes[typeof exports] && exports;\r\n\r\n // Detect free variable `module`.\r\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\r\n\r\n // Detect free variable `global` from Node.js or Browserified code and use it as `root`.\r\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\r\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\r\n root = freeGlobal;\r\n }\r\n\r\n // Used to check objects for own properties.\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Generates strings based on the given code points.\r\n // Based on https://mths.be/fromcodepoint v0.2.0 by @mathias.\r\n var stringFromCharCode = String.fromCharCode;\r\n var floor = Math.floor;\r\n function fromCodePoint() {\r\n var MAX_SIZE = 0x4000;\r\n var codeUnits = [];\r\n var highSurrogate;\r\n var lowSurrogate;\r\n var index = -1;\r\n var length = arguments.length;\r\n if (!length) {\r\n return '';\r\n }\r\n var result = '';\r\n while (++index < length) {\r\n var codePoint = Number(arguments[index]);\r\n if (\r\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\r\n codePoint < 0 || // not a valid Unicode code point\r\n codePoint > 0x10FFFF || // not a valid Unicode code point\r\n floor(codePoint) != codePoint // not an integer\r\n ) {\r\n throw RangeError('Invalid code point: ' + codePoint);\r\n }\r\n if (codePoint <= 0xFFFF) {\r\n // BMP code point\r\n codeUnits.push(codePoint);\r\n } else {\r\n // Astral code point; split in surrogate halves\r\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\r\n codePoint -= 0x10000;\r\n highSurrogate = (codePoint >> 10) + 0xD800;\r\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\r\n codeUnits.push(highSurrogate, lowSurrogate);\r\n }\r\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\r\n result += stringFromCharCode.apply(null, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Ensures that nodes have the correct types.\r\n var assertTypeRegexMap = {};\r\n function assertType(type, expected) {\r\n if (expected.indexOf('|') == -1) {\r\n if (type == expected) {\r\n return;\r\n }\r\n\r\n throw Error('Invalid node type: ' + type + '; expected type: ' + expected);\r\n }\r\n\r\n expected = hasOwnProperty.call(assertTypeRegexMap, expected)\r\n ? assertTypeRegexMap[expected]\r\n : (assertTypeRegexMap[expected] = RegExp('^(?:' + expected + ')$'));\r\n\r\n if (expected.test(type)) {\r\n return;\r\n }\r\n\r\n throw Error('Invalid node type: ' + type + '; expected types: ' + expected);\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Generates a regular expression string based on an AST.\r\n function generate(node) {\r\n var type = node.type;\r\n\r\n if (hasOwnProperty.call(generators, type)) {\r\n return generators[type](node);\r\n }\r\n\r\n throw Error('Invalid node type: ' + type);\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n function generateAlternative(node) {\r\n assertType(node.type, 'alternative');\r\n\r\n var terms = node.body,\r\n i = -1,\r\n length = terms.length,\r\n result = '';\r\n\r\n while (++i < length) {\r\n result += generateTerm(terms[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function generateAnchor(node) {\r\n assertType(node.type, 'anchor');\r\n\r\n switch (node.kind) {\r\n case 'start':\r\n return '^';\r\n case 'end':\r\n return '$';\r\n case 'boundary':\r\n return '\\\\b';\r\n case 'not-boundary':\r\n return '\\\\B';\r\n default:\r\n throw Error('Invalid assertion');\r\n }\r\n }\r\n\r\n function generateAtom(node) {\r\n assertType(node.type, 'anchor|characterClass|characterClassEscape|dot|group|reference|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateCharacterClass(node) {\r\n assertType(node.type, 'characterClass');\r\n\r\n var classRanges = node.body,\r\n i = -1,\r\n length = classRanges.length,\r\n result = '';\r\n\r\n if (node.negative) {\r\n result += '^';\r\n }\r\n\r\n while (++i < length) {\r\n result += generateClassAtom(classRanges[i]);\r\n }\r\n\r\n return '[' + result + ']';\r\n }\r\n\r\n function generateCharacterClassEscape(node) {\r\n assertType(node.type, 'characterClassEscape');\r\n\r\n return '\\\\' + node.value;\r\n }\r\n\r\n function generateUnicodePropertyEscape(node) {\r\n assertType(node.type, 'unicodePropertyEscape');\r\n\r\n return '\\\\' + (node.negative ? 'P' : 'p') + '{' + node.value + '}';\r\n }\r\n\r\n function generateCharacterClassRange(node) {\r\n assertType(node.type, 'characterClassRange');\r\n\r\n var min = node.min,\r\n max = node.max;\r\n\r\n if (min.type == 'characterClassRange' || max.type == 'characterClassRange') {\r\n throw Error('Invalid character class range');\r\n }\r\n\r\n return generateClassAtom(min) + '-' + generateClassAtom(max);\r\n }\r\n\r\n function generateClassAtom(node) {\r\n assertType(node.type, 'anchor|characterClassEscape|characterClassRange|dot|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateDisjunction(node) {\r\n assertType(node.type, 'disjunction');\r\n\r\n var body = node.body,\r\n i = -1,\r\n length = body.length,\r\n result = '';\r\n\r\n while (++i < length) {\r\n if (i != 0) {\r\n result += '|';\r\n }\r\n result += generate(body[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function generateDot(node) {\r\n assertType(node.type, 'dot');\r\n\r\n return '.';\r\n }\r\n\r\n function generateGroup(node) {\r\n assertType(node.type, 'group');\r\n\r\n var result = '';\r\n\r\n switch (node.behavior) {\r\n case 'normal':\r\n break;\r\n case 'ignore':\r\n result += '?:';\r\n break;\r\n case 'lookahead':\r\n result += '?=';\r\n break;\r\n case 'negativeLookahead':\r\n result += '?!';\r\n break;\r\n default:\r\n throw Error('Invalid behaviour: ' + node.behaviour);\r\n }\r\n\r\n var body = node.body,\r\n i = -1,\r\n length = body.length;\r\n\r\n while (++i < length) {\r\n result += generate(body[i]);\r\n }\r\n\r\n return '(' + result + ')';\r\n }\r\n\r\n function generateQuantifier(node) {\r\n assertType(node.type, 'quantifier');\r\n\r\n var quantifier = '',\r\n min = node.min,\r\n max = node.max;\r\n\r\n if (max == null) {\r\n if (min == 0) {\r\n quantifier = '*';\r\n } else if (min == 1) {\r\n quantifier = '+';\r\n } else {\r\n quantifier = '{' + min + ',}';\r\n }\r\n } else if (min == max) {\r\n quantifier = '{' + min + '}';\r\n } else if (min == 0 && max == 1) {\r\n quantifier = '?';\r\n } else {\r\n quantifier = '{' + min + ',' + max + '}';\r\n }\r\n\r\n if (!node.greedy) {\r\n quantifier += '?';\r\n }\r\n\r\n return generateAtom(node.body[0]) + quantifier;\r\n }\r\n\r\n function generateReference(node) {\r\n assertType(node.type, 'reference');\r\n\r\n return '\\\\' + node.matchIndex;\r\n }\r\n\r\n function generateTerm(node) {\r\n assertType(node.type, 'anchor|characterClass|characterClassEscape|empty|group|quantifier|reference|unicodePropertyEscape|value');\r\n\r\n return generate(node);\r\n }\r\n\r\n function generateValue(node) {\r\n assertType(node.type, 'value');\r\n\r\n var kind = node.kind,\r\n codePoint = node.codePoint;\r\n\r\n switch (kind) {\r\n case 'controlLetter':\r\n return '\\\\c' + fromCodePoint(codePoint + 64);\r\n case 'hexadecimalEscape':\r\n return '\\\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2);\r\n case 'identifier':\r\n return '\\\\' + fromCodePoint(codePoint);\r\n case 'null':\r\n return '\\\\' + codePoint;\r\n case 'octal':\r\n return '\\\\' + codePoint.toString(8);\r\n case 'singleEscape':\r\n switch (codePoint) {\r\n case 0x0008:\r\n return '\\\\b';\r\n case 0x0009:\r\n return '\\\\t';\r\n case 0x000A:\r\n return '\\\\n';\r\n case 0x000B:\r\n return '\\\\v';\r\n case 0x000C:\r\n return '\\\\f';\r\n case 0x000D:\r\n return '\\\\r';\r\n default:\r\n throw Error('Invalid codepoint: ' + codePoint);\r\n }\r\n case 'symbol':\r\n return fromCodePoint(codePoint);\r\n case 'unicodeEscape':\r\n return '\\\\u' + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4);\r\n case 'unicodeCodePointEscape':\r\n return '\\\\u{' + codePoint.toString(16).toUpperCase() + '}';\r\n default:\r\n throw Error('Unsupported node kind: ' + kind);\r\n }\r\n }\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Used to generate strings for each node type.\r\n var generators = {\r\n 'alternative': generateAlternative,\r\n 'anchor': generateAnchor,\r\n 'characterClass': generateCharacterClass,\r\n 'characterClassEscape': generateCharacterClassEscape,\r\n 'characterClassRange': generateCharacterClassRange,\r\n 'unicodePropertyEscape': generateUnicodePropertyEscape,\r\n 'disjunction': generateDisjunction,\r\n 'dot': generateDot,\r\n 'group': generateGroup,\r\n 'quantifier': generateQuantifier,\r\n 'reference': generateReference,\r\n 'value': generateValue\r\n };\r\n\r\n /*--------------------------------------------------------------------------*/\r\n\r\n // Export regjsgen.\r\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\r\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\r\n // Define as an anonymous module so it can be aliased through path mapping.\r\n define(function() {\r\n return {\r\n 'generate': generate\r\n };\r\n });\r\n }\r\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\r\n else if (freeExports && freeModule) {\r\n // Export for CommonJS support.\r\n freeExports.generate = generate;\r\n }\r\n else {\r\n // Export to the global object.\r\n root.regjsgen = {\r\n 'generate': generate\r\n };\r\n }\r\n}.call(this));\r\n","'use strict';\n\nconst generate = require('regjsgen').generate;\nconst parse = require('regjsparser').parse;\nconst regenerate = require('regenerate');\nconst looseMatch = require('unicode-loose-match');\nconst knownUnicodeProperties = new Set(\n\trequire('regenerate-unicode-properties')\n);\nconst iuMappings = require('./data/iu-mappings.js');\nconst ESCAPE_SETS = require('./data/character-class-escape-sets.js');\n\nconst getCharacterClassEscapeSet = function(character) {\n\tif (config.unicode) {\n\t\tif (config.ignoreCase) {\n\t\t\treturn ESCAPE_SETS.UNICODE_IGNORE_CASE.get(character);\n\t\t}\n\t\treturn ESCAPE_SETS.UNICODE.get(character);\n\t}\n\treturn ESCAPE_SETS.REGULAR.get(character);\n};\n\nconst getUnicodePropertyValueSet = function(property, value) {\n\tconst path = knownUnicodeProperties.has(property) ?\n\t\t`${ property }/${ value }` :\n\t\t`Binary_Property/${ property }`;\n\ttry {\n\t\treturn require(`regenerate-unicode-properties/${ path }.js`);\n\t} catch (exception) {\n\t\tthrow new Error(\n\t\t\t`Failed to recognize value \\`${ value }\\` for property ` +\n\t\t\t`\\`${ property }\\`.`\n\t\t);\n\t}\n};\n\nconst getUnicodePropertyEscapeSet = function(value, isNegative) {\n\tconst parts = value.split('=');\n\tlet canonical;\n\tif (parts.length == 1) {\n\t\tconst firstPart = parts[0];\n\t\t// It could be a `General_Category` value or a binary property.\n\t\tcanonical = looseMatch('General_Category', firstPart);\n\t\tif (!canonical.value) {\n\t\t\t// Its not a `General_Category` value, so check if its a binary\n\t\t\t// property. Note: `looseMatch` throws on invalid properties.\n\t\t\tcanonical = looseMatch(firstPart);\n\t\t}\n\t} else {\n\t\t// The pattern consists of two parts, i.e. `Property=Value`.\n\t\tcanonical = looseMatch(parts[0], parts[1]);\n\t}\n\tconst set = getUnicodePropertyValueSet(\n\t\tcanonical.property,\n\t\tcanonical.value\n\t).clone();\n\tif (isNegative) {\n\t\treturn UNICODE_SET.clone().remove(set);\n\t}\n\treturn set;\n};\n\n// Prepare a Regenerate set containing all code points, used for negative\n// character classes (if any).\nconst UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);\n// Without the `u` flag, the range stops at 0xFFFF.\n// https://mths.be/es6#sec-pattern-semantics\nconst BMP_SET = regenerate().addRange(0x0, 0xFFFF);\n\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./u`. https://mths.be/es6#sec-atom\nconst DOT_SET_UNICODE = UNICODE_SET.clone() // all Unicode code points\n\t.remove(\n\t\t// minus `LineTerminator`s (https://mths.be/es6#sec-line-terminators):\n\t\t0x000A, // Line Feed <LF>\n\t\t0x000D, // Carriage Return <CR>\n\t\t0x2028, // Line Separator <LS>\n\t\t0x2029 // Paragraph Separator <PS>\n\t);\n// Prepare a Regenerate set containing all code points that are supposed to be\n// matched by `/./` (only BMP code points).\nconst DOT_SET = DOT_SET_UNICODE.clone()\n\t.intersection(BMP_SET);\n\n// Given a range of code points, add any case-folded code points in that range\n// to a set.\nregenerate.prototype.iuAddRange = function(min, max) {\n\tconst $this = this;\n\tdo {\n\t\tconst folded = caseFold(min);\n\t\tif (folded) {\n\t\t\t$this.add(folded);\n\t\t}\n\t} while (++min <= max);\n\treturn $this;\n};\n\nconst update = function(item, pattern) {\n\tlet tree = parse(pattern, config.useUnicodeFlag ? 'u' : '');\n\tswitch (tree.type) {\n\t\tcase 'characterClass':\n\t\tcase 'group':\n\t\tcase 'value':\n\t\t\t// No wrapping needed.\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Wrap the pattern in a non-capturing group.\n\t\t\ttree = wrap(tree, pattern);\n\t}\n\tObject.assign(item, tree);\n};\n\nconst wrap = function(tree, pattern) {\n\t// Wrap the pattern in a non-capturing group.\n\treturn {\n\t\t'type': 'group',\n\t\t'behavior': 'ignore',\n\t\t'body': [tree],\n\t\t'raw': `(?:${ pattern })`\n\t};\n};\n\nconst caseFold = function(codePoint) {\n\treturn iuMappings.get(codePoint) || false;\n};\n\nconst processCharacterClass = function(characterClassItem, regenerateOptions) {\n\tlet set = regenerate();\n\tconst body = characterClassItem.body.forEach(function(item) {\n\t\tswitch (item.type) {\n\t\t\tcase 'value':\n\t\t\t\tset.add(item.codePoint);\n\t\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\t\tconst folded = caseFold(item.codePoint);\n\t\t\t\t\tif (folded) {\n\t\t\t\t\t\tset.add(folded);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'characterClassRange':\n\t\t\t\tconst min = item.min.codePoint;\n\t\t\t\tconst max = item.max.codePoint;\n\t\t\t\tset.addRange(min, max);\n\t\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\t\tset.iuAddRange(min, max);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'characterClassEscape':\n\t\t\t\tset.add(getCharacterClassEscapeSet(item.value));\n\t\t\t\tbreak;\n\t\t\tcase 'unicodePropertyEscape':\n\t\t\t\tset.add(getUnicodePropertyEscapeSet(item.value, item.negative));\n\t\t\t\tbreak;\n\t\t\t// The `default` clause is only here as a safeguard; it should never be\n\t\t\t// reached. Code coverage tools should ignore it.\n\t\t\t/* istanbul ignore next */\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown term type: ${ item.type }`);\n\t\t}\n\t});\n\tif (characterClassItem.negative) {\n\t\tset = (config.unicode ? UNICODE_SET : BMP_SET).clone().remove(set);\n\t}\n\tupdate(characterClassItem, set.toString(regenerateOptions));\n\treturn characterClassItem;\n};\n\nconst processTerm = function(item, regenerateOptions) {\n\tswitch (item.type) {\n\t\tcase 'dot':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\t(config.unicode ? DOT_SET_UNICODE : DOT_SET)\n\t\t\t\t\t.toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'characterClass':\n\t\t\titem = processCharacterClass(item, regenerateOptions);\n\t\t\tbreak;\n\t\tcase 'unicodePropertyEscape':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetUnicodePropertyEscapeSet(item.value, item.negative)\n\t\t\t\t\t.toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'characterClassEscape':\n\t\t\tupdate(\n\t\t\t\titem,\n\t\t\t\tgetCharacterClassEscapeSet(item.value).toString(regenerateOptions)\n\t\t\t);\n\t\t\tbreak;\n\t\tcase 'alternative':\n\t\tcase 'disjunction':\n\t\tcase 'group':\n\t\tcase 'quantifier':\n\t\t\titem.body = item.body.map(processTerm);\n\t\t\tbreak;\n\t\tcase 'value':\n\t\t\tconst codePoint = item.codePoint;\n\t\t\tconst set = regenerate(codePoint);\n\t\t\tif (config.ignoreCase && config.unicode && !config.useUnicodeFlag) {\n\t\t\t\tconst folded = caseFold(codePoint);\n\t\t\t\tif (folded) {\n\t\t\t\t\tset.add(folded);\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate(item, set.toString(regenerateOptions));\n\t\t\tbreak;\n\t\tcase 'anchor':\n\t\tcase 'empty':\n\t\tcase 'group':\n\t\tcase 'reference':\n\t\t\t// Nothing to do here.\n\t\t\tbreak;\n\t\t// The `default` clause is only here as a safeguard; it should never be\n\t\t// reached. Code coverage tools should ignore it.\n\t\t/* istanbul ignore next */\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown term type: ${ item.type }`);\n\t}\n\treturn item;\n};\n\nconst config = {\n\t'ignoreCase': false,\n\t'unicode': false,\n\t'useUnicodeFlag': false\n};\nconst rewritePattern = function(pattern, flags, options) {\n\tconst regjsparserFeatures = {\n\t\t'unicodePropertyEscape': options && options.unicodePropertyEscape\n\t};\n\tconfig.useUnicodeFlag = options && options.useUnicodeFlag;\n\tconst regenerateOptions = {\n\t\t'hasUnicodeFlag': config.useUnicodeFlag\n\t};\n\tconst tree = parse(pattern, flags, regjsparserFeatures);\n\tconfig.ignoreCase = flags && flags.includes('i');\n\tconfig.unicode = flags && flags.includes('u');\n\tObject.assign(tree, processTerm(tree, regenerateOptions));\n\treturn generate(tree);\n};\n\nmodule.exports = rewritePattern;\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport rewritePattern from 'regexpu-core';\n\nexport default class Literal extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.numericLiteral ) {\n\t\t\tconst leading = this.raw.slice( 0, 2 );\n\t\t\tif ( leading === '0b' || leading === '0o' ) {\n\t\t\t\tcode.overwrite( this.start, this.end, String( this.value ), true );\n\t\t\t}\n\t\t}\n\n\t\tif ( this.regex ) {\n\t\t\tconst { pattern, flags } = this.regex;\n\n\t\t\tif ( transforms.stickyRegExp && /y/.test( flags ) ) throw new CompileError( this, 'Regular expression sticky flag is not supported' );\n\t\t\tif ( transforms.unicodeRegExp && /u/.test( flags ) ) {\n\t\t\t\tcode.overwrite( this.start, this.end, `/${rewritePattern( pattern, flags )}/${flags.replace( 'u', '' )}` );\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class MemberExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.reservedProperties && reserved[ this.property.name ] ) {\n\t\t\tcode.overwrite( this.object.end, this.property.start, `['` );\n\t\t\tcode.insertLeft( this.property.end, `']` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport deindent from '../../utils/deindent.js';\n\nexport default class ObjectExpression extends Node {\n\ttranspile ( code, transforms ) {\n\t\tsuper.transpile( code, transforms );\n\n\t\tlet spreadPropertyCount = 0;\n\t\tlet computedPropertyCount = 0;\n\n\t\tfor ( let prop of this.properties ) {\n\t\t\tif ( prop.type === 'SpreadProperty' ) spreadPropertyCount += 1;\n\t\t\tif ( prop.computed ) computedPropertyCount += 1;\n\t\t}\n\n\t\tif ( spreadPropertyCount ) {\n\t\t\t// enclose run of non-spread properties in curlies\n\t\t\tlet i = this.properties.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\tif ( prop.type === 'Property' ) {\n\t\t\t\t\tconst lastProp = this.properties[ i - 1 ];\n\t\t\t\t\tconst nextProp = this.properties[ i + 1 ];\n\n\t\t\t\t\tif ( !lastProp || lastProp.type !== 'Property' ) {\n\t\t\t\t\t\tcode.insertRight( prop.start, '{' );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !nextProp || nextProp.type !== 'Property' ) {\n\t\t\t\t\t\tcode.insertLeft( prop.end, '}' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// wrap the whole thing in Object.assign\n\t\t\tcode.overwrite( this.start, this.properties[0].start, `${this.program.objectAssign}({}, `);\n\t\t\tcode.overwrite( this.properties[ this.properties.length - 1 ].end, this.end, ')' );\n\t\t}\n\n\t\tif ( computedPropertyCount && transforms.computedProperty ) {\n\t\t\tconst i0 = this.getIndentation();\n\n\t\t\tlet isSimpleAssignment;\n\t\t\tlet name;\n\n\t\t\tlet start;\n\t\t\tlet end;\n\n\t\t\tif ( this.parent.type === 'VariableDeclarator' && this.parent.parent.declarations.length === 1 ) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.id.alias || this.parent.id.name; // TODO is this right?\n\t\t\t} else if ( this.parent.type === 'AssignmentExpression' && this.parent.parent.type === 'ExpressionStatement' && this.parent.left.type === 'Identifier' ) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t}\n\n\t\t\t// handle block scoping\n\t\t\tconst declaration = this.findScope( false ).findDeclaration( name );\n\t\t\tif ( declaration ) name = declaration.name;\n\n\t\t\tstart = this.start + 1;\n\t\t\tend = this.end;\n\n\t\t\tif ( isSimpleAssignment ) {\n\t\t\t\t// ???\n\t\t\t} else {\n\t\t\t\tname = this.findScope( true ).createIdentifier( 'obj' );\n\n\t\t\t\tconst statement = this.findNearest( /(?:Statement|Declaration)$/ );\n\t\t\t\tcode.insertRight( statement.start, `var ${name};\\n${i0}` );\n\n\t\t\t\tcode.insertRight( this.start, `( ${name} = ` );\n\t\t\t}\n\n\t\t\tconst len = this.properties.length;\n\t\t\tlet lastComputedProp;\n\n\t\t\tfor ( let i = 0; i < len; i += 1 ) {\n\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\tif ( prop.computed ) {\n\t\t\t\t\tlastComputedProp = prop;\n\t\t\t\t\tlet moveStart = i > 0 ? this.properties[ i - 1 ].end : start;\n\n\t\t\t\t\tcode.overwrite( moveStart, prop.start, isSimpleAssignment ? `;\\n${i0}${name}` : `, ${name}` );\n\t\t\t\t\tlet c = prop.key.end;\n\t\t\t\t\twhile ( code.original[c] !== ']' ) c += 1;\n\t\t\t\t\tc += 1;\n\n\t\t\t\t\tif ( prop.value.start > c ) code.remove( c, prop.value.start );\n\t\t\t\t\tcode.insertLeft( c, ' = ' );\n\t\t\t\t\tcode.move( moveStart, prop.end, end );\n\n\t\t\t\t\tif ( i === 0 && len > 1 ) {\n\t\t\t\t\t\t// remove trailing comma\n\t\t\t\t\t\tc = prop.end;\n\t\t\t\t\t\twhile ( code.original[c] !== ',' ) c += 1;\n\n\t\t\t\t\t\tcode.remove( prop.end, c + 1 );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( prop.method && transforms.conciseMethodProperty ) {\n\t\t\t\t\t\tcode.insertRight( prop.value.start, 'function ' );\n\t\t\t\t\t}\n\n\t\t\t\t\tdeindent( prop.value, code );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// special case\n\t\t\tif ( computedPropertyCount === len ) {\n\t\t\t\tcode.remove( this.properties[ len - 1 ].end, this.end - 1 );\n\t\t\t}\n\n\t\t\tif ( !isSimpleAssignment ) {\n\t\t\t\tcode.insertLeft( lastComputedProp.end, `, ${name} )` );\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class Property extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.conciseMethodProperty && !this.computed && this.parent.type !== 'ObjectPattern' ) {\n\t\t\tif ( this.shorthand ) {\n\t\t\t\tcode.insertRight( this.start, `${this.key.name}: ` );\n\t\t\t} else if ( this.method ) {\n\t\t\t\tconst name = this.findScope( true ).createIdentifier( this.key.type === 'Identifier' ? this.key.name : this.key.value );\n\t\t\t\tif ( this.value.generator ) code.remove( this.start, this.key.start );\n\t\t\t\tcode.insertLeft( this.key.end, `: function${this.value.generator ? '*' : ''} ${name}` );\n\t\t\t}\n\t\t}\n\n\t\tif ( transforms.reservedProperties && reserved[ this.key.name ] ) {\n\t\t\tcode.insertRight( this.key.start, `'` );\n\t\t\tcode.insertLeft( this.key.end, `'` );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ReturnStatement extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.loop = this.findNearest( /(?:For(?:In)?|While)Statement/ );\n\t\tthis.nearestFunction = this.findNearest( /Function/ );\n\n\t\tif ( this.loop && ( !this.nearestFunction || this.loop.depth > this.nearestFunction.depth ) ) {\n\t\t\tthis.loop.canReturn = true;\n\t\t\tthis.shouldWrap = true;\n\t\t}\n\n\t\tif ( this.argument ) this.argument.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.argument ) {\n\t\t\tconst shouldWrap = this.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n\t\t\tif ( shouldWrap ) code.insertRight( this.argument.start, `{ v: ` );\n\n\t\t\tif ( this.argument ) this.argument.transpile( code, transforms );\n\n\t\t\tif ( shouldWrap ) code.insertLeft( this.argument.end, ` }` );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class SpreadProperty extends Node {\n\ttranspile ( code, transforms ) {\n\t\tcode.remove( this.start, this.argument.start );\n\t\tcode.remove( this.argument.end, this.end );\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class Super extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tthis.method = this.findNearest( 'MethodDefinition' );\n\t\t\tif ( !this.method ) throw new CompileError( this, 'use of super outside class method' );\n\n\t\t\tconst parentClass = this.findNearest( 'ClassBody' ).parent;\n\t\t\tthis.superClassName = parentClass.superClass && (parentClass.superClass.name || 'superclass');\n\n\t\t\tif ( !this.superClassName ) throw new CompileError( this, 'super used in base class' );\n\n\t\t\tthis.isCalled = this.parent.type === 'CallExpression' && this === this.parent.callee;\n\n\t\t\tif ( this.method.kind !== 'constructor' && this.isCalled ) {\n\t\t\t\tthrow new CompileError( this, 'super() not allowed outside class constructor' );\n\t\t\t}\n\n\t\t\tthis.isMember = this.parent.type === 'MemberExpression';\n\n\t\t\tif ( !this.isCalled && !this.isMember ) {\n\t\t\t\tthrow new CompileError( this, 'Unexpected use of `super` (expected `super(...)` or `super.*`)' );\n\t\t\t}\n\t\t}\n\n\t\tif ( transforms.arrow ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest( 'ArrowFunctionExpression' );\n\t\t\tconst loop = this.findNearest( /(?:For(?:In|Of)?|While)Statement/ );\n\n\t\t\tif ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\n\t\t\tif ( loop && loop.body.contains( this ) && loop.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.classes ) {\n\t\t\tconst expression = ( this.isCalled || this.method.static ) ?\n\t\t\t\tthis.superClassName :\n\t\t\t\t`${this.superClassName}.prototype`;\n\n\t\t\tcode.overwrite( this.start, this.end, expression, true );\n\n\t\t\tconst callExpression = this.isCalled ? this.parent : this.parent.parent;\n\n\t\t\tif ( callExpression && callExpression.type === 'CallExpression' ) {\n\t\t\t\tif ( !this.noCall ) { // special case `super( ...args )`\n\t\t\t\t\tcode.insertLeft( callExpression.callee.end, '.call' );\n\t\t\t\t}\n\n\t\t\t\tconst thisAlias = this.thisAlias || 'this';\n\n\t\t\t\tif ( callExpression.arguments.length ) {\n\t\t\t\t\tcode.insertLeft( callExpression.arguments[0].start, `${thisAlias}, ` );\n\t\t\t\t} else {\n\t\t\t\t\tcode.insertLeft( callExpression.end - 1, `${thisAlias}` );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class TaggedTemplateExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.templateString && !transforms.dangerousTaggedTemplateString ) {\n\t\t\tthrow new CompileError( this, 'Tagged template strings are not supported. Use `transforms: { templateString: false }` to skip transformation and disable this error, or `transforms: { dangerousTaggedTemplateString: true }` if you know what you\\'re doing' );\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.templateString && transforms.dangerousTaggedTemplateString ) {\n\t\t\tconst ordered = this.quasi.expressions.concat( this.quasi.quasis ).sort( ( a, b ) => a.start - b.start );\n\n\t\t\t// insert strings at start\n\t\t\tconst templateStrings = this.quasi.quasis.map( quasi => JSON.stringify( quasi.value.cooked ) );\n\t\t\tcode.overwrite( this.tag.end, ordered[0].start, `([${templateStrings.join(', ')}]` );\n\n\t\t\tlet lastIndex = ordered[0].start;\n\t\t\tordered.forEach( node => {\n\t\t\t\tif ( node.type === 'TemplateElement' ) {\n\t\t\t\t\tcode.remove( lastIndex, node.end );\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite( lastIndex, node.start, ', ' );\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tcode.overwrite( lastIndex, this.end, ')' );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateElement extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.program.templateElements.push( this );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateLiteral extends Node {\n\ttranspile ( code, transforms ) {\n\t\tif ( transforms.templateString && this.parent.type !== 'TaggedTemplateExpression' ) {\n\t\t\tlet ordered = this.expressions.concat( this.quasis )\n\t\t\t\t.sort( ( a, b ) => a.start - b.start || a.end - b.end )\n\t\t\t\t.filter( ( node, i ) => {\n\t\t\t\t\t// include all expressions\n\t\t\t\t\tif ( node.type !== 'TemplateElement' ) return true;\n\n\t\t\t\t\t// include all non-empty strings\n\t\t\t\t\tif ( node.value.raw ) return true;\n\n\t\t\t\t\t// exclude all empty strings not at the head\n\t\t\t\t\treturn !i;\n\t\t\t\t});\n\n\t\t\t// special case we may be able to skip the first element,\n\t\t\t// if it's the empty string, but only if the second and\n\t\t\t// third elements aren't both expressions (since they maybe\n\t\t\t// be numeric, and `1 + 2 + '3' === '33'`)\n\t\t\tif ( ordered.length >= 3 ) {\n\t\t\t\tconst [ first, , third ] = ordered;\n\t\t\t\tif ( first.type === 'TemplateElement' && first.value.raw === '' && third.type === 'TemplateElement' ) {\n\t\t\t\t\tordered.shift();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst parenthesise = ( this.quasis.length !== 1 || this.expressions.length !== 0 ) &&\n\t\t\t this.parent.type !== 'AssignmentExpression' &&\n\t\t\t this.parent.type !== 'VariableDeclarator' &&\n\t\t\t ( this.parent.type !== 'BinaryExpression' || this.parent.operator !== '+' );\n\n\t\t\tif ( parenthesise ) code.insertRight( this.start, '(' );\n\n\t\t\tlet lastIndex = this.start;\n\n\t\t\tordered.forEach( ( node, i ) => {\n\t\t\t\tif ( node.type === 'TemplateElement' ) {\n\t\t\t\t\tlet replacement = '';\n\t\t\t\t\tif ( i ) replacement += ' + ';\n\t\t\t\t\treplacement += JSON.stringify( node.value.cooked );\n\n\t\t\t\t\tcode.overwrite( lastIndex, node.end, replacement );\n\t\t\t\t} else {\n\t\t\t\t\tconst parenthesise = node.type !== 'Identifier'; // TODO other cases where it's safe\n\n\t\t\t\t\tlet replacement = '';\n\t\t\t\t\tif ( i ) replacement += ' + ';\n\t\t\t\t\tif ( parenthesise ) replacement += '(';\n\n\t\t\t\t\tcode.overwrite( lastIndex, node.start, replacement );\n\n\t\t\t\t\tif ( parenthesise ) code.insertLeft( node.end, ')' );\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tlet close = '';\n\t\t\tif ( parenthesise ) close += ')';\n\n\t\t\tcode.overwrite( lastIndex, this.end, close );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ThisExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( transforms.arrow ) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest( 'ArrowFunctionExpression' );\n\t\t\tconst loop = this.findNearest( /(?:For(?:In|Of)?|While)Statement/ );\n\n\t\t\tif ( arrowFunction && arrowFunction.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.alias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\n\t\t\tif ( loop && loop.body.contains( this ) && loop.depth > lexicalBoundary.depth ) {\n\t\t\t\tthis.alias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tif ( this.alias ) {\n\t\t\tcode.overwrite( this.start, this.end, this.alias, true );\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class UpdateExpression extends Node {\n\tinitialise ( transforms ) {\n\t\tif ( this.argument.type === 'Identifier' ) {\n\t\t\tconst declaration = this.findScope( false ).findDeclaration( this.argument.name );\n\t\t\tif ( declaration && declaration.kind === 'const' ) {\n\t\t\t\tthrow new CompileError( this, `${this.argument.name} is read-only` );\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import { findIndex } from './array.js';\n\nconst handlers = {\n\tArrayPattern: destructureArrayPattern,\n\tObjectPattern: destructureObjectPattern,\n\tAssignmentPattern: destructureAssignmentPattern,\n\tIdentifier: destructureIdentifier\n};\n\nexport default function destructure ( code, scope, node, ref, statementGenerators ) {\n\t_destructure( code, scope, node, ref, ref, statementGenerators );\n}\n\nfunction _destructure ( code, scope, node, ref, expr, statementGenerators ) {\n\tconst handler = handlers[ node.type ];\n\tif ( !handler ) throw new Error( `not implemented: ${node.type}` );\n\n\thandler( code, scope, node, ref, expr, statementGenerators );\n}\n\nfunction destructureIdentifier ( code, scope, node, ref, expr, statementGenerators ) {\n\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\tcode.insertRight( node.start, `${prefix}var ` );\n\t\tcode.insertLeft( node.end, ` = ${expr};${suffix}` );\n\t\tcode.move( node.start, node.end, start );\n\t});\n}\n\nfunction handleProperty ( code, scope, c, node, value, statementGenerators ) {\n\tswitch ( node.type ) {\n\t\tcase 'Identifier':\n\t\t\tcode.remove( c, node.start );\n\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tcode.insertRight( node.start, `${prefix}var ` );\n\t\t\t\tcode.insertLeft( node.end, ` = ${value};${suffix}` );\n\t\t\t\tcode.move( node.start, node.end, start );\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'AssignmentPattern':\n\t\t\tlet name;\n\n\t\t\tconst isIdentifier = node.left.type === 'Identifier';\n\n\t\t\tif ( isIdentifier ) {\n\t\t\t\tname = node.left.name;\n\t\t\t\tconst declaration = scope.findDeclaration( name );\n\t\t\t\tif ( declaration ) name = declaration.name;\n\t\t\t} else {\n\t\t\t\tname = scope.createIdentifier( value );\n\t\t\t}\n\n\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tcode.insertRight( node.right.start, `${prefix}var ${name} = ${value}; if ( ${name} === void 0 ) ${name} = ` );\n\t\t\t\tcode.move( node.right.start, node.right.end, start );\n\t\t\t\tcode.insertLeft( node.right.end, `;${suffix}` );\n\t\t\t});\n\n\t\t\tif ( isIdentifier ) {\n\t\t\t\tcode.remove( c, node.right.start );\n\t\t\t} else {\n\t\t\t\tcode.remove( c, node.left.start );\n\t\t\t\tcode.remove( node.left.end, node.right.start );\n\t\t\t\thandleProperty( code, scope, c, node.left, name, statementGenerators );\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\tcase 'ObjectPattern':\n\t\t\tcode.remove( c, c = node.start );\n\n\t\t\tif ( node.properties.length > 1 ) {\n\t\t\t\tconst ref = scope.createIdentifier( value );\n\n\t\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t// this feels a tiny bit hacky, but we can't do a\n\t\t\t\t\t// straightforward insertLeft and keep correct order...\n\t\t\t\t\tcode.insertRight( node.start, `${prefix}var ${ref} = ` );\n\t\t\t\t\tcode.overwrite( node.start, c = node.start + 1, value );\n\t\t\t\t\tcode.insertLeft( c, `;${suffix}` );\n\n\t\t\t\t\tcode.move( node.start, c, start );\n\t\t\t\t});\n\n\t\t\t\tnode.properties.forEach( prop => {\n\t\t\t\t\thandleProperty( code, scope, c, prop.value, `${ref}.${prop.key.name}`, statementGenerators );\n\t\t\t\t\tc = prop.end;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst prop = node.properties[0];\n\t\t\t\thandleProperty( code, scope, c, prop.value, `${value}.${prop.key.name}`, statementGenerators );\n\t\t\t\tc = prop.end;\n\t\t\t}\n\n\t\t\tcode.remove( c, node.end );\n\t\t\tbreak;\n\n\t\tcase 'ArrayPattern':\n\t\t\tcode.remove( c, c = node.start );\n\n\t\t\tif ( node.elements.filter( Boolean ).length > 1 ) {\n\t\t\t\tconst ref = scope.createIdentifier( value );\n\n\t\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\tcode.insertRight( node.start, `${prefix}var ${ref} = ` );\n\t\t\t\t\tcode.overwrite( node.start, c = node.start + 1, value );\n\t\t\t\t\tcode.insertLeft( c, `;${suffix}` );\n\n\t\t\t\t\tcode.move( node.start, c, start );\n\t\t\t\t});\n\n\t\t\t\tnode.elements.forEach( ( element, i ) => {\n\t\t\t\t\tif ( !element ) return;\n\n\t\t\t\t\thandleProperty( code, scope, c, element, `${ref}[${i}]`, statementGenerators );\n\t\t\t\t\tc = element.end;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst index = findIndex( node.elements, Boolean );\n\t\t\t\tconst element = node.elements[ index ];\n\t\t\t\thandleProperty( code, scope, c, element, `${value}[${index}]`, statementGenerators );\n\t\t\t\tc = element.end;\n\t\t\t}\n\n\t\t\tcode.remove( c, node.end );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( `Unexpected node type in destructuring (${node.type})` );\n\t}\n}\n\nfunction destructureArrayPattern ( code, scope, node, ref, expr, statementGenerators ) {\n\tlet c = node.start;\n\n\tnode.elements.forEach( ( element, i ) => {\n\t\tif ( !element ) return;\n\n\t\thandleProperty( code, scope, c, element, `${ref}[${i}]`, statementGenerators );\n\t\tc = element.end;\n\t});\n\n\tcode.remove( c, node.end );\n}\n\nfunction destructureObjectPattern ( code, scope, node, ref, expr, statementGenerators ) {\n\tlet c = node.start;\n\n\tnode.properties.forEach( prop => {\n\t\thandleProperty( code, scope, c, prop.value, `${ref}.${prop.key.name}`, statementGenerators );\n\t\tc = prop.end;\n\t});\n\n\tcode.remove( c, node.end );\n}\n\nfunction destructureAssignmentPattern ( code, scope, node, ref, expr, statementGenerators ) {\n\tconst isIdentifier = node.left.type === 'Identifier';\n\tconst name = isIdentifier ? node.left.name : ref;\n\n\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\tcode.insertRight( node.left.end, `${prefix}if ( ${name} === void 0 ) ${name}` );\n\t\tcode.move( node.left.end, node.right.end, start );\n\t\tcode.insertLeft( node.right.end, `;${suffix}` );\n\t});\n\n\tif ( !isIdentifier ) {\n\t\t_destructure( code, scope, node.left, ref, expr, statementGenerators );\n\t}\n}\n","import Node from '../Node.js';\nimport destructure from '../../utils/destructure.js';\n\nexport default class VariableDeclaration extends Node {\n\tinitialise ( transforms ) {\n\t\tthis.scope = this.findScope( this.kind === 'var' );\n\t\tthis.declarations.forEach( declarator => declarator.initialise( transforms ) );\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst i0 = this.getIndentation();\n\t\tlet kind = this.kind;\n\n\t\tif ( transforms.letConst && kind !== 'var' ) {\n\t\t\tkind = 'var';\n\t\t\tcode.overwrite( this.start, this.start + this.kind.length, kind, true );\n\t\t}\n\n\t\tif ( transforms.destructuring ) {\n\t\t\tlet c = this.start;\n\t\t\tlet lastDeclaratorIsPattern;\n\n\t\t\tthis.declarations.forEach( ( declarator, i ) => {\n\t\t\t\tif ( declarator.id.type === 'Identifier' ) {\n\t\t\t\t\tif ( i > 0 && this.declarations[ i - 1 ].id.type !== 'Identifier' ) {\n\t\t\t\t\t\tcode.overwrite( c, declarator.id.start, `var ` );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\tcode.remove( c, declarator.id.start );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite( c, declarator.id.start, `;\\n${i0}` );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst simple = declarator.init.type === 'Identifier' && !declarator.init.rewritten;\n\n\t\t\t\t\tconst name = simple ? declarator.init.name : declarator.findScope( true ).createIdentifier( 'ref' );\n\n\t\t\t\t\tlet c = declarator.start;\n\n\t\t\t\t\tlet statementGenerators = [];\n\n\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\tcode.remove( declarator.id.end, declarator.end );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t\t\tcode.insertRight( declarator.id.end, `var ${name}` );\n\t\t\t\t\t\t\tcode.insertLeft( declarator.init.end, `;${suffix}` );\n\t\t\t\t\t\t\tcode.move( declarator.id.end, declarator.end, start );\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tdestructure( code, declarator.findScope( false ), declarator.id, name, statementGenerators );\n\n\t\t\t\t\tlet suffix = `\\n${i0}`;\n\t\t\t\t\tstatementGenerators.forEach( ( fn, j ) => {\n\t\t\t\t\t\tif ( i === this.declarations.length - 1 && j === statementGenerators.length - 1 ) {\n\t\t\t\t\t\t\tsuffix = '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfn( declarator.start, '', suffix );\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif ( declarator.init ) {\n\t\t\t\t\tdeclarator.init.transpile( code, transforms );\n\t\t\t\t}\n\n\t\t\t\tc = declarator.end;\n\t\t\t\tlastDeclaratorIsPattern = declarator.id.type !== 'Identifier';\n\t\t\t});\n\n\t\t\tif ( lastDeclaratorIsPattern ) {\n\t\t\t\tcode.remove( c, this.end );\n\t\t\t}\n\t\t}\n\n\t\telse {\n\t\t\tthis.declarations.forEach( declarator => {\n\t\t\t\tif ( declarator.init ) declarator.init.transpile( code, transforms );\n\t\t\t});\n\t\t}\n\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class VariableDeclarator extends Node {\n\tinitialise ( transforms ) {\n\t\tlet kind = this.parent.kind;\n\t\tif ( kind === 'let' && this.parent.parent.type === 'ForStatement' ) {\n\t\t\tkind = 'for.let'; // special case...\n\t\t}\n\n\t\tthis.parent.scope.addDeclaration( this.id, kind );\n\t\tsuper.initialise( transforms );\n\t}\n}\n","import ArrayExpression from './ArrayExpression.js';\nimport ArrowFunctionExpression from './ArrowFunctionExpression.js';\nimport AssignmentExpression from './AssignmentExpression.js';\nimport BinaryExpression from './BinaryExpression.js';\nimport BreakStatement from './BreakStatement.js';\nimport CallExpression from './CallExpression.js';\nimport ClassBody from './ClassBody.js';\nimport ClassDeclaration from './ClassDeclaration.js';\nimport ClassExpression from './ClassExpression.js';\nimport ContinueStatement from './ContinueStatement.js';\nimport ExportDefaultDeclaration from './ExportDefaultDeclaration.js';\nimport ExportNamedDeclaration from './ExportNamedDeclaration.js';\nimport ForStatement from './ForStatement.js';\nimport ForInStatement from './ForInStatement.js';\nimport ForOfStatement from './ForOfStatement.js';\nimport FunctionDeclaration from './FunctionDeclaration.js';\nimport FunctionExpression from './FunctionExpression.js';\nimport Identifier from './Identifier.js';\nimport ImportDeclaration from './ImportDeclaration.js';\nimport ImportDefaultSpecifier from './ImportDefaultSpecifier.js';\nimport ImportSpecifier from './ImportSpecifier.js';\nimport JSXAttribute from './JSXAttribute.js';\nimport JSXClosingElement from './JSXClosingElement.js';\nimport JSXElement from './JSXElement.js';\nimport JSXExpressionContainer from './JSXExpressionContainer.js';\nimport JSXOpeningElement from './JSXOpeningElement.js';\nimport JSXSpreadAttribute from './JSXSpreadAttribute.js';\nimport Literal from './Literal.js';\nimport LoopStatement from './shared/LoopStatement.js';\nimport MemberExpression from './MemberExpression.js';\nimport ObjectExpression from './ObjectExpression.js';\nimport Property from './Property.js';\nimport ReturnStatement from './ReturnStatement.js';\nimport SpreadProperty from './SpreadProperty.js';\nimport Super from './Super.js';\nimport TaggedTemplateExpression from './TaggedTemplateExpression.js';\nimport TemplateElement from './TemplateElement.js';\nimport TemplateLiteral from './TemplateLiteral.js';\nimport ThisExpression from './ThisExpression.js';\nimport UpdateExpression from './UpdateExpression.js';\nimport VariableDeclaration from './VariableDeclaration.js';\nimport VariableDeclarator from './VariableDeclarator.js';\n\nexport default {\n\tArrayExpression,\n\tArrowFunctionExpression,\n\tAssignmentExpression,\n\tBinaryExpression,\n\tBreakStatement,\n\tCallExpression,\n\tClassBody,\n\tClassDeclaration,\n\tClassExpression,\n\tContinueStatement,\n\tDoWhileStatement: LoopStatement,\n\tExportNamedDeclaration,\n\tExportDefaultDeclaration,\n\tForStatement,\n\tForInStatement,\n\tForOfStatement,\n\tFunctionDeclaration,\n\tFunctionExpression,\n\tIdentifier,\n\tImportDeclaration,\n\tImportDefaultSpecifier,\n\tImportSpecifier,\n\tJSXAttribute,\n\tJSXClosingElement,\n\tJSXElement,\n\tJSXExpressionContainer,\n\tJSXOpeningElement,\n JSXSpreadAttribute,\n\tLiteral,\n\tMemberExpression,\n\tObjectExpression,\n\tProperty,\n\tReturnStatement,\n\tSpreadProperty,\n\tSuper,\n\tTaggedTemplateExpression,\n\tTemplateElement,\n\tTemplateLiteral,\n\tThisExpression,\n\tUpdateExpression,\n\tVariableDeclaration,\n\tVariableDeclarator,\n\tWhileStatement: LoopStatement\n};\n","import types from './types/index.js';\nimport BlockStatement from './BlockStatement.js';\nimport Node from './Node.js';\nimport keys from './keys.js';\n\nconst statementsWithBlocks = {\n\tIfStatement: 'consequent',\n\tForStatement: 'body',\n\tForInStatement: 'body',\n\tForOfStatement: 'body',\n\tWhileStatement: 'body',\n\tDoWhileStatement: 'body',\n\tArrowFunctionExpression: 'body'\n};\n\nexport default function wrap ( raw, parent ) {\n\tif ( !raw ) return;\n\n\tif ( 'length' in raw ) {\n\t\tlet i = raw.length;\n\t\twhile ( i-- ) wrap( raw[i], parent );\n\t\treturn;\n\t}\n\n\t// with e.g. shorthand properties, key and value are\n\t// the same node. We don't want to wrap an object twice\n\tif ( raw.__wrapped ) return;\n\traw.__wrapped = true;\n\n\tif ( !keys[ raw.type ] ) {\n\t\tkeys[ raw.type ] = Object.keys( raw ).filter( key => typeof raw[ key ] === 'object' );\n\t}\n\n\t// special case body-less if/for/while statements. TODO others?\n\tconst bodyType = statementsWithBlocks[ raw.type ];\n\tif ( bodyType && raw[ bodyType ].type !== 'BlockStatement' ) {\n\t\tconst expression = raw[ bodyType ];\n\n\t\t// create a synthetic block statement, otherwise all hell\n\t\t// breaks loose when it comes to block scoping\n\t\traw[ bodyType ] = {\n\t\t\tstart: expression.start,\n\t\t\tend: expression.end,\n\t\t\ttype: 'BlockStatement',\n\t\t\tbody: [ expression ],\n\t\t\tsynthetic: true\n\t\t};\n\t}\n\n\tNode( raw, parent );\n\n\tconst type = ( raw.type === 'BlockStatement' ? BlockStatement : types[ raw.type ] ) || Node;\n\traw.__proto__ = type.prototype;\n}\n","import extractNames from './extractNames.js';\nimport reserved from '../utils/reserved.js';\nimport CompileError from '../utils/CompileError.js';\n\nconst letConst = /^(?:let|const)$/;\n\nexport default function Scope ( options ) {\n\toptions = options || {};\n\n\tthis.parent = options.parent;\n\tthis.isBlockScope = !!options.block;\n\n\tlet scope = this;\n\twhile ( scope.isBlockScope ) scope = scope.parent;\n\tthis.functionScope = scope;\n\n\tthis.identifiers = [];\n\tthis.declarations = Object.create( null );\n\tthis.references = Object.create( null );\n\tthis.blockScopedDeclarations = this.isBlockScope ? null : Object.create( null );\n\tthis.aliases = this.isBlockScope ? null : Object.create( null );\n}\n\nScope.prototype = {\n\taddDeclaration ( node, kind ) {\n\t\tfor ( const identifier of extractNames( node ) ) {\n\t\t\tconst name = identifier.name;\n\t\t\tconst existingDeclaration = this.declarations[ name ];\n\t\t\tif ( existingDeclaration && ( letConst.test( kind ) || letConst.test( existingDeclaration.kind ) ) ) {\n\t\t\t\t// TODO warn about double var declarations?\n\t\t\t\tthrow new CompileError( identifier, `${name} is already declared` );\n\t\t\t}\n\n\t\t\tconst declaration = { name, node: identifier, kind, instances: [] };\n\t\t\tthis.declarations[ name ] = declaration;\n\n\t\t\tif ( this.isBlockScope ) {\n\t\t\t\tif ( !this.functionScope.blockScopedDeclarations[ name ] ) this.functionScope.blockScopedDeclarations[ name ] = [];\n\t\t\t\tthis.functionScope.blockScopedDeclarations[ name ].push( declaration );\n\t\t\t}\n\t\t}\n\t},\n\n\taddReference ( identifier ) {\n\t\tif ( this.consolidated ) {\n\t\t\tthis.consolidateReference( identifier );\n\t\t} else {\n\t\t\tthis.identifiers.push( identifier );\n\t\t}\n\t},\n\n\tconsolidate () {\n\t\tfor ( let i = 0; i < this.identifiers.length; i += 1 ) { // we might push to the array during consolidation, so don't cache length\n\t\t\tconst identifier = this.identifiers[i];\n\t\t\tthis.consolidateReference( identifier );\n\t\t}\n\n\t\tthis.consolidated = true; // TODO understand why this is necessary... seems bad\n\t},\n\n\tconsolidateReference ( identifier ) {\n\t\tconst declaration = this.declarations[ identifier.name ];\n\t\tif ( declaration ) {\n\t\t\tdeclaration.instances.push( identifier );\n\t\t} else {\n\t\t\tthis.references[ identifier.name ] = true;\n\t\t\tif ( this.parent ) this.parent.addReference( identifier );\n\t\t}\n\t},\n\n\tcontains ( name ) {\n\t\treturn this.declarations[ name ] ||\n\t\t ( this.parent ? this.parent.contains( name ) : false );\n\t},\n\n\tcreateIdentifier ( base ) {\n\t\tbase = base\n\t\t\t.replace( /\\s/g, '' )\n\t\t\t.replace( /\\[([^\\]]+)\\]/g, '_$1' )\n\t\t\t.replace( /[^a-zA-Z0-9_$]/g, '_' )\n\t\t\t.replace( /_{2,}/, '_' );\n\n\t\tlet name = base;\n\t\tlet counter = 1;\n\n\t\twhile ( this.declarations[ name ] || this.references[ name ] || this.aliases[ name ] || name in reserved ) {\n\t\t\tname = `${base}$${counter++}`;\n\t\t}\n\n\t\tthis.aliases[ name ] = true;\n\t\treturn name;\n\t},\n\n\tfindDeclaration ( name ) {\n\t\treturn this.declarations[ name ] ||\n\t\t ( this.parent && this.parent.findDeclaration( name ) );\n\t}\n};\n","import wrap from './wrap.js';\nimport Node from './Node.js';\nimport Scope from './Scope.js';\nimport CompileError from '../utils/CompileError.js';\nimport destructure from '../utils/destructure.js';\n\nfunction isUseStrict ( node ) {\n\tif ( !node ) return false;\n\tif ( node.type !== 'ExpressionStatement' ) return false;\n\tif ( node.expression.type !== 'Literal' ) return false;\n\treturn node.expression.value === 'use strict';\n}\n\nexport default class BlockStatement extends Node {\n\tcreateScope () {\n\t\tthis.parentIsFunction = /Function/.test( this.parent.type );\n\t\tthis.isFunctionBlock = this.parentIsFunction || this.parent.type === 'Root';\n\t\tthis.scope = new Scope({\n\t\t\tblock: !this.isFunctionBlock,\n\t\t\tparent: this.parent.findScope( false )\n\t\t});\n\n\t\tif ( this.parentIsFunction ) {\n\t\t\tthis.parent.params.forEach( node => {\n\t\t\t\tthis.scope.addDeclaration( node, 'param' );\n\t\t\t});\n\t\t}\n\t}\n\n\tinitialise ( transforms ) {\n\t\tthis.thisAlias = null;\n\t\tthis.argumentsAlias = null;\n\t\tthis.defaultParameters = [];\n\n\t\t// normally the scope gets created here, during initialisation,\n\t\t// but in some cases (e.g. `for` statements), we need to create\n\t\t// the scope early, as it pertains to both the init block and\n\t\t// the body of the statement\n\t\tif ( !this.scope ) this.createScope();\n\n\t\tthis.body.forEach( node => node.initialise( transforms ) );\n\n\t\tthis.scope.consolidate();\n\t}\n\n\tfindLexicalBoundary () {\n\t\tif ( this.type === 'Program' ) return this;\n\t\tif ( /^Function/.test( this.parent.type ) ) return this;\n\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindScope ( functionScope ) {\n\t\tif ( functionScope && !this.isFunctionBlock ) return this.parent.findScope( functionScope );\n\t\treturn this.scope;\n\t}\n\n\tgetArgumentsAlias () {\n\t\tif ( !this.argumentsAlias ) {\n\t\t\tthis.argumentsAlias = this.scope.createIdentifier( 'arguments' );\n\t\t}\n\n\t\treturn this.argumentsAlias;\n\t}\n\n\tgetArgumentsArrayAlias () {\n\t\tif ( !this.argumentsArrayAlias ) {\n\t\t\tthis.argumentsArrayAlias = this.scope.createIdentifier( 'argsArray' );\n\t\t}\n\n\t\treturn this.argumentsArrayAlias;\n\t}\n\n\tgetThisAlias () {\n\t\tif ( !this.thisAlias ) {\n\t\t\tthis.thisAlias = this.scope.createIdentifier( 'this' );\n\t\t}\n\n\t\treturn this.thisAlias;\n\t}\n\n\tgetIndentation () {\n\t\tif ( this.indentation === undefined ) {\n\t\t\tconst source = this.program.magicString.original;\n\n\t\t\tconst useOuter = this.synthetic || !this.body.length;\n\t\t\tlet c = useOuter ? this.start : this.body[0].start;\n\n\t\t\twhile ( c && source[c] !== '\\n' ) c -= 1;\n\n\t\t\tthis.indentation = '';\n\n\t\t\twhile ( true ) {\n\t\t\t\tc += 1;\n\t\t\t\tconst char = source[c];\n\n\t\t\t\tif ( char !== ' ' && char !== '\\t' ) break;\n\n\t\t\t\tthis.indentation += char;\n\t\t\t}\n\n\t\t\tconst indentString = this.program.magicString.getIndentString();\n\n\t\t\t// account for dedented class constructors\n\t\t\tlet parent = this.parent;\n\t\t\twhile ( parent ) {\n\t\t\t\tif ( parent.kind === 'constructor' && !parent.parent.parent.superClass ) {\n\t\t\t\t\tthis.indentation = this.indentation.replace( indentString, '' );\n\t\t\t\t}\n\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\tif ( useOuter ) this.indentation += indentString;\n\t\t}\n\n\t\treturn this.indentation;\n\t}\n\n\ttranspile ( code, transforms ) {\n\t\tconst indentation = this.getIndentation();\n\n\t\tlet introStatementGenerators = [];\n\n\t\tif ( this.argumentsAlias ) {\n\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.argumentsAlias} = arguments;${suffix}`;\n\t\t\t\tcode.insertLeft( start, assignment );\n\t\t\t});\n\t\t}\n\n\t\tif ( this.thisAlias ) {\n\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.thisAlias} = this;${suffix}`;\n\t\t\t\tcode.insertLeft( start, assignment );\n\t\t\t});\n\t\t}\n\n\t\tif ( this.argumentsArrayAlias ) {\n\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\tconst i = this.scope.createIdentifier( 'i' );\n\t\t\t\tconst assignment = `${prefix}var ${i} = arguments.length, ${this.argumentsArrayAlias} = Array(${i});\\n${indentation}while ( ${i}-- ) ${this.argumentsArrayAlias}[${i}] = arguments[${i}];${suffix}`;\n\t\t\t\tcode.insertLeft( start, assignment );\n\t\t\t});\n\t\t}\n\n\t\tif ( /Function/.test( this.parent.type ) ) {\n\t\t\tthis.transpileParameters( code, transforms, indentation, introStatementGenerators );\n\t\t}\n\n\t\tif ( transforms.letConst && this.isFunctionBlock ) {\n\t\t\tthis.transpileBlockScopedIdentifiers( code );\n\t\t}\n\n\t\tsuper.transpile( code, transforms );\n\n\t\tif ( this.synthetic ) {\n\t\t\tif ( this.parent.type === 'ArrowFunctionExpression' ) {\n\t\t\t\tconst expr = this.body[0];\n\n\t\t\t\tif ( introStatementGenerators.length ) {\n\t\t\t\t\tcode.insertLeft( this.start, `{` ).insertRight( this.end, `${this.parent.getIndentation()}}` );\n\n\t\t\t\t\tcode.insertRight( expr.start, `\\n${indentation}return ` );\n\t\t\t\t\tcode.insertLeft( expr.end, `;\\n` );\n\t\t\t\t} else if ( transforms.arrow ) {\n\t\t\t\t\tcode.insertRight( expr.start, `{ return ` );\n\t\t\t\t\tcode.insertLeft( expr.end, `; }` );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( introStatementGenerators.length ) {\n\t\t\t\tcode.insertLeft( this.start, `{` ).insertRight( this.end, `}` );\n\t\t\t}\n\t\t}\n\n\t\tlet start;\n\t\tif ( isUseStrict( this.body[0] ) ) {\n\t\t\tstart = this.body[0].end;\n\t\t} else if ( this.synthetic || this.parent.type === 'Root' ) {\n\t\t\tstart = this.start;\n\t\t} else {\n\t\t\tstart = this.start + 1;\n\t\t}\n\n\t\tlet prefix = `\\n${indentation}`;\n\t\tlet suffix = '';\n\t\tintroStatementGenerators.forEach( ( fn, i ) => {\n\t\t\tif ( i === introStatementGenerators.length - 1 ) suffix = `\\n`;\n\t\t\tfn( start, prefix, suffix );\n\t\t});\n\t}\n\n\ttranspileParameters ( code, transforms, indentation, introStatementGenerators ) {\n\t\tconst params = this.parent.params;\n\n\t\tparams.forEach( param => {\n\t\t\tif ( param.type === 'AssignmentPattern' && param.left.type === 'Identifier' ) {\n\t\t\t\tif ( transforms.defaultParameter ) {\n\t\t\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t\tconst lhs = `${prefix}if ( ${param.left.name} === void 0 ) ${param.left.name}`;\n\n\t\t\t\t\t\tcode\n\t\t\t\t\t\t\t.insertRight( param.left.end, `${lhs}` )\n\t\t\t\t\t\t\t.move( param.left.end, param.right.end, start )\n\t\t\t\t\t\t\t.insertLeft( param.right.end, `;${suffix}` );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( param.type === 'RestElement' ) {\n\t\t\t\tif ( transforms.spreadRest ) {\n\t\t\t\t\tintroStatementGenerators.push( ( start, prefix, suffix ) => {\n\t\t\t\t\t\tconst penultimateParam = params[ params.length - 2 ];\n\n\t\t\t\t\t\tif ( penultimateParam ) {\n\t\t\t\t\t\t\tcode.remove( penultimateParam ? penultimateParam.end : param.start, param.end );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet start = param.start, end = param.end; // TODO https://gitlab.com/Rich-Harris/buble/issues/8\n\n\t\t\t\t\t\t\twhile ( /\\s/.test( code.original[ start - 1 ] ) ) start -= 1;\n\t\t\t\t\t\t\twhile ( /\\s/.test( code.original[ end ] ) ) end += 1;\n\n\t\t\t\t\t\t\tcode.remove( start, end );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst name = param.argument.name;\n\t\t\t\t\t\tconst len = this.scope.createIdentifier( 'len' );\n\t\t\t\t\t\tconst count = params.length - 1;\n\n\t\t\t\t\t\tif ( count ) {\n\t\t\t\t\t\t\tcode.insertLeft( start, `${prefix}var ${name} = [], ${len} = arguments.length - ${count};\\n${indentation}while ( ${len}-- > 0 ) ${name}[ ${len} ] = arguments[ ${len} + ${count} ];${suffix}` );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.insertLeft( start, `${prefix}var ${name} = [], ${len} = arguments.length;\\n${indentation}while ( ${len}-- ) ${name}[ ${len} ] = arguments[ ${len} ];${suffix}` );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if ( param.type !== 'Identifier' ) {\n\t\t\t\tif ( transforms.parameterDestructuring ) {\n\t\t\t\t\tconst ref = this.scope.createIdentifier( 'ref' );\n\t\t\t\t\tdestructure( code, this.scope, param, ref, introStatementGenerators );\n\t\t\t\t\tcode.insertLeft( param.start, ref );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\ttranspileBlockScopedIdentifiers ( code ) {\n\t\tObject.keys( this.scope.blockScopedDeclarations ).forEach( name => {\n\t\t\tconst declarations = this.scope.blockScopedDeclarations[ name ];\n\n\t\t\tfor ( let declaration of declarations ) {\n\t\t\t\tlet cont = false; // TODO implement proper continue...\n\n\t\t\t\tif ( declaration.kind === 'for.let' ) {\n\t\t\t\t\t// special case\n\t\t\t\t\tconst forStatement = declaration.node.findNearest( 'ForStatement' );\n\n\t\t\t\t\tif ( forStatement.shouldRewriteAsFunction ) {\n\t\t\t\t\t\tconst outerAlias = this.scope.createIdentifier( name );\n\t\t\t\t\t\tconst innerAlias = forStatement.reassigned[ name ] ?\n\t\t\t\t\t\t\tthis.scope.createIdentifier( name ) :\n\t\t\t\t\t\t\tname;\n\n\t\t\t\t\t\tdeclaration.name = outerAlias;\n\t\t\t\t\t\tcode.overwrite( declaration.node.start, declaration.node.end, outerAlias, true );\n\n\t\t\t\t\t\tforStatement.aliases[ name ] = {\n\t\t\t\t\t\t\touter: outerAlias,\n\t\t\t\t\t\t\tinner: innerAlias\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfor ( const identifier of declaration.instances ) {\n\t\t\t\t\t\t\tconst alias = forStatement.body.contains( identifier ) ?\n\t\t\t\t\t\t\t\tinnerAlias :\n\t\t\t\t\t\t\t\touterAlias;\n\n\t\t\t\t\t\t\tif ( name !== alias ) {\n\t\t\t\t\t\t\t\tcode.overwrite( identifier.start, identifier.end, alias, true );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcont = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( !cont ) {\n\t\t\t\t\tconst alias = this.scope.createIdentifier( name );\n\n\t\t\t\t\tif ( name !== alias ) {\n\t\t\t\t\t\tdeclaration.name = alias;\n\t\t\t\t\t\tcode.overwrite( declaration.node.start, declaration.node.end, alias, true );\n\n\t\t\t\t\t\tfor ( const identifier of declaration.instances ) {\n\t\t\t\t\t\t\tidentifier.rewritten = true;\n\t\t\t\t\t\t\tcode.overwrite( identifier.start, identifier.end, alias, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import MagicString from 'magic-string';\nimport BlockStatement from './BlockStatement.js';\nimport wrap from './wrap.js';\n\nexport default function Program ( source, ast, transforms, options ) {\n\tthis.type = 'Root';\n\n\t// options\n\tthis.jsx = options.jsx || 'React.createElement';\n\tthis.objectAssign = options.objectAssign || 'Object.assign';\n\n\tthis.source = source;\n\tthis.magicString = new MagicString( source );\n\n\tthis.ast = ast;\n\tthis.depth = 0;\n\n\twrap( this.body = ast, this );\n\tthis.body.__proto__ = BlockStatement.prototype;\n\n\tthis.templateElements = [];\n\tthis.body.initialise( transforms );\n\n\tthis.indentExclusions = {};\n\tfor ( const node of this.templateElements ) {\n\t\tfor ( let i = node.start; i < node.end; i += 1 ) {\n\t\t\tthis.indentExclusions[ node.start + i ] = true;\n\t\t}\n\t}\n\n\tthis.body.transpile( this.magicString, transforms );\n}\n\nProgram.prototype = {\n\texport ( options = {} ) {\n\t\treturn {\n\t\t\tcode: this.magicString.toString(),\n\t\t\tmap: this.magicString.generateMap({\n\t\t\t\tfile: options.file,\n\t\t\t\tsource: options.source,\n\t\t\t\tincludeContent: options.includeContent !== false\n\t\t\t})\n\t\t};\n\t},\n\n\tfindNearest () {\n\t\treturn null;\n\t},\n\n\tfindScope () {\n\t\treturn null;\n\t}\n};\n","export const matrix = {\n\tchrome: {\n\t\t 48: 0b1001111011111100111110101111101,\n\t\t 49: 0b1001111111111100111111111111111,\n\t\t 50: 0b1011111111111100111111111111111\n\t},\n\tfirefox: {\n\t\t 43: 0b1000111111101100000110111011101,\n\t\t 44: 0b1000111111101100000110111011101,\n\t\t 45: 0b1000111111101100000110111011101\n\t},\n\tsafari: {\n\t\t 8: 0b1000000000000000000000000000000,\n\t\t 9: 0b1001111001101100000011101011110\n\t},\n\tie: {\n\t\t 8: 0b0000000000000000000000000000000,\n\t\t 9: 0b1000000000000000000000000000000,\n\t\t 10: 0b1000000000000000000000000000000,\n\t\t 11: 0b1000000000000000111000001100000\n\t},\n\tedge: {\n\t\t 12: 0b1011110110111100011010001011101,\n\t\t 13: 0b1011111110111100011111001011111\n\t},\n\tnode: {\n\t\t'0.10': 0b1000000000101000000000001000000,\n\t\t'0.12': 0b1000001000101000000010001000100,\n\t\t 4: 0b1001111000111100111111001111111,\n\t\t 5: 0b1001111000111100111111001111111,\n\t\t 6: 0b1011111111111100111111111111111\n\t}\n};\n\nexport const features = [\n\t'arrow',\n\t'classes',\n\t'collections',\n\t'computedProperty',\n\t'conciseMethodProperty',\n\t'constLoop',\n\t'constRedef',\n\t'defaultParameter',\n\t'destructuring',\n\t'extendNatives',\n\t'forOf',\n\t'generator',\n\t'letConst',\n\t'letLoop',\n\t'letLoopScope',\n\t'moduleExport',\n\t'moduleImport',\n\t'numericLiteral',\n\t'objectProto',\n\t'objectSuper',\n\t'oldOctalLiteral',\n\t'parameterDestructuring',\n\t'spreadRest',\n\t'stickyRegExp',\n\t'symbol',\n\t'templateString',\n\t'unicodeEscape',\n\t'unicodeIdentifier',\n\t'unicodeRegExp',\n\n\t// ES2016\n\t'exponentiation',\n\n\t// additional transforms, not from\n\t// https://featuretests.io\n\t'reservedProperties'\n];\n","{\n \"name\": \"buble\",\n \"version\": \"0.12.5\",\n \"description\": \"The blazing fast, batteries-included ES2015 compiler\",\n \"main\": \"dist/buble.umd.js\",\n \"jsnext:main\": \"dist/buble.es.js\",\n \"files\": [\n \"bin\",\n \"src\",\n \"dist\",\n \"register.js\",\n \"README.md\"\n ],\n \"scripts\": {\n \"build\": \"npm run build:umd && npm run build:es && npm run build:browser\",\n \"build:umd\": \"rollup -c -f umd -o dist/buble.umd.js\",\n \"build:browser\": \"rollup -c --environment DEPS -f umd -o dist/buble.deps.js\",\n \"build:es\": \"rollup -c -f es6 -o dist/buble.es.js\",\n \"test\": \"mocha test/test.js --compilers js:buble/register\",\n \"pretest\": \"npm run build:umd && npm run build:browser\",\n \"test:node\": \"mocha test/test.js --compilers js:buble/register\",\n \"pretest:node\": \"npm run build:umd\",\n \"prepublish\": \"npm test && npm run build:es\"\n },\n \"bin\": {\n \"buble\": \"./bin/buble\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://gitlab.com/Rich-Harris/buble.git\"\n },\n \"keywords\": [\n \"javascript\",\n \"transpilation\",\n \"compilation\",\n \"esnext\",\n \"es2015\",\n \"es2017\",\n \"es6\",\n \"es7\"\n ],\n \"author\": \"Rich Harris\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://gitlab.com/Rich-Harris/buble/issues\"\n },\n \"homepage\": \"https://gitlab.com/Rich-Harris/buble#README\",\n \"devDependencies\": {\n \"buble\": \"0.8.2\",\n \"console-group\": \"^0.2.1\",\n \"eslint\": \"^2.10.1\",\n \"glob\": \"^7.0.3\",\n \"mocha\": \"^2.4.5\",\n \"regexpu-core\": \"^2.0.0\",\n \"rimraf\": \"^2.5.2\",\n \"rollup\": \"^0.26.3\",\n \"rollup-plugin-buble\": \"^0.8.0\",\n \"rollup-plugin-commonjs\": \"^2.2.1\",\n \"rollup-plugin-json\": \"^2.0.0\",\n \"rollup-plugin-node-resolve\": \"^1.5.0\",\n \"source-map\": \"^0.5.6\",\n \"source-map-support\": \"^0.4.0\"\n },\n \"dependencies\": {\n \"acorn\": \"^3.1.0\",\n \"acorn-jsx\": \"^3.0.1\",\n \"acorn-object-spread\": \"^1.0.0\",\n \"chalk\": \"^1.1.3\",\n \"magic-string\": \"^0.14.0\",\n \"minimist\": \"^1.2.0\",\n \"os-homedir\": \"^1.0.1\"\n }\n}\n","import acorn from 'acorn';\nimport acornJsx from 'acorn-jsx/inject';\nimport acornObjectSpread from 'acorn-object-spread/inject';\nimport Program from './program/Program.js';\nimport { features, matrix } from './support.js';\nimport getSnippet from './utils/getSnippet.js';\n\nconst { parse } = [\n\tacornObjectSpread,\n\tacornJsx\n].reduce( ( final, plugin ) => plugin( final ), acorn );\n\nconst dangerousTransforms = [\n\t'dangerousTaggedTemplateString',\n\t'dangerousForOf'\n];\n\nexport function target ( target ) {\n\tconst targets = Object.keys( target );\n\tlet bitmask = targets.length ?\n\t\t0b1111111111111111111111111111111 :\n\t\t0b1000000000000000000000000000000;\n\n\tObject.keys( target ).forEach( environment => {\n\t\tconst versions = matrix[ environment ];\n\t\tif ( !versions ) throw new Error( `Unknown environment '${environment}'. Please raise an issue at https://gitlab.com/Rich-Harris/buble/issues` );\n\n\t\tconst targetVersion = target[ environment ];\n\t\tif ( !( targetVersion in versions ) ) throw new Error( `Support data exists for the following versions of ${environment}: ${Object.keys( versions ).join( ', ')}. Please raise an issue at https://gitlab.com/Rich-Harris/buble/issues` );\n\t\tconst support = versions[ targetVersion ];\n\n\t\tbitmask &= support;\n\t});\n\n\tlet transforms = Object.create( null );\n\tfeatures.forEach( ( name, i ) => {\n\t\ttransforms[ name ] = !( bitmask & 1 << i );\n\t});\n\n\tdangerousTransforms.forEach( name => {\n\t\ttransforms[ name ] = false;\n\t});\n\n\treturn transforms;\n}\n\nexport function transform ( source, options = {} ) {\n\tlet ast;\n\n\ttry {\n\t\tast = parse( source, {\n\t\t\tecmaVersion: 7,\n\t\t\tpreserveParens: true,\n\t\t\tsourceType: 'module',\n\t\t\tplugins: {\n\t\t\t\tjsx: true,\n\t\t\t\tobjectSpread: true\n\t\t\t}\n\t\t});\n\t} catch ( err ) {\n\t\terr.snippet = getSnippet( source, err.loc );\n\t\terr.toString = () => `${err.name}: ${err.message}\\n${err.snippet}`;\n\t\tthrow err;\n\t}\n\n\tlet transforms = target( options.target || {} );\n\tObject.keys( options.transforms || {} ).forEach( name => {\n\t\tif ( name === 'modules' ) {\n\t\t\tif ( !( 'moduleImport' in options.transforms ) ) transforms.moduleImport = options.transforms.modules;\n\t\t\tif ( !( 'moduleExport' in options.transforms ) ) transforms.moduleExport = options.transforms.modules;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !( name in transforms ) ) throw new Error( `Unknown transform '${name}'` );\n\t\ttransforms[ name ] = options.transforms[ name ];\n\t});\n\n\treturn new Program( source, ast, transforms, options ).export( options );\n}\n\nexport { version as VERSION } from '../package.json';\n"],"names":["let","this","const","toJSON","element","super","fn","require$$0","require$$4","rewritePattern","prop","i","replacement","ref","c","start","alias","identifier","0b1001111011111100111110101111101","0b1001111111111100111111111111111","0b1011111111111100111111111111111","0b1000111111101100000110111011101","0b1000000000000000000000000000000","0b1001111001101100000011101011110","0b0000000000000000000000000000000","0b1000000000000000111000001100000","0b1011110110111100011010001011101","0b1011111110111100011111001011111","0b1000000000101000000000001000000","0b1000001000101000000010001000100","0b1001111000111100111111001111111","acorn","0b1111111111111111111111111111111"],"mappings":"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EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/zC,EAAA,IAAI,qBAAqB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,E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AM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,IAAI,CAAC;GACd,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE;IACR,KAAK;IACL,KAAK;IACL,CAAC;GACF,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE;IACR,KAAK;IACL,KAAK;IACL,CAAC;GACF,CAAC,MAAM,EAAE,IAAI,CAAC;GACd,CAAC,MAAM,EAAE;IACR,IAAI;IACJ,IAAI;IACJ,CAAC;GACF,CAAC,MAAM,EAAE,KAAK,CAAC;GACf,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,MAAM,EAAE,MAAM,CAAC;GAChB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO,EAAE,OAAO,CAAC;GAClB,CAAC,OAAO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"}