@gql.tada/cli-utils 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/gql-tada-cli.js +4 -1
- package/dist/gql-tada-cli.js.map +1 -1
- package/dist/gql-tada-cli.mjs +4 -1
- package/dist/gql-tada-cli.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gql-tada-cli.mjs","sources":["../../../node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","../../../node_modules/.pnpm/sade@1.8.1/node_modules/sade/lib/index.mjs","../../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js","../../../node_modules/.pnpm/array-timsort@1.0.3/node_modules/array-timsort/src/index.js","../../../node_modules/.pnpm/has-own-prop@2.0.0/node_modules/has-own-prop/index.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/common.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/array.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/parse.js","../../../node_modules/.pnpm/repeat-string@1.6.1/node_modules/repeat-string/index.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/stringify.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/index.js","../src/lsp.ts","../src/tada.ts","../src/index.ts"],"sourcesContent":["function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n","import e from\"mri\";const t=\"__all__\",i=\"__default__\",s=\"\\n\";function r(e){if(!e.length)return\"\";let t=function(e){let t=0,i=0,s=0,r=e.length;if(r)for(;r--;)i=e[r].length,i>t&&(s=r,t=i);return e[s].length}(e.map(e=>e[0]))+4;return e.map(e=>e[0]+\" \".repeat(t-e[0].length)+e[1]+(null==e[2]?\"\":` (default ${e[2]})`))}function n(e){return e}function l(e,t,i){if(!t||!t.length)return\"\";let r=0,n=\"\";for(n+=\"\\n \"+e;r<t.length;r++)n+=\"\\n \"+i(t[r]);return n+s}function a(e,t,i=1){let s=l(\"ERROR\",[t],n);s+=`\\n Run \\`$ ${e} --help\\` for more info.\\n`,console.error(s),process.exit(i)}class o{constructor(e,s){let[r,...n]=e.split(/\\s+/);s=s||n.length>0,this.bin=r,this.ver=\"0.0.0\",this.default=\"\",this.tree={},this.command(t),this.command([i].concat(s?n:\"<command>\").join(\" \")),this.single=s,this.curr=\"\"}command(e,t,i={}){if(this.single)throw new Error('Disable \"single\" mode to add commands');let s=[],r=[],n=/(\\[|<)/;if(e.split(/\\s+/).forEach(e=>{(n.test(e.charAt(0))?r:s).push(e)}),s=s.join(\" \"),s in this.tree)throw new Error(\"Command already exists: \"+s);return s.includes(\"__\")||r.unshift(s),r=r.join(\" \"),this.curr=s,i.default&&(this.default=s),this.tree[s]={usage:r,alibi:[],options:[],alias:{},default:{},examples:[]},i.alias&&this.alias(i.alias),t&&this.describe(t),this}describe(e){return this.tree[this.curr||i].describe=Array.isArray(e)?e:function(e){return(e||\"\").replace(/([.?!])\\s*(?=[A-Z])/g,\"$1|\").split(\"|\")}(e),this}alias(...e){if(this.single)throw new Error('Cannot call `alias()` in \"single\" mode');if(!this.curr)throw new Error(\"Cannot call `alias()` before defining a command\");return(this.tree[this.curr].alibi=this.tree[this.curr].alibi.concat(...e)).forEach(e=>this.tree[e]=this.curr),this}option(e,i,s){let r=this.tree[this.curr||t],[n,l]=function(e){return(e||\"\").split(/^-{1,2}|,|\\s+-{1,2}|\\s+/).filter(Boolean)}(e);if(l&&l.length>1&&([n,l]=[l,n]),e=\"--\"+n,l&&l.length>0){e=`-${l}, ${e}`;let t=r.alias[l];r.alias[l]=(t||[]).concat(n)}let a=[e,i||\"\"];return void 0!==s?(a.push(s),r.default[n]=s):l||(r.default[n]=void 0),r.options.push(a),this}action(e){return this.tree[this.curr||i].handler=e,this}example(e){return this.tree[this.curr||i].examples.push(e),this}version(e){return this.ver=e,this}parse(s,r={}){s=s.slice();let n,l,o,h,u=2,f=e(s.slice(u),{alias:{h:\"help\",v:\"version\"}}),c=this.single,p=this.bin,d=\"\";if(c)h=this.tree[i];else{let e,t=1,i=f._.length+1;for(;t<i;t++)if(n=f._.slice(0,t).join(\" \"),e=this.tree[n],\"string\"==typeof e)l=(d=e).split(\" \"),s.splice(s.indexOf(f._[0]),t,...l),t+=l.length-t;else if(e)d=n;else if(d)break;if(h=this.tree[d],o=void 0===h,o)if(this.default)d=this.default,h=this.tree[d],s.unshift(d),u++;else if(n)return a(p,\"Invalid command: \"+n)}if(f.help)return this.help(!c&&!o&&d);if(f.version)return this._version();if(!c&&void 0===h)return a(p,\"No command specified.\");let g=this.tree[t];r.alias=Object.assign(g.alias,h.alias,r.alias),r.default=Object.assign(g.default,h.default,r.default),n=d.split(\" \"),l=s.indexOf(n[0],2),~l&&s.splice(l,n.length);let m=e(s.slice(u),r);if(!m||\"string\"==typeof m)return a(p,m||\"Parsed unknown option flag(s)!\");let b=h.usage.split(/\\s+/),_=b.filter(e=>\"<\"===e.charAt(0)),v=m._.splice(0,_.length);if(v.length<_.length)return d&&(p+=\" \"+d),a(p,\"Insufficient arguments!\");b.filter(e=>\"[\"===e.charAt(0)).forEach(e=>{v.push(m._.shift())}),v.push(m);let $=h.handler;return r.lazy?{args:v,name:d,handler:$}:$.apply(null,v)}help(e){console.log(function(e,a,o,h){let u=\"\",f=a[o],c=\"$ \"+e,p=a[t],d=e=>`${c} ${e}`.replace(/\\s+/g,\" \"),g=[[\"-h, --help\",\"Displays this message\"]];if(o===i&&g.unshift([\"-v, --version\",\"Displays current version\"]),f.options=(f.options||[]).concat(p.options,g),f.options.length>0&&(f.usage+=\" [options]\"),u+=l(\"Description\",f.describe,n),u+=l(\"Usage\",[f.usage],d),h||o!==i)h||o===i||(u+=l(\"Aliases\",f.alibi,d));else{let e,t=/^__/,i=\"\",o=[];for(e in a)\"string\"==typeof a[e]||t.test(e)||o.push([e,(a[e].describe||[\"\"])[0]])<3&&(i+=`\\n ${c} ${e} --help`);u+=l(\"Available Commands\",r(o),n),u+=\"\\n For more info, run any command with the `--help` flag\"+i+s}return u+=l(\"Options\",r(f.options),n),u+=l(\"Examples\",f.examples.map(d),n),u}(this.bin,this.tree,e||i,this.single))}_version(){console.log(`${this.bin}, ${this.ver}`)}}export default(e,t)=>new o(e,t);\n","(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '{'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. 'A'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. 'A' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\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\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\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\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\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-\\u08B4\\u08E3-\\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\\u0AF9\\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-\\u0C5A\\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\\u0D5F-\\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\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\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-\\u19DA\\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\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\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\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\uAB70-\\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-\\uFE2F\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {<foo as bar>} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import <foo> ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '-->' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `<!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","/**\n * Default minimum size of a run.\n */\nconst DEFAULT_MIN_MERGE = 32\n\n/**\n * Minimum ordered subsequece required to do galloping.\n */\nconst DEFAULT_MIN_GALLOPING = 7\n\n/**\n * Default tmp storage length. Can increase depending on the size of the\n * smallest run to merge.\n */\nconst DEFAULT_TMP_STORAGE_LENGTH = 256\n\n/**\n * Pre-computed powers of 10 for efficient lexicographic comparison of\n * small integers.\n */\nconst POWERS_OF_TEN = [1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9]\n\nlet results\n\n/**\n * Estimate the logarithm base 10 of a small integer.\n *\n * @param {number} x - The integer to estimate the logarithm of.\n * @return {number} - The estimated logarithm of the integer.\n */\nconst log10 = x => x < 1e5\n ? x < 1e2\n ? x < 1e1\n ? 0\n : 1\n : x < 1e4\n ? x < 1e3\n ? 2\n : 3\n : 4\n : x < 1e7\n ? x < 1e6\n ? 5\n : 6\n : x < 1e9\n ? x < 1e8\n ? 7\n : 8\n : 9\n\n/**\n * Default alphabetical comparison of items.\n *\n * @param {string|object|number} a - First element to compare.\n * @param {string|object|number} b - Second element to compare.\n * @return {number} - A positive number if a.toString() > b.toString(), a\n * negative number if .toString() < b.toString(), 0 otherwise.\n */\nfunction alphabeticalCompare (a, b) {\n if (a === b) {\n return 0\n }\n\n if (~ ~ a === a && ~ ~ b === b) {\n if (a === 0 || b === 0) {\n return a < b ? - 1 : 1\n }\n\n if (a < 0 || b < 0) {\n if (b >= 0) {\n return - 1\n }\n\n if (a >= 0) {\n return 1\n }\n\n a = - a\n b = - b\n }\n\n const al = log10(a)\n const bl = log10(b)\n\n let t = 0\n\n if (al < bl) {\n a *= POWERS_OF_TEN[bl - al - 1]\n b /= 10\n t = - 1\n } else if (al > bl) {\n b *= POWERS_OF_TEN[al - bl - 1]\n a /= 10\n t = 1\n }\n\n if (a === b) {\n return t\n }\n\n return a < b ? - 1 : 1\n }\n\n const aStr = String(a)\n const bStr = String(b)\n\n if (aStr === bStr) {\n return 0\n }\n\n return aStr < bStr ? - 1 : 1\n}\n\n/**\n * Compute minimum run length for TimSort\n *\n * @param {number} n - The size of the array to sort.\n */\nfunction minRunLength (n) {\n let r = 0\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= (n & 1)\n n >>= 1\n }\n\n return n + r\n}\n\n/**\n * Counts the length of a monotonically ascending or strictly monotonically\n * descending sequence (run) starting at array[lo] in the range [lo, hi). If\n * the run is descending it is made ascending.\n *\n * @param {array} array - The array to reverse.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * @param {function} compare - Item comparison function.\n * @return {number} - The length of the run.\n */\nfunction makeAscendingRun (array, lo, hi, compare) {\n let runHi = lo + 1\n\n if (runHi === hi) {\n return 1\n }\n\n // Descending\n if (compare(array[runHi ++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi ++\n }\n\n reverseRun(array, lo, runHi)\n reverseRun(results, lo, runHi)\n // Ascending\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi ++\n }\n }\n\n return runHi - lo\n}\n\n/**\n * Reverse an array in the range [lo, hi).\n *\n * @param {array} array - The array to reverse.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n */\nfunction reverseRun (array, lo, hi) {\n hi --\n\n while (lo < hi) {\n const t = array[lo]\n array[lo ++] = array[hi]\n array[hi --] = t\n }\n}\n\n/**\n * Perform the binary sort of the array in the range [lo, hi) where start is\n * the first element possibly out of order.\n *\n * @param {array} array - The array to sort.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * @param {number} start - First element possibly out of order.\n * @param {function} compare - Item comparison function.\n */\nfunction binaryInsertionSort (array, lo, hi, start, compare) {\n if (start === lo) {\n start ++\n }\n\n for (; start < hi; start ++) {\n const pivot = array[start]\n const pivotIndex = results[start]\n\n // Ranges of the array where pivot belongs\n let left = lo\n let right = start\n\n /*\n * pivot >= array[i] for i in [lo, left)\n * pivot < array[i] for i in in [right, start)\n */\n while (left < right) {\n const mid = (left + right) >>> 1\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid\n } else {\n left = mid + 1\n }\n }\n\n /*\n * Move elements right to make room for the pivot. If there are elements\n * equal to pivot, left points to the first slot after them: this is also\n * a reason for which TimSort is stable\n */\n let n = start - left\n // Switch is just an optimization for small arrays\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2]\n results[left + 3] = results[left + 2]\n /* falls through */\n case 2:\n array[left + 2] = array[left + 1]\n results[left + 2] = results[left + 1]\n /* falls through */\n case 1:\n array[left + 1] = array[left]\n results[left + 1] = results[left]\n break\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1]\n results[left + n] = results[left + n - 1]\n n --\n }\n }\n\n array[left] = pivot\n results[left] = pivotIndex\n }\n}\n\n/**\n * Find the position at which to insert a value in a sorted range. If the range\n * contains elements equal to the value the leftmost element index is returned\n * (for stability).\n *\n * @param {number} value - Value to insert.\n * @param {array} array - The array in which to insert value.\n * @param {number} start - First element in the range.\n * @param {number} length - Length of the range.\n * @param {number} hint - The index at which to begin the search.\n * @param {function} compare - Item comparison function.\n * @return {number} - The index where to insert value.\n */\nfunction gallopLeft (value, array, start, length, hint, compare) {\n let lastOffset = 0\n let maxOffset = 0\n let offset = 1\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint\n\n while (\n offset < maxOffset\n && compare(value, array[start + hint + offset]) > 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n lastOffset += hint\n offset += hint\n\n // value <= array[start + hint]\n } else {\n maxOffset = hint + 1\n while (\n offset < maxOffset\n && compare(value, array[start + hint - offset]) <= 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n const tmp = lastOffset\n lastOffset = hint - offset\n offset = hint - tmp\n }\n\n /*\n * Now array[start+lastOffset] < value <= array[start+offset], so value\n * belongs somewhere in the range (start + lastOffset, start + offset]. Do a\n * binary search, with invariant array[start + lastOffset - 1] < value <=\n * array[start + offset].\n */\n lastOffset ++\n while (lastOffset < offset) {\n const m = lastOffset + ((offset - lastOffset) >>> 1)\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1\n } else {\n offset = m\n }\n }\n return offset\n}\n\n/**\n * Find the position at which to insert a value in a sorted range. If the range\n * contains elements equal to the value the rightmost element index is returned\n * (for stability).\n *\n * @param {number} value - Value to insert.\n * @param {array} array - The array in which to insert value.\n * @param {number} start - First element in the range.\n * @param {number} length - Length of the range.\n * @param {number} hint - The index at which to begin the search.\n * @param {function} compare - Item comparison function.\n * @return {number} - The index where to insert value.\n */\nfunction gallopRight (value, array, start, length, hint, compare) {\n let lastOffset = 0\n let maxOffset = 0\n let offset = 1\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1\n\n while (\n offset < maxOffset\n && compare(value, array[start + hint - offset]) < 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n const tmp = lastOffset\n lastOffset = hint - offset\n offset = hint - tmp\n\n // value >= array[start + hint]\n } else {\n maxOffset = length - hint\n\n while (\n offset < maxOffset\n && compare(value, array[start + hint + offset]) >= 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n lastOffset += hint\n offset += hint\n }\n\n /*\n * Now array[start+lastOffset] < value <= array[start+offset], so value\n * belongs somewhere in the range (start + lastOffset, start + offset]. Do a\n * binary search, with invariant array[start + lastOffset - 1] < value <=\n * array[start + offset].\n */\n lastOffset ++\n\n while (lastOffset < offset) {\n const m = lastOffset + ((offset - lastOffset) >>> 1)\n\n if (compare(value, array[start + m]) < 0) {\n offset = m\n } else {\n lastOffset = m + 1\n }\n }\n\n return offset\n}\n\nclass TimSort {\n constructor (array, compare) {\n this.array = array\n this.compare = compare\n\n const {length} = array\n\n this.length = length\n this.minGallop = DEFAULT_MIN_GALLOPING\n\n this.tmpStorageLength = length < 2 * DEFAULT_TMP_STORAGE_LENGTH\n ? length >>> 1\n : DEFAULT_TMP_STORAGE_LENGTH\n\n this.tmp = new Array(this.tmpStorageLength)\n this.tmpIndex = new Array(this.tmpStorageLength)\n\n this.stackLength = length < 120\n ? 5\n : length < 1542\n ? 10\n : length < 119151\n ? 19\n : 40\n\n this.runStart = new Array(this.stackLength)\n this.runLength = new Array(this.stackLength)\n\n this.stackSize = 0\n }\n\n /**\n * Push a new run on TimSort's stack.\n *\n * @param {number} runStart - Start index of the run in the original array.\n * @param {number} runLength - Length of the run;\n */\n pushRun (runStart, runLength) {\n this.runStart[this.stackSize] = runStart\n this.runLength[this.stackSize] = runLength\n this.stackSize += 1\n }\n\n /**\n * Merge runs on TimSort's stack so that the following holds for all i:\n * 1) runLength[i - 3] > runLength[i - 2] + runLength[i - 1]\n * 2) runLength[i - 2] > runLength[i - 1]\n */\n mergeRuns () {\n while (this.stackSize > 1) {\n let n = this.stackSize - 2\n\n if (\n (\n n >= 1\n && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1]\n )\n || (\n n >= 2\n && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]\n )\n ) {\n if (this.runLength[n - 1] < this.runLength[n + 1]) {\n n --\n }\n } else if (this.runLength[n] > this.runLength[n + 1]) {\n break\n }\n this.mergeAt(n)\n }\n }\n\n /**\n * Merge all runs on TimSort's stack until only one remains.\n */\n forceMergeRuns () {\n while (this.stackSize > 1) {\n let n = this.stackSize - 2\n\n if (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) {\n n --\n }\n\n this.mergeAt(n)\n }\n }\n\n /**\n * Merge the runs on the stack at positions i and i+1. Must be always be called\n * with i=stackSize-2 or i=stackSize-3 (that is, we merge on top of the stack).\n *\n * @param {number} i - Index of the run to merge in TimSort's stack.\n */\n mergeAt (i) {\n const {compare} = this\n const {array} = this\n\n let start1 = this.runStart[i]\n let length1 = this.runLength[i]\n const start2 = this.runStart[i + 1]\n let length2 = this.runLength[i + 1]\n\n this.runLength[i] = length1 + length2\n\n if (i === this.stackSize - 3) {\n this.runStart[i + 1] = this.runStart[i + 2]\n this.runLength[i + 1] = this.runLength[i + 2]\n }\n\n this.stackSize --\n\n /*\n * Find where the first element in the second run goes in run1. Previous\n * elements in run1 are already in place\n */\n const k = gallopRight(array[start2], array, start1, length1, 0, compare)\n start1 += k\n length1 -= k\n\n if (length1 === 0) {\n return\n }\n\n /*\n * Find where the last element in the first run goes in run2. Next elements\n * in run2 are already in place\n */\n length2 = gallopLeft(\n array[start1 + length1 - 1],\n array,\n start2,\n length2,\n length2 - 1,\n compare\n )\n\n if (length2 === 0) {\n return\n }\n\n /*\n * Merge remaining runs. A tmp array with length = min(length1, length2) is\n * used\n */\n if (length1 <= length2) {\n this.mergeLow(start1, length1, start2, length2)\n } else {\n this.mergeHigh(start1, length1, start2, length2)\n }\n }\n\n /**\n * Merge two adjacent runs in a stable way. The runs must be such that the\n * first element of run1 is bigger than the first element in run2 and the\n * last element of run1 is greater than all the elements in run2.\n * The method should be called when run1.length <= run2.length as it uses\n * TimSort temporary array to store run1. Use mergeHigh if run1.length >\n * run2.length.\n *\n * @param {number} start1 - First element in run1.\n * @param {number} length1 - Length of run1.\n * @param {number} start2 - First element in run2.\n * @param {number} length2 - Length of run2.\n */\n mergeLow (start1, length1, start2, length2) {\n const {compare} = this\n const {array} = this\n const {tmp} = this\n const {tmpIndex} = this\n let i = 0\n\n for (i = 0; i < length1; i ++) {\n tmp[i] = array[start1 + i]\n tmpIndex[i] = results[start1 + i]\n }\n\n let cursor1 = 0\n let cursor2 = start2\n let dest = start1\n\n array[dest] = array[cursor2]\n results[dest] = results[cursor2]\n\n dest ++\n cursor2 ++\n\n if (-- length2 === 0) {\n for (i = 0; i < length1; i ++) {\n array[dest + i] = tmp[cursor1 + i]\n results[dest + i] = tmpIndex[cursor1 + i]\n }\n return\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i ++) {\n array[dest + i] = array[cursor2 + i]\n results[dest + i] = results[cursor2 + i]\n }\n array[dest + length2] = tmp[cursor1]\n results[dest + length2] = tmpIndex[cursor1]\n return\n }\n\n let {minGallop} = this\n\n while (true) {\n let count1 = 0\n let count2 = 0\n let exit = false\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest] = array[cursor2]\n results[dest] = results[cursor2]\n dest ++\n cursor2 ++\n count2 ++\n count1 = 0\n\n if (-- length2 === 0) {\n exit = true\n break\n }\n } else {\n array[dest] = tmp[cursor1]\n results[dest] = tmpIndex[cursor1]\n dest ++\n cursor1 ++\n count1 ++\n count2 = 0\n if (-- length1 === 1) {\n exit = true\n break\n }\n }\n } while ((count1 | count2) < minGallop)\n\n if (exit) {\n break\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare)\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i ++) {\n array[dest + i] = tmp[cursor1 + i]\n results[dest + i] = tmpIndex[cursor1 + i]\n }\n\n dest += count1\n cursor1 += count1\n length1 -= count1\n if (length1 <= 1) {\n exit = true\n break\n }\n }\n\n array[dest] = array[cursor2]\n results[dest] = results[cursor2]\n\n dest ++\n cursor2 ++\n\n if (-- length2 === 0) {\n exit = true\n break\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare)\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i ++) {\n array[dest + i] = array[cursor2 + i]\n results[dest + i] = results[cursor2 + i]\n }\n\n dest += count2\n cursor2 += count2\n length2 -= count2\n\n if (length2 === 0) {\n exit = true\n break\n }\n }\n array[dest] = tmp[cursor1]\n results[dest] = tmpIndex[cursor1]\n dest ++\n cursor1 ++\n\n if (-- length1 === 1) {\n exit = true\n break\n }\n\n minGallop --\n } while (\n count1 >= DEFAULT_MIN_GALLOPING\n || count2 >= DEFAULT_MIN_GALLOPING\n )\n\n if (exit) {\n break\n }\n\n if (minGallop < 0) {\n minGallop = 0\n }\n\n minGallop += 2\n }\n\n this.minGallop = minGallop\n\n if (minGallop < 1) {\n this.minGallop = 1\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i ++) {\n array[dest + i] = array[cursor2 + i]\n results[dest + i] = results[cursor2 + i]\n }\n array[dest + length2] = tmp[cursor1]\n results[dest + length2] = tmpIndex[cursor1]\n } else if (length1 === 0) {\n throw new Error('mergeLow preconditions were not respected')\n } else {\n for (i = 0; i < length1; i ++) {\n array[dest + i] = tmp[cursor1 + i]\n results[dest + i] = tmpIndex[cursor1 + i]\n }\n }\n }\n\n /**\n * Merge two adjacent runs in a stable way. The runs must be such that the\n * first element of run1 is bigger than the first element in run2 and the\n * last element of run1 is greater than all the elements in run2.\n * The method should be called when run1.length > run2.length as it uses\n * TimSort temporary array to store run2. Use mergeLow if run1.length <=\n * run2.length.\n *\n * @param {number} start1 - First element in run1.\n * @param {number} length1 - Length of run1.\n * @param {number} start2 - First element in run2.\n * @param {number} length2 - Length of run2.\n */\n mergeHigh (start1, length1, start2, length2) {\n const {compare} = this\n const {array} = this\n const {tmp} = this\n const {tmpIndex} = this\n let i = 0\n\n for (i = 0; i < length2; i ++) {\n tmp[i] = array[start2 + i]\n tmpIndex[i] = results[start2 + i]\n }\n\n let cursor1 = start1 + length1 - 1\n let cursor2 = length2 - 1\n let dest = start2 + length2 - 1\n let customCursor = 0\n let customDest = 0\n\n array[dest] = array[cursor1]\n results[dest] = results[cursor1]\n\n dest --\n cursor1 --\n\n if (-- length1 === 0) {\n customCursor = dest - (length2 - 1)\n\n for (i = 0; i < length2; i ++) {\n array[customCursor + i] = tmp[i]\n results[customCursor + i] = tmpIndex[i]\n }\n\n return\n }\n\n if (length2 === 1) {\n dest -= length1\n cursor1 -= length1\n customDest = dest + 1\n customCursor = cursor1 + 1\n\n for (i = length1 - 1; i >= 0; i --) {\n array[customDest + i] = array[customCursor + i]\n results[customDest + i] = results[customCursor + i]\n }\n\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n return\n }\n\n let {minGallop} = this\n\n while (true) {\n let count1 = 0\n let count2 = 0\n let exit = false\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest] = array[cursor1]\n results[dest] = results[cursor1]\n dest --\n cursor1 --\n count1 ++\n count2 = 0\n if (-- length1 === 0) {\n exit = true\n break\n }\n } else {\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n dest --\n cursor2 --\n count2 ++\n count1 = 0\n if (-- length2 === 1) {\n exit = true\n break\n }\n }\n } while ((count1 | count2) < minGallop)\n\n if (exit) {\n break\n }\n\n do {\n count1 = length1 - gallopRight(\n tmp[cursor2],\n array,\n start1,\n length1,\n length1 - 1,\n compare\n )\n\n if (count1 !== 0) {\n dest -= count1\n cursor1 -= count1\n length1 -= count1\n customDest = dest + 1\n customCursor = cursor1 + 1\n\n for (i = count1 - 1; i >= 0; i --) {\n array[customDest + i] = array[customCursor + i]\n results[customDest + i] = results[customCursor + i]\n }\n\n if (length1 === 0) {\n exit = true\n break\n }\n }\n\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n dest --\n cursor2 --\n\n if (-- length2 === 1) {\n exit = true\n break\n }\n\n count2 = length2 - gallopLeft(\n array[cursor1],\n tmp,\n 0,\n length2,\n length2 - 1,\n compare\n )\n\n if (count2 !== 0) {\n dest -= count2\n cursor2 -= count2\n length2 -= count2\n customDest = dest + 1\n customCursor = cursor2 + 1\n\n for (i = 0; i < count2; i ++) {\n array[customDest + i] = tmp[customCursor + i]\n results[customDest + i] = tmpIndex[customCursor + i]\n }\n\n if (length2 <= 1) {\n exit = true\n break\n }\n }\n\n array[dest] = array[cursor1]\n results[dest] = results[cursor1]\n dest --\n cursor1 --\n\n if (-- length1 === 0) {\n exit = true\n break\n }\n\n minGallop --\n } while (\n count1 >= DEFAULT_MIN_GALLOPING\n || count2 >= DEFAULT_MIN_GALLOPING\n )\n\n if (exit) {\n break\n }\n\n if (minGallop < 0) {\n minGallop = 0\n }\n\n minGallop += 2\n }\n\n this.minGallop = minGallop\n\n if (minGallop < 1) {\n this.minGallop = 1\n }\n\n if (length2 === 1) {\n dest -= length1\n cursor1 -= length1\n customDest = dest + 1\n customCursor = cursor1 + 1\n\n for (i = length1 - 1; i >= 0; i --) {\n array[customDest + i] = array[customCursor + i]\n results[customDest + i] = results[customCursor + i]\n }\n\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n } else if (length2 === 0) {\n throw new Error('mergeHigh preconditions were not respected')\n } else {\n customCursor = dest - (length2 - 1)\n for (i = 0; i < length2; i ++) {\n array[customCursor + i] = tmp[i]\n results[customCursor + i] = tmpIndex[i]\n }\n }\n }\n}\n\n/**\n * Sort an array in the range [lo, hi) using TimSort.\n *\n * @param {array} array - The array to sort.\n * @param {function=} compare - Item comparison function. Default is\n * alphabetical\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * comparator.\n */\nfunction sort (array, compare, lo, hi) {\n if (!Array.isArray(array)) {\n throw new TypeError(\n `The \"array\" argument must be an array. Received ${array}`\n )\n }\n\n results = []\n\n const {length} = array\n\n let i = 0\n\n while (i < length) {\n results[i] = i ++\n }\n\n /*\n * Handle the case where a comparison function is not provided. We do\n * lexicographic sorting\n */\n if (!compare) {\n compare = alphabeticalCompare\n } else if (typeof compare !== 'function') {\n hi = lo\n lo = compare\n compare = alphabeticalCompare\n }\n\n if (!lo) {\n lo = 0\n }\n if (!hi) {\n hi = length\n }\n\n let remaining = hi - lo\n\n // The array is already sorted\n if (remaining < 2) {\n return results\n }\n\n let runLength = 0\n // On small arrays binary sort can be used directly\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare)\n binaryInsertionSort(array, lo, hi, lo + runLength, compare)\n return results\n }\n\n const ts = new TimSort(array, compare)\n\n const minRun = minRunLength(remaining)\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare)\n if (runLength < minRun) {\n let force = remaining\n if (force > minRun) {\n force = minRun\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare)\n runLength = force\n }\n // Push new run and merge if necessary\n ts.pushRun(lo, runLength)\n ts.mergeRuns()\n\n // Go find next run\n remaining -= runLength\n lo += runLength\n } while (remaining !== 0)\n\n // Force merging of remaining runs\n ts.forceMergeRuns()\n\n return results\n}\n\nmodule.exports = {\n sort\n}\n","'use strict';\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = (object, property) => hasOwnProp.call(object, property);\n","const hasOwnProperty = require('has-own-prop')\nconst {\n isObject,\n isArray,\n isString,\n isNumber\n} = require('core-util-is')\n\nconst PREFIX_BEFORE = 'before'\nconst PREFIX_AFTER_PROP = 'after-prop'\nconst PREFIX_AFTER_COLON = 'after-colon'\nconst PREFIX_AFTER_VALUE = 'after-value'\nconst PREFIX_AFTER = 'after'\n\nconst PREFIX_BEFORE_ALL = 'before-all'\nconst PREFIX_AFTER_ALL = 'after-all'\n\nconst BRACKET_OPEN = '['\nconst BRACKET_CLOSE = ']'\nconst CURLY_BRACKET_OPEN = '{'\nconst CURLY_BRACKET_CLOSE = '}'\nconst COMMA = ','\nconst EMPTY = ''\nconst MINUS = '-'\n\nconst SYMBOL_PREFIXES = [\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER\n]\n\nconst NON_PROP_SYMBOL_KEYS = [\n PREFIX_BEFORE,\n PREFIX_BEFORE_ALL,\n PREFIX_AFTER_ALL\n].map(Symbol.for)\n\nconst COLON = ':'\nconst UNDEFINED = undefined\n\nconst symbol = (prefix, key) => Symbol.for(prefix + COLON + key)\n\nconst define = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n})\n\nconst copy_comments_by_kind = (\n target, source, target_key, source_key, prefix, remove_source\n) => {\n const source_prop = symbol(prefix, source_key)\n if (!hasOwnProperty(source, source_prop)) {\n return\n }\n\n const target_prop = target_key === source_key\n ? source_prop\n : symbol(prefix, target_key)\n\n define(target, target_prop, source[source_prop])\n\n if (remove_source) {\n delete source[source_prop]\n }\n}\n\nconst copy_comments = (\n target, source, target_key, source_key, remove_source\n) => {\n SYMBOL_PREFIXES.forEach(prefix => {\n copy_comments_by_kind(\n target, source, target_key, source_key, prefix, remove_source\n )\n })\n}\n\nconst swap_comments = (array, from, to) => {\n if (from === to) {\n return\n }\n\n SYMBOL_PREFIXES.forEach(prefix => {\n const target_prop = symbol(prefix, to)\n if (!hasOwnProperty(array, target_prop)) {\n copy_comments_by_kind(array, array, to, from, prefix, true)\n return\n }\n\n const comments = array[target_prop]\n delete array[target_prop]\n\n copy_comments_by_kind(array, array, to, from, prefix, true)\n define(array, symbol(prefix, from), comments)\n })\n}\n\nconst assign_non_prop_comments = (target, source) => {\n NON_PROP_SYMBOL_KEYS.forEach(key => {\n const comments = source[key]\n\n if (comments) {\n define(target, key, comments)\n }\n })\n}\n\n// Assign keys and comments\nconst assign = (target, source, keys) => {\n keys.forEach(key => {\n if (!isString(key) && !isNumber(key)) {\n return\n }\n\n if (!hasOwnProperty(source, key)) {\n return\n }\n\n target[key] = source[key]\n copy_comments(target, source, key, key)\n })\n\n return target\n}\n\nmodule.exports = {\n SYMBOL_PREFIXES,\n\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER,\n\n PREFIX_BEFORE_ALL,\n PREFIX_AFTER_ALL,\n\n BRACKET_OPEN,\n BRACKET_CLOSE,\n CURLY_BRACKET_OPEN,\n CURLY_BRACKET_CLOSE,\n\n COLON,\n COMMA,\n MINUS,\n EMPTY,\n\n UNDEFINED,\n\n symbol,\n define,\n copy_comments,\n swap_comments,\n assign_non_prop_comments,\n\n assign (target, source, keys) {\n if (!isObject(target)) {\n throw new TypeError('Cannot convert undefined or null to object')\n }\n\n if (!isObject(source)) {\n return target\n }\n\n if (keys === UNDEFINED) {\n keys = Object.keys(source)\n // We assign non-property comments\n // if argument `keys` is not specified\n assign_non_prop_comments(target, source)\n } else if (!isArray(keys)) {\n throw new TypeError('keys must be array or undefined')\n } else if (keys.length === 0) {\n // Or argument `keys` is an empty array\n assign_non_prop_comments(target, source)\n }\n\n return assign(target, source, keys)\n }\n}\n","const {isArray} = require('core-util-is')\nconst {sort} = require('array-timsort')\n\nconst {\n SYMBOL_PREFIXES,\n\n UNDEFINED,\n\n symbol,\n copy_comments,\n swap_comments\n} = require('./common')\n\nconst reverse_comments = array => {\n const {length} = array\n let i = 0\n const max = length / 2\n\n for (; i < max; i ++) {\n swap_comments(array, i, length - i - 1)\n }\n}\n\nconst move_comment = (target, source, i, offset, remove) => {\n copy_comments(target, source, i + offset, i, remove)\n}\n\nconst move_comments = (\n // `Array` target array\n target,\n // `Array` source array\n source,\n // `number` start index\n start,\n // `number` number of indexes to move\n count,\n // `number` offset to move\n offset,\n // `boolean` whether should remove the comments from source\n remove\n) => {\n if (offset > 0) {\n let i = count\n // | count | offset |\n // source: -------------\n // target: -------------\n // | remove |\n // => remove === offset\n\n // From [count - 1, 0]\n while (i -- > 0) {\n move_comment(target, source, start + i, offset, remove)\n }\n return\n }\n\n let i = 0\n // | remove | count |\n // -------------\n // -------------\n // | offset |\n\n // From [0, count - 1]\n while (i < count) {\n const ii = i ++\n move_comment(target, source, start + ii, offset, remove)\n }\n}\n\nconst remove_comments = (array, key) => {\n SYMBOL_PREFIXES.forEach(prefix => {\n const prop = symbol(prefix, key)\n delete array[prop]\n })\n}\n\nconst get_mapped = (map, key) => {\n let mapped = key\n\n while (mapped in map) {\n mapped = map[mapped]\n }\n\n return mapped\n}\n\nclass CommentArray extends Array {\n // - deleteCount + items.length\n\n // We should avoid `splice(begin, deleteCount, ...items)`,\n // because `splice(0, undefined)` is not equivalent to `splice(0)`,\n // as well as:\n // - slice\n splice (...args) {\n const {length} = this\n const ret = super.splice(...args)\n\n // #16\n // If no element removed, we might still need to move comments,\n // because splice could add new items\n\n // if (!ret.length) {\n // return ret\n // }\n\n // JavaScript syntax is silly\n // eslint-disable-next-line prefer-const\n let [begin, deleteCount, ...items] = args\n\n if (begin < 0) {\n begin += length\n }\n\n if (arguments.length === 1) {\n deleteCount = length - begin\n } else {\n deleteCount = Math.min(length - begin, deleteCount)\n }\n\n const {\n length: item_length\n } = items\n\n // itemsToDelete: -\n // itemsToAdd: +\n // | dc | count |\n // =======-------------============\n // =======++++++============\n // | il |\n const offset = item_length - deleteCount\n const start = begin + deleteCount\n const count = length - start\n\n move_comments(this, this, start, count, offset, true)\n\n return ret\n }\n\n slice (...args) {\n const {length} = this\n const array = super.slice(...args)\n if (!array.length) {\n return new CommentArray()\n }\n\n let [begin, before] = args\n\n // Ref:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice\n if (before === UNDEFINED) {\n before = length\n } else if (before < 0) {\n before += length\n }\n\n if (begin < 0) {\n begin += length\n } else if (begin === UNDEFINED) {\n begin = 0\n }\n\n move_comments(array, this, begin, before - begin, - begin)\n\n return array\n }\n\n unshift (...items) {\n const {length} = this\n const ret = super.unshift(...items)\n const {\n length: items_length\n } = items\n\n if (items_length > 0) {\n move_comments(this, this, 0, length, items_length, true)\n }\n\n return ret\n }\n\n shift () {\n const ret = super.shift()\n const {length} = this\n\n remove_comments(this, 0)\n move_comments(this, this, 1, length, - 1, true)\n\n return ret\n }\n\n reverse () {\n super.reverse()\n\n reverse_comments(this)\n\n return this\n }\n\n pop () {\n const ret = super.pop()\n\n // Removes comments\n remove_comments(this, this.length)\n\n return ret\n }\n\n concat (...items) {\n let {length} = this\n const ret = super.concat(...items)\n\n if (!items.length) {\n return ret\n }\n\n move_comments(ret, this, 0, this.length, 0)\n\n items.forEach(item => {\n const prev = length\n length += isArray(item)\n ? item.length\n : 1\n\n if (!(item instanceof CommentArray)) {\n return\n }\n\n move_comments(ret, item, 0, item.length, prev)\n })\n\n return ret\n }\n\n sort (...args) {\n const result = sort(\n this,\n // Make sure there is no more than one argument\n ...args.slice(0, 1)\n )\n\n // For example,\n // if we sort ['b', 'd', 'c', 'a'],\n // then `result` will be [3, 0, 2, 1], and the array is ['a', 'b', 'c', 'd']\n\n // First, we swap index 0 (b) and index 3 (a), then the array comments are\n // ['a.comments', 'd.comments', 'c.comments', 'b.comments']\n // index 0 is finalized\n // index 3 is actually mapped to original index 0, we present as 0 -> 3\n\n // Then swap index 1 (d) and index 0 (-> 3, b)\n // 1 (index) -> 0 (new index) -> 3 (real_index)\n // ['d.comments', 'b.comments', 'c.comments', 'd.comments']\n // index 1 is finalized\n // index 3 is contains the item of original index 1\n // - we present as 1 -> 3\n // - it is ok that we don't remove mapping 0 -> 3\n\n // Then index 2 should be skipped\n\n // Then swap index 3 (d) and index 1 (-> 3, b), skipped\n\n const map = Object.create(null)\n\n result.forEach((source_index, index) => {\n if (source_index === index) {\n return\n }\n\n const real_source_index = get_mapped(map, source_index)\n\n if (real_source_index === index) {\n return\n }\n\n // The item of index `index` gets the final value\n // delete map[index]\n map[index] = real_source_index\n\n swap_comments(this, index, real_source_index)\n })\n\n return this\n }\n}\n\nmodule.exports = {\n CommentArray\n}\n","// JSON formatting\n\nconst esprima = require('esprima')\n\nconst {\n CommentArray,\n} = require('./array')\n\nconst {\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER,\n\n PREFIX_BEFORE_ALL,\n PREFIX_AFTER_ALL,\n\n BRACKET_OPEN,\n BRACKET_CLOSE,\n CURLY_BRACKET_OPEN,\n CURLY_BRACKET_CLOSE,\n\n COLON,\n COMMA,\n MINUS,\n EMPTY,\n\n UNDEFINED,\n\n define,\n assign_non_prop_comments\n} = require('./common')\n\nconst tokenize = code => esprima.tokenize(code, {\n comment: true,\n loc: true\n})\n\nconst previous_hosts = []\nlet comments_host = null\nlet unassigned_comments = null\n\nconst previous_props = []\nlet last_prop\n\nlet remove_comments = false\nlet inline = false\nlet tokens = null\nlet last = null\nlet current = null\nlet index\nlet reviver = null\n\nconst clean = () => {\n previous_props.length =\n previous_hosts.length = 0\n\n last = null\n last_prop = UNDEFINED\n}\n\nconst free = () => {\n clean()\n\n tokens.length = 0\n\n unassigned_comments =\n comments_host =\n tokens =\n last =\n current =\n reviver = null\n}\n\nconst symbolFor = prefix => Symbol.for(\n last_prop !== UNDEFINED\n ? prefix + COLON + last_prop\n : prefix\n)\n\nconst transform = (k, v) => reviver\n ? reviver(k, v)\n : v\n\nconst unexpected = () => {\n const error = new SyntaxError(`Unexpected token ${current.value.slice(0, 1)}`)\n Object.assign(error, current.loc.start)\n\n throw error\n}\n\nconst unexpected_end = () => {\n const error = new SyntaxError('Unexpected end of JSON input')\n Object.assign(error, last\n ? last.loc.end\n // Empty string\n : {\n line: 1,\n column: 0\n })\n\n throw error\n}\n\n// Move the reader to the next\nconst next = () => {\n const new_token = tokens[++ index]\n inline = current\n && new_token\n && current.loc.end.line === new_token.loc.start.line\n || false\n\n last = current\n current = new_token\n}\n\nconst type = () => {\n if (!current) {\n unexpected_end()\n }\n\n return current.type === 'Punctuator'\n ? current.value\n : current.type\n}\n\nconst is = t => type() === t\n\nconst expect = a => {\n if (!is(a)) {\n unexpected()\n }\n}\n\nconst set_comments_host = new_host => {\n previous_hosts.push(comments_host)\n comments_host = new_host\n}\n\nconst restore_comments_host = () => {\n comments_host = previous_hosts.pop()\n}\n\nconst assign_after_comments = () => {\n if (!unassigned_comments) {\n return\n }\n\n const after_comments = []\n\n for (const comment of unassigned_comments) {\n // If the comment is inline, then it is an after-comma comment\n if (comment.inline) {\n after_comments.push(comment)\n // Otherwise, all comments are before:<next-prop> comment\n } else {\n break\n }\n }\n\n const {length} = after_comments\n if (!length) {\n return\n }\n\n if (length === unassigned_comments.length) {\n // If unassigned_comments are all consumed\n unassigned_comments = null\n } else {\n unassigned_comments.splice(0, length)\n }\n\n define(comments_host, symbolFor(PREFIX_AFTER), after_comments)\n}\n\nconst assign_comments = prefix => {\n if (!unassigned_comments) {\n return\n }\n\n define(comments_host, symbolFor(prefix), unassigned_comments)\n\n unassigned_comments = null\n}\n\nconst parse_comments = prefix => {\n const comments = []\n\n while (\n current\n && (\n is('LineComment')\n || is('BlockComment')\n )\n ) {\n const comment = {\n ...current,\n inline\n }\n\n // delete comment.loc\n comments.push(comment)\n\n next()\n }\n\n if (remove_comments) {\n return\n }\n\n if (!comments.length) {\n return\n }\n\n if (prefix) {\n define(comments_host, symbolFor(prefix), comments)\n return\n }\n\n unassigned_comments = comments\n}\n\nconst set_prop = (prop, push) => {\n if (push) {\n previous_props.push(last_prop)\n }\n\n last_prop = prop\n}\n\nconst restore_prop = () => {\n last_prop = previous_props.pop()\n}\n\nconst parse_object = () => {\n const obj = {}\n set_comments_host(obj)\n set_prop(UNDEFINED, true)\n\n let started = false\n let name\n\n parse_comments()\n\n while (!is(CURLY_BRACKET_CLOSE)) {\n if (started) {\n assign_comments(PREFIX_AFTER_VALUE)\n\n // key-value pair delimiter\n expect(COMMA)\n next()\n parse_comments()\n\n assign_after_comments()\n\n // If there is a trailing comma, we might reach the end\n // ```\n // {\n // \"a\": 1,\n // }\n // ```\n if (is(CURLY_BRACKET_CLOSE)) {\n break\n }\n }\n\n started = true\n expect('String')\n name = JSON.parse(current.value)\n\n set_prop(name)\n assign_comments(PREFIX_BEFORE)\n\n next()\n parse_comments(PREFIX_AFTER_PROP)\n\n expect(COLON)\n\n next()\n parse_comments(PREFIX_AFTER_COLON)\n\n obj[name] = transform(name, walk())\n parse_comments()\n }\n\n if (started) {\n // If there are properties,\n // then the unassigned comments are after comments\n assign_comments(PREFIX_AFTER)\n }\n\n // bypass }\n next()\n last_prop = undefined\n\n if (!started) {\n // Otherwise, they are before comments\n assign_comments(PREFIX_BEFORE)\n }\n\n restore_comments_host()\n restore_prop()\n\n return obj\n}\n\nconst parse_array = () => {\n const array = new CommentArray()\n set_comments_host(array)\n set_prop(UNDEFINED, true)\n\n let started = false\n let i = 0\n\n parse_comments()\n\n while (!is(BRACKET_CLOSE)) {\n if (started) {\n assign_comments(PREFIX_AFTER_VALUE)\n expect(COMMA)\n next()\n parse_comments()\n\n assign_after_comments()\n\n if (is(BRACKET_CLOSE)) {\n break\n }\n }\n\n started = true\n\n set_prop(i)\n assign_comments(PREFIX_BEFORE)\n\n array[i] = transform(i, walk())\n i ++\n\n parse_comments()\n }\n\n if (started) {\n assign_comments(PREFIX_AFTER)\n }\n\n next()\n last_prop = undefined\n\n if (!started) {\n assign_comments(PREFIX_BEFORE)\n }\n\n restore_comments_host()\n restore_prop()\n\n return array\n}\n\nfunction walk () {\n let tt = type()\n\n if (tt === CURLY_BRACKET_OPEN) {\n next()\n return parse_object()\n }\n\n if (tt === BRACKET_OPEN) {\n next()\n return parse_array()\n }\n\n let negative = EMPTY\n\n // -1\n if (tt === MINUS) {\n next()\n tt = type()\n negative = MINUS\n }\n\n let v\n\n switch (tt) {\n case 'String':\n case 'Boolean':\n case 'Null':\n case 'Numeric':\n v = current.value\n next()\n return JSON.parse(negative + v)\n default:\n }\n}\n\nconst isObject = subject => Object(subject) === subject\n\nconst parse = (code, rev, no_comments) => {\n // Clean variables in closure\n clean()\n\n tokens = tokenize(code)\n reviver = rev\n remove_comments = no_comments\n\n if (!tokens.length) {\n unexpected_end()\n }\n\n index = - 1\n next()\n\n set_comments_host({})\n\n parse_comments(PREFIX_BEFORE_ALL)\n\n let result = walk()\n\n parse_comments(PREFIX_AFTER_ALL)\n\n if (current) {\n unexpected()\n }\n\n if (!no_comments && result !== null) {\n if (!isObject(result)) {\n // 1 -> new Number(1)\n // true -> new Boolean(1)\n // \"foo\" -> new String(\"foo\")\n\n // eslint-disable-next-line no-new-object\n result = new Object(result)\n }\n\n assign_non_prop_comments(result, comments_host)\n }\n\n restore_comments_host()\n\n // reviver\n result = transform('', result)\n\n free()\n\n return result\n}\n\nmodule.exports = {\n parse,\n tokenize\n}\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","const {\n isArray, isObject, isFunction, isNumber, isString\n} = require('core-util-is')\nconst repeat = require('repeat-string')\n\nconst {\n PREFIX_BEFORE_ALL,\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER,\n PREFIX_AFTER_ALL,\n\n BRACKET_OPEN,\n BRACKET_CLOSE,\n CURLY_BRACKET_OPEN,\n CURLY_BRACKET_CLOSE,\n COLON,\n COMMA,\n EMPTY,\n\n UNDEFINED\n} = require('./common')\n\n// eslint-disable-next-line no-control-regex, no-misleading-character-class\nconst ESCAPABLE = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g\n\n// String constants\nconst SPACE = ' '\nconst LF = '\\n'\nconst STR_NULL = 'null'\n\n// Symbol tags\nconst BEFORE = prop => `${PREFIX_BEFORE}:${prop}`\nconst AFTER_PROP = prop => `${PREFIX_AFTER_PROP}:${prop}`\nconst AFTER_COLON = prop => `${PREFIX_AFTER_COLON}:${prop}`\nconst AFTER_VALUE = prop => `${PREFIX_AFTER_VALUE}:${prop}`\nconst AFTER = prop => `${PREFIX_AFTER}:${prop}`\n\n// table of character substitutions\nconst meta = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n}\n\nconst escape = string => {\n ESCAPABLE.lastIndex = 0\n\n if (!ESCAPABLE.test(string)) {\n return string\n }\n\n return string.replace(ESCAPABLE, a => {\n const c = meta[a]\n return typeof c === 'string'\n ? c\n : a\n })\n}\n\n// Escape no control characters, no quote characters,\n// and no backslash characters,\n// then we can safely slap some quotes around it.\nconst quote = string => `\"${escape(string)}\"`\nconst comment_stringify = (value, line) => line\n ? `//${value}`\n : `/*${value}*/`\n\n// display_block `boolean` whether the\n// WHOLE block of comments is always a block group\nconst process_comments = (host, symbol_tag, deeper_gap, display_block) => {\n const comments = host[Symbol.for(symbol_tag)]\n if (!comments || !comments.length) {\n return EMPTY\n }\n\n let is_line_comment = false\n\n const str = comments.reduce((prev, {\n inline,\n type,\n value\n }) => {\n const delimiter = inline\n ? SPACE\n : LF + deeper_gap\n\n is_line_comment = type === 'LineComment'\n\n return prev + delimiter + comment_stringify(value, is_line_comment)\n }, EMPTY)\n\n return display_block\n // line comment should always end with a LF\n || is_line_comment\n ? str + LF + deeper_gap\n : str\n}\n\nlet replacer = null\nlet indent = EMPTY\n\nconst clean = () => {\n replacer = null\n indent = EMPTY\n}\n\nconst join = (one, two, gap) =>\n one\n ? two\n // Symbol.for('before') and Symbol.for('before:prop')\n // might both exist if user mannually add comments to the object\n // and make a mistake.\n // SO, we are not to only trimRight but trim for both sides\n ? one + two.trim() + LF + gap\n : one.trimRight() + LF + gap\n : two\n ? two.trimRight() + LF + gap\n : EMPTY\n\nconst join_content = (inside, value, gap) => {\n const comment = process_comments(value, PREFIX_BEFORE, gap + indent, true)\n\n return join(comment, inside, gap)\n}\n\n// | deeper_gap |\n// | gap | indent |\n// [\n// \"foo\",\n// \"bar\"\n// ]\nconst array_stringify = (value, gap) => {\n const deeper_gap = gap + indent\n\n const {length} = value\n\n // From the item to before close\n let inside = EMPTY\n let after_comma = EMPTY\n\n // Never use Array.prototype.forEach,\n // that we should iterate all items\n for (let i = 0; i < length; i ++) {\n if (i !== 0) {\n inside += COMMA\n }\n\n const before = join(\n after_comma,\n process_comments(value, BEFORE(i), deeper_gap),\n deeper_gap\n )\n\n inside += before || (LF + deeper_gap)\n\n // JSON.stringify([undefined]) => [null]\n inside += stringify(i, value, deeper_gap) || STR_NULL\n\n inside += process_comments(value, AFTER_VALUE(i), deeper_gap)\n\n after_comma = process_comments(value, AFTER(i), deeper_gap)\n }\n\n inside += join(\n after_comma,\n process_comments(value, PREFIX_AFTER, deeper_gap),\n deeper_gap\n )\n\n return BRACKET_OPEN\n + join_content(inside, value, gap)\n + BRACKET_CLOSE\n}\n\n// | deeper_gap |\n// | gap | indent |\n// {\n// \"foo\": 1,\n// \"bar\": 2\n// }\nconst object_stringify = (value, gap) => {\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null'\n }\n\n const deeper_gap = gap + indent\n\n // From the first element to before close\n let inside = EMPTY\n let after_comma = EMPTY\n let first = true\n\n const keys = isArray(replacer)\n ? replacer\n : Object.keys(value)\n\n const iteratee = key => {\n // Stringified value\n const sv = stringify(key, value, deeper_gap)\n\n // If a value is undefined, then the key-value pair should be ignored\n if (sv === UNDEFINED) {\n return\n }\n\n // The treat ment\n if (!first) {\n inside += COMMA\n }\n\n first = false\n\n const before = join(\n after_comma,\n process_comments(value, BEFORE(key), deeper_gap),\n deeper_gap\n )\n\n inside += before || (LF + deeper_gap)\n\n inside += quote(key)\n + process_comments(value, AFTER_PROP(key), deeper_gap)\n + COLON\n + process_comments(value, AFTER_COLON(key), deeper_gap)\n + SPACE\n + sv\n + process_comments(value, AFTER_VALUE(key), deeper_gap)\n\n after_comma = process_comments(value, AFTER(key), deeper_gap)\n }\n\n keys.forEach(iteratee)\n\n // if (after_comma) {\n // inside += COMMA\n // }\n\n inside += join(\n after_comma,\n process_comments(value, PREFIX_AFTER, deeper_gap),\n deeper_gap\n )\n\n return CURLY_BRACKET_OPEN\n + join_content(inside, value, gap)\n + CURLY_BRACKET_CLOSE\n}\n\n// @param {string} key\n// @param {Object} holder\n// @param {function()|Array} replacer\n// @param {string} indent\n// @param {string} gap\nfunction stringify (key, holder, gap) {\n let value = holder[key]\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (isObject(value) && isFunction(value.toJSON)) {\n value = value.toJSON(key)\n }\n\n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (isFunction(replacer)) {\n value = replacer.call(holder, key, value)\n }\n\n switch (typeof value) {\n case 'string':\n return quote(value)\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return Number.isFinite(value) ? String(value) : STR_NULL\n\n case 'boolean':\n case 'null':\n\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value)\n\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n case 'object':\n return isArray(value)\n ? array_stringify(value, gap)\n : object_stringify(value, gap)\n\n // undefined\n default:\n // JSON.stringify(undefined) === undefined\n // JSON.stringify('foo', () => undefined) === undefined\n }\n}\n\nconst get_indent = space => isString(space)\n // If the space parameter is a string, it will be used as the indent string.\n ? space\n : isNumber(space)\n ? repeat(SPACE, space)\n : EMPTY\n\nconst {toString} = Object.prototype\nconst PRIMITIVE_OBJECT_TYPES = [\n '[object Number]',\n '[object String]',\n '[object Boolean]'\n]\n\nconst is_primitive_object = subject => {\n if (typeof subject !== 'object') {\n return false\n }\n\n const str = toString.call(subject)\n return PRIMITIVE_OBJECT_TYPES.includes(str)\n}\n\n// @param {function()|Array} replacer\n// @param {string|number} space\nmodule.exports = (value, replacer_, space) => {\n // The stringify method takes a value and an optional replacer, and an optional\n // space parameter, and returns a JSON text. The replacer can be a function\n // that can replace values, or an array of strings that will select the keys.\n // A default replacer method can be provided. Use of the space parameter can\n // produce text that is more easily readable.\n\n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n const indent_ = get_indent(space)\n\n if (!indent_) {\n return JSON.stringify(value, replacer_)\n }\n\n // vanilla `JSON.parse` allow invalid replacer\n if (!isFunction(replacer_) && !isArray(replacer_)) {\n replacer_ = null\n }\n\n replacer = replacer_\n indent = indent_\n\n const str = is_primitive_object(value)\n ? JSON.stringify(value)\n : stringify('', {'': value}, EMPTY)\n\n clean()\n\n return isObject(value)\n ? process_comments(value, PREFIX_BEFORE_ALL, EMPTY).trimLeft()\n + str\n + process_comments(value, PREFIX_AFTER_ALL, EMPTY).trimRight()\n : str\n}\n","const {parse, tokenize} = require('./parse')\nconst stringify = require('./stringify')\nconst {CommentArray} = require('./array')\nconst {assign} = require('./common')\n\nmodule.exports = {\n parse,\n stringify,\n tokenize,\n\n CommentArray,\n assign\n}\n","import type { TsConfigJson } from 'type-fest';\n\nexport type GraphQLSPConfig = {\n name: string;\n schema: string;\n tadaOutputLocation?: string;\n};\n\nexport function hasGraphQLSP(tsconfig: TsConfigJson): boolean {\n if (!tsconfig.compilerOptions) {\n console.warn('Missing compilerOptions object in tsconfig.json.');\n return false;\n }\n\n if (!tsconfig.compilerOptions.plugins) {\n console.warn('Missing plugins array in tsconfig.json.');\n return false;\n }\n\n const foundPlugin = tsconfig.compilerOptions.plugins.find(\n (plugin) => plugin.name === '@0no-co/graphqlsp'\n ) as GraphQLSPConfig | undefined;\n if (!foundPlugin) {\n console.warn('Missing @0no-co/graphqlsp plugin in tsconfig.json.');\n return false;\n }\n\n if (!foundPlugin.schema) {\n console.warn('Missing schema property in @0no-co/graphqlsp plugin in tsconfig.json.');\n return false;\n }\n\n if (!foundPlugin.tadaOutputLocation) {\n console.warn(\n 'Missing tadaOutputLocation property in @0no-co/graphqlsp plugin in tsconfig.json.'\n );\n return false;\n }\n\n return true;\n}\n","import { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport type { GraphQLSchema, IntrospectionQuery } from 'graphql';\nimport {\n buildClientSchema,\n buildSchema,\n getIntrospectionQuery,\n introspectionFromSchema,\n} from 'graphql';\nimport { minifyIntrospectionQuery } from '@urql/introspection';\n\nexport const tadaGqlContents = `import { initGraphQLTada } from 'gql.tada';\nimport type { introspection } from './introspection';\n\nexport const graphql = initGraphQLTada<{\n introspection: typeof introspection;\n}>();\n\nexport type { FragmentOf, ResultOf, VariablesOf } from 'gql.tada';\nexport type { FragmentOf as FragmentType } from 'gql.tada';\nexport { readFragment } from 'gql.tada';\nexport { readFragment as useFragment } from 'gql.tada';\n`;\n\n/**\n * This function mimics the behavior of the LSP, this so we can ensure\n * that gql.tada will work in any environment. The JetBrains IDE's do not\n * implement the tsserver plugin protocol hence in those and editors where\n * we are not able to leverage the workspace TS version we will rely on\n * this function.\n */\nexport async function ensureTadaIntrospection(\n schemaLocation: SchemaOrigin | string,\n outputLocation: string\n) {\n const base = process.cwd();\n\n const writeTada = async () => {\n try {\n const schema = await loadSchema(base, schemaLocation);\n if (!schema) {\n console.error('Something went wrong while trying to load the schema.');\n return;\n }\n const introspection = introspectionFromSchema(schema, {\n descriptions: false,\n });\n const minified = minifyIntrospectionQuery(introspection, {\n includeDirectives: false,\n includeEnums: true,\n includeInputs: true,\n includeScalars: true,\n });\n\n const json = JSON.stringify(minified, null, 2);\n const resolvedOutputLocation = path.resolve(base, outputLocation);\n let contents;\n\n if (/\\.d\\.ts$/.test(outputLocation)) {\n contents = [\n preambleComments,\n dtsAnnotationComment,\n `export type introspection = ${json};\\n`,\n \"import * as gqlTada from 'gql.tada';\\n\",\n \"declare module 'gql.tada' {\",\n ' interface setupSchema {',\n ' introspection: introspection',\n ' }',\n '}',\n ].join('\\n');\n } else if (path.extname(outputLocation) === '.ts') {\n contents = [\n preambleComments,\n tsAnnotationComment,\n `const introspection = ${json} as const;\\n`,\n 'export { introspection };',\n ].join('\\n');\n } else {\n console.warn('Invalid file extension for tadaOutputLocation.');\n return;\n }\n\n await fs.writeFile(resolvedOutputLocation, contents);\n } catch (e) {\n console.error('Something went wrong while writing the introspection file', e);\n }\n };\n\n await writeTada();\n}\n\ntype SchemaOrigin = {\n url: string;\n headers: Record<string, unknown>;\n};\n\nexport const loadSchema = async (\n root: string,\n schema: SchemaOrigin | string\n): Promise<GraphQLSchema | undefined> => {\n let url: URL | undefined;\n let config: { headers: Record<string, unknown> } | undefined;\n\n try {\n if (typeof schema === 'object') {\n url = new URL(schema.url);\n config = { headers: schema.headers };\n } else {\n url = new URL(schema);\n }\n } catch (e) {}\n\n if (url) {\n const response = await fetch(url!.toString(), {\n method: 'POST',\n headers: config\n ? {\n ...(config.headers || {}),\n 'Content-Type': 'application/json',\n }\n : {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query: getIntrospectionQuery({\n descriptions: true,\n schemaDescription: false,\n inputValueDeprecation: false,\n directiveIsRepeatable: false,\n specifiedByUrl: false,\n }),\n }),\n });\n\n if (response.ok) {\n const result = await response.json();\n if (result.data) {\n const introspection = (result as { data: IntrospectionQuery }).data;\n try {\n return buildClientSchema(introspection);\n } catch (e: any) {\n console.error(`Got schema error for ${e.message}`);\n }\n } else {\n console.error(`Got invalid response ${JSON.stringify(result)}`);\n }\n } else {\n console.error(`Got invalid response ${await response.text()}`);\n }\n } else if (typeof schema === 'string') {\n const isJson = path.extname(schema) === '.json';\n const resolvedPath = path.resolve(root, schema);\n\n const contents = await fs.readFile(resolvedPath, 'utf-8');\n\n const schemaOrIntrospection = isJson\n ? (JSON.parse(contents) as IntrospectionQuery)\n : buildSchema(contents);\n\n return '__schema' in schemaOrIntrospection\n ? buildClientSchema(schemaOrIntrospection)\n : schemaOrIntrospection;\n }\n};\n\nconst preambleComments = ['/* eslint-disable */', '/* prettier-ignore */'].join('\\n') + '\\n';\n\nconst dtsAnnotationComment = [\n '/** An IntrospectionQuery representation of your schema.',\n ' *',\n ' * @remarks',\n ' * This is an introspection of your schema saved as a file by GraphQLSP.',\n ' * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents.',\n ' * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to',\n ' * instead save to a .ts instead of a .d.ts file.',\n ' */',\n].join('\\n');\n\nconst tsAnnotationComment = [\n '/** An IntrospectionQuery representation of your schema.',\n ' *',\n ' * @remarks',\n ' * This is an introspection of your schema saved as a file by GraphQLSP.',\n ' * You may import it to create a `graphql()` tag function with `gql.tada`',\n ' * by importing it and passing it to `initGraphQLTada<>()`.',\n ' *',\n ' * @example',\n ' * ```',\n \" * import { initGraphQLTada } from 'gql.tada';\",\n \" * import type { introspection } from './introspection';\",\n ' *',\n ' * export const graphql = initGraphQLTada<{',\n ' * introspection: typeof introspection;',\n ' * scalars: {',\n ' * DateTime: string;',\n ' * Json: any;',\n ' * };',\n ' * }>();',\n ' * ```',\n ' */',\n].join('\\n');\n","import sade from 'sade';\nimport { promises as fs, existsSync } from 'node:fs';\nimport path, { resolve } from 'node:path';\n// We use comment-json to parse the tsconfig as the default ones\n// have comment annotations in JSON.\nimport { parse } from 'comment-json';\nimport type { IntrospectionQuery } from 'graphql';\nimport { buildClientSchema, getIntrospectionQuery, printSchema } from 'graphql';\nimport type { TsConfigJson } from 'type-fest';\n\nimport type { GraphQLSPConfig } from './lsp';\nimport { hasGraphQLSP } from './lsp';\nimport { ensureTadaIntrospection } from './tada';\n\nconst prog = sade('gql.tada');\n\nprog.version(process.env.npm_package_version || '0.0.0');\n\nasync function main() {\n prog\n .command('generate-schema <target>')\n .describe(\n 'Generate a GraphQL schema from a URL or introspection file, this will be generated from the parameters to this command.'\n )\n .option('--header', 'Pass a header to be used when fetching the introspection.')\n .option(\n '--output',\n 'A specialised location to output the schema to, by default we\\'ll output the schema to the \"schema\" defined in your \"tsconfig\".'\n )\n .example(\"generate-schema https://example.com --header 'Authorization: Bearer token'\")\n .example('generate-schema ./introspection.json')\n .action(async (target, options) => {\n const cwd = process.cwd();\n let url: URL | undefined;\n\n try {\n url = new URL(target);\n } catch (e) {}\n\n let introspection: IntrospectionQuery;\n if (url) {\n const headers = (Array.isArray(options.header) ? options.header : []).reduce(\n (acc, item) => {\n const parts = item.split(':');\n return {\n ...acc,\n [parts[0]]: parts[1],\n };\n },\n {}\n );\n const response = await fetch(url!.toString(), {\n method: 'POST',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query: getIntrospectionQuery({\n descriptions: true,\n schemaDescription: false,\n inputValueDeprecation: false,\n directiveIsRepeatable: false,\n specifiedByUrl: false,\n }),\n }),\n });\n\n if (response.ok) {\n const text = await response.text();\n\n try {\n const result = JSON.parse(text);\n if (result.data) {\n introspection = (result as { data: IntrospectionQuery }).data;\n } else {\n console.error(`Got invalid response ${JSON.stringify(result)}`);\n return;\n }\n } catch (e) {\n console.error(`Got invalid JSON ${text}`);\n return;\n }\n } else {\n console.error(`Got invalid response ${await response.text()}`);\n return;\n }\n } else {\n const path = resolve(cwd, target);\n const fileContents = await fs.readFile(path, 'utf-8');\n\n try {\n introspection = JSON.parse(fileContents);\n } catch (e) {\n console.error(`Got invalid JSON ${fileContents}`);\n return;\n }\n }\n\n const schema = buildClientSchema(introspection!);\n\n let destination = options.output;\n if (!destination) {\n const cwd = process.cwd();\n const tsconfigpath = path.resolve(cwd, 'tsconfig.json');\n const hasTsConfig = existsSync(tsconfigpath);\n if (!hasTsConfig) {\n console.error(`Could not find a tsconfig in the working-directory.`);\n return;\n }\n\n const tsconfigContents = await fs.readFile(tsconfigpath, 'utf-8');\n let tsConfig: TsConfigJson;\n try {\n tsConfig = parse(tsconfigContents) as TsConfigJson;\n } catch (err) {\n console.error(err);\n return;\n }\n\n if (!hasGraphQLSP(tsConfig)) {\n console.error(`Could not find a \"@0no-co/graphqlsp\" plugin in your tsconfig.`);\n return;\n }\n\n const foundPlugin = tsConfig.compilerOptions!.plugins!.find(\n (plugin) => plugin.name === '@0no-co/graphqlsp'\n ) as GraphQLSPConfig;\n\n destination = foundPlugin.schema;\n\n if (!foundPlugin.schema.endsWith('.graphql')) {\n console.error(`Found \"${foundPlugin.schema}\" which is not a path to a GraphQL Schema.`);\n return;\n }\n }\n\n await fs.writeFile(resolve(cwd, destination), printSchema(schema), 'utf-8');\n })\n .command('generate-output')\n .describe(\n 'Generate the gql.tada types file, this will look for your \"tsconfig.json\" and use the \"@0no-co/graphqlsp\" configuration to generate the file.'\n )\n .action(async () => {\n const cwd = process.cwd();\n const tsconfigpath = path.resolve(cwd, 'tsconfig.json');\n const hasTsConfig = existsSync(tsconfigpath);\n if (!hasTsConfig) {\n console.error('Missing tsconfig.json');\n return;\n }\n\n const tsconfigContents = await fs.readFile(tsconfigpath, 'utf-8');\n let tsConfig: TsConfigJson;\n try {\n tsConfig = parse(tsconfigContents) as TsConfigJson;\n } catch (err) {\n console.error(err);\n return;\n }\n\n if (!hasGraphQLSP(tsConfig)) {\n return;\n }\n\n const foundPlugin = tsConfig.compilerOptions!.plugins!.find(\n (plugin) => plugin.name === '@0no-co/graphqlsp'\n ) as GraphQLSPConfig;\n\n await ensureTadaIntrospection(foundPlugin.schema, foundPlugin.tadaOutputLocation!);\n });\n prog.parse(process.argv);\n}\n\nexport default main;\n"],"names":["toArr","any","Array","isArray","toVal","out","key","val","opts","x","old","nxt","string","indexOf","String","boolean","_","push","concat","e","args","k","arr","arg","name","i","j","idx","len","length","alibi","alias","strict","unknown","defaults","default","splice","keys","Object","slice","charCodeAt","substring","repeat","shift","t","s","r","map","n","l","a","console","error","process","exit","o","constructor","split","this","bin","ver","tree","command","join","single","curr","Error","forEach","test","charAt","includes","unshift","usage","options","examples","describe","replace","option","filter","Boolean","action","handler","example","version","parse","h","u","f","v","c","p","d","help","_version","g","assign","m","b","$","lazy","apply","log","webpackUniversalModuleDefinition","root","factory","module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","defineProperty","value","comment_handler_1","jsx_parser_1","parser_1","tokenizer_1","code","delegate","commentHandler","proxyDelegate","node","metadata","visit","parserDelegate","collectComment","attachComment","comment","CommentHandler","attach","isModule","sourceType","parser","jsx","JSXParser","Parser","ast","parseModule","parseScript","comments","config","tokens","tolerant","errors","errorHandler","parsingOptions","tokenize","tokenizer","Tokenizer","token","getNextToken","tolerate","syntax_1","Syntax","stack","leading","trailing","prototype","insertInnerComments","type","BlockStatement","body","innerComments","entry","end","offset","start","findTrailingComments","trailingComments","entry_1","firstComment","range","findLeadingComments","leadingComments","target","pop","visitNode","Program","visitComment","loc","AssignmentExpression","AssignmentPattern","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AwaitExpression","BinaryExpression","BreakStatement","CallExpression","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ConditionalExpression","ContinueStatement","DoWhileStatement","DebuggerStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForStatement","ForOfStatement","ForInStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","Literal","LabeledStatement","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","Property","RestElement","ReturnStatement","SequenceExpression","SpreadElement","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","__extends","extendStatics","setPrototypeOf","__proto__","hasOwnProperty","__","create","character_1","JSXNode","jsx_syntax_1","Node","token_1","xhtml_entities_1","TokenName","getQualifiedElementName","elementName","qualifiedName","JSXSyntax","JSXIdentifier","JSXNamespacedName","ns","namespace","JSXMemberExpression","expr","object","property","_super","parsePrimaryExpression","match","parseJSXRoot","startJSX","scanner","index","startMarker","lineNumber","line","lineStart","column","finishJSX","nextToken","reenterJSX","expectJSX","createJSXNode","collectComments","createJSXChildNode","scanXHTMLEntity","quote","result","valid","terminated","numeric","hex","eof","ch","source","Character","isDecimalDigit","isHexDigit","str","substr","fromCharCode","parseInt","XHTMLEntities","lexJSX","cp","n1","n2","isIdentifierStart","isIdentifierPart","lex","nextJSXToken","lastMarker","convertToken","nextJSXText","text","isLineTerminator","peekJSXToken","state","saveState","scanComments","next","restoreState","throwUnexpectedToken","matchJSX","parseJSXIdentifier","finalize","parseJSXElementName","name_1","parseJSXAttributeName","attributeName","identifier","name_2","parseJSXStringLiteralAttribute","raw","getTokenRaw","parseJSXExpressionAttribute","tolerateError","expression","parseAssignmentExpression","JSXExpressionContainer","parseJSXAttributeValue","parseJSXElement","parseJSXNameValueAttribute","JSXAttribute","parseJSXSpreadAttribute","argument","JSXSpreadAttribute","parseJSXAttributes","attributes","attribute","parseJSXOpeningElement","selfClosing","JSXOpeningElement","parseJSXBoundaryElement","name_3","JSXClosingElement","parseJSXEmptyExpression","JSXEmptyExpression","parseJSXExpressionContainer","parseJSXChildren","children","child","JSXText","container","parseComplexJSXElement","el","element","opening","JSXElement","closing","open_1","isStartOfExpression","Regex","NonAsciiIdentifierStart","NonAsciiIdentifierPart","fromCodePoint","isWhiteSpace","isOctalDigit","openingElement","closingElement","elements","params","generator","async","operator","left","right","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","label","callee","arguments","param","superClass","ComputedMemberExpression","computed","consequent","alternate","Directive","directive","declaration","specifiers","local","exported","each","init","update","imported","meta","kind","isStatic","static","Module","properties","method","shorthand","RegexLiteral","pattern","flags","regex","Script","expressions","StaticMemberExpression","discriminant","cases","tag","quasi","tail","quasis","block","finalizer","prefix","declarations","assert_1","error_handler_1","messages_1","scanner_1","ArrowParameterPlaceHolder","ErrorHandler","Scanner","trackComment","operatorPrecedence","lookahead","hasLineTerminator","context","await","allowIn","allowStrictDirective","allowYield","firstCoverInitializedNameError","isAssignmentTarget","isBindingElement","inFunctionBody","inIteration","inSwitch","labelSet","throwError","messageFormat","msg","whole","assert","createError","unexpectedTokenError","message","Messages","UnexpectedToken","UnexpectedEOS","UnexpectedIdentifier","UnexpectedNumber","UnexpectedString","UnexpectedTemplate","isFutureReservedWord","UnexpectedReserved","isStrictModeReservedWord","StrictReservedWord","tolerateUnexpectedToken","multiLine","nextRegexToken","scanRegExp","createNode","startNode","lastLineStart","marker","expect","expectCommaSeparator","expectKeyword","keyword","matchKeyword","matchContextualKeyword","matchAssign","op","isolateCoverGrammar","parseFunction","previousIsBindingElement","previousIsAssignmentTarget","previousFirstCoverInitializedNameError","inheritCoverGrammar","consumeSemicolon","matchAsyncFunction","parseFunctionExpression","octal","StrictOctalLiteral","parseTemplateLiteral","parseGroupExpression","parseArrayInitializer","parseObjectInitializer","parseIdentifierName","parseClassExpression","parseSpreadElement","parsePropertyMethod","previousStrict","previousAllowStrictDirective","simple","parseFunctionSourceElements","firstRestricted","stricted","parsePropertyMethodFunction","previousAllowYield","parseFormalParameters","parsePropertyMethodAsyncFunction","previousAwait","parseObjectPropertyKey","isPropertyKey","parseObjectProperty","hasProto","isAsync","lookaheadPropertyKey","qualifiedPropertyName","parseGetterMethod","parseSetterMethod","parseGeneratorMethod","DuplicateProtoProperty","parseTemplateHead","head","cooked","parseTemplateElement","parseExpression","reinterpretExpressionAsPattern","startToken","parseRestElement","arrow","parseArguments","isIdentifierName","parseNewExpression","parseLeftHandSideExpression","parseAsyncArgument","parseAsyncArguments","parseLeftHandSideExpressionAllowCall","maybeAsync","previousAllowIn","asyncArrow","parseSuper","parseUpdateExpression","parseUnaryExpression","isRestrictedWord","StrictLHSPrefix","InvalidLHSInAssignment","StrictLHSPostfix","parseAwaitExpression","StrictDelete","parseExponentiationExpression","binaryPrecedence","precedence","parseBinaryExpression","prec","markers","precedences","parseConditionalExpression","checkPatternParam","validateParam","reinterpretAsCoverFormalsList","paramSet","StrictParamDupe","parseYieldExpression","list","StrictLHSAssignment","parseStatementListItem","statement","IllegalExportDeclaration","parseExportDeclaration","IllegalImportDeclaration","parseImportDeclaration","parseLexicalDeclaration","inFor","parseFunctionDeclaration","parseClassDeclaration","isLexicalDeclaration","parseStatement","parseBlock","parseLexicalBinding","parsePattern","StrictVarName","DeclarationMissingInitializer","parseBindingList","parseBindingRestElement","parseArrayPattern","parsePatternWithDefault","parsePropertyPattern","keyToken","parseVariableIdentifier","parseObjectPattern","LetInLexicalBinding","parseVariableDeclaration","parseVariableDeclarationList","opt","parseVariableStatement","parseEmptyStatement","parseExpressionStatement","parseIfClause","StrictFunction","parseIfStatement","parseDoWhileStatement","previousInIteration","parseWhileStatement","parseForStatement","forIn","decl","ForInOfLoopInitializer","initStartToken","InvalidLHSInForIn","InvalidLHSInForLoop","initSeq","parseContinueStatement","UnknownLabel","IllegalContinue","parseBreakStatement","IllegalBreak","parseReturnStatement","IllegalReturn","parseWithStatement","StrictModeWith","parseSwitchCase","parseSwitchStatement","previousInSwitch","defaultFound","clause","MultipleDefaultsInSwitch","parseLabelledStatement","Redeclaration","GeneratorInLegacyContext","parseThrowStatement","NewlineAfterThrow","parseCatchClause","paramMap","DuplicateBinding","StrictCatchVariable","parseFinallyClause","parseTryStatement","NoCatchOrFinally","parseDebuggerStatement","parseDirectivePrologues","previousLabelSet","previousInFunctionBody","StrictParamName","enumerable","writable","configurable","DefaultRestParameter","ParameterAfterRestParameter","parseFormalParameter","identifierIsOptional","isGenerator","StrictFunctionName","previousAllowAwait","formalParameters","parseDirective","IllegalLanguageModeDirective","BadGetterArity","BadSetterArity","BadSetterRestParameter","parseClassElement","hasConstructor","punctuator","ConstructorIsAsync","StaticPrototype","ConstructorSpecialMethod","DuplicateConstructor","parseClassElementList","parseClassBody","elementList","classBody","parseModuleSpecifier","InvalidModuleSpecifier","parseImportSpecifier","parseNamedImports","parseImportDefaultSpecifier","parseImportNamespaceSpecifier","NoAsAfterImportNamespace","src","MissingFromClause","parseExportSpecifier","exportDeclaration","isExportFromIdentifier","condition","recordError","constructError","base","col","description","InvalidEscapedReservedWord","InvalidHexEscapeSequence","InvalidRegExp","TemplateOctalLiteral","UnexpectedTokenIllegal","UnterminatedRegExp","hexValue","toLowerCase","octalValue","curlyStack","skipSingleLineComment","skipMultiLineComment","isKeyword","codePointAt","second","scanHexEscape","scanUnicodeCodePointEscape","getIdentifier","getComplexIdentifier","octalToDecimal","scanIdentifier","restore","scanPunctuator","scanHexLiteral","num","scanBinaryLiteral","scanOctalLiteral","isImplicitOctalLiteral","scanNumericLiteral","parseFloat","scanStringLiteral","unescaped_1","unescaped","octToDec","scanTemplate","rawOffset","unescaped_2","testRegExp","tmp","self","$0","$1","$2","codePoint","RegExp","exception","scanRegExpBody","classMarker","scanRegExpFlags","char","quot","amp","apos","gt","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","empty","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","prop","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","lang","rang","Reader","values","curly","paren","beforeFunctionExpression","isRegexStart","previous","check","trackRange","trackLoc","buffer","reader","base64Js","byteLength","b64","lens","getLens","placeHoldersLen","toByteArray","validLen","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","Uint8Array","output","ieee754","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","Math","pow","write","rt","abs","isNaN","floor","LN2","base64","require$$0","require$$1","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","kMaxLength","TYPED_ARRAY_SUPPORT","typedArraySupport","proto","foo","get","isBuffer","byteOffset","createBuffer","RangeError","buf","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","encoding","isEncoding","actual","ArrayBuffer","isView","fromArrayView","arrayView","isInstance","fromArrayBuffer","fromArrayLike","SharedArrayBuffer","valueOf","fromObject","obj","checked","undefined","numberIsNaN","data","toPrimitive","assertSize","size","fill","allocUnsafeSlow","array","toString","_isBuffer","compare","y","min","pos","set","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","swap16","swap32","swap64","toLocaleString","equals","inspect","max","trim","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","byteArray","base64Write","ucs2Write","utf16leToBytes","units","hi","isFinite","toJSON","_arr","res","firstByte","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","ret","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","lo","BigInt","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","E","sym","getMessage","Base","NodeError","super","input","received","isInteger","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","util","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","isError","isFunction","isPrimitive","DEFAULT_MIN_MERGE","POWERS_OF_TEN","results","log10","alphabeticalCompare","al","bl","aStr","bStr","makeAscendingRun","runHi","reverseRun","binaryInsertionSort","pivot","pivotIndex","mid","gallopLeft","hint","lastOffset","maxOffset","gallopRight","TimSort","minGallop","tmpStorageLength","tmpIndex","stackLength","runStart","runLength","stackSize","pushRun","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","dest","count1","count2","customCursor","customDest","sort","ts","minRun","minRunLength","force","hasOwnProp","hasOwnProp_1","PREFIX_BEFORE","PREFIX_AFTER_PROP","PREFIX_AFTER_COLON","PREFIX_AFTER_VALUE","PREFIX_AFTER","PREFIX_BEFORE_ALL","PREFIX_AFTER_ALL","SYMBOL_PREFIXES","NON_PROP_SYMBOL_KEYS","for","UNDEFINED","symbol","define","copy_comments_by_kind","target_key","source_key","remove_source","source_prop","target_prop","copy_comments","assign_non_prop_comments","common","swap_comments","to","require$$2","move_comment","remove","move_comments","count","ii","remove_comments","CommentArray","begin","deleteCount","items","item_length","before","items_length","reverse","reverse_comments","item","prev","source_index","real_source_index","get_mapped","mapped","esprima","BRACKET_OPEN","BRACKET_CLOSE","CURLY_BRACKET_OPEN","CURLY_BRACKET_CLOSE","COLON","COMMA","MINUS","EMPTY","previous_hosts","comments_host","unassigned_comments","previous_props","last_prop","inline","current","reviver","clean","symbolFor","transform","unexpected","SyntaxError","unexpected_end","new_token","is","set_comments_host","new_host","restore_comments_host","assign_after_comments","after_comments","assign_comments","parse_comments","set_prop","restore_prop","parse_array","started","walk","tt","parse_object","JSON","negative","parse_1","rev","no_comments","subject","free","cache","repeatString","ESCAPABLE","LF","STR_NULL","BEFORE","AFTER_VALUE","AFTER","lastIndex","escape","process_comments","host","symbol_tag","deeper_gap","display_block","is_line_comment","reduce","comment_stringify","replacer","indent","one","two","gap","trimRight","join_content","inside","object_stringify","after_comma","sv","stringify","AFTER_COLON","holder","array_stringify","PRIMITIVE_OBJECT_TYPES","stringify_1","replacer_","space","indent_","get_indent","is_primitive_object","trimLeft","require$$3","hasGraphQLSP","tsconfig","compilerOptions","warn","plugins","foundPlugin","find","plugin","schema","tadaOutputLocation","loadSchema","url","URL","headers","response","fetch","query","getIntrospectionQuery","descriptions","schemaDescription","inputValueDeprecation","directiveIsRepeatable","specifiedByUrl","ok","json","introspection","buildClientSchema","isJson","path","extname","resolvedPath","resolve","contents","fs","readFile","schemaOrIntrospection","buildSchema","preambleComments","dtsAnnotationComment","tsAnnotationComment","prog","sade","env","npm_package_version","main","cwd","header","acc","fileContents","destination","tsconfigpath","existsSync","tsconfigContents","tsConfig","err","endsWith","writeFile","printSchema","ensureTadaIntrospection","schemaLocation","outputLocation","introspectionFromSchema","minified","minifyIntrospectionQuery","includeDirectives","includeEnums","includeInputs","includeScalars","resolvedOutputLocation","writeTada","argv"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}
|
|
1
|
+
{"version":3,"file":"gql-tada-cli.mjs","sources":["../../../node_modules/.pnpm/mri@1.2.0/node_modules/mri/lib/index.mjs","../../../node_modules/.pnpm/sade@1.8.1/node_modules/sade/lib/index.mjs","../../../node_modules/.pnpm/esprima@4.0.1/node_modules/esprima/dist/esprima.js","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","../../../node_modules/.pnpm/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js","../../../node_modules/.pnpm/array-timsort@1.0.3/node_modules/array-timsort/src/index.js","../../../node_modules/.pnpm/has-own-prop@2.0.0/node_modules/has-own-prop/index.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/common.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/array.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/parse.js","../../../node_modules/.pnpm/repeat-string@1.6.1/node_modules/repeat-string/index.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/stringify.js","../../../node_modules/.pnpm/comment-json@4.2.3/node_modules/comment-json/src/index.js","../src/lsp.ts","../src/tada.ts","../src/index.ts"],"sourcesContent":["function toArr(any) {\n\treturn any == null ? [] : Array.isArray(any) ? any : [any];\n}\n\nfunction toVal(out, key, val, opts) {\n\tvar x, old=out[key], nxt=(\n\t\t!!~opts.string.indexOf(key) ? (val == null || val === true ? '' : String(val))\n\t\t: typeof val === 'boolean' ? val\n\t\t: !!~opts.boolean.indexOf(key) ? (val === 'false' ? false : val === 'true' || (out._.push((x = +val,x * 0 === 0) ? x : val),!!val))\n\t\t: (x = +val,x * 0 === 0) ? x : val\n\t);\n\tout[key] = old == null ? nxt : (Array.isArray(old) ? old.concat(nxt) : [old, nxt]);\n}\n\nexport default function (args, opts) {\n\targs = args || [];\n\topts = opts || {};\n\n\tvar k, arr, arg, name, val, out={ _:[] };\n\tvar i=0, j=0, idx=0, len=args.length;\n\n\tconst alibi = opts.alias !== void 0;\n\tconst strict = opts.unknown !== void 0;\n\tconst defaults = opts.default !== void 0;\n\n\topts.alias = opts.alias || {};\n\topts.string = toArr(opts.string);\n\topts.boolean = toArr(opts.boolean);\n\n\tif (alibi) {\n\t\tfor (k in opts.alias) {\n\t\t\tarr = opts.alias[k] = toArr(opts.alias[k]);\n\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t(opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i=opts.boolean.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.boolean[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.boolean.push(arr[j]);\n\t}\n\n\tfor (i=opts.string.length; i-- > 0;) {\n\t\tarr = opts.alias[opts.string[i]] || [];\n\t\tfor (j=arr.length; j-- > 0;) opts.string.push(arr[j]);\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tname = typeof opts.default[k];\n\t\t\tarr = opts.alias[k] = opts.alias[k] || [];\n\t\t\tif (opts[name] !== void 0) {\n\t\t\t\topts[name].push(k);\n\t\t\t\tfor (i=0; i < arr.length; i++) {\n\t\t\t\t\topts[name].push(arr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst keys = strict ? Object.keys(opts.alias) : [];\n\n\tfor (i=0; i < len; i++) {\n\t\targ = args[i];\n\n\t\tif (arg === '--') {\n\t\t\tout._ = out._.concat(args.slice(++i));\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (j=0; j < arg.length; j++) {\n\t\t\tif (arg.charCodeAt(j) !== 45) break; // \"-\"\n\t\t}\n\n\t\tif (j === 0) {\n\t\t\tout._.push(arg);\n\t\t} else if (arg.substring(j, j + 3) === 'no-') {\n\t\t\tname = arg.substring(j + 3);\n\t\t\tif (strict && !~keys.indexOf(name)) {\n\t\t\t\treturn opts.unknown(arg);\n\t\t\t}\n\t\t\tout[name] = false;\n\t\t} else {\n\t\t\tfor (idx=j+1; idx < arg.length; idx++) {\n\t\t\t\tif (arg.charCodeAt(idx) === 61) break; // \"=\"\n\t\t\t}\n\n\t\t\tname = arg.substring(j, idx);\n\t\t\tval = arg.substring(++idx) || (i+1 === len || (''+args[i+1]).charCodeAt(0) === 45 || args[++i]);\n\t\t\tarr = (j === 2 ? [name] : name);\n\n\t\t\tfor (idx=0; idx < arr.length; idx++) {\n\t\t\t\tname = arr[idx];\n\t\t\t\tif (strict && !~keys.indexOf(name)) return opts.unknown('-'.repeat(j) + name);\n\t\t\t\ttoVal(out, name, (idx + 1 < arr.length) || val, opts);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (defaults) {\n\t\tfor (k in opts.default) {\n\t\t\tif (out[k] === void 0) {\n\t\t\t\tout[k] = opts.default[k];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (alibi) {\n\t\tfor (k in out) {\n\t\t\tarr = opts.alias[k] || [];\n\t\t\twhile (arr.length > 0) {\n\t\t\t\tout[arr.shift()] = out[k];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n","import e from\"mri\";const t=\"__all__\",i=\"__default__\",s=\"\\n\";function r(e){if(!e.length)return\"\";let t=function(e){let t=0,i=0,s=0,r=e.length;if(r)for(;r--;)i=e[r].length,i>t&&(s=r,t=i);return e[s].length}(e.map(e=>e[0]))+4;return e.map(e=>e[0]+\" \".repeat(t-e[0].length)+e[1]+(null==e[2]?\"\":` (default ${e[2]})`))}function n(e){return e}function l(e,t,i){if(!t||!t.length)return\"\";let r=0,n=\"\";for(n+=\"\\n \"+e;r<t.length;r++)n+=\"\\n \"+i(t[r]);return n+s}function a(e,t,i=1){let s=l(\"ERROR\",[t],n);s+=`\\n Run \\`$ ${e} --help\\` for more info.\\n`,console.error(s),process.exit(i)}class o{constructor(e,s){let[r,...n]=e.split(/\\s+/);s=s||n.length>0,this.bin=r,this.ver=\"0.0.0\",this.default=\"\",this.tree={},this.command(t),this.command([i].concat(s?n:\"<command>\").join(\" \")),this.single=s,this.curr=\"\"}command(e,t,i={}){if(this.single)throw new Error('Disable \"single\" mode to add commands');let s=[],r=[],n=/(\\[|<)/;if(e.split(/\\s+/).forEach(e=>{(n.test(e.charAt(0))?r:s).push(e)}),s=s.join(\" \"),s in this.tree)throw new Error(\"Command already exists: \"+s);return s.includes(\"__\")||r.unshift(s),r=r.join(\" \"),this.curr=s,i.default&&(this.default=s),this.tree[s]={usage:r,alibi:[],options:[],alias:{},default:{},examples:[]},i.alias&&this.alias(i.alias),t&&this.describe(t),this}describe(e){return this.tree[this.curr||i].describe=Array.isArray(e)?e:function(e){return(e||\"\").replace(/([.?!])\\s*(?=[A-Z])/g,\"$1|\").split(\"|\")}(e),this}alias(...e){if(this.single)throw new Error('Cannot call `alias()` in \"single\" mode');if(!this.curr)throw new Error(\"Cannot call `alias()` before defining a command\");return(this.tree[this.curr].alibi=this.tree[this.curr].alibi.concat(...e)).forEach(e=>this.tree[e]=this.curr),this}option(e,i,s){let r=this.tree[this.curr||t],[n,l]=function(e){return(e||\"\").split(/^-{1,2}|,|\\s+-{1,2}|\\s+/).filter(Boolean)}(e);if(l&&l.length>1&&([n,l]=[l,n]),e=\"--\"+n,l&&l.length>0){e=`-${l}, ${e}`;let t=r.alias[l];r.alias[l]=(t||[]).concat(n)}let a=[e,i||\"\"];return void 0!==s?(a.push(s),r.default[n]=s):l||(r.default[n]=void 0),r.options.push(a),this}action(e){return this.tree[this.curr||i].handler=e,this}example(e){return this.tree[this.curr||i].examples.push(e),this}version(e){return this.ver=e,this}parse(s,r={}){s=s.slice();let n,l,o,h,u=2,f=e(s.slice(u),{alias:{h:\"help\",v:\"version\"}}),c=this.single,p=this.bin,d=\"\";if(c)h=this.tree[i];else{let e,t=1,i=f._.length+1;for(;t<i;t++)if(n=f._.slice(0,t).join(\" \"),e=this.tree[n],\"string\"==typeof e)l=(d=e).split(\" \"),s.splice(s.indexOf(f._[0]),t,...l),t+=l.length-t;else if(e)d=n;else if(d)break;if(h=this.tree[d],o=void 0===h,o)if(this.default)d=this.default,h=this.tree[d],s.unshift(d),u++;else if(n)return a(p,\"Invalid command: \"+n)}if(f.help)return this.help(!c&&!o&&d);if(f.version)return this._version();if(!c&&void 0===h)return a(p,\"No command specified.\");let g=this.tree[t];r.alias=Object.assign(g.alias,h.alias,r.alias),r.default=Object.assign(g.default,h.default,r.default),n=d.split(\" \"),l=s.indexOf(n[0],2),~l&&s.splice(l,n.length);let m=e(s.slice(u),r);if(!m||\"string\"==typeof m)return a(p,m||\"Parsed unknown option flag(s)!\");let b=h.usage.split(/\\s+/),_=b.filter(e=>\"<\"===e.charAt(0)),v=m._.splice(0,_.length);if(v.length<_.length)return d&&(p+=\" \"+d),a(p,\"Insufficient arguments!\");b.filter(e=>\"[\"===e.charAt(0)).forEach(e=>{v.push(m._.shift())}),v.push(m);let $=h.handler;return r.lazy?{args:v,name:d,handler:$}:$.apply(null,v)}help(e){console.log(function(e,a,o,h){let u=\"\",f=a[o],c=\"$ \"+e,p=a[t],d=e=>`${c} ${e}`.replace(/\\s+/g,\" \"),g=[[\"-h, --help\",\"Displays this message\"]];if(o===i&&g.unshift([\"-v, --version\",\"Displays current version\"]),f.options=(f.options||[]).concat(p.options,g),f.options.length>0&&(f.usage+=\" [options]\"),u+=l(\"Description\",f.describe,n),u+=l(\"Usage\",[f.usage],d),h||o!==i)h||o===i||(u+=l(\"Aliases\",f.alibi,d));else{let e,t=/^__/,i=\"\",o=[];for(e in a)\"string\"==typeof a[e]||t.test(e)||o.push([e,(a[e].describe||[\"\"])[0]])<3&&(i+=`\\n ${c} ${e} --help`);u+=l(\"Available Commands\",r(o),n),u+=\"\\n For more info, run any command with the `--help` flag\"+i+s}return u+=l(\"Options\",r(f.options),n),u+=l(\"Examples\",f.examples.map(d),n),u}(this.bin,this.tree,e||i,this.single))}_version(){console.log(`${this.bin}, ${this.ver}`)}}export default(e,t)=>new o(e,t);\n","(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '{'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. 'A'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. 'A' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\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\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\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\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\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-\\u08B4\\u08E3-\\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\\u0AF9\\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-\\u0C5A\\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\\u0D5F-\\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\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\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-\\u19DA\\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\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\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\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\uAB70-\\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-\\uFE2F\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {<foo as bar>} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import <foo> ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '-->' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `<!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","/**\n * Default minimum size of a run.\n */\nconst DEFAULT_MIN_MERGE = 32\n\n/**\n * Minimum ordered subsequece required to do galloping.\n */\nconst DEFAULT_MIN_GALLOPING = 7\n\n/**\n * Default tmp storage length. Can increase depending on the size of the\n * smallest run to merge.\n */\nconst DEFAULT_TMP_STORAGE_LENGTH = 256\n\n/**\n * Pre-computed powers of 10 for efficient lexicographic comparison of\n * small integers.\n */\nconst POWERS_OF_TEN = [1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9]\n\nlet results\n\n/**\n * Estimate the logarithm base 10 of a small integer.\n *\n * @param {number} x - The integer to estimate the logarithm of.\n * @return {number} - The estimated logarithm of the integer.\n */\nconst log10 = x => x < 1e5\n ? x < 1e2\n ? x < 1e1\n ? 0\n : 1\n : x < 1e4\n ? x < 1e3\n ? 2\n : 3\n : 4\n : x < 1e7\n ? x < 1e6\n ? 5\n : 6\n : x < 1e9\n ? x < 1e8\n ? 7\n : 8\n : 9\n\n/**\n * Default alphabetical comparison of items.\n *\n * @param {string|object|number} a - First element to compare.\n * @param {string|object|number} b - Second element to compare.\n * @return {number} - A positive number if a.toString() > b.toString(), a\n * negative number if .toString() < b.toString(), 0 otherwise.\n */\nfunction alphabeticalCompare (a, b) {\n if (a === b) {\n return 0\n }\n\n if (~ ~ a === a && ~ ~ b === b) {\n if (a === 0 || b === 0) {\n return a < b ? - 1 : 1\n }\n\n if (a < 0 || b < 0) {\n if (b >= 0) {\n return - 1\n }\n\n if (a >= 0) {\n return 1\n }\n\n a = - a\n b = - b\n }\n\n const al = log10(a)\n const bl = log10(b)\n\n let t = 0\n\n if (al < bl) {\n a *= POWERS_OF_TEN[bl - al - 1]\n b /= 10\n t = - 1\n } else if (al > bl) {\n b *= POWERS_OF_TEN[al - bl - 1]\n a /= 10\n t = 1\n }\n\n if (a === b) {\n return t\n }\n\n return a < b ? - 1 : 1\n }\n\n const aStr = String(a)\n const bStr = String(b)\n\n if (aStr === bStr) {\n return 0\n }\n\n return aStr < bStr ? - 1 : 1\n}\n\n/**\n * Compute minimum run length for TimSort\n *\n * @param {number} n - The size of the array to sort.\n */\nfunction minRunLength (n) {\n let r = 0\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= (n & 1)\n n >>= 1\n }\n\n return n + r\n}\n\n/**\n * Counts the length of a monotonically ascending or strictly monotonically\n * descending sequence (run) starting at array[lo] in the range [lo, hi). If\n * the run is descending it is made ascending.\n *\n * @param {array} array - The array to reverse.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * @param {function} compare - Item comparison function.\n * @return {number} - The length of the run.\n */\nfunction makeAscendingRun (array, lo, hi, compare) {\n let runHi = lo + 1\n\n if (runHi === hi) {\n return 1\n }\n\n // Descending\n if (compare(array[runHi ++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi ++\n }\n\n reverseRun(array, lo, runHi)\n reverseRun(results, lo, runHi)\n // Ascending\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi ++\n }\n }\n\n return runHi - lo\n}\n\n/**\n * Reverse an array in the range [lo, hi).\n *\n * @param {array} array - The array to reverse.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n */\nfunction reverseRun (array, lo, hi) {\n hi --\n\n while (lo < hi) {\n const t = array[lo]\n array[lo ++] = array[hi]\n array[hi --] = t\n }\n}\n\n/**\n * Perform the binary sort of the array in the range [lo, hi) where start is\n * the first element possibly out of order.\n *\n * @param {array} array - The array to sort.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * @param {number} start - First element possibly out of order.\n * @param {function} compare - Item comparison function.\n */\nfunction binaryInsertionSort (array, lo, hi, start, compare) {\n if (start === lo) {\n start ++\n }\n\n for (; start < hi; start ++) {\n const pivot = array[start]\n const pivotIndex = results[start]\n\n // Ranges of the array where pivot belongs\n let left = lo\n let right = start\n\n /*\n * pivot >= array[i] for i in [lo, left)\n * pivot < array[i] for i in in [right, start)\n */\n while (left < right) {\n const mid = (left + right) >>> 1\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid\n } else {\n left = mid + 1\n }\n }\n\n /*\n * Move elements right to make room for the pivot. If there are elements\n * equal to pivot, left points to the first slot after them: this is also\n * a reason for which TimSort is stable\n */\n let n = start - left\n // Switch is just an optimization for small arrays\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2]\n results[left + 3] = results[left + 2]\n /* falls through */\n case 2:\n array[left + 2] = array[left + 1]\n results[left + 2] = results[left + 1]\n /* falls through */\n case 1:\n array[left + 1] = array[left]\n results[left + 1] = results[left]\n break\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1]\n results[left + n] = results[left + n - 1]\n n --\n }\n }\n\n array[left] = pivot\n results[left] = pivotIndex\n }\n}\n\n/**\n * Find the position at which to insert a value in a sorted range. If the range\n * contains elements equal to the value the leftmost element index is returned\n * (for stability).\n *\n * @param {number} value - Value to insert.\n * @param {array} array - The array in which to insert value.\n * @param {number} start - First element in the range.\n * @param {number} length - Length of the range.\n * @param {number} hint - The index at which to begin the search.\n * @param {function} compare - Item comparison function.\n * @return {number} - The index where to insert value.\n */\nfunction gallopLeft (value, array, start, length, hint, compare) {\n let lastOffset = 0\n let maxOffset = 0\n let offset = 1\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint\n\n while (\n offset < maxOffset\n && compare(value, array[start + hint + offset]) > 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n lastOffset += hint\n offset += hint\n\n // value <= array[start + hint]\n } else {\n maxOffset = hint + 1\n while (\n offset < maxOffset\n && compare(value, array[start + hint - offset]) <= 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n const tmp = lastOffset\n lastOffset = hint - offset\n offset = hint - tmp\n }\n\n /*\n * Now array[start+lastOffset] < value <= array[start+offset], so value\n * belongs somewhere in the range (start + lastOffset, start + offset]. Do a\n * binary search, with invariant array[start + lastOffset - 1] < value <=\n * array[start + offset].\n */\n lastOffset ++\n while (lastOffset < offset) {\n const m = lastOffset + ((offset - lastOffset) >>> 1)\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1\n } else {\n offset = m\n }\n }\n return offset\n}\n\n/**\n * Find the position at which to insert a value in a sorted range. If the range\n * contains elements equal to the value the rightmost element index is returned\n * (for stability).\n *\n * @param {number} value - Value to insert.\n * @param {array} array - The array in which to insert value.\n * @param {number} start - First element in the range.\n * @param {number} length - Length of the range.\n * @param {number} hint - The index at which to begin the search.\n * @param {function} compare - Item comparison function.\n * @return {number} - The index where to insert value.\n */\nfunction gallopRight (value, array, start, length, hint, compare) {\n let lastOffset = 0\n let maxOffset = 0\n let offset = 1\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1\n\n while (\n offset < maxOffset\n && compare(value, array[start + hint - offset]) < 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n const tmp = lastOffset\n lastOffset = hint - offset\n offset = hint - tmp\n\n // value >= array[start + hint]\n } else {\n maxOffset = length - hint\n\n while (\n offset < maxOffset\n && compare(value, array[start + hint + offset]) >= 0\n ) {\n lastOffset = offset\n offset = (offset << 1) + 1\n\n if (offset <= 0) {\n offset = maxOffset\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset\n }\n\n // Make offsets relative to start\n lastOffset += hint\n offset += hint\n }\n\n /*\n * Now array[start+lastOffset] < value <= array[start+offset], so value\n * belongs somewhere in the range (start + lastOffset, start + offset]. Do a\n * binary search, with invariant array[start + lastOffset - 1] < value <=\n * array[start + offset].\n */\n lastOffset ++\n\n while (lastOffset < offset) {\n const m = lastOffset + ((offset - lastOffset) >>> 1)\n\n if (compare(value, array[start + m]) < 0) {\n offset = m\n } else {\n lastOffset = m + 1\n }\n }\n\n return offset\n}\n\nclass TimSort {\n constructor (array, compare) {\n this.array = array\n this.compare = compare\n\n const {length} = array\n\n this.length = length\n this.minGallop = DEFAULT_MIN_GALLOPING\n\n this.tmpStorageLength = length < 2 * DEFAULT_TMP_STORAGE_LENGTH\n ? length >>> 1\n : DEFAULT_TMP_STORAGE_LENGTH\n\n this.tmp = new Array(this.tmpStorageLength)\n this.tmpIndex = new Array(this.tmpStorageLength)\n\n this.stackLength = length < 120\n ? 5\n : length < 1542\n ? 10\n : length < 119151\n ? 19\n : 40\n\n this.runStart = new Array(this.stackLength)\n this.runLength = new Array(this.stackLength)\n\n this.stackSize = 0\n }\n\n /**\n * Push a new run on TimSort's stack.\n *\n * @param {number} runStart - Start index of the run in the original array.\n * @param {number} runLength - Length of the run;\n */\n pushRun (runStart, runLength) {\n this.runStart[this.stackSize] = runStart\n this.runLength[this.stackSize] = runLength\n this.stackSize += 1\n }\n\n /**\n * Merge runs on TimSort's stack so that the following holds for all i:\n * 1) runLength[i - 3] > runLength[i - 2] + runLength[i - 1]\n * 2) runLength[i - 2] > runLength[i - 1]\n */\n mergeRuns () {\n while (this.stackSize > 1) {\n let n = this.stackSize - 2\n\n if (\n (\n n >= 1\n && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1]\n )\n || (\n n >= 2\n && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]\n )\n ) {\n if (this.runLength[n - 1] < this.runLength[n + 1]) {\n n --\n }\n } else if (this.runLength[n] > this.runLength[n + 1]) {\n break\n }\n this.mergeAt(n)\n }\n }\n\n /**\n * Merge all runs on TimSort's stack until only one remains.\n */\n forceMergeRuns () {\n while (this.stackSize > 1) {\n let n = this.stackSize - 2\n\n if (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) {\n n --\n }\n\n this.mergeAt(n)\n }\n }\n\n /**\n * Merge the runs on the stack at positions i and i+1. Must be always be called\n * with i=stackSize-2 or i=stackSize-3 (that is, we merge on top of the stack).\n *\n * @param {number} i - Index of the run to merge in TimSort's stack.\n */\n mergeAt (i) {\n const {compare} = this\n const {array} = this\n\n let start1 = this.runStart[i]\n let length1 = this.runLength[i]\n const start2 = this.runStart[i + 1]\n let length2 = this.runLength[i + 1]\n\n this.runLength[i] = length1 + length2\n\n if (i === this.stackSize - 3) {\n this.runStart[i + 1] = this.runStart[i + 2]\n this.runLength[i + 1] = this.runLength[i + 2]\n }\n\n this.stackSize --\n\n /*\n * Find where the first element in the second run goes in run1. Previous\n * elements in run1 are already in place\n */\n const k = gallopRight(array[start2], array, start1, length1, 0, compare)\n start1 += k\n length1 -= k\n\n if (length1 === 0) {\n return\n }\n\n /*\n * Find where the last element in the first run goes in run2. Next elements\n * in run2 are already in place\n */\n length2 = gallopLeft(\n array[start1 + length1 - 1],\n array,\n start2,\n length2,\n length2 - 1,\n compare\n )\n\n if (length2 === 0) {\n return\n }\n\n /*\n * Merge remaining runs. A tmp array with length = min(length1, length2) is\n * used\n */\n if (length1 <= length2) {\n this.mergeLow(start1, length1, start2, length2)\n } else {\n this.mergeHigh(start1, length1, start2, length2)\n }\n }\n\n /**\n * Merge two adjacent runs in a stable way. The runs must be such that the\n * first element of run1 is bigger than the first element in run2 and the\n * last element of run1 is greater than all the elements in run2.\n * The method should be called when run1.length <= run2.length as it uses\n * TimSort temporary array to store run1. Use mergeHigh if run1.length >\n * run2.length.\n *\n * @param {number} start1 - First element in run1.\n * @param {number} length1 - Length of run1.\n * @param {number} start2 - First element in run2.\n * @param {number} length2 - Length of run2.\n */\n mergeLow (start1, length1, start2, length2) {\n const {compare} = this\n const {array} = this\n const {tmp} = this\n const {tmpIndex} = this\n let i = 0\n\n for (i = 0; i < length1; i ++) {\n tmp[i] = array[start1 + i]\n tmpIndex[i] = results[start1 + i]\n }\n\n let cursor1 = 0\n let cursor2 = start2\n let dest = start1\n\n array[dest] = array[cursor2]\n results[dest] = results[cursor2]\n\n dest ++\n cursor2 ++\n\n if (-- length2 === 0) {\n for (i = 0; i < length1; i ++) {\n array[dest + i] = tmp[cursor1 + i]\n results[dest + i] = tmpIndex[cursor1 + i]\n }\n return\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i ++) {\n array[dest + i] = array[cursor2 + i]\n results[dest + i] = results[cursor2 + i]\n }\n array[dest + length2] = tmp[cursor1]\n results[dest + length2] = tmpIndex[cursor1]\n return\n }\n\n let {minGallop} = this\n\n while (true) {\n let count1 = 0\n let count2 = 0\n let exit = false\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest] = array[cursor2]\n results[dest] = results[cursor2]\n dest ++\n cursor2 ++\n count2 ++\n count1 = 0\n\n if (-- length2 === 0) {\n exit = true\n break\n }\n } else {\n array[dest] = tmp[cursor1]\n results[dest] = tmpIndex[cursor1]\n dest ++\n cursor1 ++\n count1 ++\n count2 = 0\n if (-- length1 === 1) {\n exit = true\n break\n }\n }\n } while ((count1 | count2) < minGallop)\n\n if (exit) {\n break\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare)\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i ++) {\n array[dest + i] = tmp[cursor1 + i]\n results[dest + i] = tmpIndex[cursor1 + i]\n }\n\n dest += count1\n cursor1 += count1\n length1 -= count1\n if (length1 <= 1) {\n exit = true\n break\n }\n }\n\n array[dest] = array[cursor2]\n results[dest] = results[cursor2]\n\n dest ++\n cursor2 ++\n\n if (-- length2 === 0) {\n exit = true\n break\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare)\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i ++) {\n array[dest + i] = array[cursor2 + i]\n results[dest + i] = results[cursor2 + i]\n }\n\n dest += count2\n cursor2 += count2\n length2 -= count2\n\n if (length2 === 0) {\n exit = true\n break\n }\n }\n array[dest] = tmp[cursor1]\n results[dest] = tmpIndex[cursor1]\n dest ++\n cursor1 ++\n\n if (-- length1 === 1) {\n exit = true\n break\n }\n\n minGallop --\n } while (\n count1 >= DEFAULT_MIN_GALLOPING\n || count2 >= DEFAULT_MIN_GALLOPING\n )\n\n if (exit) {\n break\n }\n\n if (minGallop < 0) {\n minGallop = 0\n }\n\n minGallop += 2\n }\n\n this.minGallop = minGallop\n\n if (minGallop < 1) {\n this.minGallop = 1\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i ++) {\n array[dest + i] = array[cursor2 + i]\n results[dest + i] = results[cursor2 + i]\n }\n array[dest + length2] = tmp[cursor1]\n results[dest + length2] = tmpIndex[cursor1]\n } else if (length1 === 0) {\n throw new Error('mergeLow preconditions were not respected')\n } else {\n for (i = 0; i < length1; i ++) {\n array[dest + i] = tmp[cursor1 + i]\n results[dest + i] = tmpIndex[cursor1 + i]\n }\n }\n }\n\n /**\n * Merge two adjacent runs in a stable way. The runs must be such that the\n * first element of run1 is bigger than the first element in run2 and the\n * last element of run1 is greater than all the elements in run2.\n * The method should be called when run1.length > run2.length as it uses\n * TimSort temporary array to store run2. Use mergeLow if run1.length <=\n * run2.length.\n *\n * @param {number} start1 - First element in run1.\n * @param {number} length1 - Length of run1.\n * @param {number} start2 - First element in run2.\n * @param {number} length2 - Length of run2.\n */\n mergeHigh (start1, length1, start2, length2) {\n const {compare} = this\n const {array} = this\n const {tmp} = this\n const {tmpIndex} = this\n let i = 0\n\n for (i = 0; i < length2; i ++) {\n tmp[i] = array[start2 + i]\n tmpIndex[i] = results[start2 + i]\n }\n\n let cursor1 = start1 + length1 - 1\n let cursor2 = length2 - 1\n let dest = start2 + length2 - 1\n let customCursor = 0\n let customDest = 0\n\n array[dest] = array[cursor1]\n results[dest] = results[cursor1]\n\n dest --\n cursor1 --\n\n if (-- length1 === 0) {\n customCursor = dest - (length2 - 1)\n\n for (i = 0; i < length2; i ++) {\n array[customCursor + i] = tmp[i]\n results[customCursor + i] = tmpIndex[i]\n }\n\n return\n }\n\n if (length2 === 1) {\n dest -= length1\n cursor1 -= length1\n customDest = dest + 1\n customCursor = cursor1 + 1\n\n for (i = length1 - 1; i >= 0; i --) {\n array[customDest + i] = array[customCursor + i]\n results[customDest + i] = results[customCursor + i]\n }\n\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n return\n }\n\n let {minGallop} = this\n\n while (true) {\n let count1 = 0\n let count2 = 0\n let exit = false\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest] = array[cursor1]\n results[dest] = results[cursor1]\n dest --\n cursor1 --\n count1 ++\n count2 = 0\n if (-- length1 === 0) {\n exit = true\n break\n }\n } else {\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n dest --\n cursor2 --\n count2 ++\n count1 = 0\n if (-- length2 === 1) {\n exit = true\n break\n }\n }\n } while ((count1 | count2) < minGallop)\n\n if (exit) {\n break\n }\n\n do {\n count1 = length1 - gallopRight(\n tmp[cursor2],\n array,\n start1,\n length1,\n length1 - 1,\n compare\n )\n\n if (count1 !== 0) {\n dest -= count1\n cursor1 -= count1\n length1 -= count1\n customDest = dest + 1\n customCursor = cursor1 + 1\n\n for (i = count1 - 1; i >= 0; i --) {\n array[customDest + i] = array[customCursor + i]\n results[customDest + i] = results[customCursor + i]\n }\n\n if (length1 === 0) {\n exit = true\n break\n }\n }\n\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n dest --\n cursor2 --\n\n if (-- length2 === 1) {\n exit = true\n break\n }\n\n count2 = length2 - gallopLeft(\n array[cursor1],\n tmp,\n 0,\n length2,\n length2 - 1,\n compare\n )\n\n if (count2 !== 0) {\n dest -= count2\n cursor2 -= count2\n length2 -= count2\n customDest = dest + 1\n customCursor = cursor2 + 1\n\n for (i = 0; i < count2; i ++) {\n array[customDest + i] = tmp[customCursor + i]\n results[customDest + i] = tmpIndex[customCursor + i]\n }\n\n if (length2 <= 1) {\n exit = true\n break\n }\n }\n\n array[dest] = array[cursor1]\n results[dest] = results[cursor1]\n dest --\n cursor1 --\n\n if (-- length1 === 0) {\n exit = true\n break\n }\n\n minGallop --\n } while (\n count1 >= DEFAULT_MIN_GALLOPING\n || count2 >= DEFAULT_MIN_GALLOPING\n )\n\n if (exit) {\n break\n }\n\n if (minGallop < 0) {\n minGallop = 0\n }\n\n minGallop += 2\n }\n\n this.minGallop = minGallop\n\n if (minGallop < 1) {\n this.minGallop = 1\n }\n\n if (length2 === 1) {\n dest -= length1\n cursor1 -= length1\n customDest = dest + 1\n customCursor = cursor1 + 1\n\n for (i = length1 - 1; i >= 0; i --) {\n array[customDest + i] = array[customCursor + i]\n results[customDest + i] = results[customCursor + i]\n }\n\n array[dest] = tmp[cursor2]\n results[dest] = tmpIndex[cursor2]\n } else if (length2 === 0) {\n throw new Error('mergeHigh preconditions were not respected')\n } else {\n customCursor = dest - (length2 - 1)\n for (i = 0; i < length2; i ++) {\n array[customCursor + i] = tmp[i]\n results[customCursor + i] = tmpIndex[i]\n }\n }\n }\n}\n\n/**\n * Sort an array in the range [lo, hi) using TimSort.\n *\n * @param {array} array - The array to sort.\n * @param {function=} compare - Item comparison function. Default is\n * alphabetical\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * comparator.\n */\nfunction sort (array, compare, lo, hi) {\n if (!Array.isArray(array)) {\n throw new TypeError(\n `The \"array\" argument must be an array. Received ${array}`\n )\n }\n\n results = []\n\n const {length} = array\n\n let i = 0\n\n while (i < length) {\n results[i] = i ++\n }\n\n /*\n * Handle the case where a comparison function is not provided. We do\n * lexicographic sorting\n */\n if (!compare) {\n compare = alphabeticalCompare\n } else if (typeof compare !== 'function') {\n hi = lo\n lo = compare\n compare = alphabeticalCompare\n }\n\n if (!lo) {\n lo = 0\n }\n if (!hi) {\n hi = length\n }\n\n let remaining = hi - lo\n\n // The array is already sorted\n if (remaining < 2) {\n return results\n }\n\n let runLength = 0\n // On small arrays binary sort can be used directly\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare)\n binaryInsertionSort(array, lo, hi, lo + runLength, compare)\n return results\n }\n\n const ts = new TimSort(array, compare)\n\n const minRun = minRunLength(remaining)\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare)\n if (runLength < minRun) {\n let force = remaining\n if (force > minRun) {\n force = minRun\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare)\n runLength = force\n }\n // Push new run and merge if necessary\n ts.pushRun(lo, runLength)\n ts.mergeRuns()\n\n // Go find next run\n remaining -= runLength\n lo += runLength\n } while (remaining !== 0)\n\n // Force merging of remaining runs\n ts.forceMergeRuns()\n\n return results\n}\n\nmodule.exports = {\n sort\n}\n","'use strict';\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = (object, property) => hasOwnProp.call(object, property);\n","const hasOwnProperty = require('has-own-prop')\nconst {\n isObject,\n isArray,\n isString,\n isNumber\n} = require('core-util-is')\n\nconst PREFIX_BEFORE = 'before'\nconst PREFIX_AFTER_PROP = 'after-prop'\nconst PREFIX_AFTER_COLON = 'after-colon'\nconst PREFIX_AFTER_VALUE = 'after-value'\nconst PREFIX_AFTER = 'after'\n\nconst PREFIX_BEFORE_ALL = 'before-all'\nconst PREFIX_AFTER_ALL = 'after-all'\n\nconst BRACKET_OPEN = '['\nconst BRACKET_CLOSE = ']'\nconst CURLY_BRACKET_OPEN = '{'\nconst CURLY_BRACKET_CLOSE = '}'\nconst COMMA = ','\nconst EMPTY = ''\nconst MINUS = '-'\n\nconst SYMBOL_PREFIXES = [\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER\n]\n\nconst NON_PROP_SYMBOL_KEYS = [\n PREFIX_BEFORE,\n PREFIX_BEFORE_ALL,\n PREFIX_AFTER_ALL\n].map(Symbol.for)\n\nconst COLON = ':'\nconst UNDEFINED = undefined\n\nconst symbol = (prefix, key) => Symbol.for(prefix + COLON + key)\n\nconst define = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n})\n\nconst copy_comments_by_kind = (\n target, source, target_key, source_key, prefix, remove_source\n) => {\n const source_prop = symbol(prefix, source_key)\n if (!hasOwnProperty(source, source_prop)) {\n return\n }\n\n const target_prop = target_key === source_key\n ? source_prop\n : symbol(prefix, target_key)\n\n define(target, target_prop, source[source_prop])\n\n if (remove_source) {\n delete source[source_prop]\n }\n}\n\nconst copy_comments = (\n target, source, target_key, source_key, remove_source\n) => {\n SYMBOL_PREFIXES.forEach(prefix => {\n copy_comments_by_kind(\n target, source, target_key, source_key, prefix, remove_source\n )\n })\n}\n\nconst swap_comments = (array, from, to) => {\n if (from === to) {\n return\n }\n\n SYMBOL_PREFIXES.forEach(prefix => {\n const target_prop = symbol(prefix, to)\n if (!hasOwnProperty(array, target_prop)) {\n copy_comments_by_kind(array, array, to, from, prefix, true)\n return\n }\n\n const comments = array[target_prop]\n delete array[target_prop]\n\n copy_comments_by_kind(array, array, to, from, prefix, true)\n define(array, symbol(prefix, from), comments)\n })\n}\n\nconst assign_non_prop_comments = (target, source) => {\n NON_PROP_SYMBOL_KEYS.forEach(key => {\n const comments = source[key]\n\n if (comments) {\n define(target, key, comments)\n }\n })\n}\n\n// Assign keys and comments\nconst assign = (target, source, keys) => {\n keys.forEach(key => {\n if (!isString(key) && !isNumber(key)) {\n return\n }\n\n if (!hasOwnProperty(source, key)) {\n return\n }\n\n target[key] = source[key]\n copy_comments(target, source, key, key)\n })\n\n return target\n}\n\nmodule.exports = {\n SYMBOL_PREFIXES,\n\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER,\n\n PREFIX_BEFORE_ALL,\n PREFIX_AFTER_ALL,\n\n BRACKET_OPEN,\n BRACKET_CLOSE,\n CURLY_BRACKET_OPEN,\n CURLY_BRACKET_CLOSE,\n\n COLON,\n COMMA,\n MINUS,\n EMPTY,\n\n UNDEFINED,\n\n symbol,\n define,\n copy_comments,\n swap_comments,\n assign_non_prop_comments,\n\n assign (target, source, keys) {\n if (!isObject(target)) {\n throw new TypeError('Cannot convert undefined or null to object')\n }\n\n if (!isObject(source)) {\n return target\n }\n\n if (keys === UNDEFINED) {\n keys = Object.keys(source)\n // We assign non-property comments\n // if argument `keys` is not specified\n assign_non_prop_comments(target, source)\n } else if (!isArray(keys)) {\n throw new TypeError('keys must be array or undefined')\n } else if (keys.length === 0) {\n // Or argument `keys` is an empty array\n assign_non_prop_comments(target, source)\n }\n\n return assign(target, source, keys)\n }\n}\n","const {isArray} = require('core-util-is')\nconst {sort} = require('array-timsort')\n\nconst {\n SYMBOL_PREFIXES,\n\n UNDEFINED,\n\n symbol,\n copy_comments,\n swap_comments\n} = require('./common')\n\nconst reverse_comments = array => {\n const {length} = array\n let i = 0\n const max = length / 2\n\n for (; i < max; i ++) {\n swap_comments(array, i, length - i - 1)\n }\n}\n\nconst move_comment = (target, source, i, offset, remove) => {\n copy_comments(target, source, i + offset, i, remove)\n}\n\nconst move_comments = (\n // `Array` target array\n target,\n // `Array` source array\n source,\n // `number` start index\n start,\n // `number` number of indexes to move\n count,\n // `number` offset to move\n offset,\n // `boolean` whether should remove the comments from source\n remove\n) => {\n if (offset > 0) {\n let i = count\n // | count | offset |\n // source: -------------\n // target: -------------\n // | remove |\n // => remove === offset\n\n // From [count - 1, 0]\n while (i -- > 0) {\n move_comment(target, source, start + i, offset, remove)\n }\n return\n }\n\n let i = 0\n // | remove | count |\n // -------------\n // -------------\n // | offset |\n\n // From [0, count - 1]\n while (i < count) {\n const ii = i ++\n move_comment(target, source, start + ii, offset, remove)\n }\n}\n\nconst remove_comments = (array, key) => {\n SYMBOL_PREFIXES.forEach(prefix => {\n const prop = symbol(prefix, key)\n delete array[prop]\n })\n}\n\nconst get_mapped = (map, key) => {\n let mapped = key\n\n while (mapped in map) {\n mapped = map[mapped]\n }\n\n return mapped\n}\n\nclass CommentArray extends Array {\n // - deleteCount + items.length\n\n // We should avoid `splice(begin, deleteCount, ...items)`,\n // because `splice(0, undefined)` is not equivalent to `splice(0)`,\n // as well as:\n // - slice\n splice (...args) {\n const {length} = this\n const ret = super.splice(...args)\n\n // #16\n // If no element removed, we might still need to move comments,\n // because splice could add new items\n\n // if (!ret.length) {\n // return ret\n // }\n\n // JavaScript syntax is silly\n // eslint-disable-next-line prefer-const\n let [begin, deleteCount, ...items] = args\n\n if (begin < 0) {\n begin += length\n }\n\n if (arguments.length === 1) {\n deleteCount = length - begin\n } else {\n deleteCount = Math.min(length - begin, deleteCount)\n }\n\n const {\n length: item_length\n } = items\n\n // itemsToDelete: -\n // itemsToAdd: +\n // | dc | count |\n // =======-------------============\n // =======++++++============\n // | il |\n const offset = item_length - deleteCount\n const start = begin + deleteCount\n const count = length - start\n\n move_comments(this, this, start, count, offset, true)\n\n return ret\n }\n\n slice (...args) {\n const {length} = this\n const array = super.slice(...args)\n if (!array.length) {\n return new CommentArray()\n }\n\n let [begin, before] = args\n\n // Ref:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice\n if (before === UNDEFINED) {\n before = length\n } else if (before < 0) {\n before += length\n }\n\n if (begin < 0) {\n begin += length\n } else if (begin === UNDEFINED) {\n begin = 0\n }\n\n move_comments(array, this, begin, before - begin, - begin)\n\n return array\n }\n\n unshift (...items) {\n const {length} = this\n const ret = super.unshift(...items)\n const {\n length: items_length\n } = items\n\n if (items_length > 0) {\n move_comments(this, this, 0, length, items_length, true)\n }\n\n return ret\n }\n\n shift () {\n const ret = super.shift()\n const {length} = this\n\n remove_comments(this, 0)\n move_comments(this, this, 1, length, - 1, true)\n\n return ret\n }\n\n reverse () {\n super.reverse()\n\n reverse_comments(this)\n\n return this\n }\n\n pop () {\n const ret = super.pop()\n\n // Removes comments\n remove_comments(this, this.length)\n\n return ret\n }\n\n concat (...items) {\n let {length} = this\n const ret = super.concat(...items)\n\n if (!items.length) {\n return ret\n }\n\n move_comments(ret, this, 0, this.length, 0)\n\n items.forEach(item => {\n const prev = length\n length += isArray(item)\n ? item.length\n : 1\n\n if (!(item instanceof CommentArray)) {\n return\n }\n\n move_comments(ret, item, 0, item.length, prev)\n })\n\n return ret\n }\n\n sort (...args) {\n const result = sort(\n this,\n // Make sure there is no more than one argument\n ...args.slice(0, 1)\n )\n\n // For example,\n // if we sort ['b', 'd', 'c', 'a'],\n // then `result` will be [3, 0, 2, 1], and the array is ['a', 'b', 'c', 'd']\n\n // First, we swap index 0 (b) and index 3 (a), then the array comments are\n // ['a.comments', 'd.comments', 'c.comments', 'b.comments']\n // index 0 is finalized\n // index 3 is actually mapped to original index 0, we present as 0 -> 3\n\n // Then swap index 1 (d) and index 0 (-> 3, b)\n // 1 (index) -> 0 (new index) -> 3 (real_index)\n // ['d.comments', 'b.comments', 'c.comments', 'd.comments']\n // index 1 is finalized\n // index 3 is contains the item of original index 1\n // - we present as 1 -> 3\n // - it is ok that we don't remove mapping 0 -> 3\n\n // Then index 2 should be skipped\n\n // Then swap index 3 (d) and index 1 (-> 3, b), skipped\n\n const map = Object.create(null)\n\n result.forEach((source_index, index) => {\n if (source_index === index) {\n return\n }\n\n const real_source_index = get_mapped(map, source_index)\n\n if (real_source_index === index) {\n return\n }\n\n // The item of index `index` gets the final value\n // delete map[index]\n map[index] = real_source_index\n\n swap_comments(this, index, real_source_index)\n })\n\n return this\n }\n}\n\nmodule.exports = {\n CommentArray\n}\n","// JSON formatting\n\nconst esprima = require('esprima')\n\nconst {\n CommentArray,\n} = require('./array')\n\nconst {\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER,\n\n PREFIX_BEFORE_ALL,\n PREFIX_AFTER_ALL,\n\n BRACKET_OPEN,\n BRACKET_CLOSE,\n CURLY_BRACKET_OPEN,\n CURLY_BRACKET_CLOSE,\n\n COLON,\n COMMA,\n MINUS,\n EMPTY,\n\n UNDEFINED,\n\n define,\n assign_non_prop_comments\n} = require('./common')\n\nconst tokenize = code => esprima.tokenize(code, {\n comment: true,\n loc: true\n})\n\nconst previous_hosts = []\nlet comments_host = null\nlet unassigned_comments = null\n\nconst previous_props = []\nlet last_prop\n\nlet remove_comments = false\nlet inline = false\nlet tokens = null\nlet last = null\nlet current = null\nlet index\nlet reviver = null\n\nconst clean = () => {\n previous_props.length =\n previous_hosts.length = 0\n\n last = null\n last_prop = UNDEFINED\n}\n\nconst free = () => {\n clean()\n\n tokens.length = 0\n\n unassigned_comments =\n comments_host =\n tokens =\n last =\n current =\n reviver = null\n}\n\nconst symbolFor = prefix => Symbol.for(\n last_prop !== UNDEFINED\n ? prefix + COLON + last_prop\n : prefix\n)\n\nconst transform = (k, v) => reviver\n ? reviver(k, v)\n : v\n\nconst unexpected = () => {\n const error = new SyntaxError(`Unexpected token ${current.value.slice(0, 1)}`)\n Object.assign(error, current.loc.start)\n\n throw error\n}\n\nconst unexpected_end = () => {\n const error = new SyntaxError('Unexpected end of JSON input')\n Object.assign(error, last\n ? last.loc.end\n // Empty string\n : {\n line: 1,\n column: 0\n })\n\n throw error\n}\n\n// Move the reader to the next\nconst next = () => {\n const new_token = tokens[++ index]\n inline = current\n && new_token\n && current.loc.end.line === new_token.loc.start.line\n || false\n\n last = current\n current = new_token\n}\n\nconst type = () => {\n if (!current) {\n unexpected_end()\n }\n\n return current.type === 'Punctuator'\n ? current.value\n : current.type\n}\n\nconst is = t => type() === t\n\nconst expect = a => {\n if (!is(a)) {\n unexpected()\n }\n}\n\nconst set_comments_host = new_host => {\n previous_hosts.push(comments_host)\n comments_host = new_host\n}\n\nconst restore_comments_host = () => {\n comments_host = previous_hosts.pop()\n}\n\nconst assign_after_comments = () => {\n if (!unassigned_comments) {\n return\n }\n\n const after_comments = []\n\n for (const comment of unassigned_comments) {\n // If the comment is inline, then it is an after-comma comment\n if (comment.inline) {\n after_comments.push(comment)\n // Otherwise, all comments are before:<next-prop> comment\n } else {\n break\n }\n }\n\n const {length} = after_comments\n if (!length) {\n return\n }\n\n if (length === unassigned_comments.length) {\n // If unassigned_comments are all consumed\n unassigned_comments = null\n } else {\n unassigned_comments.splice(0, length)\n }\n\n define(comments_host, symbolFor(PREFIX_AFTER), after_comments)\n}\n\nconst assign_comments = prefix => {\n if (!unassigned_comments) {\n return\n }\n\n define(comments_host, symbolFor(prefix), unassigned_comments)\n\n unassigned_comments = null\n}\n\nconst parse_comments = prefix => {\n const comments = []\n\n while (\n current\n && (\n is('LineComment')\n || is('BlockComment')\n )\n ) {\n const comment = {\n ...current,\n inline\n }\n\n // delete comment.loc\n comments.push(comment)\n\n next()\n }\n\n if (remove_comments) {\n return\n }\n\n if (!comments.length) {\n return\n }\n\n if (prefix) {\n define(comments_host, symbolFor(prefix), comments)\n return\n }\n\n unassigned_comments = comments\n}\n\nconst set_prop = (prop, push) => {\n if (push) {\n previous_props.push(last_prop)\n }\n\n last_prop = prop\n}\n\nconst restore_prop = () => {\n last_prop = previous_props.pop()\n}\n\nconst parse_object = () => {\n const obj = {}\n set_comments_host(obj)\n set_prop(UNDEFINED, true)\n\n let started = false\n let name\n\n parse_comments()\n\n while (!is(CURLY_BRACKET_CLOSE)) {\n if (started) {\n assign_comments(PREFIX_AFTER_VALUE)\n\n // key-value pair delimiter\n expect(COMMA)\n next()\n parse_comments()\n\n assign_after_comments()\n\n // If there is a trailing comma, we might reach the end\n // ```\n // {\n // \"a\": 1,\n // }\n // ```\n if (is(CURLY_BRACKET_CLOSE)) {\n break\n }\n }\n\n started = true\n expect('String')\n name = JSON.parse(current.value)\n\n set_prop(name)\n assign_comments(PREFIX_BEFORE)\n\n next()\n parse_comments(PREFIX_AFTER_PROP)\n\n expect(COLON)\n\n next()\n parse_comments(PREFIX_AFTER_COLON)\n\n obj[name] = transform(name, walk())\n parse_comments()\n }\n\n if (started) {\n // If there are properties,\n // then the unassigned comments are after comments\n assign_comments(PREFIX_AFTER)\n }\n\n // bypass }\n next()\n last_prop = undefined\n\n if (!started) {\n // Otherwise, they are before comments\n assign_comments(PREFIX_BEFORE)\n }\n\n restore_comments_host()\n restore_prop()\n\n return obj\n}\n\nconst parse_array = () => {\n const array = new CommentArray()\n set_comments_host(array)\n set_prop(UNDEFINED, true)\n\n let started = false\n let i = 0\n\n parse_comments()\n\n while (!is(BRACKET_CLOSE)) {\n if (started) {\n assign_comments(PREFIX_AFTER_VALUE)\n expect(COMMA)\n next()\n parse_comments()\n\n assign_after_comments()\n\n if (is(BRACKET_CLOSE)) {\n break\n }\n }\n\n started = true\n\n set_prop(i)\n assign_comments(PREFIX_BEFORE)\n\n array[i] = transform(i, walk())\n i ++\n\n parse_comments()\n }\n\n if (started) {\n assign_comments(PREFIX_AFTER)\n }\n\n next()\n last_prop = undefined\n\n if (!started) {\n assign_comments(PREFIX_BEFORE)\n }\n\n restore_comments_host()\n restore_prop()\n\n return array\n}\n\nfunction walk () {\n let tt = type()\n\n if (tt === CURLY_BRACKET_OPEN) {\n next()\n return parse_object()\n }\n\n if (tt === BRACKET_OPEN) {\n next()\n return parse_array()\n }\n\n let negative = EMPTY\n\n // -1\n if (tt === MINUS) {\n next()\n tt = type()\n negative = MINUS\n }\n\n let v\n\n switch (tt) {\n case 'String':\n case 'Boolean':\n case 'Null':\n case 'Numeric':\n v = current.value\n next()\n return JSON.parse(negative + v)\n default:\n }\n}\n\nconst isObject = subject => Object(subject) === subject\n\nconst parse = (code, rev, no_comments) => {\n // Clean variables in closure\n clean()\n\n tokens = tokenize(code)\n reviver = rev\n remove_comments = no_comments\n\n if (!tokens.length) {\n unexpected_end()\n }\n\n index = - 1\n next()\n\n set_comments_host({})\n\n parse_comments(PREFIX_BEFORE_ALL)\n\n let result = walk()\n\n parse_comments(PREFIX_AFTER_ALL)\n\n if (current) {\n unexpected()\n }\n\n if (!no_comments && result !== null) {\n if (!isObject(result)) {\n // 1 -> new Number(1)\n // true -> new Boolean(1)\n // \"foo\" -> new String(\"foo\")\n\n // eslint-disable-next-line no-new-object\n result = new Object(result)\n }\n\n assign_non_prop_comments(result, comments_host)\n }\n\n restore_comments_host()\n\n // reviver\n result = transform('', result)\n\n free()\n\n return result\n}\n\nmodule.exports = {\n parse,\n tokenize\n}\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n }\n\n // cover common, quick use cases\n if (num === 1) return str;\n if (num === 2) return str + str;\n\n var max = str.length * num;\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}\n","const {\n isArray, isObject, isFunction, isNumber, isString\n} = require('core-util-is')\nconst repeat = require('repeat-string')\n\nconst {\n PREFIX_BEFORE_ALL,\n PREFIX_BEFORE,\n PREFIX_AFTER_PROP,\n PREFIX_AFTER_COLON,\n PREFIX_AFTER_VALUE,\n PREFIX_AFTER,\n PREFIX_AFTER_ALL,\n\n BRACKET_OPEN,\n BRACKET_CLOSE,\n CURLY_BRACKET_OPEN,\n CURLY_BRACKET_CLOSE,\n COLON,\n COMMA,\n EMPTY,\n\n UNDEFINED\n} = require('./common')\n\n// eslint-disable-next-line no-control-regex, no-misleading-character-class\nconst ESCAPABLE = /[\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g\n\n// String constants\nconst SPACE = ' '\nconst LF = '\\n'\nconst STR_NULL = 'null'\n\n// Symbol tags\nconst BEFORE = prop => `${PREFIX_BEFORE}:${prop}`\nconst AFTER_PROP = prop => `${PREFIX_AFTER_PROP}:${prop}`\nconst AFTER_COLON = prop => `${PREFIX_AFTER_COLON}:${prop}`\nconst AFTER_VALUE = prop => `${PREFIX_AFTER_VALUE}:${prop}`\nconst AFTER = prop => `${PREFIX_AFTER}:${prop}`\n\n// table of character substitutions\nconst meta = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n}\n\nconst escape = string => {\n ESCAPABLE.lastIndex = 0\n\n if (!ESCAPABLE.test(string)) {\n return string\n }\n\n return string.replace(ESCAPABLE, a => {\n const c = meta[a]\n return typeof c === 'string'\n ? c\n : a\n })\n}\n\n// Escape no control characters, no quote characters,\n// and no backslash characters,\n// then we can safely slap some quotes around it.\nconst quote = string => `\"${escape(string)}\"`\nconst comment_stringify = (value, line) => line\n ? `//${value}`\n : `/*${value}*/`\n\n// display_block `boolean` whether the\n// WHOLE block of comments is always a block group\nconst process_comments = (host, symbol_tag, deeper_gap, display_block) => {\n const comments = host[Symbol.for(symbol_tag)]\n if (!comments || !comments.length) {\n return EMPTY\n }\n\n let is_line_comment = false\n\n const str = comments.reduce((prev, {\n inline,\n type,\n value\n }) => {\n const delimiter = inline\n ? SPACE\n : LF + deeper_gap\n\n is_line_comment = type === 'LineComment'\n\n return prev + delimiter + comment_stringify(value, is_line_comment)\n }, EMPTY)\n\n return display_block\n // line comment should always end with a LF\n || is_line_comment\n ? str + LF + deeper_gap\n : str\n}\n\nlet replacer = null\nlet indent = EMPTY\n\nconst clean = () => {\n replacer = null\n indent = EMPTY\n}\n\nconst join = (one, two, gap) =>\n one\n ? two\n // Symbol.for('before') and Symbol.for('before:prop')\n // might both exist if user mannually add comments to the object\n // and make a mistake.\n // SO, we are not to only trimRight but trim for both sides\n ? one + two.trim() + LF + gap\n : one.trimRight() + LF + gap\n : two\n ? two.trimRight() + LF + gap\n : EMPTY\n\nconst join_content = (inside, value, gap) => {\n const comment = process_comments(value, PREFIX_BEFORE, gap + indent, true)\n\n return join(comment, inside, gap)\n}\n\n// | deeper_gap |\n// | gap | indent |\n// [\n// \"foo\",\n// \"bar\"\n// ]\nconst array_stringify = (value, gap) => {\n const deeper_gap = gap + indent\n\n const {length} = value\n\n // From the item to before close\n let inside = EMPTY\n let after_comma = EMPTY\n\n // Never use Array.prototype.forEach,\n // that we should iterate all items\n for (let i = 0; i < length; i ++) {\n if (i !== 0) {\n inside += COMMA\n }\n\n const before = join(\n after_comma,\n process_comments(value, BEFORE(i), deeper_gap),\n deeper_gap\n )\n\n inside += before || (LF + deeper_gap)\n\n // JSON.stringify([undefined]) => [null]\n inside += stringify(i, value, deeper_gap) || STR_NULL\n\n inside += process_comments(value, AFTER_VALUE(i), deeper_gap)\n\n after_comma = process_comments(value, AFTER(i), deeper_gap)\n }\n\n inside += join(\n after_comma,\n process_comments(value, PREFIX_AFTER, deeper_gap),\n deeper_gap\n )\n\n return BRACKET_OPEN\n + join_content(inside, value, gap)\n + BRACKET_CLOSE\n}\n\n// | deeper_gap |\n// | gap | indent |\n// {\n// \"foo\": 1,\n// \"bar\": 2\n// }\nconst object_stringify = (value, gap) => {\n // Due to a specification blunder in ECMAScript, typeof null is 'object',\n // so watch out for that case.\n if (!value) {\n return 'null'\n }\n\n const deeper_gap = gap + indent\n\n // From the first element to before close\n let inside = EMPTY\n let after_comma = EMPTY\n let first = true\n\n const keys = isArray(replacer)\n ? replacer\n : Object.keys(value)\n\n const iteratee = key => {\n // Stringified value\n const sv = stringify(key, value, deeper_gap)\n\n // If a value is undefined, then the key-value pair should be ignored\n if (sv === UNDEFINED) {\n return\n }\n\n // The treat ment\n if (!first) {\n inside += COMMA\n }\n\n first = false\n\n const before = join(\n after_comma,\n process_comments(value, BEFORE(key), deeper_gap),\n deeper_gap\n )\n\n inside += before || (LF + deeper_gap)\n\n inside += quote(key)\n + process_comments(value, AFTER_PROP(key), deeper_gap)\n + COLON\n + process_comments(value, AFTER_COLON(key), deeper_gap)\n + SPACE\n + sv\n + process_comments(value, AFTER_VALUE(key), deeper_gap)\n\n after_comma = process_comments(value, AFTER(key), deeper_gap)\n }\n\n keys.forEach(iteratee)\n\n // if (after_comma) {\n // inside += COMMA\n // }\n\n inside += join(\n after_comma,\n process_comments(value, PREFIX_AFTER, deeper_gap),\n deeper_gap\n )\n\n return CURLY_BRACKET_OPEN\n + join_content(inside, value, gap)\n + CURLY_BRACKET_CLOSE\n}\n\n// @param {string} key\n// @param {Object} holder\n// @param {function()|Array} replacer\n// @param {string} indent\n// @param {string} gap\nfunction stringify (key, holder, gap) {\n let value = holder[key]\n\n // If the value has a toJSON method, call it to obtain a replacement value.\n if (isObject(value) && isFunction(value.toJSON)) {\n value = value.toJSON(key)\n }\n\n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (isFunction(replacer)) {\n value = replacer.call(holder, key, value)\n }\n\n switch (typeof value) {\n case 'string':\n return quote(value)\n\n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return Number.isFinite(value) ? String(value) : STR_NULL\n\n case 'boolean':\n case 'null':\n\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value)\n\n // If the type is 'object', we might be dealing with an object or an array or\n // null.\n case 'object':\n return isArray(value)\n ? array_stringify(value, gap)\n : object_stringify(value, gap)\n\n // undefined\n default:\n // JSON.stringify(undefined) === undefined\n // JSON.stringify('foo', () => undefined) === undefined\n }\n}\n\nconst get_indent = space => isString(space)\n // If the space parameter is a string, it will be used as the indent string.\n ? space\n : isNumber(space)\n ? repeat(SPACE, space)\n : EMPTY\n\nconst {toString} = Object.prototype\nconst PRIMITIVE_OBJECT_TYPES = [\n '[object Number]',\n '[object String]',\n '[object Boolean]'\n]\n\nconst is_primitive_object = subject => {\n if (typeof subject !== 'object') {\n return false\n }\n\n const str = toString.call(subject)\n return PRIMITIVE_OBJECT_TYPES.includes(str)\n}\n\n// @param {function()|Array} replacer\n// @param {string|number} space\nmodule.exports = (value, replacer_, space) => {\n // The stringify method takes a value and an optional replacer, and an optional\n // space parameter, and returns a JSON text. The replacer can be a function\n // that can replace values, or an array of strings that will select the keys.\n // A default replacer method can be provided. Use of the space parameter can\n // produce text that is more easily readable.\n\n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n const indent_ = get_indent(space)\n\n if (!indent_) {\n return JSON.stringify(value, replacer_)\n }\n\n // vanilla `JSON.parse` allow invalid replacer\n if (!isFunction(replacer_) && !isArray(replacer_)) {\n replacer_ = null\n }\n\n replacer = replacer_\n indent = indent_\n\n const str = is_primitive_object(value)\n ? JSON.stringify(value)\n : stringify('', {'': value}, EMPTY)\n\n clean()\n\n return isObject(value)\n ? process_comments(value, PREFIX_BEFORE_ALL, EMPTY).trimLeft()\n + str\n + process_comments(value, PREFIX_AFTER_ALL, EMPTY).trimRight()\n : str\n}\n","const {parse, tokenize} = require('./parse')\nconst stringify = require('./stringify')\nconst {CommentArray} = require('./array')\nconst {assign} = require('./common')\n\nmodule.exports = {\n parse,\n stringify,\n tokenize,\n\n CommentArray,\n assign\n}\n","import type { TsConfigJson } from 'type-fest';\n\nexport type GraphQLSPConfig = {\n name: string;\n schema: string;\n tadaOutputLocation?: string;\n};\n\nexport function hasGraphQLSP(tsconfig: TsConfigJson): boolean {\n if (!tsconfig.compilerOptions) {\n console.warn('Missing compilerOptions object in tsconfig.json.');\n return false;\n }\n\n if (!tsconfig.compilerOptions.plugins) {\n console.warn('Missing plugins array in tsconfig.json.');\n return false;\n }\n\n const foundPlugin = tsconfig.compilerOptions.plugins.find(\n (plugin) => plugin.name === '@0no-co/graphqlsp'\n ) as GraphQLSPConfig | undefined;\n if (!foundPlugin) {\n console.warn('Missing @0no-co/graphqlsp plugin in tsconfig.json.');\n return false;\n }\n\n if (!foundPlugin.schema) {\n console.warn('Missing schema property in @0no-co/graphqlsp plugin in tsconfig.json.');\n return false;\n }\n\n if (!foundPlugin.tadaOutputLocation) {\n console.warn(\n 'Missing tadaOutputLocation property in @0no-co/graphqlsp plugin in tsconfig.json.'\n );\n return false;\n }\n\n return true;\n}\n","import { promises as fs } from 'node:fs';\nimport path from 'node:path';\nimport type { GraphQLSchema, IntrospectionQuery } from 'graphql';\nimport {\n buildClientSchema,\n buildSchema,\n getIntrospectionQuery,\n introspectionFromSchema,\n} from 'graphql';\nimport { minifyIntrospectionQuery } from '@urql/introspection';\n\nexport const tadaGqlContents = `import { initGraphQLTada } from 'gql.tada';\nimport type { introspection } from './introspection';\n\nexport const graphql = initGraphQLTada<{\n introspection: typeof introspection;\n}>();\n\nexport type { FragmentOf, ResultOf, VariablesOf } from 'gql.tada';\nexport type { FragmentOf as FragmentType } from 'gql.tada';\nexport { readFragment } from 'gql.tada';\nexport { readFragment as useFragment } from 'gql.tada';\n`;\n\n/**\n * This function mimics the behavior of the LSP, this so we can ensure\n * that gql.tada will work in any environment. The JetBrains IDE's do not\n * implement the tsserver plugin protocol hence in those and editors where\n * we are not able to leverage the workspace TS version we will rely on\n * this function.\n */\nexport async function ensureTadaIntrospection(\n schemaLocation: SchemaOrigin | string,\n outputLocation: string\n) {\n const base = process.cwd();\n\n const writeTada = async () => {\n try {\n const schema = await loadSchema(base, schemaLocation);\n if (!schema) {\n console.error('Something went wrong while trying to load the schema.');\n return;\n }\n const introspection = introspectionFromSchema(schema, {\n descriptions: false,\n });\n const minified = minifyIntrospectionQuery(introspection, {\n includeDirectives: false,\n includeEnums: true,\n includeInputs: true,\n includeScalars: true,\n });\n\n const json = JSON.stringify(minified, null, 2);\n const resolvedOutputLocation = path.resolve(base, outputLocation);\n let contents;\n\n if (/\\.d\\.ts$/.test(outputLocation)) {\n contents = [\n preambleComments,\n dtsAnnotationComment,\n `export type introspection = ${json};\\n`,\n \"import * as gqlTada from 'gql.tada';\\n\",\n \"declare module 'gql.tada' {\",\n ' interface setupSchema {',\n ' introspection: introspection',\n ' }',\n '}',\n ].join('\\n');\n } else if (path.extname(outputLocation) === '.ts') {\n contents = [\n preambleComments,\n tsAnnotationComment,\n `const introspection = ${json} as const;\\n`,\n 'export { introspection };',\n ].join('\\n');\n } else {\n console.warn('Invalid file extension for tadaOutputLocation.');\n return;\n }\n\n await fs.writeFile(resolvedOutputLocation, contents);\n } catch (e) {\n console.error('Something went wrong while writing the introspection file', e);\n }\n };\n\n await writeTada();\n}\n\ntype SchemaOrigin = {\n url: string;\n headers: Record<string, unknown>;\n};\n\nexport const loadSchema = async (\n root: string,\n schema: SchemaOrigin | string\n): Promise<GraphQLSchema | undefined> => {\n let url: URL | undefined;\n let config: { headers: Record<string, unknown> } | undefined;\n\n try {\n if (typeof schema === 'object') {\n url = new URL(schema.url);\n config = { headers: schema.headers };\n } else {\n url = new URL(schema);\n }\n } catch (e) {}\n\n if (url) {\n const response = await fetch(url!.toString(), {\n method: 'POST',\n headers: config\n ? {\n ...(config.headers || {}),\n 'Content-Type': 'application/json',\n }\n : {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query: getIntrospectionQuery({\n descriptions: true,\n schemaDescription: false,\n inputValueDeprecation: false,\n directiveIsRepeatable: false,\n specifiedByUrl: false,\n }),\n }),\n });\n\n if (response.ok) {\n const result = await response.json();\n if (result.data) {\n const introspection = (result as { data: IntrospectionQuery }).data;\n try {\n return buildClientSchema(introspection);\n } catch (e: any) {\n console.error(`Got schema error for ${e.message}`);\n }\n } else {\n console.error(`Got invalid response ${JSON.stringify(result)}`);\n }\n } else {\n console.error(`Got invalid response ${await response.text()}`);\n }\n } else if (typeof schema === 'string') {\n const isJson = path.extname(schema) === '.json';\n const resolvedPath = path.resolve(root, schema);\n\n const contents = await fs.readFile(resolvedPath, 'utf-8');\n\n const schemaOrIntrospection = isJson\n ? (JSON.parse(contents) as IntrospectionQuery)\n : buildSchema(contents);\n\n return '__schema' in schemaOrIntrospection\n ? buildClientSchema(schemaOrIntrospection)\n : schemaOrIntrospection;\n }\n};\n\nconst preambleComments = ['/* eslint-disable */', '/* prettier-ignore */'].join('\\n') + '\\n';\n\nconst dtsAnnotationComment = [\n '/** An IntrospectionQuery representation of your schema.',\n ' *',\n ' * @remarks',\n ' * This is an introspection of your schema saved as a file by GraphQLSP.',\n ' * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents.',\n ' * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to',\n ' * instead save to a .ts instead of a .d.ts file.',\n ' */',\n].join('\\n');\n\nconst tsAnnotationComment = [\n '/** An IntrospectionQuery representation of your schema.',\n ' *',\n ' * @remarks',\n ' * This is an introspection of your schema saved as a file by GraphQLSP.',\n ' * You may import it to create a `graphql()` tag function with `gql.tada`',\n ' * by importing it and passing it to `initGraphQLTada<>()`.',\n ' *',\n ' * @example',\n ' * ```',\n \" * import { initGraphQLTada } from 'gql.tada';\",\n \" * import type { introspection } from './introspection';\",\n ' *',\n ' * export const graphql = initGraphQLTada<{',\n ' * introspection: typeof introspection;',\n ' * scalars: {',\n ' * DateTime: string;',\n ' * Json: any;',\n ' * };',\n ' * }>();',\n ' * ```',\n ' */',\n].join('\\n');\n","import sade from 'sade';\nimport { promises as fs, existsSync } from 'node:fs';\nimport path, { resolve } from 'node:path';\n// We use comment-json to parse the tsconfig as the default ones\n// have comment annotations in JSON.\nimport { parse } from 'comment-json';\nimport type { IntrospectionQuery } from 'graphql';\nimport { buildClientSchema, getIntrospectionQuery, printSchema } from 'graphql';\nimport type { TsConfigJson } from 'type-fest';\n\nimport type { GraphQLSPConfig } from './lsp';\nimport { hasGraphQLSP } from './lsp';\nimport { ensureTadaIntrospection } from './tada';\n\nconst prog = sade('gql.tada');\n\nprog.version(process.env.npm_package_version || '0.0.0');\n\nasync function main() {\n prog\n .command('generate-schema <target>')\n .describe(\n 'Generate a GraphQL schema from a URL or introspection file, this will be generated from the parameters to this command.'\n )\n .option('--header', 'Pass a header to be used when fetching the introspection.')\n .option(\n '--output',\n 'A specialised location to output the schema to, by default we\\'ll output the schema to the \"schema\" defined in your \"tsconfig\".'\n )\n .example(\"generate-schema https://example.com --header 'Authorization: Bearer token'\")\n .example('generate-schema ./introspection.json')\n .action(async (target, options) => {\n const cwd = process.cwd();\n let url: URL | undefined;\n\n try {\n url = new URL(target);\n } catch (e) {}\n\n let introspection: IntrospectionQuery;\n if (url) {\n const headers = (Array.isArray(options.header) ? options.header : [options.header]).reduce(\n (acc, item) => {\n if (!item) return acc;\n\n const parts = item.split(':');\n return {\n ...acc,\n [parts[0]]: parts[1],\n };\n },\n {}\n );\n const response = await fetch(url!.toString(), {\n method: 'POST',\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query: getIntrospectionQuery({\n descriptions: true,\n schemaDescription: false,\n inputValueDeprecation: false,\n directiveIsRepeatable: false,\n specifiedByUrl: false,\n }),\n }),\n });\n\n if (response.ok) {\n const text = await response.text();\n\n try {\n const result = JSON.parse(text);\n if (result.data) {\n introspection = (result as { data: IntrospectionQuery }).data;\n } else {\n console.error(`Got invalid response ${JSON.stringify(result)}`);\n return;\n }\n } catch (e) {\n console.error(`Got invalid JSON ${text}`);\n return;\n }\n } else {\n console.error(`Got invalid response ${await response.text()}`);\n return;\n }\n } else {\n const path = resolve(cwd, target);\n const fileContents = await fs.readFile(path, 'utf-8');\n\n try {\n introspection = JSON.parse(fileContents);\n } catch (e) {\n console.error(`Got invalid JSON ${fileContents}`);\n return;\n }\n }\n\n const schema = buildClientSchema(introspection!);\n\n let destination = options.output;\n if (!destination) {\n const cwd = process.cwd();\n const tsconfigpath = path.resolve(cwd, 'tsconfig.json');\n const hasTsConfig = existsSync(tsconfigpath);\n if (!hasTsConfig) {\n console.error(`Could not find a tsconfig in the working-directory.`);\n return;\n }\n\n const tsconfigContents = await fs.readFile(tsconfigpath, 'utf-8');\n let tsConfig: TsConfigJson;\n try {\n tsConfig = parse(tsconfigContents) as TsConfigJson;\n } catch (err) {\n console.error(err);\n return;\n }\n\n if (!hasGraphQLSP(tsConfig)) {\n console.error(`Could not find a \"@0no-co/graphqlsp\" plugin in your tsconfig.`);\n return;\n }\n\n const foundPlugin = tsConfig.compilerOptions!.plugins!.find(\n (plugin) => plugin.name === '@0no-co/graphqlsp'\n ) as GraphQLSPConfig;\n\n destination = foundPlugin.schema;\n\n if (!foundPlugin.schema.endsWith('.graphql')) {\n console.error(`Found \"${foundPlugin.schema}\" which is not a path to a GraphQL Schema.`);\n return;\n }\n }\n\n await fs.writeFile(resolve(cwd, destination), printSchema(schema), 'utf-8');\n })\n .command('generate-output')\n .describe(\n 'Generate the gql.tada types file, this will look for your \"tsconfig.json\" and use the \"@0no-co/graphqlsp\" configuration to generate the file.'\n )\n .action(async () => {\n const cwd = process.cwd();\n const tsconfigpath = path.resolve(cwd, 'tsconfig.json');\n const hasTsConfig = existsSync(tsconfigpath);\n if (!hasTsConfig) {\n console.error('Missing tsconfig.json');\n return;\n }\n\n const tsconfigContents = await fs.readFile(tsconfigpath, 'utf-8');\n let tsConfig: TsConfigJson;\n try {\n tsConfig = parse(tsconfigContents) as TsConfigJson;\n } catch (err) {\n console.error(err);\n return;\n }\n\n if (!hasGraphQLSP(tsConfig)) {\n return;\n }\n\n const foundPlugin = tsConfig.compilerOptions!.plugins!.find(\n (plugin) => plugin.name === '@0no-co/graphqlsp'\n ) as GraphQLSPConfig;\n\n await ensureTadaIntrospection(foundPlugin.schema, foundPlugin.tadaOutputLocation!);\n });\n prog.parse(process.argv);\n}\n\nexport default main;\n"],"names":["toArr","any","Array","isArray","toVal","out","key","val","opts","x","old","nxt","string","indexOf","String","boolean","_","push","concat","e","args","k","arr","arg","name","i","j","idx","len","length","alibi","alias","strict","unknown","defaults","default","splice","keys","Object","slice","charCodeAt","substring","repeat","shift","t","s","r","map","n","l","a","console","error","process","exit","o","constructor","split","this","bin","ver","tree","command","join","single","curr","Error","forEach","test","charAt","includes","unshift","usage","options","examples","describe","replace","option","filter","Boolean","action","handler","example","version","parse","h","u","f","v","c","p","d","help","_version","g","assign","m","b","$","lazy","apply","log","webpackUniversalModuleDefinition","root","factory","module","exports","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","defineProperty","value","comment_handler_1","jsx_parser_1","parser_1","tokenizer_1","code","delegate","commentHandler","proxyDelegate","node","metadata","visit","parserDelegate","collectComment","attachComment","comment","CommentHandler","attach","isModule","sourceType","parser","jsx","JSXParser","Parser","ast","parseModule","parseScript","comments","config","tokens","tolerant","errors","errorHandler","parsingOptions","tokenize","tokenizer","Tokenizer","token","getNextToken","tolerate","syntax_1","Syntax","stack","leading","trailing","prototype","insertInnerComments","type","BlockStatement","body","innerComments","entry","end","offset","start","findTrailingComments","trailingComments","entry_1","firstComment","range","findLeadingComments","leadingComments","target","pop","visitNode","Program","visitComment","loc","AssignmentExpression","AssignmentPattern","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AwaitExpression","BinaryExpression","BreakStatement","CallExpression","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ConditionalExpression","ContinueStatement","DoWhileStatement","DebuggerStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForStatement","ForOfStatement","ForInStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","Literal","LabeledStatement","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","Property","RestElement","ReturnStatement","SequenceExpression","SpreadElement","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","__extends","extendStatics","setPrototypeOf","__proto__","hasOwnProperty","__","create","character_1","JSXNode","jsx_syntax_1","Node","token_1","xhtml_entities_1","TokenName","getQualifiedElementName","elementName","qualifiedName","JSXSyntax","JSXIdentifier","JSXNamespacedName","ns","namespace","JSXMemberExpression","expr","object","property","_super","parsePrimaryExpression","match","parseJSXRoot","startJSX","scanner","index","startMarker","lineNumber","line","lineStart","column","finishJSX","nextToken","reenterJSX","expectJSX","createJSXNode","collectComments","createJSXChildNode","scanXHTMLEntity","quote","result","valid","terminated","numeric","hex","eof","ch","source","Character","isDecimalDigit","isHexDigit","str","substr","fromCharCode","parseInt","XHTMLEntities","lexJSX","cp","n1","n2","isIdentifierStart","isIdentifierPart","lex","nextJSXToken","lastMarker","convertToken","nextJSXText","text","isLineTerminator","peekJSXToken","state","saveState","scanComments","next","restoreState","throwUnexpectedToken","matchJSX","parseJSXIdentifier","finalize","parseJSXElementName","name_1","parseJSXAttributeName","attributeName","identifier","name_2","parseJSXStringLiteralAttribute","raw","getTokenRaw","parseJSXExpressionAttribute","tolerateError","expression","parseAssignmentExpression","JSXExpressionContainer","parseJSXAttributeValue","parseJSXElement","parseJSXNameValueAttribute","JSXAttribute","parseJSXSpreadAttribute","argument","JSXSpreadAttribute","parseJSXAttributes","attributes","attribute","parseJSXOpeningElement","selfClosing","JSXOpeningElement","parseJSXBoundaryElement","name_3","JSXClosingElement","parseJSXEmptyExpression","JSXEmptyExpression","parseJSXExpressionContainer","parseJSXChildren","children","child","JSXText","container","parseComplexJSXElement","el","element","opening","JSXElement","closing","open_1","isStartOfExpression","Regex","NonAsciiIdentifierStart","NonAsciiIdentifierPart","fromCodePoint","isWhiteSpace","isOctalDigit","openingElement","closingElement","elements","params","generator","async","operator","left","right","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","label","callee","arguments","param","superClass","ComputedMemberExpression","computed","consequent","alternate","Directive","directive","declaration","specifiers","local","exported","each","init","update","imported","meta","kind","isStatic","static","Module","properties","method","shorthand","RegexLiteral","pattern","flags","regex","Script","expressions","StaticMemberExpression","discriminant","cases","tag","quasi","tail","quasis","block","finalizer","prefix","declarations","assert_1","error_handler_1","messages_1","scanner_1","ArrowParameterPlaceHolder","ErrorHandler","Scanner","trackComment","operatorPrecedence","lookahead","hasLineTerminator","context","await","allowIn","allowStrictDirective","allowYield","firstCoverInitializedNameError","isAssignmentTarget","isBindingElement","inFunctionBody","inIteration","inSwitch","labelSet","throwError","messageFormat","msg","whole","assert","createError","unexpectedTokenError","message","Messages","UnexpectedToken","UnexpectedEOS","UnexpectedIdentifier","UnexpectedNumber","UnexpectedString","UnexpectedTemplate","isFutureReservedWord","UnexpectedReserved","isStrictModeReservedWord","StrictReservedWord","tolerateUnexpectedToken","multiLine","nextRegexToken","scanRegExp","createNode","startNode","lastLineStart","marker","expect","expectCommaSeparator","expectKeyword","keyword","matchKeyword","matchContextualKeyword","matchAssign","op","isolateCoverGrammar","parseFunction","previousIsBindingElement","previousIsAssignmentTarget","previousFirstCoverInitializedNameError","inheritCoverGrammar","consumeSemicolon","matchAsyncFunction","parseFunctionExpression","octal","StrictOctalLiteral","parseTemplateLiteral","parseGroupExpression","parseArrayInitializer","parseObjectInitializer","parseIdentifierName","parseClassExpression","parseSpreadElement","parsePropertyMethod","previousStrict","previousAllowStrictDirective","simple","parseFunctionSourceElements","firstRestricted","stricted","parsePropertyMethodFunction","previousAllowYield","parseFormalParameters","parsePropertyMethodAsyncFunction","previousAwait","parseObjectPropertyKey","isPropertyKey","parseObjectProperty","hasProto","isAsync","lookaheadPropertyKey","qualifiedPropertyName","parseGetterMethod","parseSetterMethod","parseGeneratorMethod","DuplicateProtoProperty","parseTemplateHead","head","cooked","parseTemplateElement","parseExpression","reinterpretExpressionAsPattern","startToken","parseRestElement","arrow","parseArguments","isIdentifierName","parseNewExpression","parseLeftHandSideExpression","parseAsyncArgument","parseAsyncArguments","parseLeftHandSideExpressionAllowCall","maybeAsync","previousAllowIn","asyncArrow","parseSuper","parseUpdateExpression","parseUnaryExpression","isRestrictedWord","StrictLHSPrefix","InvalidLHSInAssignment","StrictLHSPostfix","parseAwaitExpression","StrictDelete","parseExponentiationExpression","binaryPrecedence","precedence","parseBinaryExpression","prec","markers","precedences","parseConditionalExpression","checkPatternParam","validateParam","reinterpretAsCoverFormalsList","paramSet","StrictParamDupe","parseYieldExpression","list","StrictLHSAssignment","parseStatementListItem","statement","IllegalExportDeclaration","parseExportDeclaration","IllegalImportDeclaration","parseImportDeclaration","parseLexicalDeclaration","inFor","parseFunctionDeclaration","parseClassDeclaration","isLexicalDeclaration","parseStatement","parseBlock","parseLexicalBinding","parsePattern","StrictVarName","DeclarationMissingInitializer","parseBindingList","parseBindingRestElement","parseArrayPattern","parsePatternWithDefault","parsePropertyPattern","keyToken","parseVariableIdentifier","parseObjectPattern","LetInLexicalBinding","parseVariableDeclaration","parseVariableDeclarationList","opt","parseVariableStatement","parseEmptyStatement","parseExpressionStatement","parseIfClause","StrictFunction","parseIfStatement","parseDoWhileStatement","previousInIteration","parseWhileStatement","parseForStatement","forIn","decl","ForInOfLoopInitializer","initStartToken","InvalidLHSInForIn","InvalidLHSInForLoop","initSeq","parseContinueStatement","UnknownLabel","IllegalContinue","parseBreakStatement","IllegalBreak","parseReturnStatement","IllegalReturn","parseWithStatement","StrictModeWith","parseSwitchCase","parseSwitchStatement","previousInSwitch","defaultFound","clause","MultipleDefaultsInSwitch","parseLabelledStatement","Redeclaration","GeneratorInLegacyContext","parseThrowStatement","NewlineAfterThrow","parseCatchClause","paramMap","DuplicateBinding","StrictCatchVariable","parseFinallyClause","parseTryStatement","NoCatchOrFinally","parseDebuggerStatement","parseDirectivePrologues","previousLabelSet","previousInFunctionBody","StrictParamName","enumerable","writable","configurable","DefaultRestParameter","ParameterAfterRestParameter","parseFormalParameter","identifierIsOptional","isGenerator","StrictFunctionName","previousAllowAwait","formalParameters","parseDirective","IllegalLanguageModeDirective","BadGetterArity","BadSetterArity","BadSetterRestParameter","parseClassElement","hasConstructor","punctuator","ConstructorIsAsync","StaticPrototype","ConstructorSpecialMethod","DuplicateConstructor","parseClassElementList","parseClassBody","elementList","classBody","parseModuleSpecifier","InvalidModuleSpecifier","parseImportSpecifier","parseNamedImports","parseImportDefaultSpecifier","parseImportNamespaceSpecifier","NoAsAfterImportNamespace","src","MissingFromClause","parseExportSpecifier","exportDeclaration","isExportFromIdentifier","condition","recordError","constructError","base","col","description","InvalidEscapedReservedWord","InvalidHexEscapeSequence","InvalidRegExp","TemplateOctalLiteral","UnexpectedTokenIllegal","UnterminatedRegExp","hexValue","toLowerCase","octalValue","curlyStack","skipSingleLineComment","skipMultiLineComment","isKeyword","codePointAt","second","scanHexEscape","scanUnicodeCodePointEscape","getIdentifier","getComplexIdentifier","octalToDecimal","scanIdentifier","restore","scanPunctuator","scanHexLiteral","num","scanBinaryLiteral","scanOctalLiteral","isImplicitOctalLiteral","scanNumericLiteral","parseFloat","scanStringLiteral","unescaped_1","unescaped","octToDec","scanTemplate","rawOffset","unescaped_2","testRegExp","tmp","self","$0","$1","$2","codePoint","RegExp","exception","scanRegExpBody","classMarker","scanRegExpFlags","char","quot","amp","apos","gt","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","empty","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","prop","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","lang","rang","Reader","values","curly","paren","beforeFunctionExpression","isRegexStart","previous","check","trackRange","trackLoc","buffer","reader","base64Js","byteLength","b64","lens","getLens","placeHoldersLen","toByteArray","validLen","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","Uint8Array","output","ieee754","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","Math","pow","write","rt","abs","isNaN","floor","LN2","base64","require$$0","require$$1","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","kMaxLength","TYPED_ARRAY_SUPPORT","typedArraySupport","proto","foo","get","isBuffer","byteOffset","createBuffer","RangeError","buf","encodingOrOffset","TypeError","allocUnsafe","from","poolSize","fromString","encoding","isEncoding","actual","ArrayBuffer","isView","fromArrayView","arrayView","isInstance","fromArrayBuffer","fromArrayLike","SharedArrayBuffer","valueOf","fromObject","obj","checked","undefined","numberIsNaN","data","toPrimitive","assertSize","size","fill","allocUnsafeSlow","array","toString","_isBuffer","compare","y","min","pos","set","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","swap16","swap32","swap64","toLocaleString","equals","inspect","max","trim","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","byteArray","base64Write","ucs2Write","utf16leToBytes","units","hi","isFinite","toJSON","_arr","res","firstByte","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","ret","hexSliceLookupTable","bytes","newBuf","subarray","checkOffset","ext","readUintLE","readUIntLE","noAssert","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","lo","BigInt","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","checkIEEE754","writeFloat","littleEndian","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","E","sym","getMessage","Base","NodeError","super","input","received","isInteger","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","util","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isUndefined","isRegExp","re","isObject","isDate","isError","isFunction","isPrimitive","DEFAULT_MIN_MERGE","POWERS_OF_TEN","results","log10","alphabeticalCompare","al","bl","aStr","bStr","makeAscendingRun","runHi","reverseRun","binaryInsertionSort","pivot","pivotIndex","mid","gallopLeft","hint","lastOffset","maxOffset","gallopRight","TimSort","minGallop","tmpStorageLength","tmpIndex","stackLength","runStart","runLength","stackSize","pushRun","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","dest","count1","count2","customCursor","customDest","sort","ts","minRun","minRunLength","force","hasOwnProp","hasOwnProp_1","PREFIX_BEFORE","PREFIX_AFTER_PROP","PREFIX_AFTER_COLON","PREFIX_AFTER_VALUE","PREFIX_AFTER","PREFIX_BEFORE_ALL","PREFIX_AFTER_ALL","SYMBOL_PREFIXES","NON_PROP_SYMBOL_KEYS","for","UNDEFINED","symbol","define","copy_comments_by_kind","target_key","source_key","remove_source","source_prop","target_prop","copy_comments","assign_non_prop_comments","common","swap_comments","to","require$$2","move_comment","remove","move_comments","count","ii","remove_comments","CommentArray","begin","deleteCount","items","item_length","before","items_length","reverse","reverse_comments","item","prev","source_index","real_source_index","get_mapped","mapped","esprima","BRACKET_OPEN","BRACKET_CLOSE","CURLY_BRACKET_OPEN","CURLY_BRACKET_CLOSE","COLON","COMMA","MINUS","EMPTY","previous_hosts","comments_host","unassigned_comments","previous_props","last_prop","inline","current","reviver","clean","symbolFor","transform","unexpected","SyntaxError","unexpected_end","new_token","is","set_comments_host","new_host","restore_comments_host","assign_after_comments","after_comments","assign_comments","parse_comments","set_prop","restore_prop","parse_array","started","walk","tt","parse_object","JSON","negative","parse_1","rev","no_comments","subject","free","cache","repeatString","ESCAPABLE","LF","STR_NULL","BEFORE","AFTER_VALUE","AFTER","lastIndex","escape","process_comments","host","symbol_tag","deeper_gap","display_block","is_line_comment","reduce","comment_stringify","replacer","indent","one","two","gap","trimRight","join_content","inside","object_stringify","after_comma","sv","stringify","AFTER_COLON","holder","array_stringify","PRIMITIVE_OBJECT_TYPES","stringify_1","replacer_","space","indent_","get_indent","is_primitive_object","trimLeft","require$$3","hasGraphQLSP","tsconfig","compilerOptions","warn","plugins","foundPlugin","find","plugin","schema","tadaOutputLocation","loadSchema","url","URL","headers","response","fetch","query","getIntrospectionQuery","descriptions","schemaDescription","inputValueDeprecation","directiveIsRepeatable","specifiedByUrl","ok","json","introspection","buildClientSchema","isJson","path","extname","resolvedPath","resolve","contents","fs","readFile","schemaOrIntrospection","buildSchema","preambleComments","dtsAnnotationComment","tsAnnotationComment","prog","sade","env","npm_package_version","main","cwd","header","acc","fileContents","destination","tsconfigpath","existsSync","tsconfigContents","tsConfig","err","endsWith","writeFile","printSchema","ensureTadaIntrospection","schemaLocation","outputLocation","introspectionFromSchema","minified","minifyIntrospectionQuery","includeDirectives","includeEnums","includeInputs","includeScalars","resolvedOutputLocation","writeTada","argv"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}
|